[pkg-d-commits] [ldc] 80/211: Allow align(1) for global variables.
Matthias Klumpp
mak at moszumanska.debian.org
Sun Apr 23 22:36:11 UTC 2017
This is an automated email from the git hooks/post-receive script.
mak pushed a commit to annotated tag v1.1.0
in repository ldc.
commit 7e572e6f03270f278619653a0531b936fd1b4f9d
Author: Johan Engelen <jbc.engelen at gmail.com>
Date: Tue Oct 11 21:37:45 2016 +0200
Allow align(1) for global variables.
This reverts a39997d326f0d3da353d8b9f27ffd559e6fcc5d7, and fixes the invalid tests in std.conv.
---
gen/llvmhelpers.cpp | 8 ++++----
runtime/phobos | 2 +-
tests/codegen/align.d | 10 ++++++++--
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/gen/llvmhelpers.cpp b/gen/llvmhelpers.cpp
index 6abec42..59a72f5 100644
--- a/gen/llvmhelpers.cpp
+++ b/gen/llvmhelpers.cpp
@@ -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);
diff --git a/runtime/phobos b/runtime/phobos
index fe82475..def73b2 160000
--- a/runtime/phobos
+++ b/runtime/phobos
@@ -1 +1 @@
-Subproject commit fe82475369dd9bd426e40fbb968d19a11f60f71d
+Subproject commit def73b22bcc46416f59fc2b7bc070a4143ad9d77
diff --git a/tests/codegen/align.d b/tests/codegen/align.d
index 30c61df..6a809a1 100644
--- a/tests/codegen/align.d
+++ b/tests/codegen/align.d
@@ -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;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-d/ldc.git
More information about the pkg-d-commits
mailing list