This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix DCE REG_LIBCALL note moving from noop move insns (PR rtl-optimization/33644)
- From: "Steven Bosscher" <stevenb dot gcc at gmail dot com>
- To: "Paolo Bonzini" <bonzini at gnu dot org>
- Cc: "Eric Botcazou" <ebotcazou at libertysurf dot fr>, Kenneth dot Zadeck at naturalbridge dot com, gcc-patches at gcc dot gnu dot org, "Daniel Berlin" <dberlin at dberlin dot org>, "Jakub Jelinek" <jakub at redhat dot com>
- Date: Thu, 18 Oct 2007 11:01:42 +0200
- Subject: Re: [PATCH] Fix DCE REG_LIBCALL note moving from noop move insns (PR rtl-optimization/33644)
- References: <email@example.com> <47170B16.firstname.lastname@example.org>
On 10/18/07, Paolo Bonzini <email@example.com> wrote:
> > 1) the old RTL loop optimizer could use them to move loop invariant libcalls.
> > Since the old RTL loop optimizer is no more, this is no longer a
> > reason to keep the old-style libcall notes.
> > 2) the old DCE in flow.c could remove entire libcall sequences if the
> > libcall result was dead.
> > The new DCE uses REG_LIBCALL_ID notes, so again the reason to have
> > REG_LIBCALL and REG_RETVAL is gone here.
> > 3) The pre-regalloc scheduling pass used to move libcall blocks as a whole.
> 4) When -ftrapv is in effect, libcalls are "necessary" so that the
> results of an operation can be propagated without making the call to the
> libgcc functions dead. The attached patch causes a failure in pr30286.c.
If the libcall is not pure/const, it should not be removed. If the
libcall is pure/const with -ftrapv, that's your bug. It seems
backwards that libcall notes now suddenly also exist to _avoid_
removing library calls...