diff options
author | Marek Polacek <polacek@redhat.com> | 2016-07-29 17:36:46 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2016-07-29 17:36:46 +0000 |
commit | e00dceafd2de848a7735dbce48922aa2304a0f94 (patch) | |
tree | feeb7bcc2ca33fc90b3d2193ab87d8641f9730a2 | |
parent | efd0786f218626c25adde976a9f83121b0c45342 (diff) | |
download | gcc-e00dceafd2de848a7735dbce48922aa2304a0f94.zip gcc-e00dceafd2de848a7735dbce48922aa2304a0f94.tar.gz gcc-e00dceafd2de848a7735dbce48922aa2304a0f94.tar.bz2 |
re PR c/71573 (ICE on invalid C code on x86_64-linux-gnu (tree check: expected function_decl, have var_decl in implicitly_declare))
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.
From-SVN: r238885
-rw-r--r-- | gcc/c/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/c/c-decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/noncompile/pr71573.c | 14 |
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index ec680d3..0650758 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 <jakub@redhat.com> PR c/71969 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 9a922cc..5f38985 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 dbe2a3a..e29c07c 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 <ubizjak@gmail.com> * 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 0000000..8ace94a --- /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" } */ +} |