This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

Re: unreviewed^n patch


On Tue, Aug 26, 2003 at 09:54:48PM -0700, Geoff Keating wrote:
> Alan Modra <amodra@bigpond.net.au> writes:
> 
> > Unreviewed for five months.
> > http://gcc.gnu.org/ml/gcc-patches/2003-03/msg02371.html
> 
> This looks wrong.  Can you find out why (subreg:SI (reg:DI 124) 4)
> isn't in the same class as the other SImode zeros?

Short answer: because the insert_regs call at cse.c:5833 has classp==0

Longer answer: We hit cse.c:5759
  /* Now enter all non-volatile source expressions in the hash table
     if they are not already present.

with src_eqv==0, src_eqv_elt==0, and
(gdb) p sets[0]
$48 = {rtl = 0x400b2780, src = 0x400b9198, src_elt = 0x0, src_hash = 28, 
  dest_hash = 29, inner_dest = 0x400b2738, src_in_memory = 0 '\0', 
  src_volatile = 0 '\0', mode = SImode, src_const = 0x4002c400, 
  orig_src = 0x400b07c0, src_const_hash = 0, src_const_elt = 0x105cda98}

This is the first time we've seen (subreg:SI (reg:DI 124) 4).  It's not
already in the equivalence table.  The subreg was generated just past
cse.c:5132
      /* See if we have a CONST_INT that is already in a register in a
	 wider mode.  */

Nothing has set src_eqv or src_eqv_elt since the point the subreg was
generated, and it seems like code at cse.c:5813 expects src_eqv_elt to
be set.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


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