diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-01-27 09:13:45 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-01-27 09:13:45 +0100 |
commit | dea63e49fa986d91885d192fae0a5c19fea77aa1 (patch) | |
tree | 8a5af59a4c3bbf800b96c9c554c9a84993e91a97 /gcc/c | |
parent | 1230f784cfacdc877d711e335fdded154263b5fb (diff) | |
download | gcc-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/c')
-rw-r--r-- | gcc/c/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c/c-typeck.c | 3 |
2 files changed, 8 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); |