aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/d-target.h
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2021-01-04 19:05:38 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2021-01-05 22:09:10 +0100
commitc5e94699efa816444c0ae49ad55d0e01a48203df (patch)
treef527fd1748c2f034d74ca1b268d4f56fc36cf050 /gcc/d/d-target.h
parentae1ada95fee1ee4fac0dec0486076d9787988a03 (diff)
downloadgcc-c5e94699efa816444c0ae49ad55d0e01a48203df.zip
gcc-c5e94699efa816444c0ae49ad55d0e01a48203df.tar.gz
gcc-c5e94699efa816444c0ae49ad55d0e01a48203df.tar.bz2
d: Merge upstream dmd a5c86f5b9
Adds the following new `__traits' to the D language. - isDeprecated: used to detect if a function is deprecated. - isDisabled: used to detect if a function is marked with @disable. - isFuture: used to detect if a function is marked with @__future. - isModule: used to detect if a given symbol represents a module, this enhancement also adds support using `is(sym == module)'. - isPackage: used to detect if a given symbol represents a package, this enhancement also adds support using `is(sym == package)'. - child: takes two arguments. The first must be a symbol or expression and the second must be a symbol, such as an alias to a member of the first 'parent' argument. The result is the second 'member' argument interpreted with its 'this' context set to 'parent'. This is the inverse of `__traits(parent, member)'. - isReturnOnStack: determines if a function's return value is placed on the stack, or is returned via registers. - isZeroInit: used to detect if a type's default initializer has no non-zero bits. - getTargetInfo: used to query features of the target being compiled for, the back-end can expand this to register any key to handle the given argument, however a reliable subset exists which includes "cppRuntimeLibrary", "cppStd", "floatAbi", and "objectFormat". - getLocation: returns a tuple whose entries correspond to the filename, line number, and column number of where the argument was declared. - hasPostblit: used to detect if a type is a struct with a postblit. - isCopyable: used to detect if a type allows copying its value. - getVisibility: an alias for the getProtection trait. Reviewed-on: https://github.com/dlang/dmd/pull/12093 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd a5c86f5b9. * d-builtins.cc (d_eval_constant_expression): Handle ADDR_EXPR trees created by build_string_literal. * d-frontend.cc (retStyle): Remove function. * d-target.cc (d_language_target_info): New variable. (d_target_info_table): Likewise. (Target::_init): Initialize d_target_info_table. (Target::isReturnOnStack): New function. (d_add_target_info_handlers): Likewise. (d_handle_target_cpp_std): Likewise. (d_handle_target_cpp_runtime_library): Likewise. (Target::getTargetInfo): Likewise. * d-target.h (struct d_target_info_spec): New type. (d_add_target_info_handlers): Declare.
Diffstat (limited to 'gcc/d/d-target.h')
-rw-r--r--gcc/d/d-target.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/d/d-target.h b/gcc/d/d-target.h
index 211f72f..56595d2 100644
--- a/gcc/d/d-target.h
+++ b/gcc/d/d-target.h
@@ -31,4 +31,19 @@ extern struct gcc_targetdm targetdm;
/* Used by target to add predefined version idenditiers. */
extern void d_add_builtin_version (const char *);
+/* Structure describing a supported key for `__traits(getTargetInfo)' and a
+ function to handle it. */
+struct d_target_info_spec
+{
+ /* The name of the key or NULL to mark the end of a table of keys. */
+ const char *name;
+ /* Function to handle this key, the return value of the handler must be a CST.
+ This pointer may be NULL if no special handling is required, for instance,
+ the key must always be available according to the D language spec. */
+ tree (*handler) ();
+};
+
+/* Used by target to add getTargetInfo handlers. */
+extern void d_add_target_info_handlers (const d_target_info_spec *);
+
#endif /* GCC_D_TARGET_H */