diff options
| author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-08-05 18:34:14 +0000 |
|---|---|---|
| committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-08-05 18:34:14 +0000 |
| commit | b0b4e86215fe2815ffed9e70c810b08c0ca4e47f (patch) | |
| tree | 281f44e4923cb317a1c205a76e98de8f05b716d9 /llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll | |
| parent | 2a04a99ce677cf8fbc8b9fc0c36693e44f147c5d (diff) | |
| download | bcm5719-llvm-b0b4e86215fe2815ffed9e70c810b08c0ca4e47f.tar.gz bcm5719-llvm-b0b4e86215fe2815ffed9e70c810b08c0ca4e47f.zip | |
[SCEV] Don't infinitely recurse on unreachable code
llvm-svn: 277848
Diffstat (limited to 'llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll')
| -rw-r--r-- | llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll b/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll index 500f3e16c8f..dc24bd1b804 100644 --- a/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll +++ b/llvm/test/Analysis/ScalarEvolution/smax-br-phi-idioms.ll @@ -126,3 +126,31 @@ for.cond.0: ret i32 %init } + +define i32 @f6(i32 %x, i32 %y) { +; Do the right thing for unreachable code: + +; CHECK-LABEL: Classifying expressions for: @f6 + entry: + %c0 = icmp sgt i32 %y, 0 + %sum = add i32 %x, %y + br i1 %c0, label %merge, label %leave_1 + + merge: + %v0 = phi i32 [ %sum, %entry ], [ %v1, %unreachable ] + %c1 = icmp slt i32 %y, 0 + br i1 %c1, label %leave_0, label %leave_0_cond + +leave_0_cond: + br label %leave_0 + +leave_0: + %v1 = phi i32 [ %v0, %merge ], [ 0, %leave_0_cond ] + ret i32 0 + +leave_1: + ret i32 0 + +unreachable: + br label %merge +} |

