http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57379

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |target

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
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--

Reply via email to