MIN/MAX should be treated similar as comparisons for trapping
While looking into moving optimizations from minmax_replacement in phiopt to match.pd, I Noticed that min/max were considered trapping even if -ffinite-math-only was being used. This changes those expressions to be similar as comparisons so that they are not considered trapping if -ffinite-math-only is on. OK? Bootstrapped and tested with no regressions on x86_64-linux-gnu. gcc/ChangeLog: * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as COMPARISON. * tree-eh.cc (operation_could_trap_helper_p): Treate MIN_EXPR/MAX_EXPR similar as other comparisons.
This commit is contained in:
parent
ba9975a259
commit
5fecfed878
2 changed files with 6 additions and 0 deletions
|
@ -3204,6 +3204,9 @@ may_trap_p_1 (const_rtx x, unsigned flags)
|
|||
case LT:
|
||||
case LTGT:
|
||||
case COMPARE:
|
||||
/* Treat min/max similar as comparisons. */
|
||||
case SMIN:
|
||||
case SMAX:
|
||||
/* Some floating point comparisons may trap. */
|
||||
if (!flag_trapping_math)
|
||||
break;
|
||||
|
|
|
@ -2490,6 +2490,9 @@ operation_could_trap_helper_p (enum tree_code op,
|
|||
case GT_EXPR:
|
||||
case GE_EXPR:
|
||||
case LTGT_EXPR:
|
||||
/* MIN/MAX similar as LT/LE/GT/GE. */
|
||||
case MIN_EXPR:
|
||||
case MAX_EXPR:
|
||||
/* Some floating point comparisons may trap. */
|
||||
return honor_nans;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue