aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2018-10-01 22:25:52 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2018-10-01 22:25:52 +0000
commitb1d88684bb3c64b60d72ea6b248f23d9d75fdbee (patch)
tree132eb9ea3cc5a9e9e7d876aacfc78e9cc7c0e895
parent44ef03008c75059368245eb3dcd6054bed3f7643 (diff)
downloadgcc-b1d88684bb3c64b60d72ea6b248f23d9d75fdbee.zip
gcc-b1d88684bb3c64b60d72ea6b248f23d9d75fdbee.tar.gz
gcc-b1d88684bb3c64b60d72ea6b248f23d9d75fdbee.tar.bz2
compiler: use the underlying type to build placeholder type for alias
When asking for a placeholder type of an alias type, build a placeholder for the underlying type, instead of treating the alias as a named type and calling get_backend. The latter may fail as we may not be ready to build a complete backend type. We have already used a unified backend type for alias type and its underlying type. Do the same for placeholders as well. Reviewed-on: https://go-review.googlesource.com/138635 From-SVN: r264773
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/types.cc2
2 files changed, 3 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 6ad2146..ad3253f 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-2f56d51c6b3104242613c74b02fa6c63a2fe16c5
+53d0d7ca278a5612fcdb5fb098e7bf950a0178ef
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 ad0704c..3768719 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -1125,6 +1125,8 @@ Type::get_backend_placeholder(Gogo* gogo)
case TYPE_FORWARD:
// Named types keep track of their own dependencies and manage
// their own placeholders.
+ if (this->named_type() != NULL && this->named_type()->is_alias())
+ return this->unalias()->get_backend_placeholder(gogo);
return this->get_backend(gogo);
case TYPE_INTERFACE: