1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

[GlobalsAA] Teach to handle addrspacecast.

This commit is contained in:
Michael Liao 2020-10-26 12:17:42 -04:00
parent b3e4704ff5
commit 171536d3a1
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
}