1 // RUN: mlir-opt %s -test-print-callgraph -split-input-file -allow-unregistered-dialect 2>&1 | FileCheck %s
3 // CHECK-LABEL: Testing : "simple"
4 module attributes {test.name = "simple"} {
6 // CHECK: Node{{.*}}func_a
11 func private @func_b()
13 // CHECK: Node{{.*}}func_c
14 // CHECK-NEXT: Call-Edge{{.*}}External-Node
16 call @func_b() : () -> ()
20 // CHECK: Node{{.*}}func_d
21 // CHECK-NEXT: Call-Edge{{.*}}func_c
23 call @func_c() : () -> ()
27 // CHECK: Node{{.*}}func_e
28 // CHECK-DAG: Call-Edge{{.*}}func_c
29 // CHECK-DAG: Call-Edge{{.*}}func_d
30 // CHECK-DAG: Call-Edge{{.*}}func_e
32 call @func_c() : () -> ()
33 call @func_d() : () -> ()
34 call @func_e() : () -> ()
38 // CHECK: Node{{.*}}func_f
39 // CHECK: Child-Edge{{.*}}test.functional_region_op
40 // CHECK: Call-Edge{{.*}}test.functional_region_op
42 // CHECK: Node{{.*}}test.functional_region_op
43 // CHECK: Call-Edge{{.*}}func_f
44 %fn = "test.functional_region_op"() ({
45 call @func_f() : () -> ()
46 "test.return"() : () -> ()
49 call_indirect %fn() : () -> ()
56 // CHECK-LABEL: Testing : "nested"
57 module attributes {test.name = "nested"} {
58 module @nested_module {
59 // CHECK: Node{{.*}}func_a
65 // CHECK: Node{{.*}}func_b
66 // CHECK: Call-Edge{{.*}}func_a
68 "test.conversion_call_op"() { callee = @nested_module::@func_a } : () -> ()