This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Use of single_set() in loop_regs_update()
- To: Richard Sandiford <rsandifo at redhat dot com>
- Subject: Re: Use of single_set() in loop_regs_update()
- From: Jeffrey A Law <law at redhat dot com>
- Date: Wed, 14 Mar 2001 14:33:16 -0700
- cc: gcc at gcc dot gnu dot org
- Reply-To: law at redhat dot com
In message <Pine.GSO.4.33.0103141806200.7702-100000@tikka.cambridge.redhat.co
m>you write:
>
> I'm having trouble understanding the interface between loop.c and alias.c.
> loop_regs_update() is defined:
>
> static void
> loop_regs_update (loop, seq)
> const struct loop *loop ATTRIBUTE_UNUSED;
> rtx seq;
> {
> /* Update register info for alias analysis. */
>
> if (GET_CODE (seq) == SEQUENCE)
> {
> [...snip...]
> }
> else
> {
> rtx set = single_set (seq);
> if (set && GET_CODE (SET_DEST (set)) == REG)
> record_base_value (REGNO (SET_DEST (set)), SET_SRC (set), 0);
> }
> }
>
> and gets passed a SEQUENCE or SET rtx. But single_set() is defined as:
>
> #define single_set(I) (INSN_P (I) \
> ? (GET_CODE (PATTERN (I)) == SET \
> ? PATTERN (I) : single_set_1 (I)) \
> : NULL_RTX)
>
> i.e. it returns null unless given an insn. I can't seem to trigger
> the call to record_base_value().
Hmmm, I believe that loop_regs_update is supposed to be passed either an
INSN or a SEQUENCE (with INSNs inside the SEQUENCE).
Who is passing a raw SET to loop_regs_update?
jeff