[PATCH] REG_EQUAL notes on floatlib comparison libcalls
Roger Sayle
roger@eyesopen.com
Mon Oct 6 04:18:00 GMT 2003
Damn! I posted an earlier version of the patch :<
The logic describing the UNORDERED comparison operator should have
read:
> + if (comparison == UNORDERED)
> + {
> + rtx temp = simplify_gen_relational (NE, word_mode,
> + mode, x, x);
> + equiv = simplify_gen_relational (NE, word_mode,
> + mode, y, y);
^^^^
> + equiv = simplify_gen_ternary (IF_THEN_ELSE, word_mode,
> + word_mode, temp,
> + const_true_rtx, equiv);
> + }
I.e. we annotate the REG_EQUAL note with the RTL equivalent of
"(x != x) ? 1 : (y != y)", which is also "(x != x) || (y != y)".
The typo in my earlier attempt, tested x for NaN twice ignoring
the value of y. My apologies for any inconvenience.
Roger
--
More information about the Gcc-patches
mailing list