> On 05/04/2021 21:43 Iain Buclaw <ibuc...@gdcproject.org> wrote:
> 
>  
> Hi,
> 
> This patch adds TARGET_D_REGISTER_OS_TARGET_INFO as a new D front-end
> target hook, implementing `__traits(getTargetInfo, "objectFormat")' for
> all targets that have D support files.
> 
> This trait was added earlier in the front-end as a stub, however the
> target-specific implementation was left out until now.
> 
> Bootstrapped and regression tested on x86_64-linux-gnu/-m32/-mx32, and
> tested on x86_64-darwin for getting the libphobos port set-up.
> 
> Any issues with this, or OK to commit?
> 

After doing some testing on a wide spread of targets, this is not the most
fitting place to have the result of `__traits(getTargetInfo, "objectFormat")' 
set.  So have removed its implementation, but kept the hook in as it will be
useful for Darwin targets later.

Implementation of objectFormat will be done in a follow-up.

Updated patch, regression tested on x86_64-linux-gnu and committed to mainline.

Regards,
Iain.

---
gcc/ChangeLog:

        * doc/tm.texi: Regenerate.
        * doc/tm.texi.in (D language and ABI): Add @hook for
        TARGET_D_REGISTER_OS_TARGET_INFO.

gcc/d/ChangeLog:

        * d-target.cc (Target::_init): Call new targetdm hook to register OS
        specific target info keys.
        * d-target.def (d_register_os_target_info): New hook.
---
 gcc/d/d-target.cc  | 1 +
 gcc/d/d-target.def | 8 ++++++++
 gcc/doc/tm.texi    | 5 +++++
 gcc/doc/tm.texi.in | 2 ++
 4 files changed, 16 insertions(+)

diff --git a/gcc/d/d-target.cc b/gcc/d/d-target.cc
index d576b74af1c..be354d9f1f0 100644
--- a/gcc/d/d-target.cc
+++ b/gcc/d/d-target.cc
@@ -199,6 +199,7 @@ Target::_init (const Param &)
   /* Initialize target info tables, the keys required by the language are added
      last, so that the OS and CPU handlers can override.  */
   targetdm.d_register_cpu_target_info ();
+  targetdm.d_register_os_target_info ();
   d_add_target_info_handlers (d_language_target_info);
 }
 
diff --git a/gcc/d/d-target.def b/gcc/d/d-target.def
index cd0397c1577..aa6bf55e6e6 100644
--- a/gcc/d/d-target.def
+++ b/gcc/d/d-target.def
@@ -58,6 +58,14 @@ describing the requested target information.",
  void, (void),
  hook_void_void)
 
+/* getTargetInfo keys relating to the target OS.  */
+DEFHOOK
+(d_register_os_target_info,
+ "Same as @code{TARGET_D_CPU_TARGET_INFO}, but is used for keys relating to\n\
+the target operating system.",
+ void, (void),
+ hook_void_void)
+
 /* ModuleInfo section name and brackets.  */
 DEFHOOKPOD
 (d_minfo_section,
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 6201df9a67d..97c8eebcd6f 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -10817,6 +10817,11 @@ added by this hook are made available at compile time 
by the
 describing the requested target information.
 @end deftypefn
 
+@deftypefn {D Target Hook} void TARGET_D_REGISTER_OS_TARGET_INFO (void)
+Same as @code{TARGET_D_CPU_TARGET_INFO}, but is used for keys relating to
+the target operating system.
+@end deftypefn
+
 @deftypevr {D Target Hook} {const char *} TARGET_D_MINFO_SECTION
 Contains the name of the section in which module info references should be
 placed.  This section is expected to be bracketed by two symbols to indicate
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index bde57585b03..e2d49ee9f57 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -7359,6 +7359,8 @@ floating-point support; they are not included in this 
mechanism.
 
 @hook TARGET_D_REGISTER_CPU_TARGET_INFO
 
+@hook TARGET_D_REGISTER_OS_TARGET_INFO
+
 @hook TARGET_D_MINFO_SECTION
 
 @hook TARGET_D_MINFO_START_NAME
-- 
2.27.0

Reply via email to