From: mpolacek Date: Fri, 29 Jul 2016 17:36:46 +0000 (+0000) Subject: PR c/71573 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4c4548bb50d988c63a67c86efaac1d1e3c1461ae;p=thirdparty%2Fgcc.git PR c/71573 * c-decl.c (implicitly_declare): Return decl early not only for error_mark_nodes, but for anything that is not a FUNCTION_DECL. * gcc.dg/noncompile/pr71573.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238885 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index ec680d3cce6d..06507581fad7 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -7,6 +7,10 @@ * c-parser.c (c_parser_switch_statement): Initialize ce.original_type to error node for invalid code. + PR c/71573 + * c-decl.c (implicitly_declare): Return decl early not only for + error_mark_nodes, but for anything that is not a FUNCTION_DECL. + 2016-07-29 Jakub Jelinek PR c/71969 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 9a922cc6f064..5f38985086cb 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -3327,7 +3327,7 @@ implicitly_declare (location_t loc, tree functionid) if (decl) { - if (decl == error_mark_node) + if (TREE_CODE (decl) != FUNCTION_DECL) return decl; /* FIXME: Objective-C has weird not-really-builtin functions diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dbe2a3ae0886..e29c07cb8b94 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -8,6 +8,9 @@ PR c/71853 * gcc.dg/noncompile/pr71853.c: New test. + PR c/71573 + * gcc.dg/noncompile/pr71573.c: New test. + 2016-07-29 Uros Bizjak * gcc.dg/pr59833.c: Use dg-add-options ieee. diff --git a/gcc/testsuite/gcc.dg/noncompile/pr71573.c b/gcc/testsuite/gcc.dg/noncompile/pr71573.c new file mode 100644 index 000000000000..8ace94a77ea7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/pr71573.c @@ -0,0 +1,14 @@ +/* PR c/71573 */ +/* { dg-do compile } */ + +void +f1 (void) +{ + extern int t; +} + +void +f2 (void) +{ + t (0); /* { dg-error "called object .t. is not a function or function pointer" } */ +}