OSDN Git Service

Don't crash building initializer of invalid array.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Dec 2010 00:09:12 +0000 (00:09 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Dec 2010 00:09:12 +0000 (00:09 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167828 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/go/gofrontend/types.cc

index 3695903..842b484 100644 (file)
@@ -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,