diff options
| author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-01-04 19:02:47 +0000 |
|---|---|---|
| committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-01-04 19:02:47 +0000 |
| commit | 30c6892a2fcf47ec37518f80b318ccf6b08feaca (patch) | |
| tree | baa9af4eb5014f148ea69e06c86eec58a4ef66f7 | |
| parent | b1eea0ce75051f5d000fcd85f0041205e569c348 (diff) | |
| download | ppe42-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.cc | 11 |
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. |

