diff --git a/llvm/test/Transforms/InstCombine/unreachable-code.ll b/llvm/test/Transforms/InstCombine/unreachable-code.ll index d55e779b71a99..2d1656fa2a54d 100644 --- a/llvm/test/Transforms/InstCombine/unreachable-code.ll +++ b/llvm/test/Transforms/InstCombine/unreachable-code.ll @@ -189,3 +189,40 @@ default: call void @dummy() ret void } + +define void @non_term_unreachable() { +; CHECK-LABEL: define void @non_term_unreachable() { +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: call void @dummy() +; CHECK-NEXT: ret void +; + store i1 true, ptr poison + call void @dummy() + ret void +} + +define i32 @non_term_unreachable_phi(i1 %c) { +; CHECK-LABEL: define i32 @non_term_unreachable_phi +; CHECK-SAME: (i1 [[C:%.*]]) { +; CHECK-NEXT: entry: +; CHECK-NEXT: br i1 [[C]], label [[IF:%.*]], label [[JOIN:%.*]] +; CHECK: if: +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: call void @dummy() +; CHECK-NEXT: br label [[JOIN]] +; CHECK: join: +; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 1, [[IF]] ], [ 2, [[ENTRY:%.*]] ] +; CHECK-NEXT: ret i32 [[PHI]] +; +entry: + br i1 %c, label %if, label %join + +if: + store i1 true, ptr poison + call void @dummy() + br label %join + +join: + %phi = phi i32 [ 1, %if], [ 2, %entry ] + ret i32 %phi +}