aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/backend')
-rw-r--r--gcc/rust/backend/rust-compile-extern.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/rust/backend/rust-compile-extern.h b/gcc/rust/backend/rust-compile-extern.h
index c24437d..ddad350 100644
--- a/gcc/rust/backend/rust-compile-extern.h
+++ b/gcc/rust/backend/rust-compile-extern.h
@@ -130,6 +130,17 @@ public:
tree compiled_fn_type = TyTyResolveCompile::compile (ctx, fntype);
std::string ir_symbol_name = function.get_item_name ();
std::string asm_name = function.get_item_name ();
+ if (fntype->get_abi () == ABI::RUST)
+ {
+ // then we need to get the canonical path of it and mangle it
+ const Resolver::CanonicalPath *canonical_path = nullptr;
+ bool ok = ctx->get_mappings ()->lookup_canonical_path (
+ function.get_mappings ().get_nodeid (), &canonical_path);
+ rust_assert (ok);
+
+ ir_symbol_name = canonical_path->get () + fntype->subst_as_string ();
+ asm_name = ctx->mangle_item (fntype, *canonical_path);
+ }
const unsigned int flags = Backend::function_is_declaration;
tree fndecl