2005-04-02 David Edelsohn <edelsohn@gnu.org>
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 4 Apr 2005 22:50:53 +0000 (22:50 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 4 Apr 2005 22:50:53 +0000 (22:50 +0000)
            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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97582 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/rtlanal.c
gcc/tree-eh.c

index 2a114c5..36608c7 100644 (file)
@@ -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.
index 0686af8..da9774e 100644 (file)
@@ -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;
 
index ab945ff..3dbcfa8 100644 (file)
@@ -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;