1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

[AArch64] Unsized types don't specify an alignment.

PR20109

llvm-svn: 212045
This commit is contained in:
Chad Rosier 2014-06-30 15:03:00 +00:00
parent 2954f936f3
commit e739f85e32
2 changed files with 16 additions and 2 deletions

View File

@ -593,8 +593,9 @@ bool AArch64DAGToDAGISel::SelectAddrModeIndexed(SDValue N, unsigned Size,
const GlobalValue *GV = GAN->getGlobal();
unsigned Alignment = GV->getAlignment();
const DataLayout *DL = TLI->getDataLayout();
if (Alignment == 0 && !Subtarget->isTargetDarwin())
Alignment = DL->getABITypeAlignment(GV->getType()->getElementType());
Type *Ty = GV->getType()->getElementType();
if (Alignment == 0 && Ty->isSized() && !Subtarget->isTargetDarwin())
Alignment = DL->getABITypeAlignment(Ty);
if (Alignment >= Size)
return true;

View File

@ -0,0 +1,13 @@
; RUN: llc < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s
define i8 @test() {
; CHECK-LABEL: @test
; CHECK: adrp {{x[0-9]+}}, foo
; CHECK: add {{x[0-9]+}}, {{x[0-9]+}}, :lo12:foo
; CHECK: ldrb w0, [{{x[0-9]+}}]
entry:
%0 = load i8* bitcast (void (...)* @foo to i8*), align 1
ret i8 %0
}
declare void @foo(...)