From: Michael Beck Date: Tue, 28 Jun 2005 15:08:23 +0000 (+0000) Subject: added special case to fc_comp() to speed things up X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=eeadb64fa0621f2aa8c2b59db53f280ce67da7c7;p=libfirm added special case to fc_comp() to speed things up removed old assert() in tarval_cmp() float case [r6126] --- diff --git a/ir/tv/fltcalc.c b/ir/tv/fltcalc.c index 0cddd6b0d..0dfe0d8d8 100644 --- a/ir/tv/fltcalc.c +++ b/ir/tv/fltcalc.c @@ -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; diff --git a/ir/tv/tv.c b/ir/tv/tv.c index 816b38dcb..dc793f63b 100644 --- a/ir/tv/tv.c +++ b/ir/tv/tv.c @@ -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;