diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-03-15 17:20:08 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-03-15 17:20:08 -0700 |
commit | 549583547f8dfb284b6ae083031757371907671f (patch) | |
tree | 56da37cd9df11faec1443af5d44c00a5208536e0 | |
parent | 94a987928b7f6d695d7d0cfca0f97d546e632b8b (diff) | |
download | gcc-549583547f8dfb284b6ae083031757371907671f.tar.gz |
Add a test for struct with zero-size array
-rw-r--r-- | gcc/testsuite/g++.dg/abi/empty18.C | 17 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/empty18.h | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/empty18a.c | 6 |
3 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/abi/empty18.C b/gcc/testsuite/g++.dg/abi/empty18.C new file mode 100644 index 00000000000..cf850ce2abb --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/empty18.C @@ -0,0 +1,17 @@ +// PR c++/60336 +// { dg-do run } +// { dg-options "-Wabi=9 -x c" } +// { dg-additional-sources "empty18a.c" } +// { dg-prune-output "command line option" } + +#include "empty18.h" +extern "C" void fun(struct dummy, struct foo); + +int main() +{ + struct dummy d; + struct foo f = { -1, -2, -3, -4, -5 }; + + fun(d, f); + return 0; +} diff --git a/gcc/testsuite/g++.dg/abi/empty18.h b/gcc/testsuite/g++.dg/abi/empty18.h new file mode 100644 index 00000000000..86e7ecdd211 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/empty18.h @@ -0,0 +1,9 @@ +struct dummy { int d[0]; }; +struct foo +{ + int i1; + int i2; + int i3; + int i4; + int i5; +}; diff --git a/gcc/testsuite/g++.dg/abi/empty18a.c b/gcc/testsuite/g++.dg/abi/empty18a.c new file mode 100644 index 00000000000..902860bdc01 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/empty18a.c @@ -0,0 +1,6 @@ +#include "empty18.h" +void fun(struct dummy d, struct foo f) +{ + if (f.i1 != -1) + __builtin_abort(); +} |