Commit 41dfa93f by Ian Lance Taylor

compiler: check error expression in Array_type::get_backend_length

    
    Otherwise, a zero length is created in the backend and the
    backend doesn't know there is an error.
    
    Reviewed-on: https://go-review.googlesource.com/61610

From-SVN: r252849
parent efc79e1e
4e063a8eee636cce17aea48c7183e78431174de3 de7b370901c4fc6852eaa7372282bb699429ec4a
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -7638,6 +7638,11 @@ Array_type::get_backend_length(Gogo* gogo) ...@@ -7638,6 +7638,11 @@ Array_type::get_backend_length(Gogo* gogo)
go_assert(this->length_ != NULL); go_assert(this->length_ != NULL);
if (this->blength_ == NULL) if (this->blength_ == NULL)
{ {
if (this->length_->is_error_expression())
{
this->blength_ = gogo->backend()->error_expression();
return this->blength_;
}
Numeric_constant nc; Numeric_constant nc;
mpz_t val; mpz_t val;
if (this->length_->numeric_constant_value(&nc) && nc.to_int(&val)) if (this->length_->numeric_constant_value(&nc) && nc.to_int(&val))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment