207
|
1 // RUN: mlir-opt %s -test-print-callgraph -split-input-file -allow-unregistered-dialect 2>&1 | FileCheck %s
|
150
|
2
|
|
3 // CHECK-LABEL: Testing : "simple"
|
|
4 module attributes {test.name = "simple"} {
|
|
5
|
|
6 // CHECK: Node{{.*}}func_a
|
|
7 func @func_a() {
|
|
8 return
|
|
9 }
|
|
10
|
207
|
11 func private @func_b()
|
150
|
12
|
|
13 // CHECK: Node{{.*}}func_c
|
|
14 // CHECK-NEXT: Call-Edge{{.*}}External-Node
|
|
15 func @func_c() {
|
|
16 call @func_b() : () -> ()
|
|
17 return
|
|
18 }
|
|
19
|
|
20 // CHECK: Node{{.*}}func_d
|
|
21 // CHECK-NEXT: Call-Edge{{.*}}func_c
|
|
22 func @func_d() {
|
|
23 call @func_c() : () -> ()
|
|
24 return
|
|
25 }
|
|
26
|
|
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
|
|
31 func @func_e() {
|
|
32 call @func_c() : () -> ()
|
|
33 call @func_d() : () -> ()
|
|
34 call @func_e() : () -> ()
|
|
35 return
|
|
36 }
|
|
37
|
|
38 // CHECK: Node{{.*}}func_f
|
|
39 // CHECK: Child-Edge{{.*}}test.functional_region_op
|
|
40 // CHECK: Call-Edge{{.*}}test.functional_region_op
|
|
41 func @func_f() {
|
|
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"() : () -> ()
|
|
47 }) : () -> (() -> ())
|
|
48
|
|
49 call_indirect %fn() : () -> ()
|
|
50 return
|
|
51 }
|
|
52 }
|
|
53
|
|
54 // -----
|
|
55
|
|
56 // CHECK-LABEL: Testing : "nested"
|
|
57 module attributes {test.name = "nested"} {
|
|
58 module @nested_module {
|
|
59 // CHECK: Node{{.*}}func_a
|
|
60 func @func_a() {
|
|
61 return
|
|
62 }
|
|
63 }
|
|
64
|
|
65 // CHECK: Node{{.*}}func_b
|
|
66 // CHECK: Call-Edge{{.*}}func_a
|
|
67 func @func_b() {
|
|
68 "test.conversion_call_op"() { callee = @nested_module::@func_a } : () -> ()
|
|
69 return
|
|
70 }
|
|
71 }
|