diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a114c59d380a09202805b7c8ea0bd2271110f8e..36608c762564a8cf6d26f9e341624bd653152865 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-04-04 David Edelsohn <edelsohn@gnu.org> + Daniel Jacobowitz <dan@codesourcery.com> + + * tree-eh.c (tree_could_trap_p): Allow non-constant floating point + trapping divide. + * rtlanal.c (may_trap_p): Same. + 2005-04-04 Dale Johannesen <dalej@apple.com> * ChangeLog: remove reference to ChangeLog.12. diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 0686af8c65bc4fe52bf770c60b01860f25d089f7..da9774e488befcad3885d7c6e8d8c5c80e1c828e 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -2105,11 +2105,9 @@ may_trap_p (rtx x) case UMOD: if (HONOR_SNANS (GET_MODE (x))) return 1; - if (! CONSTANT_P (XEXP (x, 1)) - || (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT - && flag_trapping_math)) - return 1; - if (XEXP (x, 1) == const0_rtx) + if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT) + return flag_trapping_math; + if (!CONSTANT_P (XEXP (x, 1)) || (XEXP (x, 1) == const0_rtx)) return 1; break; diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index ab945ff97017de4c4e763babf3b69717d0fef6af..3dbcfa87ef9ab110fee9757dd79f98fa9dd6808e 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -1787,8 +1787,8 @@ tree_could_trap_p (tree expr) case RDIV_EXPR: if (honor_snans || honor_trapv) return true; - if (fp_operation && flag_trapping_math) - return true; + if (fp_operation) + return flag_trapping_math; t = TREE_OPERAND (expr, 1); if (!TREE_CONSTANT (t) || integer_zerop (t)) return true;