mirror of git://gcc.gnu.org/git/gcc.git
targhooks - provide an alternative hook for targets that never execute speculatively
This hook adds an alternative implementation for the target hook TARGET_HAVE_SPECULATION_SAFE_VALUE; it can be used by targets that have no CPU implementations that execute code speculatively. All that is needed for such targets now is to add: #undef TARGET_HAVE_SPECULATION_SAFE_VALUE #define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed. to where you have your other target hooks and you're done. gcc: * targhooks.h (speculation_safe_value_not_needed): New prototype. * targhooks.c (speculation_safe_value_not_needed): New function. * target.def (have_speculation_safe_value): Update documentation. * doc/tm.texi: Regenerated. From-SVN: r263175
This commit is contained in:
parent
c0111dc435
commit
f3debef336
|
|
@ -1,3 +1,10 @@
|
|||
2018-07-31 Richard Earnshaw <rearnsha@arm.com>
|
||||
|
||||
* targhooks.h (speculation_safe_value_not_needed): New prototype.
|
||||
* targhooks.c (speculation_safe_value_not_needed): New function.
|
||||
* target.def (have_speculation_safe_value): Update documentation.
|
||||
* doc/tm.texi: Regenerated.
|
||||
|
||||
2018-07-31 Richard Earnshaw <rearnsha@arm.com>
|
||||
|
||||
* config/aarch64/iterators.md (ALLI_TI): New iterator.
|
||||
|
|
|
|||
|
|
@ -11935,6 +11935,11 @@ This hook is used to determine the level of target support for
|
|||
a pattern named @code{speculation_barrier}. Else it returns true
|
||||
for the first case and whether the pattern is enabled for the current
|
||||
compilation for the second case.
|
||||
|
||||
For targets that have no processors that can execute instructions
|
||||
speculatively an alternative implemenation of this hook is available:
|
||||
simply redefine this hook to @code{speculation_safe_value_not_needed}
|
||||
along with your other target hooks.
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn {Target Hook} rtx TARGET_SPECULATION_SAFE_VALUE (machine_mode @var{mode}, rtx @var{result}, rtx @var{val}, rtx @var{failval})
|
||||
|
|
|
|||
|
|
@ -4166,7 +4166,12 @@ DEFHOOK
|
|||
The default implementation returns false if the target does not define\n\
|
||||
a pattern named @code{speculation_barrier}. Else it returns true\n\
|
||||
for the first case and whether the pattern is enabled for the current\n\
|
||||
compilation for the second case.",
|
||||
compilation for the second case.\n\
|
||||
\n\
|
||||
For targets that have no processors that can execute instructions\n\
|
||||
speculatively an alternative implemenation of this hook is available:\n\
|
||||
simply redefine this hook to @code{speculation_safe_value_not_needed}\n\
|
||||
along with your other target hooks.",
|
||||
bool, (bool active), default_have_speculation_safe_value)
|
||||
|
||||
DEFHOOK
|
||||
|
|
|
|||
|
|
@ -2324,6 +2324,13 @@ default_have_speculation_safe_value (bool active)
|
|||
return false;
|
||||
#endif
|
||||
}
|
||||
/* Alternative implementation of TARGET_HAVE_SPECULATION_SAFE_VALUE
|
||||
that can be used on targets that never have speculative execution. */
|
||||
bool
|
||||
speculation_safe_value_not_needed (bool active)
|
||||
{
|
||||
return !active;
|
||||
}
|
||||
|
||||
/* Default implementation of the speculation-safe-load builtin. This
|
||||
implementation simply copies val to result and generates a
|
||||
|
|
|
|||
|
|
@ -282,6 +282,7 @@ extern void default_select_early_remat_modes (sbitmap);
|
|||
extern tree default_preferred_else_value (unsigned, tree, unsigned, tree *);
|
||||
|
||||
extern bool default_have_speculation_safe_value (bool);
|
||||
extern bool speculation_safe_value_not_needed (bool);
|
||||
extern rtx default_speculation_safe_value (machine_mode, rtx, rtx, rtx);
|
||||
|
||||
#endif /* GCC_TARGHOOKS_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue