diff options
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/pr165301.ll')
| -rw-r--r-- | llvm/test/Transforms/SimplifyCFG/pr165301.ll | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/llvm/test/Transforms/SimplifyCFG/pr165301.ll b/llvm/test/Transforms/SimplifyCFG/pr165301.ll new file mode 100644 index 0000000..4a539d7 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/pr165301.ll @@ -0,0 +1,26 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 +; RUN: opt -S -passes="simplifycfg<switch-range-to-icmp>" < %s | FileCheck %s + +; Make sure there's no use after free when removing incoming values from PHI nodes + +define i32 @pr165301(i1 %cond) { +; CHECK-LABEL: define i32 @pr165301( +; CHECK-SAME: i1 [[COND:%.*]]) { +; CHECK-NEXT:  [[ENTRY:.*:]] +; CHECK-NEXT:    br label %[[SWITCHBB:.*]] +; CHECK:       [[SWITCHBB]]: +; CHECK-NEXT:    br label %[[SWITCHBB]] +; +entry: +  br label %switchbb + +switchbb: +  switch i1 %cond, label %default [ +  i1 false, label %switchbb +  i1 true, label %switchbb +  ] + +default: +  %phi.lcssa = phi i32 [ 0, %switchbb ] +  ret i32 %phi.lcssa +} | 
