1*9880d681SAndroid Build Coastguard Worker; RUN: opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare void @callee(double* %callee_arg) 4*9880d681SAndroid Build Coastguard Workerdeclare void @nocap_callee(double* nocapture %nocap_callee_arg) 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdeclare double* @normal_returner() 7*9880d681SAndroid Build Coastguard Workerdeclare noalias double* @noalias_returner() 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine void @caller_a(double* %arg_a0, 10*9880d681SAndroid Build Coastguard Worker double* %arg_a1, 11*9880d681SAndroid Build Coastguard Worker double* noalias %noalias_arg_a0, 12*9880d681SAndroid Build Coastguard Worker double* noalias %noalias_arg_a1, 13*9880d681SAndroid Build Coastguard Worker double** %indirect_a0, 14*9880d681SAndroid Build Coastguard Worker double** %indirect_a1) { 15*9880d681SAndroid Build Coastguard Worker %escape_alloca_a0 = alloca double 16*9880d681SAndroid Build Coastguard Worker %escape_alloca_a1 = alloca double 17*9880d681SAndroid Build Coastguard Worker %noescape_alloca_a0 = alloca double 18*9880d681SAndroid Build Coastguard Worker %noescape_alloca_a1 = alloca double 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker %normal_ret_a0 = call double* @normal_returner() 21*9880d681SAndroid Build Coastguard Worker %normal_ret_a1 = call double* @normal_returner() 22*9880d681SAndroid Build Coastguard Worker %noalias_ret_a0 = call double* @noalias_returner() 23*9880d681SAndroid Build Coastguard Worker %noalias_ret_a1 = call double* @noalias_returner() 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker %loaded_a0 = load double*, double** %indirect_a0 26*9880d681SAndroid Build Coastguard Worker %loaded_a1 = load double*, double** %indirect_a1 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker call void @callee(double* %escape_alloca_a0) 29*9880d681SAndroid Build Coastguard Worker call void @callee(double* %escape_alloca_a1) 30*9880d681SAndroid Build Coastguard Worker call void @nocap_callee(double* %noescape_alloca_a0) 31*9880d681SAndroid Build Coastguard Worker call void @nocap_callee(double* %noescape_alloca_a1) 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %loaded_a0 34*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %loaded_a1 35*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %arg_a0 36*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %arg_a1 37*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %noalias_arg_a0 38*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %noalias_arg_a1 39*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %escape_alloca_a0 40*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %escape_alloca_a1 41*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %noescape_alloca_a0 42*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %noescape_alloca_a1 43*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %normal_ret_a0 44*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %normal_ret_a1 45*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %noalias_ret_a0 46*9880d681SAndroid Build Coastguard Worker store double 0.0, double* %noalias_ret_a1 47*9880d681SAndroid Build Coastguard Worker ret void 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker; CHECK: Function: caller_a: 16 pointers, 8 call sites 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double* %arg_a1 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_arg_a0 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_arg_a0 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_arg_a1 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_arg_a1 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noalias_arg_a1 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double** %indirect_a0 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a1, double** %indirect_a0 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double** %indirect_a0 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double** %indirect_a0 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double** %indirect_a1 62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a1, double** %indirect_a1 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double** %indirect_a1 64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double** %indirect_a1 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double** %indirect_a0, double** %indirect_a1 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %escape_alloca_a0 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %escape_alloca_a0 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_arg_a0 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_arg_a1 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double** %indirect_a0 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double** %indirect_a1 72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %escape_alloca_a1 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %escape_alloca_a1 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_arg_a0 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_arg_a1 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double** %indirect_a0 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double** %indirect_a1 78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %escape_alloca_a1 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noescape_alloca_a0 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noescape_alloca_a0 81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noescape_alloca_a0 82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noescape_alloca_a0 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double** %indirect_a0 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double** %indirect_a1 85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noescape_alloca_a0 86*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noescape_alloca_a0 87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noescape_alloca_a1 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noescape_alloca_a1 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noescape_alloca_a1 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noescape_alloca_a1 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double** %indirect_a0 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double** %indirect_a1 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noescape_alloca_a1 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noescape_alloca_a1 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %noescape_alloca_a1 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double* %normal_ret_a0 97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a1, double* %normal_ret_a0 98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %normal_ret_a0 99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %normal_ret_a0 100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double** %indirect_a0 101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double** %indirect_a1 102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %normal_ret_a0 103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %normal_ret_a0 104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %normal_ret_a0 105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double* %normal_ret_a0 106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double* %normal_ret_a1 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a1, double* %normal_ret_a1 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %normal_ret_a1 109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %normal_ret_a1 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %normal_ret_a1, double** %indirect_a0 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %normal_ret_a1, double** %indirect_a1 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %normal_ret_a1 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %normal_ret_a1 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %normal_ret_a1 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double* %normal_ret_a1 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double* %normal_ret_a1 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_ret_a0 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_ret_a0 119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noalias_ret_a0 120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noalias_ret_a0 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double** %indirect_a0 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double** %indirect_a1 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_ret_a0 124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_ret_a0 125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noescape_alloca_a0 126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noescape_alloca_a1 127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %normal_ret_a0 128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %normal_ret_a1 129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_ret_a1 130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_ret_a1 131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noalias_ret_a1 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noalias_ret_a1 133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double** %indirect_a0 134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double** %indirect_a1 135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_ret_a1 136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_ret_a1 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %noescape_alloca_a0 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %noescape_alloca_a1 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %normal_ret_a0 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %normal_ret_a1 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noalias_ret_a1 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a0 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a0 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a0 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a1 146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a0 147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a1 148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a0 149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a0 150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a0 151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a1 152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a0 153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a1 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a0 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a1 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a1 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a1 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a0 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a1 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a0 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a1 162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a1 163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a1 164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a0 165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a1 166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a0 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a1 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a0 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a1 170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %loaded_a1 171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %normal_ret_a0 = call double* @normal_returner() 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %normal_ret_a0 = call double* @normal_returner() 173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %normal_ret_a0 = call double* @normal_returner() 174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %normal_ret_a0 = call double* @normal_returner() 175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %normal_ret_a0 = call double* @normal_returner() 176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %normal_ret_a0 = call double* @normal_returner() 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %normal_ret_a0 = call double* @normal_returner() 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %normal_ret_a0 = call double* @normal_returner() 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %normal_ret_a0 = call double* @normal_returner() 180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %normal_ret_a0 = call double* @normal_returner() 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %normal_ret_a0 = call double* @normal_returner() 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %normal_ret_a0 = call double* @normal_returner() 183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %normal_ret_a0 = call double* @normal_returner() 184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %normal_ret_a0 = call double* @normal_returner() 185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a0 = call double* @normal_returner() 186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a0 = call double* @normal_returner() 187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %normal_ret_a1 = call double* @normal_returner() 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %normal_ret_a1 = call double* @normal_returner() 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %normal_ret_a1 = call double* @normal_returner() 190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %normal_ret_a1 = call double* @normal_returner() 191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %normal_ret_a1 = call double* @normal_returner() 192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %normal_ret_a1 = call double* @normal_returner() 193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %normal_ret_a1 = call double* @normal_returner() 194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %normal_ret_a1 = call double* @normal_returner() 195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %normal_ret_a1 = call double* @normal_returner() 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %normal_ret_a1 = call double* @normal_returner() 197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %normal_ret_a1 = call double* @normal_returner() 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %normal_ret_a1 = call double* @normal_returner() 199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %normal_ret_a1 = call double* @normal_returner() 200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %normal_ret_a1 = call double* @normal_returner() 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a1 = call double* @normal_returner() 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a1 = call double* @normal_returner() 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %noalias_ret_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a0 = call double* @noalias_returner() 218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a0 = call double* @noalias_returner() 219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %noalias_ret_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a1 = call double* @noalias_returner() 234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a1 = call double* @noalias_returner() 235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @callee(double* %escape_alloca_a0) 236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @callee(double* %escape_alloca_a0) 237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @callee(double* %escape_alloca_a0) 238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @callee(double* %escape_alloca_a0) 239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @callee(double* %escape_alloca_a0) 240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @callee(double* %escape_alloca_a0) 241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @callee(double* %escape_alloca_a0) 242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @callee(double* %escape_alloca_a0) 243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @callee(double* %escape_alloca_a0) 244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> call void @callee(double* %escape_alloca_a0) 245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @callee(double* %escape_alloca_a0) 246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @callee(double* %escape_alloca_a0) 247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @callee(double* %escape_alloca_a0) 248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @callee(double* %escape_alloca_a0) 249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a0) 250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a0) 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @callee(double* %escape_alloca_a1) 252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @callee(double* %escape_alloca_a1) 253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @callee(double* %escape_alloca_a1) 254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @callee(double* %escape_alloca_a1) 255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @callee(double* %escape_alloca_a1) 256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @callee(double* %escape_alloca_a1) 257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @callee(double* %escape_alloca_a1) 258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @callee(double* %escape_alloca_a1) 259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @callee(double* %escape_alloca_a1) 260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> call void @callee(double* %escape_alloca_a1) 261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @callee(double* %escape_alloca_a1) 262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @callee(double* %escape_alloca_a1) 263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @callee(double* %escape_alloca_a1) 264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @callee(double* %escape_alloca_a1) 265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a1) 266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a1) 267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %noescape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0) 282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0) 283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %noescape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1) 298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1) 299*9880d681SAndroid Build Coastguard Worker; CHECK: ===== Alias Analysis Evaluator Report ===== 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 120 Total Alias Queries Performed 301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 84 no alias responses (70.0%) 302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 36 may alias responses (30.0%) 303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 0 partial alias responses (0.0%) 304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 0 must alias responses (0.0%) 305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Alias Analysis Evaluator Pointer Alias Summary: 70%/30%/0% 306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 184 Total ModRef Queries Performed 307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 44 no mod/ref responses (23.9%) 308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 0 mod responses (0.0%) 309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 0 ref responses (0.0%) 310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 140 mod & ref responses (76.0%) 311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Alias Analysis Evaluator Mod/Ref Summary: 23%/0%/0%/76% 312