Author: zhuqing
Date: 2011-10-12 01:33:39 -0400 (Wed, 12 Oct 2011)
New Revision: 3759

Modified:
   trunk/osprey/be/opt/opt_vn_expr.cxx
   trunk/osprey/common/com/MIPS/targ_const.cxx
   trunk/osprey/common/com/NVISA/targ_const.cxx
   trunk/osprey/common/com/SL/targ_const.cxx
   trunk/osprey/common/com/ia64/targ_const.cxx
   trunk/osprey/common/com/loongson/targ_const.cxx
   trunk/osprey/common/com/ppc32/targ_const.cxx
   trunk/osprey/common/com/targ_const.h
   trunk/osprey/common/com/x8664/targ_const.cxx
Log:
Fix bug880.
Fix open64 build failure caused by r3753.

Code Review: Gilmore, Doug


Modified: trunk/osprey/be/opt/opt_vn_expr.cxx
===================================================================
--- trunk/osprey/be/opt/opt_vn_expr.cxx 2011-10-12 03:27:39 UTC (rev 3758)
+++ trunk/osprey/be/opt/opt_vn_expr.cxx 2011-10-12 05:33:39 UTC (rev 3759)
@@ -645,15 +645,10 @@
         // fix bug 2691: when both are floating-point zero, use integer
         // comparison so +0 and -0 will be regarded as different for value
         // numbering purpose
-        else if (this_mty == MTYPE_F8 && 
-                 TCON_R8(other_tcon) == 0 && TCON_R8(_tcon) == 0)
-           truth = TCON_v1(other_tcon) == TCON_v1(_tcon);
-        else if (this_mty == MTYPE_F4 && 
-                 TCON_R4(other_tcon) == 0 && TCON_R4(_tcon) == 0)
-           truth = TCON_word0(other_tcon) == TCON_word0(_tcon);
-        else if (this_mty == MTYPE_F10 && 
-                 TCON_R10(other_tcon) == 0 && TCON_R10(_tcon) == 0)
-           truth = TCON_v2(other_tcon) == TCON_v2(_tcon);
+        else if (Targ_Is_Zero(other_tcon))
+            truth = Targ_Is_Zero(_tcon);
+        else if (Targ_Is_Neg_Zero(other_tcon))
+            truth = Targ_Is_Neg_Zero(_tcon);
 #endif
          else {
            BOOL folded;

Modified: trunk/osprey/common/com/MIPS/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/MIPS/targ_const.cxx 2011-10-12 03:27:39 UTC (rev 
3758)
+++ trunk/osprey/common/com/MIPS/targ_const.cxx 2011-10-12 05:33:39 UTC (rev 
3759)
@@ -4636,6 +4636,23 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *

Modified: trunk/osprey/common/com/NVISA/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/NVISA/targ_const.cxx        2011-10-12 03:27:39 UTC 
(rev 3758)
+++ trunk/osprey/common/com/NVISA/targ_const.cxx        2011-10-12 05:33:39 UTC 
(rev 3759)
@@ -4902,6 +4902,23 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *

Modified: trunk/osprey/common/com/SL/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/SL/targ_const.cxx   2011-10-12 03:27:39 UTC (rev 
3758)
+++ trunk/osprey/common/com/SL/targ_const.cxx   2011-10-12 05:33:39 UTC (rev 
3759)
@@ -4640,6 +4640,23 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *

Modified: trunk/osprey/common/com/ia64/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/ia64/targ_const.cxx 2011-10-12 03:27:39 UTC (rev 
3758)
+++ trunk/osprey/common/com/ia64/targ_const.cxx 2011-10-12 05:33:39 UTC (rev 
3759)
@@ -5152,6 +5152,26 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    case MTYPE_F10:
+      return (TCON_R16(t) == 0.0 &&
+        (TCON_v0(t)|TCON_v1(t)|TCON_v2(t)|TCON_v3(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *

Modified: trunk/osprey/common/com/loongson/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/loongson/targ_const.cxx     2011-10-12 03:27:39 UTC 
(rev 3758)
+++ trunk/osprey/common/com/loongson/targ_const.cxx     2011-10-12 05:33:39 UTC 
(rev 3759)
@@ -4861,6 +4861,23 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *

Modified: trunk/osprey/common/com/ppc32/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/ppc32/targ_const.cxx        2011-10-12 03:27:39 UTC 
(rev 3758)
+++ trunk/osprey/common/com/ppc32/targ_const.cxx        2011-10-12 05:33:39 UTC 
(rev 3759)
@@ -5104,6 +5104,26 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    case MTYPE_F10:
+      return (TCON_R16(t) == 0.0 &&
+        (TCON_v0(t)|TCON_v1(t)|TCON_v2(t)|TCON_v3(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *

Modified: trunk/osprey/common/com/targ_const.h
===================================================================
--- trunk/osprey/common/com/targ_const.h        2011-10-12 03:27:39 UTC (rev 
3758)
+++ trunk/osprey/common/com/targ_const.h        2011-10-12 05:33:39 UTC (rev 
3759)
@@ -482,6 +482,7 @@
 
 /* Is the given constant a zero? */
 extern BOOL Targ_Is_Zero ( TCON t );
+extern BOOL Targ_Is_Neg_Zero ( TCON t );
 
 /* Determine whether a TCON represents an integral value, and if so
  * return its value in *iv:

Modified: trunk/osprey/common/com/x8664/targ_const.cxx
===================================================================
--- trunk/osprey/common/com/x8664/targ_const.cxx        2011-10-12 03:27:39 UTC 
(rev 3758)
+++ trunk/osprey/common/com/x8664/targ_const.cxx        2011-10-12 05:33:39 UTC 
(rev 3759)
@@ -5730,6 +5730,26 @@
   }
   return FALSE;
 } /* Targ_Is_Zero */
+
+/*----------------------------------------------------------------------------
+ * return TRUE if the target representation of this TCON is negative zero
+ *--------------------------------------------------------------------------*/
+BOOL Targ_Is_Neg_Zero ( TCON t )
+{
+  switch (TCON_ty(t)) {
+    case MTYPE_F4:
+      return (TCON_R4(t) == 0.0 && TCON_v0(t) != 0);
+    case MTYPE_F8:
+      return (TCON_R8(t) == 0.0
+        && (TCON_v0(t)|TCON_v1(t)) != 0);
+    case MTYPE_F10:
+      return (TCON_R10(t) == 0.0 &&
+        (TCON_v0(t)|TCON_v1(t)|TCON_v2(t)|TCON_v3(t)) != 0);
+    default:
+      return FALSE;
+  }
+}
+
 
 /* ====================================================================
  *


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to