re PR rtl-optimization/33410 (ICE in iv_analyze_expr, at loop-iv.c:934)
PR rtl-opt/33410 * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an EXPR_LIST for the REG_EQUAL instead of a comparison with a funny mode. From-SVN: r132171
This commit is contained in:
parent
c4ae80d945
commit
32891ff6a1
@ -1,3 +1,10 @@
|
||||
2008-07-07 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR rtl-opt/33410
|
||||
* config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
|
||||
EXPR_LIST for the REG_EQUAL instead of a comparison with a
|
||||
funny mode.
|
||||
|
||||
2008-02-07 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR tree-optimization/35085
|
||||
|
@ -3047,7 +3047,7 @@ static rtx
|
||||
alpha_emit_xfloating_compare (enum rtx_code *pcode, rtx op0, rtx op1)
|
||||
{
|
||||
enum rtx_code cmp_code, res_code;
|
||||
rtx func, out, operands[2];
|
||||
rtx func, out, operands[2], note;
|
||||
|
||||
/* X_floating library comparison functions return
|
||||
-1 unordered
|
||||
@ -3087,10 +3087,13 @@ alpha_emit_xfloating_compare (enum rtx_code *pcode, rtx op0, rtx op1)
|
||||
operands[1] = op1;
|
||||
out = gen_reg_rtx (DImode);
|
||||
|
||||
/* ??? Strange mode for equiv because what's actually returned
|
||||
is -1,0,1, not a proper boolean value. */
|
||||
alpha_emit_xfloating_libcall (func, out, operands, 2,
|
||||
gen_rtx_fmt_ee (cmp_code, CCmode, op0, op1));
|
||||
/* 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);
|
||||
alpha_emit_xfloating_libcall (func, out, operands, 2, note);
|
||||
|
||||
return out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user