brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 99c7b25 Raw
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