diff options
author | J"orn Rennecke <joern.rennecke@st.com> | 2006-02-13 15:31:31 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2006-02-13 15:31:31 +0000 |
commit | d0ab13fd8ba1689642124031223816930321ccdd (patch) | |
tree | e670aabc1910ed8b9cc58c136bcbc1ffc497e927 /gcc | |
parent | 3e8b04461f0106f74256a92df8aae1fd88e086c6 (diff) | |
download | gcc-d0ab13fd8ba1689642124031223816930321ccdd.zip gcc-d0ab13fd8ba1689642124031223816930321ccdd.tar.gz gcc-d0ab13fd8ba1689642124031223816930321ccdd.tar.bz2 |
* reload1.c (gen_reload): Also use find_replacement in UNARY_P case.
From-SVN: r110915
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/reload1.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c8144ac..9bac8d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +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> PR rtl-optimization/26222 diff --git a/gcc/reload1.c b/gcc/reload1.c index 87cc425..7bfd2a1 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -7721,6 +7721,10 @@ gen_reload (rtx out, rtx in, int opnum, enum reload_type type) rtx out_moded; 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. */ set = emit_insn_if_valid_for_reload (gen_rtx_SET (VOIDmode, out, in)); if (set) @@ -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 register, and try the same unop with the inner expression replaced with the reload register. */ - op1 = XEXP (in, 0); if (GET_MODE (op1) != GET_MODE (out)) out_moded = gen_rtx_REG (GET_MODE (op1), REGNO (out)); |