161 lines · plain
1; RUN: opt < %s -passes=inline -inline-threshold=1 -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s2; RUN: opt < %s -passes='cgscc(inline)' -inline-threshold=1 -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s3 4define i32 @callee_range(i32 %a, ptr %P) {5 switch i32 %a, label %sw.default [6 i32 0, label %sw.bb07 i32 1000, label %sw.bb18 i32 2000, label %sw.bb19 i32 3000, label %sw.bb110 i32 4000, label %sw.bb111 i32 5000, label %sw.bb112 i32 6000, label %sw.bb113 i32 7000, label %sw.bb114 i32 8000, label %sw.bb115 i32 9000, label %sw.bb116 ]17 18sw.default:19 store volatile i32 %a, ptr %P20 br label %return21sw.bb0:22 store volatile i32 %a, ptr %P23 br label %return24sw.bb1:25 store volatile i32 %a, ptr %P26 br label %return27return:28 ret i32 4229}30 31define i32 @caller_range(i32 %a, ptr %P) {32; CHECK-LABEL: @caller_range(33; CHECK: call i32 @callee_range34 %r = call i32 @callee_range(i32 %a, ptr %P)35 ret i32 %r36}37 38define i32 @callee_bittest(i32 %a, ptr %P) {39 switch i32 %a, label %sw.default [40 i32 0, label %sw.bb041 i32 1, label %sw.bb142 i32 2, label %sw.bb243 i32 3, label %sw.bb044 i32 4, label %sw.bb145 i32 5, label %sw.bb246 i32 6, label %sw.bb047 i32 7, label %sw.bb148 i32 8, label %sw.bb249 ]50 51sw.default:52 store volatile i32 %a, ptr %P53 br label %return54 55sw.bb0:56 store volatile i32 %a, ptr %P57 br label %return58 59sw.bb1:60 store volatile i32 %a, ptr %P61 br label %return62 63sw.bb2:64 br label %return65 66return:67 ret i32 4268}69 70 71define i32 @caller_bittest(i32 %a, ptr %P) {72; CHECK-LABEL: @caller_bittest(73; CHECK-NOT: call i32 @callee_bittest74 %r= call i32 @callee_bittest(i32 %a, ptr %P)75 ret i32 %r76}77 78define i32 @callee_jumptable(i32 %a, ptr %P) {79 switch i32 %a, label %sw.default [80 i32 1001, label %sw.bb10181 i32 1002, label %sw.bb10282 i32 1003, label %sw.bb10383 i32 1004, label %sw.bb10484 i32 1005, label %sw.bb10185 i32 1006, label %sw.bb10286 i32 1007, label %sw.bb10387 i32 1008, label %sw.bb10488 i32 1009, label %sw.bb10189 i32 1010, label %sw.bb10290 i32 1011, label %sw.bb10391 i32 1012, label %sw.bb10492 ]93 94sw.default:95 br label %return96 97sw.bb101:98 store volatile i32 %a, ptr %P99 br label %return100 101sw.bb102:102 store volatile i32 %a, ptr %P103 br label %return104 105sw.bb103:106 store volatile i32 %a, ptr %P107 br label %return108 109sw.bb104:110 store volatile i32 %a, ptr %P111 br label %return112 113return:114 ret i32 42115}116 117define i32 @caller_jumptable(i32 %a, i32 %b, ptr %P) {118; CHECK-LABEL: @caller_jumptable(119; CHECK: call i32 @callee_jumptable120 %r = call i32 @callee_jumptable(i32 %b, ptr %P)121 ret i32 %r122}123 124 125define internal i32 @callee_negativeCost(i32 %t) {126entry:127 switch i32 %t, label %sw.default [128 i32 1, label %sw.bb129 i32 0, label %sw.bb1130 i32 42, label %sw.bb2131 i32 43, label %sw.bb3132 ]133 134sw.bb: ; preds = %entry135 br label %cleanup136 137sw.bb1: ; preds = %entry138 br label %cleanup139 140sw.bb2: ; preds = %entry141 br label %cleanup142 143sw.bb3: ; preds = %entry144 br label %cleanup145 146sw.default: ; preds = %entry147 br label %cleanup148 149cleanup: ; preds = %sw.default, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb150 %retval.0 = phi i32 [ 1, %sw.default ], [ 3, %sw.bb3 ], [ 2, %sw.bb2 ], [ 0, %sw.bb1 ], [ 0, %sw.bb ]151 ret i32 %retval.0152}153 154define i32 @caller_negativeCost(i32 %t) {155; CHECK-LABEL: @caller_negativeCost(156; CHECK-NOT: call i32 @callee_negativeCost157entry:158 %call = call i32 @callee_negativeCost(i32 %t)159 ret i32 %call160}161