[LLVMbugs] [Bug 269] NEW: [llvmgcc] crash on complex bitfield references
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Mar 3 22:40:09 PST 2004
http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=269
Summary: [llvmgcc] crash on complex bitfield references
Product: tools
Version: 1.0
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: llvm-gcc
AssignedTo: unassignedbugs at nondot.org
ReportedBy: sabre at nondot.org
This testcase crashes llvmgcc. It shouldn't. :)
-Chris
extern void exit (int);
extern void abort (void);
struct s {
unsigned long long u33: 33;
unsigned long long u40: 40;
unsigned long long u41: 41;
};
struct s a = { 0x100000, 0x100000, 0x100000 };
struct s b = { 0x100000000ULL, 0x100000000ULL, 0x100000000ULL };
struct s c = { 0x1FFFFFFFFULL, 0, 0 };
int
main (void)
{
if (a.u33 * a.u33 != 0 || a.u33 * a.u40 != 0 || a.u40 * a.u33 != 0
|| a.u40 * a.u40 != 0)
abort ();
if (a.u33 * a.u41 != 0x10000000000ULL
|| a.u40 * a.u41 != 0x10000000000ULL
|| a.u41 * a.u33 != 0x10000000000ULL
|| a.u41 * a.u40 != 0x10000000000ULL
|| a.u41 * a.u41 != 0x10000000000ULL)
abort ();
if (b.u33 + b.u33 != 0)
abort ();
if (b.u33 + b.u40 != 0x200000000ULL
|| b.u33 + b.u41 != 0x200000000ULL
|| b.u40 + b.u33 != 0x200000000ULL
|| b.u40 + b.u40 != 0x200000000ULL
|| b.u40 + b.u41 != 0x200000000ULL
|| b.u41 + b.u33 != 0x200000000ULL
|| b.u41 + b.u40 != 0x200000000ULL
|| b.u41 + b.u41 != 0x200000000ULL)
abort ();
if (a.u33 - b.u33 != 0x100100000ULL
|| a.u33 - b.u40 != 0xFF00100000ULL
|| a.u33 - b.u41 != 0x1FF00100000ULL
|| a.u40 - b.u33 != 0xFF00100000ULL
|| a.u40 - b.u40 != 0xFF00100000ULL
|| a.u40 - b.u41 != 0x1FF00100000ULL
|| a.u41 - b.u33 != 0x1FF00100000ULL
|| a.u41 - b.u40 != 0x1FF00100000ULL
|| a.u41 - b.u41 != 0x1FF00100000ULL)
abort ();
if (++c.u33 != 0 || --c.u40 != 0xFFFFFFFFFFULL || c.u41-- != 0)
abort ();
exit (0);
}
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the llvm-bugs
mailing list