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