aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-15 00:09:12 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-15 00:09:12 +0000
commita63d13795100ec8da8d4613dc9192348b94743c0 (patch)
tree32587e07087d6a569e58b7bb4ba683abaaac4a5d
parent6930f562ac1b3480b6db2efdc0352140635fbdab (diff)
downloadgcc-a63d13795100ec8da8d4613dc9192348b94743c0.zip
gcc-a63d13795100ec8da8d4613dc9192348b94743c0.tar.gz
gcc-a63d13795100ec8da8d4613dc9192348b94743c0.tar.bz2
Don't crash building initializer of invalid array.
From-SVN: r167828
-rw-r--r--gcc/go/gofrontend/types.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc
index 3695903..842b484 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -4421,8 +4421,13 @@ Array_type::do_get_init_tree(Gogo* gogo, tree type_tree, bool is_clear)
tree value = this->element_type_->get_init_tree(gogo, is_clear);
if (value == NULL)
return NULL;
+ if (value == error_mark_node)
+ return error_mark_node;
tree length_tree = this->get_length_tree(gogo);
+ if (length_tree == error_mark_node)
+ return error_mark_node;
+
length_tree = fold_convert(sizetype, length_tree);
tree range = build2(RANGE_EXPR, sizetype, size_zero_node,
fold_build2(MINUS_EXPR, sizetype,