[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / LowerSwitch / condition-phi-unreachable-default.ll
blobc53602bcd27aafc85406ba098196e97ad94df542
1 ; RUN: opt < %s -lowerswitch -S | FileCheck %s
3 ; This test verifies -lowerswitch 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