Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / LowerSwitch / condition-phi-unreachable-default.ll
blob09cb5b0918c913e1ccfd0098f661bedbe7180dfd
1 ; RUN: opt < %s -passes=lower-switch -S | FileCheck %s
3 ; This test verifies -lower-switch does not crash when an removing an
4 ; unreachable default branch causes a PHI node used as the switch
5 ; condition to be erased.
7 define void @f() local_unnamed_addr {
8 entry:
9   br label %sw.epilog
11 sw.epilog:                                        ; preds = %sw.epilog.outer, %for.body
12   %i = phi i32 [ undef, %for.body ], [ 0, %entry ]
13   br i1 undef, label %for.body, label %for.end
15 for.body:                                         ; preds = %sw.epilog
16   switch i32 %i, label %sw.epilog [
17     i32 0, label %sw.epilog.outer.backedge.loopexit
18     i32 1, label %sw.epilog.outer.backedge
19   ]
21 sw.epilog.outer.backedge.loopexit:                ; preds = %for.body
22   br label %for.end
24 sw.epilog.outer.backedge:                         ; preds = %for.body
25   unreachable
27 for.end:                                          ; preds = %sw.epilog
28   ret void
31 ; The phi and the switch should both be eliminated.
32 ; CHECK: @f()
33 ; CHECK: sw.epilog:
34 ; CHECK-NOT: phi
35 ; CHECK: for.body:
36 ; CHECK-NOT: switch