59 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; Basic test to check that DominatorTreeAnalysis is preserved by IPSCCP and3; the following analysis can re-use it. The test contains two trivial functions4; IPSCCP can simplify, so we can test the case where IPSCCP makes changes.5 6; RUN: opt -disable-verify -debug-pass-manager \7; RUN: -passes='function(require<domtree>,require<postdomtree>),ipsccp,function(require<domtree>,require<postdomtree>)' -S %s 2>&1 \8; RUN: | FileCheck -check-prefixes=IR,NEW-PM %s9 10; RUN: opt -passes='function(require<postdomtree>),ipsccp,function(verify<domtree>)' -S %s | FileCheck -check-prefixes=IR %s11 12; NEW-PM: Running analysis: DominatorTreeAnalysis on f113; NEW-PM: Running analysis: PostDominatorTreeAnalysis on f114; NEW-PM: Running analysis: DominatorTreeAnalysis on f215; NEW-PM: Running analysis: PostDominatorTreeAnalysis on f216; NEW-PM: Running pass: IPSCCPPass17; NEW-PM-DAG: Running analysis: AssumptionAnalysis on f118; NEW-PM-DAG: Running analysis: AssumptionAnalysis on f219; NEW-PM-NOT: Running analysis: AssumptionAnalysis20 21 22define internal i32 @f1() readnone {23; IR-LABEL: define internal i32 @f1(24; IR-SAME: ) #[[ATTR0:[0-9]+]] {25; IR-NEXT: [[ENTRY:.*:]]26; IR-NEXT: br label %[[BB2:.*]]27; IR: [[BB2]]:28; IR-NEXT: ret i32 poison29;30entry:31 br i1 false, label %bb1, label %bb232bb1:33 ret i32 1034bb2:35 ret i32 1036}37 38define i32 @f2(i32 %n) {39; IR-LABEL: define i32 @f2(40; IR-SAME: i32 [[N:%.*]]) {41; IR-NEXT: [[I:%.*]] = call i32 @f1()42; IR-NEXT: br label %[[BBTRUE:.*]]43; IR: [[BBTRUE]]:44; IR-NEXT: ret i32 045;46 %i = call i32 @f1()47 %cmp = icmp eq i32 %i, 1048 br i1 %cmp, label %bbtrue, label %bbfalse49 50bbtrue:51 ret i32 052 53bbfalse:54 %res = add i32 %n, %i55 ret i32 %res56}57;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:58; NEW-PM: {{.*}}59