[llvm-commits] [llvm] r121693 - in /llvm/trunk: lib/Transforms/Utils/SimplifyCFG.cpp test/Transforms/SimplifyCFG/switch_create.ll
Chris Lattner
sabre at nondot.org
Sun Dec 12 23:41:29 PST 2010
Author: lattner
Date: Mon Dec 13 01:41:29 2010
New Revision: 121693
URL: http://llvm.org/viewvc/llvm-project?rev=121693&view=rev
Log:
Completely disable the optimization I added in r121680 until
I can track down a miscompile. This should bring the buildbots
back to life
Modified:
llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
llvm/trunk/test/Transforms/SimplifyCFG/switch_create.ll
Modified: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=121693&r1=121692&r2=121693&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp Mon Dec 13 01:41:29 2010
@@ -331,8 +331,8 @@
isEQ)) {
if (LHS == RHS)
return LHS;
+ Vals.resize(NumVals);
}
- Vals.resize(NumVals);
// The RHS of the or/and can't be folded in and we haven't used "Extra" yet,
// set it and return success.
@@ -348,12 +348,13 @@
// If the LHS can't be folded in, but Extra is available and RHS can, try to
// use LHS as Extra.
if (Extra == 0 || Extra == I->getOperand(0)) {
+ Value *OldExtra = Extra;
Extra = I->getOperand(0);
if (Value *RHS = GatherConstantCompares(I->getOperand(1), Vals, Extra, TD,
isEQ))
return RHS;
- Vals.resize(NumValsBeforeLHS);
- Extra = 0;
+ assert(Vals.size() == NumValsBeforeLHS);
+ Extra = OldExtra;
}
return 0;
@@ -1908,6 +1909,8 @@
// then we evaluate them with an explicit branch first. Split the block
// right before the condbr to handle it.
if (ExtraCase) {
+ return false;
+
BasicBlock *NewBB = BB->splitBasicBlock(BI, "switch.early.test");
// Remove the uncond branch added to the old block.
TerminatorInst *OldTI = BB->getTerminator();
Modified: llvm/trunk/test/Transforms/SimplifyCFG/switch_create.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/switch_create.ll?rev=121693&r1=121692&r2=121693&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/SimplifyCFG/switch_create.ll (original)
+++ llvm/trunk/test/Transforms/SimplifyCFG/switch_create.ll Mon Dec 13 01:41:29 2010
@@ -168,13 +168,13 @@
ret void
; CHECK: @test7
-; CHECK: %cmp = icmp ult i32 %x, 32
-; CHECK: br i1 %cmp, label %if.then, label %switch.early.test
-; CHECK: switch.early.test:
-; CHECK: switch i8 %c, label %if.end [
-; CHECK: i8 99, label %if.then
-; CHECK: i8 97, label %if.then
-; CHECK: ]
+; HECK: %cmp = icmp ult i32 %x, 32
+; HECK: br i1 %cmp, label %if.then, label %switch.early.test
+; HECK: switch.early.test:
+; HECK: switch i8 %c, label %if.end [
+; HECK: i8 99, label %if.then
+; HECK: i8 97, label %if.then
+; HECK: ]
}
define i32 @test8(i8 zeroext %c, i32 %x, i1 %C) nounwind ssp noredzone {
@@ -197,14 +197,15 @@
ret i32 0
; CHECK: @test8
-; CHECK: switch.early.test:
-; CHECK: switch i8 %c, label %if.end [
-; CHECK: i8 99, label %if.then
-; CHECK: i8 97, label %if.then
-; CHECK: ]
-; CHECK: %A = phi i32 [ 0, %entry ], [ 42, %switch.early.test ], [ 42, %N ], [ 42, %switch.early.test ]
+; HECK: switch.early.test:
+; HECK: switch i8 %c, label %if.end [
+; HECK: i8 99, label %if.then
+; HECK: i8 97, label %if.then
+; HECK: ]
+; HECK: %A = phi i32 [ 0, %entry ], [ 42, %switch.early.test ], [ 42, %N ], [ 42, %switch.early.test ]
}
+;; This is "Example 7" from http://blog.regehr.org/archives/320
define i32 @test9(i8 zeroext %c) nounwind ssp noredzone {
entry:
%cmp = icmp ult i8 %c, 33
@@ -253,20 +254,20 @@
; CHECK: @test9
; CHECK: %cmp = icmp ult i8 %c, 33
-; CHECK: br i1 %cmp, label %lor.end, label %switch.early.test
+; HECK: br i1 %cmp, label %lor.end, label %switch.early.test
-; CHECK: switch.early.test:
-; CHECK: switch i8 %c, label %lor.rhs [
-; CHECK: i8 46, label %lor.end
-; CHECK: i8 44, label %lor.end
-; CHECK: i8 58, label %lor.end
-; CHECK: i8 59, label %lor.end
-; CHECK: i8 60, label %lor.end
-; CHECK: i8 62, label %lor.end
-; CHECK: i8 34, label %lor.end
-; CHECK: i8 92, label %lor.end
-; CHECK: i8 39, label %lor.end
-; CHECK: ]
+; HECK: switch.early.test:
+; HECK: switch i8 %c, label %lor.rhs [
+; HECK: i8 46, label %lor.end
+; HECK: i8 44, label %lor.end
+; HECK: i8 58, label %lor.end
+; HECK: i8 59, label %lor.end
+; HECK: i8 60, label %lor.end
+; HECK: i8 62, label %lor.end
+; HECK: i8 34, label %lor.end
+; HECK: i8 92, label %lor.end
+; HECK: i8 39, label %lor.end
+; HECK: ]
}
More information about the llvm-commits
mailing list