diff options
Diffstat (limited to 'gcc/target.def')
-rw-r--r-- | gcc/target.def | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gcc/target.def b/gcc/target.def index e665c1cb725..caf1cb6da6d 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -5279,7 +5279,27 @@ DEFHOOKPOD @code{atomic_test_and_set} is not exactly 1, i.e. the\ @code{bool} @code{true}.", unsigned char, 1) - + +DEFHOOK +(atomic_assign_expand_fenv, +"ISO C11 requires atomic compound assignments that may raise floating-point\ + exceptions to raise exceptions corresponding to the arithmetic operation\ + whose result was successfully stored in a compare-and-exchange sequence. \ + This requires code equivalent to calls to @code{feholdexcept},\ + @code{feclearexcept} and @code{feupdateenv} to be generated at\ + appropriate points in the compare-and-exchange sequence. This hook should\ + set @code{*@var{hold}} to an expression equivalent to the call to\ + @code{feholdexcept}, @code{*@var{clear}} to an expression equivalent to\ + the call to @code{feclearexcept} and @code{*@var{update}} to an expression\ + equivalent to the call to @code{feupdateenv}. The three expressions are\ + @code{NULL_TREE} on entry to the hook and may be left as @code{NULL_TREE}\ + if no code is required in a particular place. The default implementation\ + leaves all three expressions as @code{NULL_TREE}. The\ + @code{__atomic_feraiseexcept} function from @code{libatomic} may be of use\ + as part of the code generated in @code{*@var{update}}.", + void, (tree *hold, tree *clear, tree *update), + default_atomic_assign_expand_fenv) + /* Leave the boolean fields at the end. */ /* True if we can create zeroed data by switching to a BSS section |