From 9d6f3721c51a70ce2d86c3e806d08bf17b3f0c52 Mon Sep 17 00:00:00 2001 From: ian Date: Thu, 9 Dec 2010 23:56:47 +0000 Subject: [PATCH] Avoid some crashes on erroneous programs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167670 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/expressions.cc | 9 ++++++++- gcc/go/gofrontend/types.cc | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 0387ee4fd9f0..022f5ce3f0d1 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -1146,7 +1146,11 @@ Func_expression::get_tree_without_closure(Gogo* gogo) } Named_object* no = this->function_; - tree id = this->function_->get_id(gogo); + + tree id = no->get_id(gogo); + if (id == error_mark_node) + return error_mark_node; + tree fndecl; if (no->is_function()) fndecl = no->func_value()->get_or_make_decl(gogo, no, id); @@ -1155,6 +1159,9 @@ Func_expression::get_tree_without_closure(Gogo* gogo) else gcc_unreachable(); + if (fndecl == error_mark_node) + return error_mark_node; + return build_fold_addr_expr_loc(this->location(), fndecl); } diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index b030a420fe04..8d440a89d4a6 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -6864,6 +6864,8 @@ Named_type::do_get_tree(Gogo* gogo) t = make_node(RECORD_TYPE); this->named_tree_ = t; t = this->type_->interface_type()->fill_in_tree(gogo, t); + if (t == error_mark_node) + return error_mark_node; } break; -- 2.47.2