aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-22 16:47:53 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-22 16:47:53 +0000
commit8d2866eafb6865f084791494a7a449065cb0287c (patch)
tree809d93ffc84a78e185b262b984f5f6aaed5f0ec3 /gcc
parent6430af38439a5d81a39c02a3762045dfe22c8edd (diff)
downloadgcc-8d2866eafb6865f084791494a7a449065cb0287c.zip
gcc-8d2866eafb6865f084791494a7a449065cb0287c.tar.gz
gcc-8d2866eafb6865f084791494a7a449065cb0287c.tar.bz2
Don't crash on array type with erroneous length expression.
From-SVN: r168176
Diffstat (limited to 'gcc')
-rw-r--r--gcc/go/gofrontend/types.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc
index c0914ca..7a9bfc7 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -4359,8 +4359,12 @@ Array_type::get_length_tree(Gogo* gogo)
// expression. FIXME: This won't work in general.
Translate_context context(gogo, NULL, NULL, NULL_TREE);
tree len = this->length_->get_tree(&context);
- len = convert_to_integer(integer_type_node, len);
- this->length_tree_ = save_expr(len);
+ if (len != error_mark_node)
+ {
+ len = convert_to_integer(integer_type_node, len);
+ len = save_expr(len);
+ }
+ this->length_tree_ = len;
}
}
return this->length_tree_;