[rtsan] Remove mkfifoat interceptor (#116997)
[llvm-project.git] / mlir / test / Analysis / test-callgraph.mlir
blobf6c9ff5006e0533fb3cc04c776038e658bbe1aef
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
7   func.func @func_a() {
8     return
9   }
11   func.func private @func_b()
13   // CHECK: Node{{.*}}func_c
14   // CHECK-NEXT: Call-Edge{{.*}}Unknown-Callee-Node
15   func.func @func_c() {
16     call @func_b() : () -> ()
17     return
18   }
20   // CHECK: Node{{.*}}func_d
21   // CHECK-NEXT: Call-Edge{{.*}}func_c
22   func.func @func_d() {
23     call @func_c() : () -> ()
24     return
25   }
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 @func_e() {
32     call @func_c() : () -> ()
33     call @func_d() : () -> ()
34     call @func_e() : () -> ()
35     return
36   }
38   // CHECK: Node{{.*}}func_f
39   // CHECK: Child-Edge{{.*}}test.functional_region_op
40   // CHECK: Call-Edge{{.*}}test.functional_region_op
41   func.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     }) : () -> (() -> ())
49     call_indirect %fn() : () -> ()
50     return
51   }
54 // -----
56 // CHECK-LABEL: Testing : "nested"
57 module attributes {test.name = "nested"} {
58   module @nested_module {
59     // CHECK: Node{{.*}}func_a
60     func.func @func_a() {
61       return
62     }
63   }
65   // CHECK: Node{{.*}}func_b
66   // CHECK: Call-Edge{{.*}}func_a
67   func.func @func_b() {
68     "test.conversion_call_op"() { callee = @nested_module::@func_a } : () -> ()
69     return
70   }
73 // -----
75 // CHECK-LABEL: Testing : "SCC"
76 // CHECK: SCCs
77 module attributes {test.name = "SCC"} {
78   // CHECK: SCC :
79   // CHECK-NEXT: Node{{.*}}Unknown-Callee-Node
81   // CHECK: SCC :
82   // CHECK-NEXT: Node{{.*}}foo
83   func.func @foo(%arg0 : () -> ()) {
84     call_indirect %arg0() : () -> ()
85     return
86   }
88   // CHECK: SCC :
89   // CHECK-NEXT: Node{{.*}}bar
90   func.func @bar(%arg1 : () -> ()) {
91     call_indirect %arg1() : () -> ()
92     return
93   }
95   // CHECK: SCC :
96   // CHECK-NEXT: Node{{.*}}External-Caller-Node