From 1496c81184ce1d8c6085b1d8dc9c23670e86764d Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Tue, 26 May 2015 20:42:20 +0000 Subject: [PATCH] * gcc-interface/trans.c (Attribute_to_gnu) : Do not bother about NaN's if Machine_Overflows is true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223717 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/gcc-interface/trans.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index dcb4620d292f..b6e11e1cbbcc 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2015-05-26 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu) : Do not + bother about NaN's if Machine_Overflows is true. + 2015-05-26 Eric Botcazou * gcc-interface/trans.c (gnat_to_gnu) : Really diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 8efa59dc86e6..7fc8a5c7d8f3 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -2283,7 +2283,8 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute) a NaN so we implement the semantics of C99 f{min,max} to make it predictable in this case: if either operand is a NaN, the other is returned; if both operands are NaN's, a NaN is returned. */ - if (SCALAR_FLOAT_TYPE_P (gnu_result_type)) + if (SCALAR_FLOAT_TYPE_P (gnu_result_type) + && !Machine_Overflows_On_Target) { const bool lhs_side_effects_p = TREE_SIDE_EFFECTS (gnu_lhs); const bool rhs_side_effects_p = TREE_SIDE_EFFECTS (gnu_rhs); -- 2.47.2