From: ian Date: Tue, 7 Dec 2010 22:26:39 +0000 (+0000) Subject: Don't crash on erroneous result variable. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ccb635748cce82ca80b1fd353a0da602f53b3aec;p=thirdparty%2Fgcc.git Don't crash on erroneous result variable. Fixes issue 1320. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167573 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc index 41e621e2c90e..09f0d7cbd8ca 100644 --- a/gcc/go/gofrontend/gogo-tree.cc +++ b/gcc/go/gofrontend/gogo-tree.cc @@ -1550,14 +1550,18 @@ Function::build_tree(Gogo* gogo, Named_object* named_function) else if ((*p)->is_result_variable()) { tree var_decl = (*p)->get_tree(gogo, named_function); - if ((*p)->result_var_value()->is_in_heap()) + if (var_decl != error_mark_node + && (*p)->result_var_value()->is_in_heap()) { gcc_assert(TREE_CODE(var_decl) == INDIRECT_REF); var_decl = TREE_OPERAND(var_decl, 0); } - gcc_assert(TREE_CODE(var_decl) == VAR_DECL); - DECL_CHAIN(var_decl) = declare_vars; - declare_vars = var_decl; + if (var_decl != error_mark_node) + { + gcc_assert(TREE_CODE(var_decl) == VAR_DECL); + DECL_CHAIN(var_decl) = declare_vars; + declare_vars = var_decl; + } } } *pp = NULL_TREE;