added special case to fc_comp() to speed things up
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Tue, 28 Jun 2005 15:08:23 +0000 (15:08 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Tue, 28 Jun 2005 15:08:23 +0000 (15:08 +0000)
removed old assert() in tarval_cmp() float case

[r6126]

ir/tv/fltcalc.c
ir/tv/tv.c

index 0cddd6b..0dfe0d8 100644 (file)
@@ -1393,7 +1393,14 @@ int fc_comp(const void *a, const void *b)
   const char *val_a = (const char*)a;
   const char *val_b = (const char*)b;
 
-  /* unordered */
+  /*
+   * shortcut: if both values are identical, they are either
+   * Unordered if NaN or equal
+   */
+  if (a == b)
+    return _desc(val_a).class == NAN ? 2 : 0;
+
+  /* unordered if one is a NaN */
   if (_desc(val_a).class == NAN || _desc(val_b).class == NAN)
     return 2;
 
index 816b38d..dc793f6 100644 (file)
@@ -817,7 +817,7 @@ pn_Cmp tarval_cmp(tarval *a, tarval *b)
        */
       switch (fc_comp(a->value, b->value)) {
         case -1: return pn_Cmp_Lt;
-        case  0: assert(0 && "different tarvals compare equal"); return pn_Cmp_Eq;
+        case  0: return pn_Cmp_Eq;
         case  1: return pn_Cmp_Gt;
         case  2: return pn_Cmp_Uo;
         default: return pn_Cmp_False;