summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/arm-arguments.c
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-01-29 03:22:29 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-01-29 03:22:29 +0000
commit45c7ff1d790291942c3701480d37560a3828ce09 (patch)
treeaee52fa45495dcac20715fdc958993b7acec9410 /clang/test/CodeGen/arm-arguments.c
parent864b1aae637a038c6281d506e347800971ecdcaf (diff)
downloadbcm5719-llvm-45c7ff1d790291942c3701480d37560a3828ce09.tar.gz
bcm5719-llvm-45c7ff1d790291942c3701480d37560a3828ce09.zip
ARM/APCS ABI: Fix some problems with bit-fields in structures. After rereading
the ABI spec, this turns out to simplify the code. We still have some annoying code which mismatches the spec with regard to empty structures. llvm-svn: 94796
Diffstat (limited to 'clang/test/CodeGen/arm-arguments.c')
-rw-r--r--clang/test/CodeGen/arm-arguments.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/CodeGen/arm-arguments.c b/clang/test/CodeGen/arm-arguments.c
index fb61b0f7849..c97c97bc581 100644
--- a/clang/test/CodeGen/arm-arguments.c
+++ b/clang/test/CodeGen/arm-arguments.c
@@ -92,3 +92,30 @@ void f15(struct s7 a0) {}
// APCS-GNU: define arm_apcscc void @f16()
// AAPCS: define arm_aapcscc void @f16()
void f16(struct s8 a0) {}
+
+// APCS-GNU: define arm_apcscc i32 @f17()
+// AAPCS: define arm_aapcscc i32 @f17()
+struct s17 { short f0 : 13; char f1 : 4; };
+struct s17 f17(void) {}
+
+// APCS-GNU: define arm_apcscc i32 @f18()
+// AAPCS: define arm_aapcscc i32 @f18()
+struct s18 { short f0; char f1 : 4; };
+struct s18 f18(void) {}
+
+// APCS-GNU: define arm_apcscc void @f19(
+// APCS-GNU: struct.s19* noalias sret
+// AAPCS: define arm_aapcscc i32 @f19()
+struct s19 { int f0; struct s8 f1; };
+struct s19 f19(void) {}
+
+// APCS-GNU: define arm_apcscc void @f20(
+// APCS-GNU: struct.s20* noalias sret
+// AAPCS: define arm_aapcscc i32 @f20()
+struct s20 { struct s8 f1; int f0; };
+struct s20 f20(void) {}
+
+// APCS-GNU: define arm_apcscc i32 @f21()
+// AAPCS: define arm_aapcscc i32 @f21()
+struct s21 { struct {} f1; int f0 : 4; };
+struct s21 f21(void) {}
OpenPOWER on IntegriCloud