From f90130752f21c4cfc1720bc875b8a23ea95afec6 Mon Sep 17 00:00:00 2001
From: David Edelsohn <edelsohn@gnu.org>
Date: Mon, 4 Apr 2005 22:50:53 +0000
Subject: [PATCH] tree-eh.c (tree_could_trap_p): Allow non-constant floating
 point trapping divide.

2005-04-02  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.

Co-Authored-By: Daniel Jacobowitz <dan@codesourcery.com>

From-SVN: r97582
---
 gcc/ChangeLog | 7 +++++++
 gcc/rtlanal.c | 8 +++-----
 gcc/tree-eh.c | 4 ++--
 3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2a114c59d380..36608c762564 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 0686af8c65bc..da9774e488be 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 ab945ff97017..3dbcfa87ef9a 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;
-- 
GitLab