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--