mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-11 21:37:17 +03:00
Allow align(1) for global variables.
This reverts a39997d326
, and fixes the invalid tests in std.conv.
This commit is contained in:
parent
a90fdfe624
commit
7e572e6f03
3 changed files with 13 additions and 7 deletions
|
@ -846,10 +846,10 @@ void DtoResolveVariable(VarDeclaration *vd) {
|
||||||
linkage, nullptr, llName, vd->isThreadlocal());
|
linkage, nullptr, llName, vd->isThreadlocal());
|
||||||
getIrGlobal(vd)->value = gvar;
|
getIrGlobal(vd)->value = gvar;
|
||||||
|
|
||||||
// Set the alignment and use the target pointer size as lower bound.
|
// Set the alignment (it is important not to use type->alignsize because
|
||||||
unsigned alignment =
|
// VarDeclarations can have an align() attribute independent of the type
|
||||||
std::max(DtoAlignment(vd), gDataLayout->getPointerSize());
|
// as well).
|
||||||
gvar->setAlignment(alignment);
|
gvar->setAlignment(DtoAlignment(vd));
|
||||||
|
|
||||||
applyVarDeclUDAs(vd, gvar);
|
applyVarDeclUDAs(vd, gvar);
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit fe82475369dd9bd426e40fbb968d19a11f60f71d
|
Subproject commit def73b22bcc46416f59fc2b7bc070a4143ad9d77
|
|
@ -6,10 +6,14 @@
|
||||||
align(32) struct Outer { int a; }
|
align(32) struct Outer { int a; }
|
||||||
struct Inner { align(32) int a; }
|
struct Inner { align(32) int a; }
|
||||||
|
|
||||||
|
align(1) ubyte globalByte1;
|
||||||
|
// CHECK-DAG: align11globalByte1h = {{.*}} align 1
|
||||||
static Outer globalOuter;
|
static Outer globalOuter;
|
||||||
// CHECK: constant %align.Outer_init zeroinitializer{{(, comdat)?}}, align 32
|
// CHECK-DAG: constant %align.Outer_init zeroinitializer{{(, comdat)?}}, align 32
|
||||||
|
// CHECK-DAG: align11globalOuterS5align5Outer = {{.*}} align 32
|
||||||
static Inner globalInner;
|
static Inner globalInner;
|
||||||
// CHECK: constant %align.Inner_init zeroinitializer{{(, comdat)?}}, align 32
|
// CHECK-DAG: constant %align.Inner_init zeroinitializer{{(, comdat)?}}, align 32
|
||||||
|
// CHECK-DAG: align11globalInnerS5align5Inner = {{.*}} align 32
|
||||||
|
|
||||||
Outer passAndReturnOuterByVal(Outer arg) { return arg; }
|
Outer passAndReturnOuterByVal(Outer arg) { return arg; }
|
||||||
// CHECK: define{{.*}} void @{{.*}}_D5align23passAndReturnOuterByValFS5align5OuterZS5align5Outer
|
// CHECK: define{{.*}} void @{{.*}}_D5align23passAndReturnOuterByValFS5align5OuterZS5align5Outer
|
||||||
|
@ -29,6 +33,8 @@ void main() {
|
||||||
Inner inner;
|
Inner inner;
|
||||||
// CHECK: %inner = alloca %align.Inner, align 32
|
// CHECK: %inner = alloca %align.Inner, align 32
|
||||||
|
|
||||||
|
align(1) byte byte1;
|
||||||
|
// CHECK: %byte1 = alloca i8, align 1
|
||||||
align(16) byte byte16;
|
align(16) byte byte16;
|
||||||
// CHECK: %byte16 = alloca i8, align 16
|
// CHECK: %byte16 = alloca i8, align 16
|
||||||
align(64) Outer outer64;
|
align(64) Outer outer64;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue