summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/const-init.c
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-10-19 00:03:10 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-10-19 00:03:10 +0000
commitafefe97e1c97dd4f04761b5412e34feced0d065a (patch)
tree6697c09167e6a7f488fa244e31664a3d35467b36 /clang/test/CodeGen/const-init.c
parent090a237f2981d7059073439f4fe159cbd7ab3389 (diff)
downloadbcm5719-llvm-afefe97e1c97dd4f04761b5412e34feced0d065a.tar.gz
bcm5719-llvm-afefe97e1c97dd4f04761b5412e34feced0d065a.zip
CodeGen: ConstStructBuilder must verify packed constraints after padding
Before, ConstStructBuilder::AppendBytes would check packed constraints prior to padding being added before the field's offset. However, adding this padding might force our struct to be packed. Because we wouldn't check *after* adding padding, ConstStructBuilder would be in an inconsistent state leading to a crash. This fixes PR21300. llvm-svn: 220153
Diffstat (limited to 'clang/test/CodeGen/const-init.c')
-rw-r--r--clang/test/CodeGen/const-init.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/test/CodeGen/const-init.c b/clang/test/CodeGen/const-init.c
index 7d7ccae370d..ccc6604c456 100644
--- a/clang/test/CodeGen/const-init.c
+++ b/clang/test/CodeGen/const-init.c
@@ -159,3 +159,14 @@ void g29() {
static int b[1] = { "asdf" }; // expected-warning {{incompatible pointer to integer conversion initializing 'int' with an expression of type 'char [5]'}}
static int c[1] = { L"a" };
}
+
+// PR21300
+void g30() {
+#pragma pack(1)
+ static struct {
+ int : 1;
+ int x;
+ } a = {};
+ // CHECK: @g30.a = internal global %struct.anon.1 <{ i8 undef, i32 0 }>, align 1
+#pragma pack()
+}
OpenPOWER on IntegriCloud