This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] checking version of rtl flag access macros
- From: Richard Sandiford <rsandifo at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Janis Johnson <janis187 at us dot ibm dot com>
- Date: 07 May 2002 16:50:05 +0100
- Subject: Re: [PATCH] checking version of rtl flag access macros
- References: <20020506133908.A6122@us.ibm.com><20020506144531.B13494@redhat.com>
Richard Henderson <rth@redhat.com> writes:
> > +#define RTX_FRAME_RELATED_P(RTX) \
> > + (RTL_FLAG_CHECK5((RTX), INSN, CALL_INSN, JUMP_INSN, BARRIER, \
> > + SET)->frame_related)
>
> A barrier cannot be frame-related. And, frankly, I have a hard time
> imagining that JUMP_INSN or CALL_INSN could either.
>
> SET is right out.
I remember having to use frame-related SETs for the MIPS, because
of the PARALLEL handling in dwarf2out_frame_debug_expr():
/* If RTX_FRAME_RELATED_P is set on a PARALLEL, process each member of
the PARALLEL independently. The first element is always processed if
it is a SET. This is for backward compatibility. Other elements
are processed only if they are SETs and the RTX_FRAME_RELATED_P
flag is set in them. */
if (GET_CODE (expr) == PARALLEL || GET_CODE (expr) == SEQUENCE)
{
int par_index;
int limit = XVECLEN (expr, 0);
for (par_index = 0; par_index < limit; par_index++)
if (GET_CODE (XVECEXP (expr, 0, par_index)) == SET
&& (RTX_FRAME_RELATED_P (XVECEXP (expr, 0, par_index))
|| par_index == 0))
dwarf2out_frame_debug_expr (XVECEXP (expr, 0, par_index), label);
return;
}
Richard