summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-04 19:02:47 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-04 19:02:47 +0000
commit30c6892a2fcf47ec37518f80b318ccf6b08feaca (patch)
treebaa9af4eb5014f148ea69e06c86eec58a4ef66f7
parentb1eea0ce75051f5d000fcd85f0041205e569c348 (diff)
downloadppe42-gcc-30c6892a2fcf47ec37518f80b318ccf6b08feaca.tar.gz
ppe42-gcc-30c6892a2fcf47ec37518f80b318ccf6b08feaca.zip
Fix handling of abstract types in temporary statements.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168480 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/go/gofrontend/statements.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc
index ef34bba174b..d8ea9f0682a 100644
--- a/gcc/go/gofrontend/statements.cc
+++ b/gcc/go/gofrontend/statements.cc
@@ -340,6 +340,9 @@ Temporary_statement::do_traverse_assignments(Traverse_assignments* tassign)
void
Temporary_statement::do_determine_types()
{
+ if (this->type_ != NULL && this->type_->is_abstract())
+ this->type_ = this->type_->make_non_abstract_type();
+
if (this->init_ != NULL)
{
if (this->type_ == NULL)
@@ -352,10 +355,10 @@ Temporary_statement::do_determine_types()
}
if (this->type_ == NULL)
- this->type_ = this->init_->type();
-
- if (this->type_->is_abstract())
- this->type_ = this->type_->make_non_abstract_type();
+ {
+ this->type_ = this->init_->type();
+ gcc_assert(!this->type_->is_abstract());
+ }
}
// Check types.
OpenPOWER on IntegriCloud