xref: /aosp_15_r20/external/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/phi-and-select.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -cfl-steens-aa -aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; Derived from (a subset of) BasicAA/phi-and-select.ll
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; CHECK: Function: qux
5*9880d681SAndroid Build Coastguard Worker; CHECK:  NoAlias: double* %a, double* %b
6*9880d681SAndroid Build Coastguard Worker; CHECK: ===== Alias Analysis Evaluator Report =====
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; Two PHIs with disjoint sets of inputs.
9*9880d681SAndroid Build Coastguard Workerdefine void @qux(i1 %m, double* noalias %x, double* noalias %y,
10*9880d681SAndroid Build Coastguard Worker                 i1 %n, double* noalias %v, double* noalias %w) {
11*9880d681SAndroid Build Coastguard Workerentry:
12*9880d681SAndroid Build Coastguard Worker  br i1 %m, label %true, label %false
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workertrue:
15*9880d681SAndroid Build Coastguard Worker  br label %exit
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerfalse:
18*9880d681SAndroid Build Coastguard Worker  br label %exit
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerexit:
21*9880d681SAndroid Build Coastguard Worker  %a = phi double* [ %x, %true ], [ %y, %false ]
22*9880d681SAndroid Build Coastguard Worker  br i1 %n, label %ntrue, label %nfalse
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerntrue:
25*9880d681SAndroid Build Coastguard Worker  br label %nexit
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workernfalse:
28*9880d681SAndroid Build Coastguard Worker  br label %nexit
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workernexit:
31*9880d681SAndroid Build Coastguard Worker  %b = phi double* [ %v, %ntrue ], [ %w, %nfalse ]
32*9880d681SAndroid Build Coastguard Worker  store volatile double 0.0, double* %a
33*9880d681SAndroid Build Coastguard Worker  store volatile double 1.0, double* %b
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37