mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-04-29 06:30:39 +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());
|
||||
getIrGlobal(vd)->value = gvar;
|
||||
|
||||
// Set the alignment and use the target pointer size as lower bound.
|
||||
unsigned alignment =
|
||||
std::max(DtoAlignment(vd), gDataLayout->getPointerSize());
|
||||
gvar->setAlignment(alignment);
|
||||
// Set the alignment (it is important not to use type->alignsize because
|
||||
// VarDeclarations can have an align() attribute independent of the type
|
||||
// as well).
|
||||
gvar->setAlignment(DtoAlignment(vd));
|
||||
|
||||
applyVarDeclUDAs(vd, gvar);
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit fe82475369dd9bd426e40fbb968d19a11f60f71d
|
||||
Subproject commit def73b22bcc46416f59fc2b7bc070a4143ad9d77
|
|
@ -6,10 +6,14 @@
|
|||
align(32) struct Outer { int a; }
|
||||
struct Inner { align(32) int a; }
|
||||
|
||||
align(1) ubyte globalByte1;
|
||||
// CHECK-DAG: align11globalByte1h = {{.*}} align 1
|
||||
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;
|
||||
// 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; }
|
||||
// CHECK: define{{.*}} void @{{.*}}_D5align23passAndReturnOuterByValFS5align5OuterZS5align5Outer
|
||||
|
@ -29,6 +33,8 @@ void main() {
|
|||
Inner inner;
|
||||
// CHECK: %inner = alloca %align.Inner, align 32
|
||||
|
||||
align(1) byte byte1;
|
||||
// CHECK: %byte1 = alloca i8, align 1
|
||||
align(16) byte byte16;
|
||||
// CHECK: %byte16 = alloca i8, align 16
|
||||
align(64) Outer outer64;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue