xref: /llvm-project/llvm/test/Other/ChangePrinters/DotCfg/print-changed-dot-cfg.ll (revision 9c1cdc23f82ba26c597554363e4e7aa45f3196ed)
1; Simple checks of -print-changed=dot-cfg
2;
3; Note that (mostly) only the banners are checked.
4;
5; Simple functionality check.
6; RUN: rm -rf %t && mkdir -p %t
7; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes=instsimplify -dot-cfg-dir=%t < %s -o /dev/null
8; RUN: ls %t/*.pdf %t/passes.html | count 5
9; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-SIMPLE
10;
11; Check that only the passes that change the IR are printed and that the
12; others (including g) are filtered out.
13; RUN: rm -rf %t && mkdir -p %t
14; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes=instsimplify -filter-print-funcs=f  -dot-cfg-dir=%t < %s -o /dev/null
15; RUN: ls %t/*.pdf %t/passes.html | count 3
16; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-FUNC-FILTER
17;
18; Check that the reporting of IRs respects is not affected by
19; -print-module-scope
20; RUN: rm -rf %t && mkdir -p %t
21; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes=instsimplify -print-module-scope -dot-cfg-dir=%t < %s -o /dev/null
22; RUN: ls %t/*.pdf %t/passes.html | count 5
23; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-PRINT-MOD-SCOPE
24;
25; Check that reporting of multiple functions happens
26; RUN: rm -rf %t && mkdir -p %t
27; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes=instsimplify -filter-print-funcs="f,g" -dot-cfg-dir=%t < %s -o /dev/null
28; RUN: ls %t/*.pdf %t/passes.html | count 5
29; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-FILTER-MULT-FUNC
30;
31; Check that the reporting of IRs respects -filter-passes
32; RUN: rm -rf %t && mkdir -p %t
33; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes="instsimplify,no-op-function" -filter-passes="no-op-function" -dot-cfg-dir=%t < %s -o /dev/null
34; RUN: ls %t/*.pdf %t/passes.html | count 3
35; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-FILTER-PASSES
36;
37; Check that the reporting of IRs respects -filter-passes with multiple passes
38; RUN: rm -rf %t && mkdir -p %t
39; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes="instsimplify,no-op-function" -filter-passes="no-op-function,instsimplify" -dot-cfg-dir=%t < %s -o /dev/null
40; RUN: ls %t/*.pdf %t/passes.html | count 5
41; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-FILTER-MULT-PASSES
42;
43; Check that the reporting of IRs respects both -filter-passes and -filter-print-funcs
44; RUN: rm -rf %t && mkdir -p %t
45; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes="instsimplify,no-op-function" -filter-passes="no-op-function,instsimplify" -filter-print-funcs=f -dot-cfg-dir=%t < %s -o /dev/null
46; RUN: ls %t/*.pdf %t/passes.html | count 3
47; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-FILTER-FUNC-PASSES
48;
49; Check that repeated passes that change the IR are printed and that the
50; others (including g) are filtered out.  Note that only the first time
51; instsimplify is run on f will result in changes
52; RUN: rm -rf %t && mkdir -p %t
53; RUN: opt -disable-verify -S -print-changed=dot-cfg -passes="instsimplify,instsimplify" -filter-print-funcs=f  -dot-cfg-dir=%t < %s -o /dev/null
54; RUN: ls %t/*.pdf %t/passes.html | count 3
55; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC
56;
57; Simple checks of -print-changed=dot-cfg-quiet
58;
59; Note that (mostly) only the banners are checked.
60;
61; Simple functionality check.
62; RUN: rm -rf %t && mkdir -p %t
63; RUN: opt -S -print-changed=dot-cfg-quiet -passes=instsimplify -dot-cfg-dir=%t < %s -o /dev/null
64; RUN: ls %t/*.pdf %t/passes.html | count 3
65; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-SIMPLE --allow-empty
66;
67; Check that only the passes that change the IR are printed and that the
68; others (including g) are filtered out.
69; RUN: rm -rf %t && mkdir -p %t
70; RUN: opt -S -print-changed=dot-cfg-quiet -passes=instsimplify -filter-print-funcs=f  -dot-cfg-dir=%t < %s -o /dev/null
71; RUN: ls %t/*.pdf %t/passes.html | count 2
72; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-FUNC-FILTER
73;
74; Check that the reporting of IRs respects is not affected by
75; -print-module-scope
76; RUN: rm -rf %t && mkdir -p %t
77; RUN: opt -S -print-changed=dot-cfg-quiet -passes=instsimplify -print-module-scope -dot-cfg-dir=%t < %s -o /dev/null
78; RUN: ls %t/*.pdf %t/passes.html | count 3
79; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE
80;
81; Check that reporting of multiple functions happens
82; RUN: rm -rf %t && mkdir -p %t
83; RUN: opt -S -print-changed=dot-cfg-quiet -passes=instsimplify -filter-print-funcs="f,g" -dot-cfg-dir=%t < %s -o /dev/null
84; RUN: ls %t/*.pdf %t/passes.html | count 3
85; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC
86;
87; Check that the reporting of IRs respects -filter-passes
88; RUN: rm -rf %t && mkdir -p %t
89; RUN: opt -S -print-changed=dot-cfg-quiet -passes="instsimplify,no-op-function" -filter-passes="no-op-function" -dot-cfg-dir=%t < %s -o /dev/null
90; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-FILTER-PASSES-NONE --allow-empty
91;
92; Check that the reporting of IRs respects -filter-passes with multiple passes
93; RUN: rm -rf %t && mkdir -p %t
94; RUN: opt -S -print-changed=dot-cfg-quiet -passes="instsimplify,no-op-function" -filter-passes="no-op-function,instsimplify" -dot-cfg-dir=%t < %s -o /dev/null
95; RUN: ls %t/*.pdf %t/passes.html | count 3
96; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES
97;
98; Check that the reporting of IRs respects both -filter-passes and -filter-print-funcs
99; RUN: rm -rf %t && mkdir -p %t
100; RUN: opt -S -print-changed=dot-cfg-quiet -passes="instsimplify,no-op-function" -filter-passes="no-op-function,instsimplify" -filter-print-funcs=f -dot-cfg-dir=%t < %s -o /dev/null
101; RUN: ls %t/*.pdf %t/passes.html | count 2
102; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-FILTER-FUNC-PASSES
103;
104; Check that repeated passes that change the IR are printed and that the
105; others (including g) are filtered out.  Note that only the first time
106; instsimplify is run on f will result in changes
107; RUN: rm -rf %t && mkdir -p %t
108; RUN: opt -S -print-changed=dot-cfg-quiet -passes="instsimplify,instsimplify" -filter-print-funcs=f  -dot-cfg-dir=%t < %s -o /dev/null
109; RUN: ls %t/*.pdf %t/passes.html | count 2
110; RUN: FileCheck %s -input-file=%t/passes.html --check-prefix=CHECK-DOT-CFG-QUIET-MULT-PASSES-FILTER-FUNC
111
112define i32 @g() {
113entry:
114  %a = add i32 2, 3
115  ret i32 %a
116}
117
118define i32 @f() {
119entry:
120  %a = add i32 2, 3
121  ret i32 %a
122}
123
124; CHECK-DOT-CFG-SIMPLE-FILES: passes.html diff_0.pdf diff_1.pdf diff_3.pdf
125; CHECK-DOT-CFG-SIMPLE: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
126; CHECK-DOT-CFG-SIMPLE-NEXT: <body><button type="button" class="collapsible">0. Initial IR (by function)</button>
127; CHECK-DOT-CFG-SIMPLE-NEXT: <div class="content">
128; CHECK-DOT-CFG-SIMPLE-NEXT:   <p>
129; CHECK-DOT-CFG-SIMPLE-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
130; CHECK-DOT-CFG-SIMPLE-NEXT:   <a href="diff_0_1.pdf" target="_blank">0.1. Initial IR</a><br/>
131; CHECK-DOT-CFG-SIMPLE-NEXT:   </p>
132; CHECK-DOT-CFG-SIMPLE-NEXT: </div><br/>
133; CHECK-DOT-CFG-SIMPLE-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on g</a><br/>
134; CHECK-DOT-CFG-SIMPLE-NEXT:     </p></div>
135; CHECK-DOT-CFG-SIMPLE-NEXT:   <a>2. PassManager{{.*}} on g ignored</a><br/>
136; CHECK-DOT-CFG-SIMPLE-NEXT:   <a href="diff_3.pdf" target="_blank">3. Pass InstSimplifyPass on f</a><br/>
137; CHECK-DOT-CFG-SIMPLE-NEXT:     </p></div>
138; CHECK-DOT-CFG-SIMPLE-NEXT:   <a>4. PassManager{{.*}} on f ignored</a><br/>
139; CHECK-DOT-CFG-SIMPLE-NEXT:   <a>5. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
140; CHECK-DOT-CFG-SIMPLE-NEXT:   <a>6. PrintModulePass on [module] ignored</a><br/>
141; CHECK-DOT-CFG-SIMPLE-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
142
143; CHECK-DOT-CFG-FUNC-FILTER: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
144; CHECK-DOT-CFG-FUNC-FILTER-NEXT: <body><button type="button" class="collapsible">0. Initial IR (by function)</button>
145; CHECK-DOT-CFG-FUNC-FILTER-NEXT: <div class="content">
146; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <p>
147; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
148; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   </p>
149; CHECK-DOT-CFG-FUNC-FILTER-NEXT: </div><br/>
150; CHECK-DOT-CFG-FUNC-FILTER-NEXT: <a>1. Pass InstSimplifyPass on g filtered out</a><br/>
151; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <a>2. PassManager{{.*}} on g ignored</a><br/>
152; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <a href="diff_3.pdf" target="_blank">3. Pass InstSimplifyPass on f</a><br/>
153; CHECK-DOT-CFG-FUNC-FILTER-NEXT:     </p></div>
154; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <a>4. PassManager{{.*}} on f ignored</a><br/>
155; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <a>5. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
156; CHECK-DOT-CFG-FUNC-FILTER-NEXT:   <a>6. PrintModulePass on [module] ignored</a><br/>
157; CHECK-DOT-CFG-FUNC-FILTER-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
158
159; CHECK-DOT-CFG-PRINT-MOD-SCOPE: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
160; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT: <body><button type="button" class="collapsible">0. Initial IR (by function)</button>
161; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT: <div class="content">
162; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <p>
163; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
164; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a href="diff_0_1.pdf" target="_blank">0.1. Initial IR</a><br/>
165; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   </p>
166; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT: </div><br/>
167; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on g</a><br/>
168; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:     </p></div>
169; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a>2. PassManager{{.*}} on g ignored</a><br/>
170; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a href="diff_3.pdf" target="_blank">3. Pass InstSimplifyPass on f</a><br/>
171; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:     </p></div>
172; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a>4. PassManager{{.*}} on f ignored</a><br/>
173; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a>5. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
174; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT:   <a>6. PrintModulePass on [module] ignored</a><br/>
175; CHECK-DOT-CFG-PRINT-MOD-SCOPE-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
176
177; CHECK-DOT-CFG-FILTER-MULT-FUNC: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
178; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT: <body><button type="button" class="collapsible">0. Initial IR (by function)</button>
179; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT: <div class="content">
180; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <p>
181; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
182; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a href="diff_0_1.pdf" target="_blank">0.1. Initial IR</a><br/>
183; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   </p>
184; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT: </div><br/>
185; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on g</a><br/>
186; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:     </p></div>
187; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a>2. PassManager{{.*}} on g ignored</a><br/>
188; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a href="diff_3.pdf" target="_blank">3. Pass InstSimplifyPass on f</a><br/>
189; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:     </p></div>
190; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a>4. PassManager{{.*}} on f ignored</a><br/>
191; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a>5. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
192; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT:   <a>6. PrintModulePass on [module] ignored</a><br/>
193; CHECK-DOT-CFG-FILTER-MULT-FUNC-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
194
195; CHECK-DOT-CFG-FILTER-PASSES: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
196; CHECK-DOT-CFG-FILTER-PASSES-NEXT: <body><button type="button" class="collapsible">0. Initial IR (by function)</button>
197; CHECK-DOT-CFG-FILTER-PASSES-NEXT: <div class="content">
198; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <p>
199; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
200; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a href="diff_0_1.pdf" target="_blank">0.1. Initial IR</a><br/>
201; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   </p>
202; CHECK-DOT-CFG-FILTER-PASSES-NEXT: </div><br/>
203; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>1. Pass InstSimplifyPass on g filtered out</a><br/>
204; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>2. Pass NoOpFunctionPass on g omitted because no change</a><br/>
205; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>3. PassManager{{.*}} on g ignored</a><br/>
206; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>4. Pass InstSimplifyPass on f filtered out</a><br/>
207; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>5. Pass NoOpFunctionPass on f omitted because no change</a><br/>
208; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>6. PassManager{{.*}} on f ignored</a><br/>
209; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>7. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
210; CHECK-DOT-CFG-FILTER-PASSES-NEXT:   <a>8. PrintModulePass on [module] ignored</a><br/>
211; CHECK-DOT-CFG-FILTER-PASSES-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
212
213
214
215; CHECK-DOT-CFG-FILTER-MULT-PASSES: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
216; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT: <button type="button" class="collapsible">0. Initial IR (by function)</button>
217; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT: <div class="content">
218; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <p>
219; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
220; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a href="diff_0_1.pdf" target="_blank">0.1. Initial IR</a><br/>
221; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   </p>
222; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT: </div><br/>
223; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on g</a><br/>
224; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:     </p></div>
225; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a>2. Pass NoOpFunctionPass on g omitted because no change</a><br/>
226; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a>3. PassManager{{.*}} on g ignored</a><br/>
227; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a href="diff_4.pdf" target="_blank">4. Pass InstSimplifyPass on f</a><br/>
228; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:     </p></div>
229; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a>5. Pass NoOpFunctionPass on f omitted because no change</a><br/>
230; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a>6. PassManager{{.*}} on f ignored</a><br/>
231; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a>7. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
232; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT:   <a>8. PrintModulePass on [module] ignored</a><br/>
233; CHECK-DOT-CFG-FILTER-MULT-PASSES-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
234
235; CHECK-DOT-CFG-FILTER-FUNC-PASSES: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
236; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT: <button type="button" class="collapsible">0. Initial IR (by function)</button>
237; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT: <div class="content">
238; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <p>
239; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
240; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   </p>
241; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT: </div><br/>
242; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>1. Pass InstSimplifyPass on g filtered out</a><br/>
243; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>2. Pass NoOpFunctionPass on g filtered out</a><br/>
244; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>3. PassManager{{.*}} on g ignored</a><br/>
245; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a href="diff_4.pdf" target="_blank">4. Pass InstSimplifyPass on f</a><br/>
246; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:     </p></div>
247; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>5. Pass NoOpFunctionPass on f omitted because no change</a><br/>
248; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>6. PassManager{{.*}} on f ignored</a><br/>
249; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>7. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
250; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT:   <a>8. PrintModulePass on [module] ignored</a><br/>
251; CHECK-DOT-CFG-FILTER-FUNC-PASSES-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
252
253
254; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
255; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT: <button type="button" class="collapsible">0. Initial IR (by function)</button>
256; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT: <div class="content">
257; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <p>
258; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a href="diff_0_0.pdf" target="_blank">0.0. Initial IR</a><br/>
259; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   </p>
260; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT: </div><br/>
261; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>1. Pass InstSimplifyPass on g filtered out</a><br/>
262; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>2. Pass InstSimplifyPass on g filtered out</a><br/>
263; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>3. PassManager{{.*}} on g ignored</a><br/>
264; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a href="diff_4.pdf" target="_blank">4. Pass InstSimplifyPass on f</a><br/>
265; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:     </p></div>
266; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>5. Pass InstSimplifyPass on f omitted because no change</a><br/>
267; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>6. PassManager{{.*}} on f ignored</a><br/>
268; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>7. ModuleToFunctionPassAdaptor on [module] ignored</a><br/>
269; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT:   <a>8. PrintModulePass on [module] ignored</a><br/>
270; CHECK-DOT-CFG-MULT-PASSES-FILTER-FUNC-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
271
272; CHECK-DOT-CFG-QUIET-SIMPLE: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
273; CHECK-DOT-CFG-QUIET-SIMPLE-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on g</a><br/>
274; CHECK-DOT-CFG-QUIET-SIMPLE-NEXT:     </p></div>
275; CHECK-DOT-CFG-QUIET-SIMPLE-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on f</a><br/>
276; CHECK-DOT-CFG-QUIET-SIMPLE-NEXT:     </p></div>
277; CHECK-DOT-CFG-QUIET-SIMPLE-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
278
279; CHECK-DOT-CFG-QUIET-FUNC-FILTER: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
280; CHECK-DOT-CFG-QUIET-FUNC-FILTER-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on f</a><br/>
281; CHECK-DOT-CFG-QUIET-FUNC-FILTER-NEXT:     </p></div>
282; CHECK-DOT-CFG-QUIET-FUNC-FILTER-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
283
284; CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
285; CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on g</a><br/>
286; CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE-NEXT:     </p></div>
287; CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on f</a><br/>
288; CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE-NEXT:     </p></div>
289; CHECK-DOT-CFG-QUIET-PRINT-MOD-SCOPE-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
290
291; CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
292; CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on g</a><br/>
293; CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC-NEXT:     </p></div>
294; CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on f</a><br/>
295; CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC-NEXT:     </p></div>
296; CHECK-DOT-CFG-QUIET-FILTER-MULT-FUNC-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
297
298; CHECK-DOT-CFG-QUIET-FILTER-PASSES-NONE: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
299; CHECK-DOT-CFG-QUIET-FILTER-PASSES-NONE-NEXT: <body><script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
300
301; CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
302; CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on g</a><br/>
303; CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES-NEXT:     </p></div>
304; CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES-NEXT:   <a href="diff_1.pdf" target="_blank">1. Pass InstSimplifyPass on f</a><br/>
305; CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES-NEXT:     </p></div>
306; CHECK-DOT-CFG-QUIET-FILTER-MULT-PASSES-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
307
308; CHECK-DOT-CFG-QUIET-FILTER-FUNC-PASSES: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
309; CHECK-DOT-CFG-QUIET-FILTER-FUNC-PASSES-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on f</a><br/>
310; CHECK-DOT-CFG-QUIET-FILTER-FUNC-PASSES-NEXT:     </p></div>
311; CHECK-DOT-CFG-QUIET-FILTER-FUNC-PASSES-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
312
313; CHECK-DOT-CFG-QUIET-MULT-PASSES-FILTER-FUNC: <!doctype html><html><head><style>.collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px;} .active, .collapsible:hover { background-color: #555;} .content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1;}</style><title>passes.html</title></head>
314; CHECK-DOT-CFG-QUIET-MULT-PASSES-FILTER-FUNC-NEXT: <body>  <a href="diff_0.pdf" target="_blank">0. Pass InstSimplifyPass on f</a><br/>
315; CHECK-DOT-CFG-QUIET-MULT-PASSES-FILTER-FUNC-NEXT:     </p></div>
316; CHECK-DOT-CFG-QUIET-MULT-PASSES-FILTER-FUNC-NEXT: <script>var coll = document.getElementsByClassName("collapsible");var i;for (i = 0; i < coll.length; i++) {coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block"){ content.style.display = "none"; } else { content.style.display= "block"; } }); }</script></body></html>
317