[LLVMbugs] [Bug 2388] New: indvars makes i1 indvar, LSR doesn't fix
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Sat May 31 01:00:37 PDT 2008
http://llvm.org/bugs/show_bug.cgi?id=2388
Summary: indvars makes i1 indvar, LSR doesn't fix
Product: libraries
Version: 1.0
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Scalar Optimizations
AssignedTo: unassignedbugs at nondot.org
ReportedBy: sabre at nondot.org
CC: llvmbugs at cs.uiuc.edu
Consider:
void foo(int x) {
int i;
_Bool b = x < 0;
for (i = 0; i < 100000; ++i) {
bar(i, b);
b = !b;
}
}
This compiles into this entertaining code:
bb: ; preds = %bb, %entry
%i.0.reg2mem.0 = phi i32 [ 0, %entry ], [ %indvar.next, %bb ]
; <i32> [#uses=3]
%indvar23 = trunc i32 %i.0.reg2mem.0 to i1 ; <i1>
[#uses=1]
%b.0.in.reg2mem.0 = add i1 %indvar23, %tmp1 ; <i1>
[#uses=1]
%tmp34 = zext i1 %b.0.in.reg2mem.0 to i32 ; <i32>
[#uses=1]
This is really bad.
--
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