[GlobalsAA] Teach to handle `addrspacecast`.

This commit is contained in:
Michael Liao 2020-10-26 12:17:42 -04:00
parent 32d239a758
commit fa5d31f825
2 changed files with 17 additions and 1 deletions

View File

@ -367,7 +367,8 @@ bool GlobalsAAResult::AnalyzeUsesOfPointer(Value *V,
} else if (Operator::getOpcode(I) == Instruction::GetElementPtr) {
if (AnalyzeUsesOfPointer(I, Readers, Writers))
return true;
} else if (Operator::getOpcode(I) == Instruction::BitCast) {
} else if (Operator::getOpcode(I) == Instruction::BitCast ||
Operator::getOpcode(I) == Instruction::AddrSpaceCast) {
if (AnalyzeUsesOfPointer(I, Readers, Writers, OkayStoreDest))
return true;
} else if (auto *Call = dyn_cast<CallBase>(I)) {

View File

@ -0,0 +1,15 @@
; RUN: opt -globals-aa -aa-eval -print-all-alias-modref-info -disable-output %s 2>&1 | FileCheck %s
@g0 = internal addrspace(3) global i32 undef
; CHECK-LABEL: test1
; CHECK-DAG: NoAlias: i32* %gp, i32* %p
; CHECK-DAG: NoAlias: i32 addrspace(3)* @g0, i32* %p
; CHECK-DAG: MustAlias: i32 addrspace(3)* @g0, i32* %gp
define i32 @test1(i32* %p) {
%gp = addrspacecast i32 addrspace(3)* @g0 to i32*
store i32 0, i32* %gp
store i32 1, i32* %p
%v = load i32, i32* %gp
ret i32 %v
}