diff options
author | Roger Sayle <roger@eyesopen.com> | 2006-04-16 23:33:51 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2006-04-16 23:33:51 +0000 |
commit | d763e13096d2a3f3da4889b97e07673978e16a2c (patch) | |
tree | e3ffdcf8b285a07768bf399be78316a46a82390c /gcc | |
parent | 2ff619482da2a22a0099aacfd9e3118e25256aac (diff) | |
download | gcc-d763e13096d2a3f3da4889b97e07673978e16a2c.zip gcc-d763e13096d2a3f3da4889b97e07673978e16a2c.tar.gz gcc-d763e13096d2a3f3da4889b97e07673978e16a2c.tar.bz2 |
re PR middle-end/25474 (Extra load for some FP code)
PR middle-end/25474
* expr.c (compress_float_constant): Copy the narrow constant into
a new pseudo before extending it to its final width.
From-SVN: r112991
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/expr.c | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9fbdca0..53e1029 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,10 @@ 2006-04-16 Roger Sayle <roger@eyesopen.com> + + PR middle-end/25474 + * expr.c (compress_float_constant): Copy the narrow constant into + a new pseudo before extending it to its final width. + +2006-04-16 Roger Sayle <roger@eyesopen.com> Andrew Pinski <pinskia@gcc.gnu.org> Dale Johannesen <dalej@apple.com> @@ -3346,7 +3346,11 @@ compress_float_constant (rtx x, rtx y) } else continue; - + + /* For CSE's benefit, force the compressed constant pool entry + into a new pseudo. This constant may be used in different modes, + and if not, combine will put things back together for us. */ + trunc_y = force_reg (srcmode, trunc_y); emit_unop_insn (ic, x, trunc_y, UNKNOWN); last_insn = get_last_insn (); |