99 lines · plain
1// RUN: mlir-opt %s -test-print-callgraph -split-input-file -allow-unregistered-dialect 2>&1 | FileCheck %s2 3// CHECK-LABEL: Testing : "simple"4module attributes {test.name = "simple"} {5 6 // CHECK: Node{{.*}}func_a7 func.func @func_a() {8 return9 }10 11 func.func private @func_b()12 13 // CHECK: Node{{.*}}func_c14 // CHECK-NEXT: Call-Edge{{.*}}Unknown-Callee-Node15 func.func @func_c() {16 call @func_b() : () -> ()17 return18 }19 20 // CHECK: Node{{.*}}func_d21 // CHECK-NEXT: Call-Edge{{.*}}func_c22 func.func @func_d() {23 call @func_c() : () -> ()24 return25 }26 27 // CHECK: Node{{.*}}func_e28 // CHECK-DAG: Call-Edge{{.*}}func_c29 // CHECK-DAG: Call-Edge{{.*}}func_d30 // CHECK-DAG: Call-Edge{{.*}}func_e31 func.func @func_e() {32 call @func_c() : () -> ()33 call @func_d() : () -> ()34 call @func_e() : () -> ()35 return36 }37 38 // CHECK: Node{{.*}}func_f39 // CHECK: Child-Edge{{.*}}test.functional_region_op40 // CHECK: Call-Edge{{.*}}test.functional_region_op41 func.func @func_f() {42 // CHECK: Node{{.*}}test.functional_region_op43 // CHECK: Call-Edge{{.*}}func_f44 %fn = "test.functional_region_op"() ({45 call @func_f() : () -> ()46 "test.return"() : () -> ()47 }) : () -> (() -> ())48 49 call_indirect %fn() : () -> ()50 return51 }52}53 54// -----55 56// CHECK-LABEL: Testing : "nested"57module attributes {test.name = "nested"} {58 module @nested_module {59 // CHECK: Node{{.*}}func_a60 func.func @func_a() {61 return62 }63 }64 65 // CHECK: Node{{.*}}func_b66 // CHECK: Call-Edge{{.*}}func_a67 func.func @func_b() {68 "test.conversion_call_op"() { callee = @nested_module::@func_a } : () -> ()69 return70 }71}72 73// -----74 75// CHECK-LABEL: Testing : "SCC"76// CHECK: SCCs77module attributes {test.name = "SCC"} {78 // CHECK: SCC :79 // CHECK-NEXT: Node{{.*}}Unknown-Callee-Node80 81 // CHECK: SCC :82 // CHECK-NEXT: Node{{.*}}foo83 func.func @foo(%arg0 : () -> ()) {84 call_indirect %arg0() : () -> ()85 return86 }87 88 // CHECK: SCC :89 // CHECK-NEXT: Node{{.*}}bar90 func.func @bar(%arg1 : () -> ()) {91 call_indirect %arg1() : () -> ()92 return93 }94 95 // CHECK: SCC :96 // CHECK-NEXT: Node{{.*}}External-Caller-Node97}98 99