compiler: suppress type descriptor generation for aliases

Change Named_object::get_backend to ignore aliases when creating type
descriptors for types, to be consistent with
Type::needs_specific_type_functions and the Specific_type_functions
traversal class. For example, when compiling a package that creates an
alias to an an externally defined type, e.g.

   import "foo"
   type MyFoo = foo.Foo

it makes sense to skip the alias (not try to generate type specific
functions for it) and let the normal mechanisms take care of the alias
target, depending on whether the target is defined locally or defined
elsewhere.

Testcase for this problen can be found in CL 193261.

Fixes golang/go#33866.

Change-Id: I307318c9c5f384abfaeae6b68bbbb8cdf7175068
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191961
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/go/gogo.cc b/go/gogo.cc
index f6a8e7a..3ff88cb 100644
--- a/go/gogo.cc
+++ b/go/gogo.cc
@@ -8718,7 +8718,13 @@
     case NAMED_OBJECT_TYPE:
       {
         Named_type* named_type = this->u_.type_value;
-	if (!Gogo::is_erroneous_name(this->name_) && !named_type->is_alias())
+
+        // No need to do anything for aliases-- whatever has to be done
+        // can be done for the alias target.
+        if (named_type->is_alias())
+          break;
+
+	if (!Gogo::is_erroneous_name(this->name_))
 	  type_decls.push_back(named_type->get_backend(gogo));
 
         // We need to produce a type descriptor for every named