From c4848393ae979bd63dd4e87d309556668e771d76 Mon Sep 17 00:00:00 2001 From: hubicka Date: Sun, 29 Nov 2015 19:50:04 +0000 Subject: [PATCH] PR c/67106 * gcc.c-torture/compile/pr67106.c: New testcase. * c-decl.c: Set TYPE_PACKED in variants. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231049 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c/ChangeLog | 5 +++++ gcc/c/c-decl.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr67106.c | 12 ++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr67106.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index ffa365c..0655aef 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2015-11-29 Jan Hubicka + + PR c/67106 + * c-decl.c: Set TYPE_PACKED in variants. + 2015-11-27 Martin Liska PR c++/68312 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 7b9ab8a..31de0a5 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -7213,7 +7213,8 @@ start_struct (location_t loc, enum tree_code code, tree name, } C_TYPE_BEING_DEFINED (ref) = 1; - TYPE_PACKED (ref) = flag_pack_struct; + for (tree v = TYPE_MAIN_VARIANT (ref); v; v = TYPE_NEXT_VARIANT (v)) + TYPE_PACKED (v) = flag_pack_struct; *enclosing_struct_parse_info = struct_parse_info; struct_parse_info = XNEW (struct c_struct_parse_info); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a4419b8..23da95f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2015-11-29 Jan Hubicka + PR c/67106 + * gcc.c-torture/compile/pr67106.c: New testcase. + +2015-11-29 Jan Hubicka + PR c/67581 * g++.dg/torture/pr67581.C: New testcase. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr67106.c b/gcc/testsuite/gcc.c-torture/compile/pr67106.c new file mode 100644 index 0000000..2a003e5 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr67106.c @@ -0,0 +1,12 @@ +/* { dg-options "-g -fpack-struct" } */ +typedef struct S S; + +struct S +{ + struct + { + S *s; + }; + int a; +}; + -- 2.7.4