static bool
check_for_cached_intrinsic (Context *ctx, TyTy::FnType *fntype, tree *lookup)
{
+ const Resolver::CanonicalPath &canonical_path = fntype->get_ident ().path;
+ std::string asm_name = ctx->mangle_item (fntype, canonical_path);
if (ctx->lookup_function_decl (fntype->get_ty_ref (), lookup,
- fntype->get_id (), fntype))
+ fntype->get_id (), fntype, asm_name))
{
- // Has this been added to the list? Then it must be finished
- if (ctx->function_completed (*lookup))
- {
- tree dummy = NULL_TREE;
- if (!ctx->lookup_function_decl (fntype->get_ty_ref (), &dummy))
- ctx->insert_function_decl (fntype, *lookup);
- return true;
- }
+ return true;
}
return false;
legacy_mangle_item (const TyTy::BaseType *ty,
const Resolver::CanonicalPath &path)
{
- const std::string hash = legacy_hash (ty->as_string ());
+ const std::string hash = legacy_hash (ty->mangle_string ());
const std::string hash_sig = legacy_mangle_name (hash);
return kMangledSymbolPrefix + legacy_mangle_canonical_path (path) + hash_sig
bool has_subsititions_defined () const;
bool needs_generic_substitutions () const;
+ std::string mangle_string () const
+ {
+ return TypeKindFormat::to_string (get_kind ()) + ":" + as_string () + ":"
+ + mappings_str () + ":" + bounds_as_string ();
+ }
+
/* Returns a pointer to a clone of this. The caller is responsible for
* releasing the memory of the returned ty. */
virtual BaseType *clone () const = 0;