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:
parent
b3e4704ff5
commit
171536d3a1
@ -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)) {
|
||||
|
15
test/Analysis/GlobalsModRef/addrspacecast.ll
Normal file
15
test/Analysis/GlobalsModRef/addrspacecast.ll
Normal 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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user