forked from OSchip/llvm-project
[GlobalsAA] Teach to handle `addrspacecast`.
This commit is contained in:
parent
32d239a758
commit
fa5d31f825
|
@ -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)) {
|
||||
|
|
|
@ -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…
Reference in New Issue