From c7f4431d458f91429b636ec22d80ce5db1cdd1f8 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 10 Feb 2011 23:58:36 +0000 Subject: [PATCH] Don't crash on erroneous thunk. From-SVN: r170031 --- gcc/go/gofrontend/statements.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc index c0efc2dca4f..6b45d0111e0 100644 --- a/gcc/go/gofrontend/statements.cc +++ b/gcc/go/gofrontend/statements.cc @@ -1776,8 +1776,13 @@ Thunk_statement::do_determine_types() // Now that we know the types of the call, build the struct used to // pass parameters. - Function_type* fntype = - this->call_->call_expression()->get_function_type(); + Call_expression* ce = this->call_->call_expression(); + if (ce == NULL) + { + gcc_assert(this->call_->is_error_expression()); + return; + } + Function_type* fntype = ce->get_function_type(); if (fntype != NULL && !this->is_simple(fntype)) this->struct_type_ = this->build_struct(fntype); } @@ -1788,6 +1793,11 @@ void Thunk_statement::do_check_types(Gogo*) { Call_expression* ce = this->call_->call_expression(); + if (ce == NULL) + { + gcc_assert(this->call_->is_error_expression()); + return; + } Function_type* fntype = ce->get_function_type(); if (fntype != NULL && fntype->is_method()) { -- 2.30.2