From: Jakub Jelinek Date: Sun, 1 Feb 2015 21:54:27 +0000 (+0100) Subject: backport: re PR middle-end/64766 (internal compiler error: tree check: expected block... X-Git-Tag: releases/gcc-4.8.5~293 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a60ddd870f6164276df0ca3833de318c27736793;p=thirdparty%2Fgcc.git backport: re PR middle-end/64766 (internal compiler error: tree check: expected block, have error_mark in lower_function_body, at gimple-low.c:122) Backported from mainline 2015-01-27 Jakub Jelinek 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: r220335 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 3f56ce7f4438..04b33a3cf16f 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,12 @@ +2015-02-01 Jakub Jelinek + + Backported from mainline + 2015-01-27 Jakub Jelinek + + PR c/64766 + * c-typeck.c (store_init_value): Don't overwrite DECL_INITIAL + of FUNCTION_DECLs with error_mark_node. + 2014-12-19 Release Manager * GCC 4.8.4 released. diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index e47c2e5a4539..a608fb6ddc6f 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -5788,7 +5788,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 0287bccee613..d78cf365d6ca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2015-02-01 Jakub Jelinek Backported from mainline + 2015-01-27 Jakub Jelinek + + PR c/64766 + * gcc.dg/pr64766.c: New test. + 2015-01-13 Jakub Jelinek PR fortran/64528 diff --git a/gcc/testsuite/gcc.dg/pr64766.c b/gcc/testsuite/gcc.dg/pr64766.c new file mode 100644 index 000000000000..bf6fb2d59056 --- /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" } */