d: Add TARGET_D_REGISTER_CPU_TARGET_INFO
This implements `__traits(getTargetInfo, "floatAbi")' for all targets that have D support files. gcc/ChangeLog: * config/aarch64/aarch64-d.c (aarch64_d_handle_target_float_abi): New function. (aarch64_d_register_target_info): New function. * config/aarch64/aarch64-protos.h (aarch64_d_register_target_info): Declare. * config/aarch64/aarch64.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/arm/arm-d.c (arm_d_handle_target_float_abi): New function. (arm_d_register_target_info): New function. * config/arm/arm-protos.h (arm_d_register_target_info): Declare. * config/arm/arm.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/i386/i386-d.c (ix86_d_handle_target_float_abi): New function. (ix86_d_register_target_info): New function. * config/i386/i386-protos.h (ix86_d_register_target_info): Declare. * config/i386/i386.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/mips/mips-d.c (mips_d_handle_target_float_abi): New function. (mips_d_register_target_info): New function. * config/mips/mips-protos.h (mips_d_register_target_info): Declare. * config/mips/mips.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/pa/pa-d.c (pa_d_handle_target_float_abi): New function. (pa_d_register_target_info): New function. * config/pa/pa-protos.h (pa_d_register_target_info): Declare. * config/pa/pa.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/riscv/riscv-d.c (riscv_d_handle_target_float_abi): New function. (riscv_d_register_target_info): New function. * config/riscv/riscv-protos.h (riscv_d_register_target_info): Declare. * config/riscv/riscv.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/rs6000/rs6000-d.c (rs6000_d_handle_target_float_abi): New function. (rs6000_d_register_target_info): New function. * config/rs6000/rs6000-protos.h (rs6000_d_register_target_info): Declare. * config/rs6000/rs6000.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/s390/s390-d.c (s390_d_handle_target_float_abi): New function. (s390_d_register_target_info): New function. * config/s390/s390-protos.h (s390_d_register_target_info): Declare. * config/s390/s390.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * config/sparc/sparc-d.c (sparc_d_handle_target_float_abi): New function. (sparc_d_register_target_info): New function. * config/sparc/sparc-protos.h (sparc_d_register_target_info): Declare. * config/sparc/sparc.h (TARGET_D_REGISTER_CPU_TARGET_INFO): Define. * doc/tm.texi: Regenerate. * doc/tm.texi.in (D language and ABI): Add @hook for TARGET_D_REGISTER_CPU_TARGET_INFO. gcc/d/ChangeLog: * d-target.cc (Target::_init): Call new targetdm hook to register CPU specific target info keys. * d-target.def (d_register_cpu_target_info): New hook.
This commit is contained in:
parent
d253a6f7bb
commit
3785d2b207
|
@ -31,3 +31,26 @@ aarch64_d_target_versions (void)
|
|||
d_add_builtin_version ("AArch64");
|
||||
d_add_builtin_version ("D_HardFloat");
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
aarch64_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi = "hard";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
aarch64_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", aarch64_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -1011,6 +1011,7 @@ std::string aarch64_get_extension_string_for_isa_flags (uint64_t, uint64_t);
|
|||
|
||||
/* Defined in aarch64-d.c */
|
||||
extern void aarch64_d_target_versions (void);
|
||||
extern void aarch64_d_register_target_info (void);
|
||||
|
||||
rtl_opt_pass *make_pass_fma_steering (gcc::context *);
|
||||
rtl_opt_pass *make_pass_track_speculation (gcc::context *);
|
||||
|
|
|
@ -26,8 +26,9 @@
|
|||
#define TARGET_CPU_CPP_BUILTINS() \
|
||||
aarch64_cpu_cpp_builtins (pfile)
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS aarch64_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO aarch64_d_register_target_info
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -53,3 +53,45 @@ arm_d_target_versions (void)
|
|||
else if (TARGET_HARD_FLOAT)
|
||||
d_add_builtin_version ("D_HardFloat");
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
arm_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
switch (arm_float_abi)
|
||||
{
|
||||
case ARM_FLOAT_ABI_HARD:
|
||||
abi = "hard";
|
||||
break;
|
||||
|
||||
case ARM_FLOAT_ABI_SOFT:
|
||||
abi = "soft";
|
||||
break;
|
||||
|
||||
case ARM_FLOAT_ABI_SOFTFP:
|
||||
abi = "softfp";
|
||||
break;
|
||||
|
||||
default:
|
||||
abi = "";
|
||||
break;
|
||||
}
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
arm_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", arm_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -397,6 +397,7 @@ extern void arm_cpu_cpp_builtins (struct cpp_reader *);
|
|||
|
||||
/* Defined in arm-d.c */
|
||||
extern void arm_d_target_versions (void);
|
||||
extern void arm_d_register_target_info (void);
|
||||
|
||||
extern bool arm_is_constant_pool_ref (rtx);
|
||||
|
||||
|
|
|
@ -47,8 +47,9 @@ extern char arm_arch_name[];
|
|||
/* Target CPU builtins. */
|
||||
#define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile)
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS arm_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO arm_d_register_target_info
|
||||
|
||||
#include "config/arm/arm-opts.h"
|
||||
|
||||
|
|
|
@ -45,6 +45,34 @@ ix86_d_target_versions (void)
|
|||
d_add_builtin_version ("D_SoftFloat");
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
ix86_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
if (! (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387))
|
||||
abi = "soft";
|
||||
else
|
||||
abi = "hard";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
ix86_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", ix86_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_HAS_STDCALL_CONVENTION for x86 targets. */
|
||||
|
||||
bool
|
||||
|
|
|
@ -264,6 +264,7 @@ extern void ix86_register_pragmas (void);
|
|||
|
||||
/* In i386-d.c */
|
||||
extern void ix86_d_target_versions (void);
|
||||
extern void ix86_d_register_target_info (void);
|
||||
extern bool ix86_d_has_stdcall_convention (unsigned int *, unsigned int *);
|
||||
|
||||
/* In winnt.c */
|
||||
|
|
|
@ -804,6 +804,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
|
|||
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS ix86_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO ix86_d_register_target_info
|
||||
#define TARGET_D_HAS_STDCALL_CONVENTION ix86_d_has_stdcall_convention
|
||||
|
||||
#ifndef CC1_SPEC
|
||||
|
|
|
@ -56,3 +56,33 @@ mips_d_target_versions (void)
|
|||
d_add_builtin_version ("D_SoftFloat");
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
mips_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
if (TARGET_HARD_FLOAT_ABI)
|
||||
abi = "hard";
|
||||
else if (TARGET_SOFT_FLOAT_ABI)
|
||||
abi = "soft";
|
||||
else
|
||||
abi = "";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
mips_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", mips_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -388,5 +388,6 @@ extern void mips_expand_vec_cond_expr (machine_mode, machine_mode, rtx *);
|
|||
|
||||
/* Routines implemented in mips-d.c */
|
||||
extern void mips_d_target_versions (void);
|
||||
extern void mips_d_register_target_info (void);
|
||||
|
||||
#endif /* ! GCC_MIPS_PROTOS_H */
|
||||
|
|
|
@ -658,8 +658,9 @@ struct mips_cpu_info {
|
|||
} \
|
||||
while (0)
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS mips_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO mips_d_register_target_info
|
||||
|
||||
/* Default target_flags if no switches are specified */
|
||||
|
||||
|
|
|
@ -39,3 +39,31 @@ pa_d_target_versions (void)
|
|||
else
|
||||
d_add_builtin_version ("D_HardFloat");
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
pa_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
if (TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)
|
||||
abi = "soft";
|
||||
else
|
||||
abi = "hard";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
pa_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", pa_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -115,3 +115,4 @@ extern const int pa_magic_milli[];
|
|||
|
||||
/* Routines implemented in pa-d.c */
|
||||
extern void pa_d_target_versions (void);
|
||||
extern void pa_d_register_target_info (void);
|
||||
|
|
|
@ -1302,8 +1302,9 @@ do { \
|
|||
|
||||
#define NEED_INDICATE_EXEC_STACK 0
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS pa_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO pa_d_register_target_info
|
||||
|
||||
/* Output default function prologue for hpux. */
|
||||
#define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue
|
||||
|
|
|
@ -39,3 +39,49 @@ riscv_d_target_versions (void)
|
|||
else
|
||||
d_add_builtin_version ("D_SoftFloat");
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
riscv_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
switch (riscv_abi)
|
||||
{
|
||||
case ABI_ILP32E:
|
||||
case ABI_ILP32:
|
||||
case ABI_LP64:
|
||||
abi = "soft";
|
||||
break;
|
||||
|
||||
case ABI_ILP32F:
|
||||
case ABI_LP64F:
|
||||
abi = "single";
|
||||
break;
|
||||
|
||||
case ABI_ILP32D:
|
||||
case ABI_LP64D:
|
||||
abi = "double";
|
||||
break;
|
||||
|
||||
default:
|
||||
abi = "";
|
||||
break;
|
||||
}
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
riscv_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", riscv_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ void riscv_cpu_cpp_builtins (cpp_reader *);
|
|||
|
||||
/* Routines implemented in riscv-d.c */
|
||||
extern void riscv_d_target_versions (void);
|
||||
extern void riscv_d_register_target_info (void);
|
||||
|
||||
/* Routines implemented in riscv-builtins.c. */
|
||||
extern void riscv_atomic_assign_expand_fenv (tree *, tree *, tree *);
|
||||
|
|
|
@ -27,8 +27,9 @@ along with GCC; see the file COPYING3. If not see
|
|||
/* Target CPU builtins. */
|
||||
#define TARGET_CPU_CPP_BUILTINS() riscv_cpu_cpp_builtins (pfile)
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS riscv_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO riscv_d_register_target_info
|
||||
|
||||
#ifdef TARGET_BIG_ENDIAN_DEFAULT
|
||||
#define DEFAULT_ENDIAN_SPEC "b"
|
||||
|
|
|
@ -45,3 +45,33 @@ rs6000_d_target_versions (void)
|
|||
d_add_builtin_version ("D_SoftFloat");
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
rs6000_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
if (TARGET_HARD_FLOAT)
|
||||
abi = "hard";
|
||||
else if (TARGET_SOFT_FLOAT)
|
||||
abi = "soft";
|
||||
else
|
||||
abi = "";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
rs6000_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", rs6000_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -298,6 +298,7 @@ extern void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT,
|
|||
|
||||
/* Declare functions in rs6000-d.c */
|
||||
extern void rs6000_d_target_versions (void);
|
||||
extern void rs6000_d_register_target_info (void);
|
||||
|
||||
#ifdef NO_DOLLAR_IN_LABEL
|
||||
const char * rs6000_xcoff_strip_dollar (const char *);
|
||||
|
|
|
@ -641,8 +641,9 @@ extern unsigned char rs6000_recip_bits[];
|
|||
#define TARGET_CPU_CPP_BUILTINS() \
|
||||
rs6000_cpu_cpp_builtins (pfile)
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS rs6000_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO rs6000_d_register_target_info
|
||||
|
||||
/* This is used by rs6000_cpu_cpp_builtins to indicate the byte order
|
||||
we're compiling for. Some configurations may need to override it. */
|
||||
|
|
|
@ -41,3 +41,33 @@ s390_d_target_versions (void)
|
|||
else if (TARGET_HARD_FLOAT)
|
||||
d_add_builtin_version ("D_HardFloat");
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
s390_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
if (TARGET_HARD_FLOAT)
|
||||
abi = "hard";
|
||||
else if (TARGET_SOFT_FLOAT)
|
||||
abi = "soft";
|
||||
else
|
||||
abi = "";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
s390_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", s390_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -173,6 +173,7 @@ extern bool s390_const_operand_ok (tree, int, int, tree);
|
|||
|
||||
/* s390-d.c routines */
|
||||
extern void s390_d_target_versions (void);
|
||||
extern void s390_d_register_target_info (void);
|
||||
|
||||
/* Pass management. */
|
||||
namespace gcc { class context; }
|
||||
|
|
|
@ -247,8 +247,9 @@ enum processor_flags
|
|||
/* Target CPU builtins. */
|
||||
#define TARGET_CPU_CPP_BUILTINS() s390_cpu_cpp_builtins (pfile)
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS s390_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO s390_d_register_target_info
|
||||
|
||||
#ifdef DEFAULT_TARGET_64BIT
|
||||
#define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP \
|
||||
|
|
|
@ -48,3 +48,31 @@ sparc_d_target_versions (void)
|
|||
d_add_builtin_version ("SPARC_SoftFloat");
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle a call to `__traits(getTargetInfo, "floatAbi")'. */
|
||||
|
||||
static tree
|
||||
sparc_d_handle_target_float_abi (void)
|
||||
{
|
||||
const char *abi;
|
||||
|
||||
if (TARGET_FPU)
|
||||
abi = "hard";
|
||||
else
|
||||
abi = "soft";
|
||||
|
||||
return build_string_literal (strlen (abi) + 1, abi);
|
||||
}
|
||||
|
||||
/* Implement TARGET_D_REGISTER_CPU_TARGET_INFO. */
|
||||
|
||||
void
|
||||
sparc_d_register_target_info (void)
|
||||
{
|
||||
const struct d_target_info_spec handlers[] = {
|
||||
{ "floatAbi", sparc_d_handle_target_float_abi },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
d_add_target_info_handlers (handlers);
|
||||
}
|
||||
|
|
|
@ -113,5 +113,6 @@ extern rtl_opt_pass *make_pass_work_around_errata (gcc::context *);
|
|||
|
||||
/* Routines implemented in sparc-d.c */
|
||||
extern void sparc_d_target_versions (void);
|
||||
extern void sparc_d_register_target_info (void);
|
||||
|
||||
#endif /* __SPARC_PROTOS_H__ */
|
||||
|
|
|
@ -27,8 +27,9 @@ along with GCC; see the file COPYING3. If not see
|
|||
|
||||
#define TARGET_CPU_CPP_BUILTINS() sparc_target_macros ()
|
||||
|
||||
/* Target CPU versions for D. */
|
||||
/* Target hooks for D language. */
|
||||
#define TARGET_D_CPU_VERSIONS sparc_d_target_versions
|
||||
#define TARGET_D_REGISTER_CPU_TARGET_INFO sparc_d_register_target_info
|
||||
|
||||
/* Specify this in a cover file to provide bi-architecture (32/64) support. */
|
||||
/* #define SPARC_BI_ARCH */
|
||||
|
|
|
@ -198,6 +198,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 ();
|
||||
d_add_target_info_handlers (d_language_target_info);
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,18 @@ relating to the target operating system.",
|
|||
void, (void),
|
||||
hook_void_void)
|
||||
|
||||
/* getTargetInfo keys relating to the target CPU. */
|
||||
DEFHOOK
|
||||
(d_register_cpu_target_info,
|
||||
"Register all target information keys relating to the target CPU using the\n\
|
||||
function @code{d_add_target_info_handlers}, which takes a\n\
|
||||
@samp{struct d_target_info_spec} (defined in @file{d/d-target.h}). The keys\n\
|
||||
added by this hook are made available at compile time by the\n\
|
||||
@code{__traits(getTargetInfo)} extension, the result is an expression\n\
|
||||
describing the requested target information.",
|
||||
void, (void),
|
||||
hook_void_void)
|
||||
|
||||
/* ModuleInfo section name and brackets. */
|
||||
DEFHOOKPOD
|
||||
(d_minfo_section,
|
||||
|
|
|
@ -10808,6 +10808,15 @@ Similarly to @code{TARGET_D_CPU_VERSIONS}, but is used for versions
|
|||
relating to the target operating system.
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn {D Target Hook} void TARGET_D_REGISTER_CPU_TARGET_INFO (void)
|
||||
Register all target information keys relating to the target CPU using the
|
||||
function @code{d_add_target_info_handlers}, which takes a
|
||||
@samp{struct d_target_info_spec} (defined in @file{d/d-target.h}). The keys
|
||||
added by this hook are made available at compile time by the
|
||||
@code{__traits(getTargetInfo)} extension, the result is an expression
|
||||
describing the requested target information.
|
||||
@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
|
||||
|
|
|
@ -7357,6 +7357,8 @@ floating-point support; they are not included in this mechanism.
|
|||
|
||||
@hook TARGET_D_OS_VERSIONS
|
||||
|
||||
@hook TARGET_D_REGISTER_CPU_TARGET_INFO
|
||||
|
||||
@hook TARGET_D_MINFO_SECTION
|
||||
|
||||
@hook TARGET_D_MINFO_START_NAME
|
||||
|
|
Loading…
Reference in New Issue