1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00

Use right address space pointer size

llvm-svn: 194940
This commit is contained in:
Matt Arsenault 2013-11-17 00:06:39 +00:00
parent cc70e01f05
commit ae406d5aa1
2 changed files with 13 additions and 1 deletions

View File

@ -1126,9 +1126,10 @@ SDValue SelectionDAG::getGlobalAddress(const GlobalValue *GV, SDLoc DL,
unsigned char TargetFlags) {
assert((TargetFlags == 0 || isTargetGA) &&
"Cannot set target flags on target-independent globals");
const TargetLowering *TLI = TM.getTargetLowering();
// Truncate (with sign-extension) the offset value to the pointer size.
unsigned BitWidth = TM.getTargetLowering()->getPointerTy().getSizeInBits();
unsigned BitWidth = TLI->getPointerTypeSizeInBits(GV->getType());
if (BitWidth < 64)
Offset = SignExtend64(Offset, BitWidth);

View File

@ -73,3 +73,14 @@ define void @infer_ptr_alignment_global_offset(float addrspace(1)* %out, i32 %ti
store float %val, float addrspace(1)* %out
ret void
}
@ptr = addrspace(3) global i32 addrspace(3)* null
@dst = addrspace(3) global [16384 x i32] zeroinitializer
; SI-LABEL: @global_ptr:
; SI-CHECK: DS_WRITE_B32
define void @global_ptr() nounwind {
store i32 addrspace(3)* getelementptr ([16384 x i32] addrspace(3)* @dst, i32 0, i32 16), i32 addrspace(3)* addrspace(3)* @ptr
ret void
}