http://llvm.org/bugs/show_bug.cgi?id=10605
Summary: Or of load miscompiled at -O0
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: Common Code Generator Code
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Created an attachment (id=7033)
--> (http://llvm.org/bugs/attachment.cgi?id=7033)
Testcase
The attached bitcode file (the function llvm::BitstreamCursor::Read(unsigned
int) as compiled by dragonegg) is miscompiled at -O0. Specifically, on an
amd64 platform, this instruction:
%72 = or i32 %71, %30
is compiled to:
orl 16(%rax), %edi
i.e. a load-or of the loaded operand, %30:
%29 = getelementptr inbounds %struct.BitstreamCursor* %1, i32 0, i32 2
%30 = load i32* %29, align 4
But this is wrong because a value is stored here later in the same basic block:
%56 = getelementptr inbounds %struct.BitstreamCursor* %1, i32 0, i32 2
store i32 %55, i32* %56, align 4
I bisected this to r130018. .ll and "llc -O0" output attached.
--
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs