1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; When merging MustAlias and PartialAlias, merge to PartialAlias 4*9880d681SAndroid Build Coastguard Worker; instead of MayAlias. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker 7*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" 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker; CHECK: PartialAlias: i16* %bigbase0, i8* %phi 10*9880d681SAndroid Build Coastguard Workerdefine i8 @test0(i8* %base, i1 %x) { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker %baseplusone = getelementptr i8, i8* %base, i64 1 13*9880d681SAndroid Build Coastguard Worker br i1 %x, label %red, label %green 14*9880d681SAndroid Build Coastguard Workerred: 15*9880d681SAndroid Build Coastguard Worker br label %green 16*9880d681SAndroid Build Coastguard Workergreen: 17*9880d681SAndroid Build Coastguard Worker %phi = phi i8* [ %baseplusone, %red ], [ %base, %entry ] 18*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %phi 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker %bigbase0 = bitcast i8* %base to i16* 21*9880d681SAndroid Build Coastguard Worker store i16 -1, i16* %bigbase0 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker %loaded = load i8, i8* %phi 24*9880d681SAndroid Build Coastguard Worker ret i8 %loaded 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; CHECK: PartialAlias: i16* %bigbase1, i8* %sel 28*9880d681SAndroid Build Coastguard Workerdefine i8 @test1(i8* %base, i1 %x) { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker %baseplusone = getelementptr i8, i8* %base, i64 1 31*9880d681SAndroid Build Coastguard Worker %sel = select i1 %x, i8* %baseplusone, i8* %base 32*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %sel 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker %bigbase1 = bitcast i8* %base to i16* 35*9880d681SAndroid Build Coastguard Worker store i16 -1, i16* %bigbase1 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker %loaded = load i8, i8* %sel 38*9880d681SAndroid Build Coastguard Worker ret i8 %loaded 39*9880d681SAndroid Build Coastguard Worker} 40