mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 23:00:52 +08:00
Avoid some crashes on erroneous programs.
From-SVN: r167670
This commit is contained in:
parent
d3de3f21fd
commit
3338038aaa
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user