aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-01-27 09:13:45 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-01-27 09:13:45 +0100
commitdea63e49fa986d91885d192fae0a5c19fea77aa1 (patch)
tree8a5af59a4c3bbf800b96c9c554c9a84993e91a97 /gcc
parent1230f784cfacdc877d711e335fdded154263b5fb (diff)
downloadgcc-dea63e49fa986d91885d192fae0a5c19fea77aa1.zip
gcc-dea63e49fa986d91885d192fae0a5c19fea77aa1.tar.gz
gcc-dea63e49fa986d91885d192fae0a5c19fea77aa1.tar.bz2
re PR middle-end/64766 (internal compiler error: tree check: expected block, have error_mark in lower_function_body, at gimple-low.c:122)
PR c/64766 * c-typeck.c (store_init_value): Don't overwrite DECL_INITIAL of FUNCTION_DECLs with error_mark_node. * gcc.dg/pr64766.c: New test. From-SVN: r220152
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c/ChangeLog6
-rw-r--r--gcc/c/c-typeck.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr64766.c9
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index f361e7c..408fc16 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/64766
+ * c-typeck.c (store_init_value): Don't overwrite DECL_INITIAL
+ of FUNCTION_DECLs with error_mark_node.
+
2015-01-26 Jakub Jelinek <jakub@redhat.com>
PR c/64778
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index 09b1bdf..aa74968 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -6422,7 +6422,8 @@ store_init_value (location_t init_loc, tree decl, tree init, tree origtype)
warning (OPT_Wtraditional, "traditional C rejects automatic "
"aggregate initialization");
- DECL_INITIAL (decl) = value;
+ if (value != error_mark_node || TREE_CODE (decl) != FUNCTION_DECL)
+ DECL_INITIAL (decl) = value;
/* ANSI wants warnings about out-of-range constant initializers. */
STRIP_TYPE_NOPS (value);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c66df20..57a58b4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/64766
+ * gcc.dg/pr64766.c: New test.
+
2015-01-26 Oleg Endo <olegendo@gcc.gnu.org>
PR target/49263
diff --git a/gcc/testsuite/gcc.dg/pr64766.c b/gcc/testsuite/gcc.dg/pr64766.c
new file mode 100644
index 0000000..bf6fb2d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr64766.c
@@ -0,0 +1,9 @@
+/* PR c/64766 */
+/* { dg-do compile } */
+
+void
+foo ()
+{
+}
+
+void foo () = 0; /* { dg-error "is initialized like a variable|invalid initializer" } */