target/8087: sparc-sun-solaris2.7 C testsuite failures in execute/20020720-1.c w/-m64 or on sparcv9/sparc64

Richard Henderson rth@redhat.com
Mon Oct 7 11:46:00 GMT 2002


The following reply was made to PR target/8087; it has been noted by GNATS.

From: Richard Henderson <rth@redhat.com>
To: Roger Sayle <roger@eyesopen.com>
Cc: "David S. Miller" <davem@redhat.com>, davem@gcc.gnu.org,
   gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, ghazi@caip.rutgers.edu,
   jakub@redhat.com, gcc-gnats@gcc.gnu.org
Subject: Re: target/8087: sparc-sun-solaris2.7 C testsuite failures in execute/20020720-1.c w/-m64 or on sparcv9/sparc64
Date: Mon, 7 Oct 2002 11:38:27 -0700

 On Mon, Oct 07, 2002 at 12:04:10PM -0600, Roger Sayle wrote:
 > (mem/u/f:DF (lo_sum:DI (reg/f:DI 110)
 >                        (symbol_ref/u:DI ("*.LLC0"))) [2 S8 A64]
 > 
 > The problem is that the code in "avoid_constant_pool_reference"
 > in simplify-rtx.c (line 149), assumes that constant pool references
 > are of the form "(mem (symbol_ref ...))".  Indeed the macro
 > CONSTANT_POOL_ADDRESS_P assumes that it is always passed a naked
 > symbol_ref.
 
 *That* is a bug.  The lo_sum is a perfectly respectable way
 to do this.
 
 > +	if (GET_CODE (addr) == LO_SUM
 > +	    && GET_CODE (XEXP (addr, 1)) == SYMBOL_REF)
 > +	  addr = XEXP (addr, 1);
 
 Yes, this is reasonable.  You don't even need the SYMBOL_REF
 check here, since that'll get handled ...
 
 > 	if (GET_CODE (addr) != SYMBOL_REF
 > 	    || ! CONSTANT_POOL_ADDRESS_P (addr))
 
 ... here.
 
 
 
 r~



More information about the Gcc-prs mailing list