Commit d0ab13fd by J"orn Rennecke Committed by Joern Rennecke

* reload1.c (gen_reload): Also use find_replacement in UNARY_P case.

From-SVN: r110915
parent 3e8b0446
2006-02-13 J"orn Rennecke <joern.rennecke@st.com>
* reload1.c (gen_reload): Also use find_replacement in UNARY_P case.
2006-02-12 Zdenek Dvorak <dvorakz@suse.cz> 2006-02-12 Zdenek Dvorak <dvorakz@suse.cz>
PR rtl-optimization/26222 PR rtl-optimization/26222
......
...@@ -7721,6 +7721,10 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type) ...@@ -7721,6 +7721,10 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type)
rtx out_moded; rtx out_moded;
rtx set; rtx set;
op1 = find_replacement (&XEXP (in, 0));
if (op1 != XEXP (in, 0))
in = gen_rtx_fmt_e (GET_CODE (in), GET_MODE (in), op1);
/* First, try a plain SET. */ /* First, try a plain SET. */
set = emit_insn_if_valid_for_reload (gen_rtx_SET (VOIDmode, out, in)); set = emit_insn_if_valid_for_reload (gen_rtx_SET (VOIDmode, out, in));
if (set) if (set)
...@@ -7729,7 +7733,6 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type) ...@@ -7729,7 +7733,6 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type)
/* If that failed, move the inner operand to the reload /* If that failed, move the inner operand to the reload
register, and try the same unop with the inner expression register, and try the same unop with the inner expression
replaced with the reload register. */ replaced with the reload register. */
op1 = XEXP (in, 0);
if (GET_MODE (op1) != GET_MODE (out)) if (GET_MODE (op1) != GET_MODE (out))
out_moded = gen_rtx_REG (GET_MODE (op1), REGNO (out)); out_moded = gen_rtx_REG (GET_MODE (op1), REGNO (out));
......
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