This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Use of single_set() in loop_regs_update()




  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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]