c/8148: simple bit shifting does not work
acme@us.ibm.com
acme@us.ibm.com
Fri Oct 4 12:26:00 GMT 2002
>Number: 8148
>Category: c
>Synopsis: simple bit shifting does not work
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Oct 04 12:26:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Bryan Hunt
>Release: 3.2
>Organization:
>Environment:
System: Linux tritium.austin.ibm.com 2.4.9-34 #1 Sat Jun 1 06:25:16 EDT 2002 i686 unknown
Architecture: i686
<machine, os, target, libraries (multiple lines)>
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: /home/bhunt/gcc-3.2/configure --enable-languages=c,c++
>Description:
shifting a variable a number of bits greater or equal to its size produces incorrect results. This problem has been verified with both unsigned and unsigned long long. This problem has only been seen on x86 Linux. Both gcc 3.0.3 and xlC 5.0 on AIX 4.3 produces correct results.
>How-To-Repeat:
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
unsigned x = 0xffffffff;
x = x << 32;
if(x != 0)
cout << "Bit shifting is broken: expected 0x0, but got: " << hex << x << endl;
else
cout << "Bit shifting works" << endl;
return 0;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-prs
mailing list