aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-16 00:15:16 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-16 00:15:16 +0000
commit4955456b2d7bf1e6bc82d5240fd46ec9c28f6386 (patch)
tree4ce57a772203a2ab27118833b370a5aae326a8c5 /gcc
parent183d062a7728562d4fa32bbf094593a0a1452c58 (diff)
downloadgcc-4955456b2d7bf1e6bc82d5240fd46ec9c28f6386.zip
gcc-4955456b2d7bf1e6bc82d5240fd46ec9c28f6386.tar.gz
gcc-4955456b2d7bf1e6bc82d5240fd46ec9c28f6386.tar.bz2
Don't crash with go or defer of bad call.
From-SVN: r167886
Diffstat (limited to 'gcc')
-rw-r--r--gcc/go/gofrontend/statements.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc
index 2d17797..f77764f 100644
--- a/gcc/go/gofrontend/statements.cc
+++ b/gcc/go/gofrontend/statements.cc
@@ -1812,7 +1812,13 @@ Thunk_statement::simplify_statement(Gogo* gogo, Block* block)
Call_expression* ce = this->call_->call_expression();
Function_type* fntype = ce->get_function_type();
- if (fntype == NULL || this->is_simple(fntype))
+ if (fntype == NULL)
+ {
+ gcc_assert(saw_errors());
+ this->set_is_error();
+ return false;
+ }
+ if (this->is_simple(fntype))
return false;
Expression* fn = ce->fn();