target/7250: __ashrdi3 returns wrong value on 32 bit hppa
Jeff Law
law@porcupine.slc.redhat.com
Tue Jul 9 15:56:00 GMT 2002
The following reply was made to PR target/7250; it has been noted by GNATS.
From: Jeff Law <law@porcupine.slc.redhat.com>
To: sje@cup.hp.com
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: target/7250: __ashrdi3 returns wrong value on 32 bit hppa
Date: Tue, 09 Jul 2002 16:48:46 -0600
In message <20020709203142.10159.qmail@sources.redhat.com>, sje@cup.hp.com writ
es:
>
>>Number: 7250
>>Category: target
>>Synopsis: __ashrdi3 returns wrong value on 32 bit hppa
>>Confidential: no
>>Severity: serious
>>Priority: medium
>>Responsible: unassigned
>>State: open
>>Class: sw-bug
>>Submitter-Id: net
>>Arrival-Date: Tue Jul 09 13:36:01 PDT 2002
>>Closed-Date:
>>Last-Modified:
>>Originator: sje@cup.hp.com
>>Release: 3.0.2
>>Organization:
>>Environment:
>hppa1.1-hp-hpux11.00
>>Description:
>Arithmatic right shift of long long (64 bit) value returns wrong value. See
>attached file (x.c) for a program that
>fails with -O0 (with call to __ashrdi3) but works with optimization because t
>he call is optimized away.
>
>>How-To-Repeat:
>Compile x.c and run it *without* optimization on a 32 bit PA machine. With o
>ptimization it works.
Can you look a little deeper into this? It seems quite odd that
ashrdi3 would return the wrong value for a shift count of zero as
it special cases zero count in libgcc2.c:
DWtype
__ashrdi3 (DWtype u, word_type b)
{
DWunion w;
word_type bm;
DWunion uu;
if (b == 0)
return u;
[ ... ]
Jeff
More information about the Gcc-prs
mailing list