This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Using and clobbering hard regs in parallel
- To: Joern Rennecke <amylaar at redhat dot com>
- Subject: Re: Using and clobbering hard regs in parallel
- From: Richard Henderson <rth at redhat dot com>
- Date: Fri, 20 Jul 2001 15:25:30 -0700
- Cc: Stephen Clarke <Stephen dot Clarke at st dot com>, gcc at gcc dot gnu dot org, geoffk at geoffk dot org
- References: <3B5799C5.29E80E47@st.com> <200107201838.f6KIcME07710@phal.cambridge.redhat.com>
On Fri, Jul 20, 2001 at 07:38:22PM +0100, Joern Rennecke wrote:
> That is a known problem. The new flow.c code has redefined the
> semantics of REG_DEAD / REG_UNUSED notes, while the rest of the
> compiler - including the documentation - stays with the old semantics.
Happy?
r~
Index: rtl.texi
===================================================================
RCS file: /cvs/gcc/egcs/gcc/doc/rtl.texi,v
retrieving revision 1.13
diff -c -p -d -r1.13 rtl.texi
*** rtl.texi 2001/07/03 00:46:05 1.13
--- rtl.texi 2001/07/20 22:22:08
*************** The value in @var{op} dies in this insn;
*** 2798,2808 ****
value immediately after this insn would not affect the future behavior
of the program.
! This does not necessarily mean that the register @var{op} has no useful
! value after this insn since it may also be an output of the insn. In
! such a case, however, a @code{REG_DEAD} note would be redundant and is
! usually not present until after the reload pass, but no code relies on
! this fact.
@findex REG_INC
@item REG_INC
--- 2798,2814 ----
value immediately after this insn would not affect the future behavior
of the program.
! It does not follow that the register @var{op} has no useful value after
! this insn since @var{op} is not necessarily modified by this insn.
! Rather, no subsequent instruction uses the contents of @var{op}.
!
! @findex REG_UNUSED
! @item REG_UNUSED
! The register @var{op} being set by this insn will not be used in a
! subsequent insn. This differs from a @code{REG_DEAD} note, which
! indicates that the value in an input will not be used subsequently.
! These two notes are independent; both may be present for the same
! register.
@findex REG_INC
@item REG_INC
*************** destination register.
*** 2916,2929 ****
Thus, compiler passes prior to register allocation need only check for
@code{REG_EQUAL} notes and passes subsequent to register allocation
need only check for @code{REG_EQUIV} notes.
-
- @findex REG_UNUSED
- @item REG_UNUSED
- The register @var{op} being set by this insn will not be used in a
- subsequent insn. This differs from a @code{REG_DEAD} note, which
- indicates that the value in an input will not be used subsequently.
- These two notes are independent; both may be present for the same
- register.
@findex REG_WAS_0
@item REG_WAS_0
--- 2922,2927 ----