]> gcc.gnu.org Git - gcc.git/commitdiff
Cleanup IR symbol names in gimple
authorPhilip Herron <philip.herron@embecosm.com>
Fri, 22 Oct 2021 12:45:21 +0000 (13:45 +0100)
committerPhilip Herron <philip.herron@embecosm.com>
Fri, 22 Oct 2021 12:45:21 +0000 (13:45 +0100)
When we have generic code the full as_string is too verbose for symbol
names. This changes the ir_symbol_names to become the name of the types
not the full debug as_string version.

Fixes #745

gcc/rust/typecheck/rust-tyty.cc
gcc/rust/typecheck/rust-tyty.h

index 37f93b40cf4ed81172fbe90c7c9f73cbc4e6f7d1..96a06e69c23d202a8a73c09ae29a361f13d4b07c 100644 (file)
@@ -1982,6 +1982,20 @@ ParamType::as_string () const
   return lookup->as_string ();
 }
 
+std::string
+ParamType::get_name () const
+{
+  if (get_ref () == get_ty_ref ())
+    return get_symbol ();
+
+  auto context = Resolver::TypeCheckContext::get ();
+  BaseType *lookup = nullptr;
+  bool ok = context->lookup_type (get_ty_ref (), &lookup);
+  rust_assert (ok);
+
+  return lookup->get_name ();
+}
+
 BaseType *
 ParamType::unify (BaseType *other)
 {
index 20bad107e1ddc0845dbfc8f59e480af15325e7ff..be80f77ace42aaca8f17d2b831848907158add0b 100644 (file)
@@ -545,7 +545,7 @@ public:
 
   BaseType *resolve () const;
 
-  std::string get_name () const override final { return as_string (); }
+  std::string get_name () const override final;
 
   bool is_equal (const BaseType &other) const override;
 
@@ -680,7 +680,7 @@ public:
     : generic (other.generic), param (other.param)
   {}
 
-  std::string as_string () const { return param->as_string (); }
+  std::string as_string () const { return param->get_name (); }
 
   bool fill_param_ty (BaseType &type, Location locus);
 
This page took 0.07155 seconds and 5 git commands to generate.