diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-04-13 22:28:55 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-04-17 12:50:25 +0200 |
commit | bda519596543e49f77914b5677693e86be5d01d0 (patch) | |
tree | 70d41323c49a2dbddef9b55e57fb8784fba78922 /gcc/d/d-tree.h | |
parent | d81bc495a426b0020e44a9764fd904462a39983b (diff) | |
download | gcc-bda519596543e49f77914b5677693e86be5d01d0.zip gcc-bda519596543e49f77914b5677693e86be5d01d0.tar.gz gcc-bda519596543e49f77914b5677693e86be5d01d0.tar.bz2 |
d: Add TARGET_D_TEMPLATES_ALWAYS_COMDAT
Following up on the fix for PR99914, when testing on MinGW, it was found
not to support weak in the same way as on ELF or Mach-O targets.
So the linkage has been reverted back to COMDAT for that target, however
in order to properly support overriding functions and variables, all
declarations with external linkage must be put on COMDAT. For this a
new target hook has been added to control the behavior.
gcc/ChangeLog:
PR d/99914
* config/i386/winnt-d.c (TARGET_D_TEMPLATES_ALWAYS_COMDAT): Define.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in (D language and ABI): Add @hook for
TARGET_D_TEMPLATES_ALWAYS_COMDAT.
gcc/d/ChangeLog:
PR d/99914
* d-target.def (d_templates_always_comdat): New hook.
* d-tree.h (mark_needed): Remove prototype.
* decl.cc: Include d-target.h.
(mark_needed): Rename to...
(d_mark_needed): ...this. Make static.
(set_linkage_for_decl): Put variables in comdat if
d_templates_always_comdat.
Diffstat (limited to 'gcc/d/d-tree.h')
-rw-r--r-- | gcc/d/d-tree.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/gcc/d/d-tree.h b/gcc/d/d-tree.h index c1b6f27..bb731a6 100644 --- a/gcc/d/d-tree.h +++ b/gcc/d/d-tree.h @@ -631,7 +631,6 @@ extern void d_finish_decl (tree); extern tree make_thunk (FuncDeclaration *, int); extern tree start_function (FuncDeclaration *); extern void finish_function (tree); -extern void mark_needed (tree); extern tree get_vtable_decl (ClassDeclaration *); extern tree build_new_class_expr (ClassReferenceExp *); extern tree aggregate_initializer_decl (AggregateDeclaration *); |