aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/go/gofrontend/expressions.cc9
-rw-r--r--gcc/go/gofrontend/types.cc2
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 0387ee4..022f5ce 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 b030a42..8d440a8 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;