aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/types.cc15
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index a93dedb..f1bbc37 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-13c98c3477647888fc7a186e9055793b0961e806
+959260238817af3205fb9907dd92319291e6a893
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc
index 82f9fb0..2d34a28 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -7581,10 +7581,17 @@ Array_type::do_export(Export* exp) const
exp->write_c_string("[");
if (this->length_ != NULL)
{
- Export_function_body efb(exp, 0);
- efb.set_type_context(this->length_->type());
- this->length_->export_expression(&efb);
- exp->write_string(efb.body());
+ Numeric_constant nc;
+ mpz_t val;
+ if (!this->length_->numeric_constant_value(&nc) || !nc.to_int(&val))
+ {
+ go_assert(saw_errors());
+ return;
+ }
+ char* s = mpz_get_str(NULL, 10, val);
+ exp->write_string(s);
+ exp->write_string(" ");
+ mpz_clear(val);
}
exp->write_c_string("] ");
exp->write_type(this->element_type_);