brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 0063586 Raw
294 lines · plain
1; Based on llvm/test/Other/cgscc-iterate-function-mutation.ll2; RUN: opt -passes='default<O3>,print<inline-advisor>' -training-log=/dev/null \3; RUN:   -S -enable-ml-inliner=development -keep-inline-advisor-for-printing < %s 2>&1 | FileCheck %s4; REQUIRES: have_tflite5;6; CHECK: [MLInlineAdvisor] Nodes: 36 Edges: 07 8declare void @readnone() nofree nosync readnone9declare void @unknown()10declare void @reference_function_pointer(ptr) nofree nosync readnone11 12; The @test1_* set of functions checks that when we mutate functions with13; simplifycfg to delete call edges and this ends up splitting both the SCCs14; and the RefSCCs that those functions are in, we re-run the CGSCC passes to15; observe the refined call graph structure.16 17define void @test1_a() {18  call void @test1_b1()19  call void @test1_b2()20  call void @test1_b3()21  call void @test1_b4()22  ret void23}24 25define void @test1_b1() {26  call void @readnone()27  ret void28}29 30define void @test1_b2() {31  call void @readnone()32  br i1 false, label %dead, label %exit33 34dead:35  call void @test1_a()36  br label %exit37 38exit:39  ret void40}41 42define void @test1_b3() {43  call void @unknown()44  br i1 false, label %dead, label %exit45 46dead:47  call void @test1_a()48  br label %exit49 50exit:51  ret void52}53 54define void @test1_b4() {55  call void @readnone()56  br i1 false, label %dead, label %exit57 58dead:59  call void @test1_a()60  br label %exit61 62exit:63  ret void64}65 66define void @test2_a() {67  call void @test2_b1()68  call void @test2_b2()69  call void @test2_b3()70  call void @test2_b4()71  ret void72}73 74define void @test2_b1() {75  call void @readnone()76  ret void77}78 79define void @test2_b2() {80  call void @reference_function_pointer(ptr @test2_a)81  br i1 false, label %dead, label %exit82 83dead:84  call void @test2_a()85  br label %exit86 87exit:88  ret void89}90 91define void @test2_b3() {92  call void @reference_function_pointer(ptr @test2_a)93  call void @unknown()94  br i1 false, label %dead, label %exit95 96dead:97  call void @test2_a()98  br label %exit99 100exit:101  ret void102}103 104define void @test2_b4() {105  call void @reference_function_pointer(ptr @test2_a)106  br i1 false, label %dead, label %exit107 108dead:109  call void @test2_a()110  br label %exit111 112exit:113  ret void114}115 116define void @test3_a() {117  call void @test3_b11()118  call void @test3_b21()119  call void @test3_b31()120  call void @test3_b41()121  ret void122}123 124define void @test3_b11() {125  call void @test3_b12()126  ret void127}128 129define void @test3_b12() {130  call void @test3_b13()131  ret void132}133 134define void @test3_b13() {135  call void @readnone()136  ret void137}138 139define void @test3_b21() {140  call void @test3_b22()141  ret void142}143 144define void @test3_b22() {145  call void @test3_b23()146  ret void147}148 149define void @test3_b23() {150  call void @readnone()151  br i1 false, label %dead, label %exit152 153dead:154  call void @test3_a()155  br label %exit156 157exit:158  ret void159}160 161define void @test3_b31() {162  call void @test3_b32()163  ret void164}165 166define void @test3_b32() {167  call void @test3_b33()168  ret void169}170 171define void @test3_b33() {172  call void @unknown()173  br i1 false, label %dead, label %exit174 175dead:176  call void @test3_a()177  br label %exit178 179exit:180  ret void181}182 183define void @test3_b41() {184  call void @test3_b42()185  ret void186}187 188define void @test3_b42() {189  call void @test3_b43()190  ret void191}192 193define void @test3_b43() {194  call void @readnone()195  br i1 false, label %dead, label %exit196 197dead:198  call void @test3_a()199  br label %exit200 201exit:202  ret void203}204 205define void @test4_a() {206  call void @test4_b11()207  call void @test4_b21()208  call void @test4_b31()209  call void @test4_b41()210  ret void211}212 213define void @test4_b11() {214  call void @test4_b12()215  ret void216}217 218define void @test4_b12() {219  call void @test4_b13()220  ret void221}222 223define void @test4_b13() {224  call void @readnone()225  ret void226}227 228define void @test4_b21() {229  call void @test4_b22()230  ret void231}232 233define void @test4_b22() {234  call void @test4_b23()235  ret void236}237 238define void @test4_b23() {239  call void @reference_function_pointer(ptr @test4_a)240  br i1 false, label %dead, label %exit241 242dead:243  call void @test4_a()244  br label %exit245 246exit:247  ret void248}249 250define void @test4_b31() {251  call void @test4_b32()252  ret void253}254 255define void @test4_b32() {256  call void @test4_b33()257  ret void258}259 260define void @test4_b33() {261  call void @reference_function_pointer(ptr @test4_a)262  call void @unknown()263  br i1 false, label %dead, label %exit264 265dead:266  call void @test4_a()267  br label %exit268 269exit:270  ret void271}272 273define void @test4_b41() {274  call void @test4_b42()275  ret void276}277 278define void @test4_b42() {279  call void @test4_b43()280  ret void281}282 283define void @test4_b43() {284  call void @reference_function_pointer(ptr @test4_a)285  br i1 false, label %dead, label %exit286 287dead:288  call void @test4_a()289  br label %exit290 291exit:292  ret void293}294