From: Ian Lance Taylor Date: Tue, 11 Aug 2015 21:37:26 +0000 (+0000) Subject: compiler: Don't make void-typed temporaries. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2abb463fab4416e0d5365f6b846a725d525c08f1;p=gcc.git compiler: Don't make void-typed temporaries. Fixes golang/go#11568. Reviewed-on: https://go-review.googlesource.com/12653 From-SVN: r226788 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index a5b77a452f8..2696ea5b36d 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -5891a4c0615f469edcefc6d7a85a88984ba940aa +3bd90ea170b9c9aecedd37796acdd2712b29922b 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/statements.cc b/gcc/go/gofrontend/statements.cc index 96c142c6eab..40b437382f0 100644 --- a/gcc/go/gofrontend/statements.cc +++ b/gcc/go/gofrontend/statements.cc @@ -348,7 +348,15 @@ Statement::make_variable_declaration(Named_object* var) Type* Temporary_statement::type() const { - return this->type_ != NULL ? this->type_ : this->init_->type(); + Type* type = this->type_ != NULL ? this->type_ : this->init_->type(); + + // Temporary variables cannot have a void type. + if (type->is_void_type()) + { + go_assert(saw_errors()); + return Type::make_error_type(); + } + return type; } // Traversal.