aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-21 23:19:43 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-21 23:19:43 +0000
commit67eff3d9f72b4ae733dd519331f90757d48f0590 (patch)
treeae950f2052597a55ad479b1e12ca5a1bd9817ed3
parent9ff48ac359242322c5dca42ea9d854422360a9ce (diff)
downloadgcc-67eff3d9f72b4ae733dd519331f90757d48f0590.zip
gcc-67eff3d9f72b4ae733dd519331f90757d48f0590.tar.gz
gcc-67eff3d9f72b4ae733dd519331f90757d48f0590.tar.bz2
Don't crash on calling new with an erroneous type.
From-SVN: r168144
-rw-r--r--gcc/go/gofrontend/expressions.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 5cd9e66..faea908 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -10242,9 +10242,13 @@ tree
Allocation_expression::do_get_tree(Translate_context* context)
{
tree type_tree = this->type_->get_tree(context->gogo());
+ if (type_tree == error_mark_node)
+ return error_mark_node;
tree size_tree = TYPE_SIZE_UNIT(type_tree);
tree space = context->gogo()->allocate_memory(this->type_, size_tree,
this->location());
+ if (space == error_mark_node)
+ return error_mark_node;
return fold_convert(build_pointer_type(type_tree), space);
}