PKGBUILDs/core/gcc/gdc_artificial_decl.patch
2019-11-06 13:39:52 +00:00

44 lines
1.5 KiB
Diff

diff --git a/gcc/d/d-tree.h b/gcc/d/d-tree.h
index a514bc3902f..303d52390c2 100644
--- a/gcc/d/d-tree.h
+++ b/gcc/d/d-tree.h
@@ -600,6 +600,7 @@ extern tree d_signed_type (tree);
extern void d_keep (tree);
/* In decl.cc. */
+extern const char *mangle_decl (Dsymbol *);
extern tree mangle_internal_decl (Dsymbol *, const char *, const char *);
extern void build_decl_tree (Dsymbol *);
extern tree get_symbol_decl (Declaration *);
diff --git a/gcc/d/decl.cc b/gcc/d/decl.cc
index 49723649230..90871b4c90b 100644
--- a/gcc/d/decl.cc
+++ b/gcc/d/decl.cc
@@ -59,7 +59,7 @@ along with GCC; see the file COPYING3. If not see
/* Return identifier for the external mangled name of DECL. */
-static const char *
+const char *
mangle_decl (Dsymbol *decl)
{
if (decl->isFuncDeclaration ())
diff --git a/gcc/d/typeinfo.cc b/gcc/d/typeinfo.cc
index bbd3961181d..a678b7938a6 100644
--- a/gcc/d/typeinfo.cc
+++ b/gcc/d/typeinfo.cc
@@ -1107,8 +1107,12 @@ public:
CONSTRUCTOR_APPEND_ELT (elms, size_int (i),
build_typeinfo (d->loc, arg->type));
}
+
+ const char *prefix = concat (GDC_PREFIX ("__tuple"),
+ mangle_decl (Module::rootModule), NULL);
+
tree ctor = build_constructor (build_ctype (satype), elms);
- tree decl = build_artificial_decl (TREE_TYPE (ctor), ctor);
+ tree decl = build_artificial_decl (TREE_TYPE (ctor), ctor, prefix);
/* The internal pointer reference should be public, but not visible outside
the compilation unit, as it's referencing COMDAT decls. */