diff options
author | Devang Patel <dpatel@apple.com> | 2008-10-06 23:22:54 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-10-06 23:22:54 +0000 |
commit | 40aafce00db63ea7e82f9afed0bab44a0c485378 (patch) | |
tree | 77a8b87e54800e2925a1fc66a251e73eb2ea74cf | |
parent | 7b41f721b47167d624fda8530ea974e3063039c6 (diff) | |
download | llvm-40aafce00db63ea7e82f9afed0bab44a0c485378.tar.gz |
Fix typo, fix PR 2865.
llvm-svn: 57221
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp | 4 | ||||
-rw-r--r-- | llvm/test/Transforms/LoopIndexSplit/2008-10-06-Crash.ll | 31 |
2 files changed, 33 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp b/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp index 085223cd814e..047e6563779d 100644 --- a/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp +++ b/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp @@ -940,8 +940,8 @@ bool LoopIndexSplit::updateLoopIterationSpace(SplitInfo &SD) { if (Op0->getPredicate() == ICmpInst::ICMP_EQ || Op0->getPredicate() == ICmpInst::ICMP_NE - || Op0->getPredicate() == ICmpInst::ICMP_EQ - || Op0->getPredicate() == ICmpInst::ICMP_NE) + || Op1->getPredicate() == ICmpInst::ICMP_EQ + || Op1->getPredicate() == ICmpInst::ICMP_NE) return false; // Check if SplitCondition dominates entire loop body diff --git a/llvm/test/Transforms/LoopIndexSplit/2008-10-06-Crash.ll b/llvm/test/Transforms/LoopIndexSplit/2008-10-06-Crash.ll new file mode 100644 index 000000000000..b477b73cc37a --- /dev/null +++ b/llvm/test/Transforms/LoopIndexSplit/2008-10-06-Crash.ll @@ -0,0 +1,31 @@ +; RUN: llvm-as < %s | opt -loop-index-split -disable-output + %struct.RExC_state_t = type { i32, i8*, %struct.regexp*, i8*, i8*, i8*, i32, %struct.regnode*, %struct.regnode*, i32, i32, i32, i32, i32, i32, i32, i32, i32 } + %struct.SV = type { i8*, i32, i32 } + %struct.reg_data = type { i32, i8*, [1 x i8*] } + %struct.reg_substr_data = type { [3 x %struct.reg_substr_datum] } + %struct.reg_substr_datum = type { i32, i32, %struct.SV*, %struct.SV* } + %struct.regexp = type { i32*, i32*, %struct.regnode*, %struct.reg_substr_data*, i8*, %struct.reg_data*, i8*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, [1 x %struct.regnode] } + %struct.regnode = type { i8, i8, i16 } + +define fastcc %struct.regnode* @S_regclass(%struct.RExC_state_t* %pRExC_state) nounwind { +entry: + br label %bb439 + +bb439: ; preds = %bb444, %entry + %value23.16.reg2mem.0 = phi i32 [ %3, %bb444 ], [ 0, %entry ] ; <i32> [#uses=3] + %0 = icmp ugt i32 %value23.16.reg2mem.0, 31 ; <i1> [#uses=1] + %1 = icmp ne i32 %value23.16.reg2mem.0, 127 ; <i1> [#uses=1] + %2 = and i1 %0, %1 ; <i1> [#uses=1] + br i1 %2, label %bb443, label %bb444 + +bb443: ; preds = %bb439 + br label %bb444 + +bb444: ; preds = %bb443, %bb439 + %3 = add i32 %value23.16.reg2mem.0, 1 ; <i32> [#uses=2] + %4 = icmp ugt i32 %3, 255 ; <i1> [#uses=1] + br i1 %4, label %bb675, label %bb439 + +bb675: ; preds = %bb444 + unreachable +} |