1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -disable-basicaa -cfl-steens-aa -aa-eval -print-all-alias-modref-info 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; When merging MustAlias and PartialAlias, merge to PartialAlias 3*9880d681SAndroid Build Coastguard Worker; instead of MayAlias. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; FIXME: This could be PartialAlias but CFLSteensAA can't currently prove it 9*9880d681SAndroid Build Coastguard Worker; CHECK: MayAlias: i16* %bigbase0, i8* %phi 10*9880d681SAndroid Build Coastguard Workerdefine i8 @test0(i1 %x) { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker %base = alloca i8, align 4 13*9880d681SAndroid Build Coastguard Worker %baseplusone = getelementptr i8, i8* %base, i64 1 14*9880d681SAndroid Build Coastguard Worker br i1 %x, label %red, label %green 15*9880d681SAndroid Build Coastguard Workerred: 16*9880d681SAndroid Build Coastguard Worker br label %green 17*9880d681SAndroid Build Coastguard Workergreen: 18*9880d681SAndroid Build Coastguard Worker %phi = phi i8* [ %baseplusone, %red ], [ %base, %entry ] 19*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %phi 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker %bigbase0 = bitcast i8* %base to i16* 22*9880d681SAndroid Build Coastguard Worker store i16 -1, i16* %bigbase0 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker %loaded = load i8, i8* %phi 25*9880d681SAndroid Build Coastguard Worker ret i8 %loaded 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; FIXME: This could be PartialAlias but CFLSteensAA can't currently prove it 29*9880d681SAndroid Build Coastguard Worker; CHECK: MayAlias: i16* %bigbase1, i8* %sel 30*9880d681SAndroid Build Coastguard Workerdefine i8 @test1(i1 %x) { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %base = alloca i8, align 4 33*9880d681SAndroid Build Coastguard Worker %baseplusone = getelementptr i8, i8* %base, i64 1 34*9880d681SAndroid Build Coastguard Worker %sel = select i1 %x, i8* %baseplusone, i8* %base 35*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %sel 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker %bigbase1 = bitcast i8* %base to i16* 38*9880d681SAndroid Build Coastguard Worker store i16 -1, i16* %bigbase1 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker %loaded = load i8, i8* %sel 41*9880d681SAndroid Build Coastguard Worker ret i8 %loaded 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; Incoming pointer arguments should not be PartialAlias because we do not know their initial state 45*9880d681SAndroid Build Coastguard Worker; even if they are nocapture 46*9880d681SAndroid Build Coastguard Worker; CHECK: MayAlias: double* %A, double* %Index 47*9880d681SAndroid Build Coastguard Workerdefine void @testr2(double* nocapture readonly %A, double* nocapture readonly %Index) { 48*9880d681SAndroid Build Coastguard Worker %arrayidx22 = getelementptr inbounds double, double* %Index, i64 2 49*9880d681SAndroid Build Coastguard Worker %1 = load double, double* %arrayidx22 50*9880d681SAndroid Build Coastguard Worker %arrayidx25 = getelementptr inbounds double, double* %A, i64 2 51*9880d681SAndroid Build Coastguard Worker %2 = load double, double* %arrayidx25 52*9880d681SAndroid Build Coastguard Worker %mul26 = fmul double %1, %2 53*9880d681SAndroid Build Coastguard Worker ret void 54*9880d681SAndroid Build Coastguard Worker} 55