diff options
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/types.cc | 15 |
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_); |