http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57379
Uroš Bizjak changed:
What|Removed |Added
Component|rtl-optimization|target
--- Comment #1 from Uroš Bizjak ---
Target issue, a very strange equal note is attached to the result of TFmode
xfloating compare.
I am testing following patch:
--cut here--
Index: alpha.c
===
--- alpha.c (revision 199214)
+++ alpha.c (working copy)
@@ -3067,12 +3067,8 @@ alpha_emit_xfloating_compare (enum rtx_code *pcode
operands[1] = op1;
out = gen_reg_rtx (DImode);
- /* What's actually returned is -1,0,1, not a proper boolean value,
- so use an EXPR_LIST as with a generic libcall instead of a
- comparison type expression. */
- note = gen_rtx_EXPR_LIST (VOIDmode, op1, NULL_RTX);
- note = gen_rtx_EXPR_LIST (VOIDmode, op0, note);
- note = gen_rtx_EXPR_LIST (VOIDmode, func, note);
+ /* What's actually returned is -1,0,1, not a proper boolean value. */
+ note = gen_rtx_UNSPEC (DImode, gen_rtvec (2, op0, op1), UNSPEC_COMPARE);
alpha_emit_xfloating_libcall (func, out, operands, 2, note);
return out;
Index: alpha.md
===
--- alpha.md(revision 199214)
+++ alpha.md(working copy)
@@ -23,6 +23,7 @@
;; Uses of UNSPEC in this file:
(define_c_enum "unspec" [
+ UNSPEC_COMPARE
UNSPEC_ARG_HOME
UNSPEC_LDGP1
UNSPEC_INSXH
--cut here--