[LLVMbugs] [Bug 2001] New: clang bitfield assignment produces wrong value

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Feb 9 02:04:24 PST 2008


           Summary: clang bitfield assignment produces wrong value
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: LLVM Codegen
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sharparrow1 at yahoo.com
                CC: llvmbugs at cs.uiuc.edu

int a(int x) {
struct {signed int x:5;} s;
return s.x = x;

clang -emit-llvm-bc | opt -std-compile-opts reduces this to "ret i32 %x", which
is wrong; the result should be something more like what llvm-gcc produces:

define i32 @a(i32 %x) {
        %tmp14 = shl i32 %x, 27
        %tmp15 = ashr i32 %tmp14, 27
        %tmp1516 = trunc i32 %tmp15 to i8
        %tmp151617 = sext i8 %tmp1516 to i32
        ret i32 %tmp151617

(Actually, ideally it would be smart enough to figure out that the trunc+sext
don't do anything, but that's a separate issue.)

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list