[Bug tree-optimization/37867] New: inconsistent results on -O2 when reading bits from packed struct
edwintorok at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Oct 18 13:33:00 GMT 2008
Running gcc-4.3 -O2 on PR1386.c I get different results than with -O1.
$ gcc-4.3 -O2 PR1386.c && ./a.out
PR1386.c: In function ÂmainÂ:
PR1386.c:15: warning: large integer implicitly truncated to unsigned type
PR1386.c:17: warning: large integer implicitly truncated to unsigned type
bad bits: fffffffffffffff0
$ gcc-4.3 -O2 PR1386.c && ./a.out
PR1386.c: In function ÂmainÂ:
PR1386.c:15: warning: large integer implicitly truncated to unsigned type
PR1386.c:17: warning: large integer implicitly truncated to unsigned type
bad bits: fffffffffffffff0
gcc-4.2 is fine:
$ gcc-4.2 -O2 PR1386.c && ./a.out
PR1386.c: In function ÂmainÂ:
PR1386.c:15: warning: large integer implicitly truncated to unsigned type
PR1386.c:17: warning: large integer implicitly truncated to unsigned type
bad bits: 0
$ gcc-4.2 -O3 PR1386.c && ./a.out
PR1386.c: In function ÂmainÂ:
PR1386.c:15: warning: large integer implicitly truncated to unsigned type
PR1386.c:17: warning: large integer implicitly truncated to unsigned type
bad bits: 0
The file is from an LLVM testcase http://llvm.org/bugs/show_bug.cgi?id=1386
#include <stdio.h>
#include <stdint.h>
struct X {
unsigned char pad : 4;
uint64_t a : 64;
uint64_t b : 60;
} __attribute__((packed));
int main (void)
{
struct X x;
uint64_t bad_bits;
x.pad = 255;
x.a = -1ULL;
x.b = -1ULL;
bad_bits = ((uint64_t)-1ULL) ^ *(1+(uint64_t *) &x);
printf("bad bits: %llx\n", bad_bits);
return bad_bits != 0;
}
--
Summary: inconsistent results on -O2 when reading bits from
packed struct
Product: gcc
Version: 4.3.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: edwintorok at gmail dot com
GCC build triplet: x86_64-linux-gnu
GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37867
More information about the Gcc-bugs
mailing list