aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/c99-flex-array-4.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/c99-flex-array-4.c')
-rw-r--r--gcc/testsuite/gcc.dg/c99-flex-array-4.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/c99-flex-array-4.c b/gcc/testsuite/gcc.dg/c99-flex-array-4.c
new file mode 100644
index 0000000..ab20cf0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c99-flex-array-4.c
@@ -0,0 +1,25 @@
+/* Test for flexible array members. Test for agreement of offset and
+ structure size. This is expected to fail, because of a possible
+ defect in the standard. */
+/* Origin: http://gcc.gnu.org/ml/gcc/2002-05/msg02844.html
+ from Tony Finch <dot@dotat.at>, adapted to a testcase by Joseph Myers
+ <jsm28@cam.ac.uk>. See also WG14 reflector messages 9571-3. */
+/* { dg-do compile } */
+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+
+#include <stddef.h>
+
+struct foo {
+ int a;
+ short b;
+ char pad[];
+};
+
+struct bar {
+ int a;
+ short b;
+ char pad[1024];
+};
+
+char x[(sizeof(struct foo) == offsetof(struct foo, pad)) ? 1 : -1]; /* { dg-bogus "negative" "sizeof != offsetof" { xfail *-*-* } } */
+char y[(offsetof(struct foo, pad) == offsetof(struct bar, pad)) ? 1 : -1];