Commit 726e2d54 by John Wehle Committed by Jeff Law

reload.c (find_reloads): Record the existing mode if operand_mode == VOIDmode before replacing a...

        * reload.c (find_reloads): Record the existing mode if
        operand_mode == VOIDmode before replacing a register with
        a constant.
        * i386.md (tstsi, tsthi, tstqi, tstsf, tstdf, tstxf): Set
        i386_compare_op1 to const0_rtx for the benefit of the
        conditional move patterns.
        (movsicc, movhicc, movsfcc, movdfcc, movxfcc, movdicc): Rewrite
        based on suggestions from Jim Wilson.

From-SVN: r20151
parent 7e5df004
Sun May 31 16:11:41 1998 John Wehle (john@feith.com)
* reload.c (find_reloads): Record the existing mode if
operand_mode == VOIDmode before replacing a register with
a constant.
* i386.md (tstsi, tsthi, tstqi, tstsf, tstdf, tstxf): Set
i386_compare_op1 to const0_rtx for the benefit of the
conditional move patterns.
(movsicc, movhicc, movsfcc, movdfcc, movxfcc, movdicc): Rewrite
based on suggestions from Jim Wilson.
Sun May 31 00:44:02 PDT 1998 Jeff Law (law@cygnus.com) Sun May 31 00:44:02 PDT 1998 Jeff Law (law@cygnus.com)
* version.c: Bump for snapshot. * version.c: Bump for snapshot.
......
...@@ -2641,8 +2641,16 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) ...@@ -2641,8 +2641,16 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
register int regno = REGNO (recog_operand[i]); register int regno = REGNO (recog_operand[i]);
if (reg_equiv_constant[regno] != 0 if (reg_equiv_constant[regno] != 0
&& (set == 0 || &SET_DEST (set) != recog_operand_loc[i])) && (set == 0 || &SET_DEST (set) != recog_operand_loc[i]))
substed_operand[i] = recog_operand[i] {
= reg_equiv_constant[regno]; /* Record the existing mode so that the check if constants are
allowed will work when operand_mode isn't specified. */
if (operand_mode[i] == VOIDmode)
operand_mode[i] = GET_MODE (recog_operand[i]);
substed_operand[i] = recog_operand[i]
= reg_equiv_constant[regno];
}
#if 0 /* This might screw code in reload1.c to delete prior output-reload #if 0 /* This might screw code in reload1.c to delete prior output-reload
that feeds this insn. */ that feeds this insn. */
if (reg_equiv_mem[regno] != 0) if (reg_equiv_mem[regno] != 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment