1; RUN: opt < %s -passes=adce -disable-output 2; RUN: opt < %s -passes=adce -adce-remove-loops=true -disable-output 3 4target datalayout = "e-p:32:32" 5 %struct..CppObjTypeDesc = type { i32, i16, i16 } 6 %struct..TypeToken = type { i32, i16, i16 } 7 8define i32 @C_ReFaxToDb() { 9entry: 10 br i1 false, label %endif.0, label %then.0 11 12then.0: ; preds = %entry 13 ret i32 0 14 15endif.0: ; preds = %entry 16 br i1 false, label %then.11, label %then.4 17 18then.4: ; preds = %endif.0 19 ret i32 0 20 21then.11: ; preds = %endif.0 22 br i1 false, label %loopentry.0, label %else.2 23 24loopentry.0: ; preds = %loopentry.1, %endif.14, %then.11 25 br i1 false, label %endif.14, label %loopexit.0 26 27endif.14: ; preds = %loopentry.0 28 br i1 false, label %loopentry.1, label %loopentry.0 29 30loopentry.1: ; preds = %then.53, %endif.14 31 %SubArrays.10 = phi ptr [ %SubArrays.8, %then.53 ], [ null, %endif.14 ] ; <ptr> [#uses=3] 32 br i1 false, label %no_exit.1, label %loopentry.0 33 34no_exit.1: ; preds = %loopentry.1 35; CHECK: switch 36 switch i32 0, label %label.17 [ 37 i32 2, label %label.11 38 i32 19, label %label.10 39 ] 40 41label.10: ; preds = %no_exit.1 42 br i1 false, label %then.43, label %endif.43 43 44then.43: ; preds = %label.10 45 br i1 false, label %then.44, label %endif.44 46 47then.44: ; preds = %then.43 48 br i1 false, label %shortcirc_next.4, label %endif.45 49 50shortcirc_next.4: ; preds = %then.44 51 br i1 false, label %no_exit.2, label %loopexit.2 52 53no_exit.2: ; preds = %shortcirc_next.4 54 %tmp.897 = getelementptr i32, ptr %SubArrays.10, i64 0 ; <ptr> [#uses=1] 55 %tmp.899 = load i32, ptr %tmp.897 ; <i32> [#uses=1] 56 store i32 %tmp.899, ptr null 57 ret i32 0 58 59loopexit.2: ; preds = %shortcirc_next.4 60 ret i32 0 61 62endif.45: ; preds = %then.44 63 ret i32 0 64 65endif.44: ; preds = %then.43 66 ret i32 0 67 68endif.43: ; preds = %label.10 69 ret i32 0 70 71label.11: ; preds = %no_exit.1 72 ret i32 0 73 74label.17: ; preds = %no_exit.1 75 br i1 false, label %then.53, label %shortcirc_next.7 76 77shortcirc_next.7: ; preds = %label.17 78 br i1 false, label %then.53, label %shortcirc_next.8 79 80shortcirc_next.8: ; preds = %shortcirc_next.7 81 ret i32 0 82 83then.53: ; preds = %shortcirc_next.7, %label.17 84 %SubArrays.8 = phi ptr [ %SubArrays.10, %shortcirc_next.7 ], [ %SubArrays.10, %label.17 ] ; <ptr> [#uses=1] 85 %tmp.1023 = load i32, ptr null ; <i32> [#uses=1] 86 switch i32 %tmp.1023, label %loopentry.1 [ 87 ] 88 89loopexit.0: ; preds = %loopentry.0 90 ret i32 0 91 92else.2: ; preds = %then.11 93 ret i32 0 94} 95