From 3220d3c5425cfd41eec74046cbc72e780df35fa3 Mon Sep 17 00:00:00 2001 From: sayle Date: Sun, 16 Apr 2006 23:33:51 +0000 Subject: [PATCH] PR middle-end/25474 * expr.c (compress_float_constant): Copy the narrow constant into a new pseudo before extending it to its final width. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112991 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/expr.c | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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 + + 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 Andrew Pinski Dale Johannesen diff --git a/gcc/expr.c b/gcc/expr.c index 8d2839f..b0e958c 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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 (); -- 2.7.4