diff options
author | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-06-01 19:47:19 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-06-01 19:47:19 +0000 |
commit | 4d41c2d1ce6f01c53eb8941461b3047e8a6368f6 (patch) | |
tree | 9a0f3ba878d421d60706ace98a062816b5c78465 /gcc/reload.c | |
parent | 7448d2e73ea9513f001327757541328bb8137b38 (diff) | |
download | gcc-4d41c2d1ce6f01c53eb8941461b3047e8a6368f6.zip gcc-4d41c2d1ce6f01c53eb8941461b3047e8a6368f6.tar.gz gcc-4d41c2d1ce6f01c53eb8941461b3047e8a6368f6.tar.bz2 |
re PR rtl-optimization/48830 (unrecognized insn: storing invalid upper FP reg in SImode)
gcc/
PR rtl-optimization/48830
PR rtl-optimization/48808
PR rtl-optimization/48792
* reload.c (push_reload): Check contains_reg_of_mode.
* reload1.c (strip_paradoxical_subreg): New function.
(gen_reload_chain_without_interm_reg_p): Use it to handle
paradoxical subregs.
(emit_output_reload_insns, gen_reload): Likewise.
gcc/testsuite/
2011-06-01 Eric Botcazou <ebotcazou@adacore.com>
Hans-Peter Nilsson <hp@axis.com>
PR rtl-optimization/48830
* gcc.target/sparc/ultrasp12.c: New test.
From-SVN: r174540
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 045e559..27d5787 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1019,6 +1019,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, #ifdef CANNOT_CHANGE_MODE_CLASS && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (in)), inmode, rclass) #endif + && contains_reg_of_mode[(int) rclass][(int) GET_MODE (SUBREG_REG (in))] && (CONSTANT_P (SUBREG_REG (in)) || GET_CODE (SUBREG_REG (in)) == PLUS || strict_low @@ -1125,6 +1126,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, #ifdef CANNOT_CHANGE_MODE_CLASS && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (out)), outmode, rclass) #endif + && contains_reg_of_mode[(int) rclass][(int) GET_MODE (SUBREG_REG (out))] && (CONSTANT_P (SUBREG_REG (out)) || strict_low || (((REG_P (SUBREG_REG (out)) |