aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2016-06-29 00:30:04 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-06-29 00:30:04 +0200
commit152ef731950c9b35e6bab40b30d60027bb996254 (patch)
tree9ddf6cd1a227be492c1b734b48f3406bb3928f71 /gcc
parent4378d117ec35f58d5a552eafcb91c91550e6566e (diff)
downloadgcc-152ef731950c9b35e6bab40b30d60027bb996254.zip
gcc-152ef731950c9b35e6bab40b30d60027bb996254.tar.gz
gcc-152ef731950c9b35e6bab40b30d60027bb996254.tar.bz2
re PR c/71685 (Segmentation fault in gcc when compiling the attached file.)
PR c/71685 * c-typeck.c (c_build_qualified_type): Don't clear C_TYPE_INCOMPLETE_VARS for the main variant. * gcc.dg/pr71685.c: New test. From-SVN: r237830
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c/ChangeLog8
-rw-r--r--gcc/c/c-typeck.c3
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/pr71685.c6
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 };