brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 73eef20 Raw
193 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature2; RUN: opt -passes=ipsccp < %s -S | FileCheck %s3; RUN: opt -passes='ipsccp,ipsccp' < %s -S | FileCheck %s4 5define void @barney() {6; CHECK-LABEL: define {{[^@]+}}@barney() {7; CHECK-NEXT:  bb:8; CHECK-NEXT:    br label [[BB9:%.*]]9; CHECK:       bb6:10; CHECK-NEXT:    unreachable11; CHECK:       bb9:12; CHECK-NEXT:    br label [[BB6:%.*]]13;14bb:15  br label %bb916 17bb6:                                              ; preds = %bb918  unreachable19 20bb7:                                              ; preds = %bb921  unreachable22 23bb9:                                              ; preds = %bb24  switch i16 0, label %bb6 [25  i16 61, label %bb726  ]27}28 29define void @blam() {30; CHECK-LABEL: define {{[^@]+}}@blam() {31; CHECK-NEXT:  bb:32; CHECK-NEXT:    br label [[BB16:%.*]]33; CHECK:       bb16:34; CHECK-NEXT:    br label [[BB38:%.*]]35; CHECK:       bb38:36; CHECK-NEXT:    unreachable37;38bb:39  br label %bb1640 41bb16:                                             ; preds = %bb42  switch i32 0, label %bb38 [43  i32 66, label %bb1744  i32 63, label %bb1845  i32 86, label %bb1946  ]47 48bb17:                                             ; preds = %bb1649  unreachable50 51bb18:                                             ; preds = %bb1652  unreachable53 54bb19:                                             ; preds = %bb1655  unreachable56 57bb38:                                             ; preds = %bb1658  unreachable59}60 61 62define void @hoge(i1 %arg, i16 %arg2) {63; CHECK-LABEL: define {{[^@]+}}@hoge64; CHECK-SAME: (i1 [[ARG:%.*]], i16 [[ARG2:%.*]]) {65; CHECK-NEXT:  bb:66; CHECK-NEXT:    switch i16 [[ARG2]], label [[BB1:%.*]] [67; CHECK-NEXT:      i16 135, label [[BB2:%.*]]68; CHECK-NEXT:      i16 66, label [[BB2]]69; CHECK-NEXT:    ]70; CHECK:       bb1:71; CHECK-NEXT:    ret void72; CHECK:       bb2:73; CHECK-NEXT:    br label [[BB3:%.*]]74; CHECK:       bb3:75; CHECK-NEXT:    unreachable76;77bb:78  switch i16 %arg2, label %bb1 [79  i16 135, label %bb280  i16 66, label %bb281  ]82 83bb1:                                              ; preds = %bb84  ret void85 86bb2:                                              ; preds = %bb, %bb87  switch i16 0, label %bb3 [88  i16 61, label %bb489  i16 54, label %bb490  i16 49, label %bb491  ]92 93bb3:                                              ; preds = %bb294  unreachable95 96bb4:                                              ; preds = %bb2, %bb2, %bb297  unreachable98}99 100; Test case from PR49573. %default.bb is unfeasible. Make sure it gets replaced101; by an unreachable block.102define void @pr49573_main(i1 %arg) {103entry:104  %tgt = call i16 @pr49573_fn(i1 %arg)105  switch i16 %tgt, label %default.bb [106  i16 0, label %case.0107  i16 1, label %case.1108  i16 2, label %case.2109  ]110 111case.0:112  unreachable113 114default.bb:115  ret void116 117case.1:118  ret void119 120case.2:121  br label %next122 123next:124  %tgt.2 = call i16 @pr49573_fn_2(i1 %arg)125  switch i16 %tgt.2, label %default.bb [126  i16 0, label %case.0127  i16 2, label %case.2128  ]129}130 131; Make sure a new unreachable BB is created.132define void @pr49573_main_2(i1 %arg) {133entry:134  %tgt = call i16 @pr49573_fn(i1 %arg)135  switch i16 %tgt, label %default.bb [136  i16 0, label %case.0137  i16 1, label %case.1138  i16 2, label %case.2139  ]140 141case.0:142  unreachable143 144default.bb:145  ret void146 147case.1:148  ret void149 150case.2:151  ret void152}153 154define internal i16 @pr49573_fn(i1 %arg) {155; CHECK-LABEL: define {{[^@]+}}@pr49573_fn156; CHECK-SAME: (i1 [[ARG:%.*]]) {157; CHECK-NEXT:  entry:158; CHECK-NEXT:    br i1 [[ARG]], label [[THEN:%.*]], label [[ELSE:%.*]]159; CHECK:       then:160; CHECK-NEXT:    ret i16 0161; CHECK:       else:162; CHECK-NEXT:    ret i16 2163;164entry:165  br i1 %arg, label %then, label %else166 167then:168  ret i16 0169 170else:171  ret i16 2172}173 174define internal i16 @pr49573_fn_2(i1 %arg) {175; CHECK-LABEL: define {{[^@]+}}@pr49573_fn_2176; CHECK-SAME: (i1 [[ARG:%.*]]) {177; CHECK-NEXT:  entry:178; CHECK-NEXT:    br i1 [[ARG]], label [[THEN:%.*]], label [[ELSE:%.*]]179; CHECK:       then:180; CHECK-NEXT:    ret i16 0181; CHECK:       else:182; CHECK-NEXT:    ret i16 2183;184entry:185  br i1 %arg, label %then, label %else186 187then:188  ret i16 0189 190else:191  ret i16 2192}193