[PATCH] D27955: Make CodeGenCXX/arm-swiftcall.cpp tolerate C++11
Paul Robinson via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 19 14:33:11 PST 2016
probinson created this revision.
probinson added a reviewer: rjmccall.
probinson added a subscriber: cfe-commits.
Herald added subscribers: rengolin, aemerson.
The test conjures up and returns a temp which has a struct type, and the struct has some empty/padding bytes in the middle. In C++03 these are handled as zero, so the code uses 'llvm.memset' to initialize the temp.
In C++11, the padding is handled as undef, so the code uses 'llvm.memcpy' instead, making the test fail.
I've made the test run twice, once per dialect, and check for the appropriate intrinsic.
It doesn't look like this is the point of the test, though,. so maybe hard-coding the dialect would be preferable.
https://reviews.llvm.org/D27955
Files:
test/CodeGenCXX/arm-swiftcall.cpp
Index: test/CodeGenCXX/arm-swiftcall.cpp
===================================================================
--- test/CodeGenCXX/arm-swiftcall.cpp
+++ test/CodeGenCXX/arm-swiftcall.cpp
@@ -1,4 +1,5 @@
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -o - %s -Wno-return-type-c-linkage | FileCheck %s
+// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -o - %s -Wno-return-type-c-linkage -std=c++03 | FileCheck %s -check-prefixes=CHECK,CHECKv03
+// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -o - %s -Wno-return-type-c-linkage -std=c++11 | FileCheck %s -check-prefixes=CHECK,CHECKv11
// This isn't really testing anything ARM-specific; it's just a convenient
// 32-bit platform.
@@ -48,7 +49,8 @@
TEST(struct_1);
// CHECK-LABEL: define {{.*}} @return_struct_1()
// CHECK: [[RET:%.*]] = alloca [[REC:%.*]], align 4
-// CHECK: @llvm.memset
+// CHECKv03: @llvm.memset
+// CHECKv11: @llvm.memcpy
// CHECK: [[CAST_TMP:%.*]] = bitcast [[REC]]* [[RET]] to [[AGG:{ i32, \[2 x i8\], i8, \[1 x i8\], float, float }]]*
// CHECK: [[T0:%.*]] = getelementptr inbounds [[AGG]], [[AGG]]* [[CAST_TMP]], i32 0, i32 0
// CHECK: [[FIRST:%.*]] = load i32, i32* [[T0]], align 4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27955.82017.patch
Type: text/x-patch
Size: 1208 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161219/7aedcf44/attachment-0001.bin>
More information about the cfe-commits
mailing list