[pkg-d-commits] [ldc] 40/149: Fix alignment test for ARM. (#1968)

Matthias Klumpp mak at moszumanska.debian.org
Sun Apr 23 22:36:55 UTC 2017


This is an automated email from the git hooks/post-receive script.

mak pushed a commit to annotated tag v1.2.0
in repository ldc.

commit 09cef871787c1ac19b86bec929a89caf4a9f838e
Author: Johan Engelen <jbc.engelen at gmail.com>
Date:   Mon Jan 16 20:19:38 2017 +0100

    Fix alignment test for ARM. (#1968)
---
 tests/codegen/align.d | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/tests/codegen/align.d b/tests/codegen/align.d
index c309505..f307c2d 100644
--- a/tests/codegen/align.d
+++ b/tests/codegen/align.d
@@ -19,13 +19,14 @@ Outer passAndReturnOuterByVal(Outer arg) { return arg; }
 // CHECK: define{{.*}} void @{{.*}}_D5align23passAndReturnOuterByValFS5align5OuterZS5align5Outer
 /* the 32-bit x86 ABI substitutes the sret attribute by inreg */
 // CHECK-SAME: %align.Outer* {{noalias sret|inreg noalias}} align 32 %.sret_arg
-/* how the arg is passed by value is ABI-specific, but the pointer must be aligned */
-// CHECK-SAME: align 32 %
+/* How the arg is passed by value is ABI-specific, but the pointer must be aligned.
+ * When the argument is passed as a byte array and copied into a stack alloc, that stack alloca must be aligned. */
+// CHECK: {{(align 32 %arg|%arg = alloca %align.Outer, align 32)}}
 
 Inner passAndReturnInnerByVal(Inner arg) { return arg; }
 // CHECK: define{{.*}} void @{{.*}}_D5align23passAndReturnInnerByValFS5align5InnerZS5align5Inner
 // CHECK-SAME: %align.Inner* {{noalias sret|inreg noalias}} align 32 %.sret_arg
-// CHECK-SAME: align 32 %
+// CHECK: {{(align 32 %arg|%arg = alloca %align.Inner, align 32)}}
 
 void main() {
   Outer outer;
@@ -59,10 +60,12 @@ void main() {
   outer = passAndReturnOuterByVal(outer);
   // CHECK: call{{.*}} void @{{.*}}_D5align23passAndReturnOuterByValFS5align5OuterZS5align5Outer
   // CHECK-SAME: %align.Outer* {{noalias sret|inreg noalias}} align 32 %.sret_tmp
-  // CHECK-SAME: align 32 %
+  // The argument is either passed by aligned (optimizer hint) pointer or as an array of i32/64 and copied into an aligned stack slot inside the callee.
+  // CHECK-SAME: {{(align 32 %|\[[0-9]+ x i..\])}}
 
   inner = passAndReturnInnerByVal(inner);
   // CHECK: call{{.*}} void @{{.*}}_D5align23passAndReturnInnerByValFS5align5InnerZS5align5Inner
   // CHECK-SAME: %align.Inner* {{noalias sret|inreg noalias}} align 32 %.sret_tmp
-  // CHECK-SAME: align 32 %
+  // The argument is either passed by aligned (optimizer hint) pointer or as an array of i32/64 and copied into an aligned stack slot inside the callee.
+  // CHECK-SAME: {{(align 32 %|\[[0-9]+ x i..\])}}
 }

-- 
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