Fix 991213-1.c testcase abort on Sparc

David S. Miller davem@redhat.com
Wed Dec 15 06:58:00 GMT 1999


   Date: Wed, 15 Dec 1999 14:44:30 +0000 (GMT)
   From: Bernd Schmidt <bernds@balti.cygnus.co.uk>

   On Wed, 15 Dec 1999, David S. Miller wrote:

   > This fails in the current tree because CSE ends up tossing
   > a (CONCAT REG REG) to reg_overlap_mentioned_p, for which
   > I see no reason why this is incorrect.

   Where did CSE get the concat from?  It should not have appeared in the rtl, 
   see the comment in rtl.def:

   /* (CONCAT a b) represents the virtual concatenation of a and b
      to make a value that has as many bits as a and b put together.
      This is used for complex values.  Normally it appears only
      in DECL_RTLs and during RTL generation, but not in the insn chain.  */
   DEF_RTL_EXPR(CONCAT, "concat", "ee", 'o')

It says "normally".

I've seen CONCATs in the RTL before.  But anyways in this case they
were left behind inside of CLOBBER insns.

You are probably right about the illegality of this situation.
But let's make sure we agree on that first.  If it is true next
we can figure out why these got left behind and fix the code
which did it, then revert my change.

Later,
David S. Miller
davem@redhat.com


More information about the Gcc-patches mailing list