diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/c/c-typeck.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr71685.c | 6 |
4 files changed, 21 insertions, 3 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 403f267..df73934 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,4 +1,10 @@ -2016-06-28 Martin Sebor <msebor@redhat.com> +2016-06-29 Jakub Jelinek <jakub@redhat.com> + + PR c/71685 + * c-typeck.c (c_build_qualified_type): Don't clear + C_TYPE_INCOMPLETE_VARS for the main variant. + +2016-06-28 Martin Sebor <msebor@redhat.com> PR c/71552 * c-typeck.c (output_init_element): Diagnose incompatible types diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 818ad94..56268fc 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -13676,7 +13676,8 @@ c_build_qualified_type (tree type, int type_quals, tree orig_qual_type, : build_qualified_type (type, type_quals)); /* A variant type does not inherit the list of incomplete vars from the type main variant. */ - if (RECORD_OR_UNION_TYPE_P (var_type)) + if (RECORD_OR_UNION_TYPE_P (var_type) + && TYPE_MAIN_VARIANT (var_type) != var_type) C_TYPE_INCOMPLETE_VARS (var_type) = 0; return var_type; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5fb67e1..171e616 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,9 @@ -2016-06-28 Martin Sebor <msebor@redhat.com> +2016-06-29 Jakub Jelinek <jakub@redhat.com> + + PR c/71685 + * gcc.dg/pr71685.c: New test. + +2016-06-28 Martin Sebor <msebor@redhat.com> PR c/71552 * gcc.dg/init-bad-9.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr71685.c b/gcc/testsuite/gcc.dg/pr71685.c new file mode 100644 index 0000000..80e5c8f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr71685.c @@ -0,0 +1,6 @@ +/* PR c/71685 */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu11" } */ + +extern struct S v, s; +struct S { int t; int p[]; } v = { 4, 0 }; |