From: Mark Mitchell Date: Sun, 16 Mar 2003 20:13:36 +0000 (+0000) Subject: re PR rtl-optimization/9016 (Failure to consistently constant fold "constant" C+... X-Git-Tag: releases/gcc-3.4.0~7880 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ddc67067146f2783f386e61f880d6fe87fb324a3;p=thirdparty%2Fgcc.git re PR rtl-optimization/9016 (Failure to consistently constant fold "constant" C++ objects) PR optimization/9016 * config/i386/i386.c (ix86_expand_move): Force more CONST_DOUBLEs into the constant pool. From-SVN: r64445 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d7d2eb465618..9fee3589340c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-03-14 Mark Mitchell + + PR optimization/9016 + * config/i386/i386.c (ix86_expand_move): Force more CONST_DOUBLEs + into the constant pool. + 2003-03-16 Falk Hueffner PR target/9164 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index ae2f118215ec..2dddfb7f8773 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -8373,9 +8373,17 @@ ix86_expand_move (mode, operands) if (strict) ; - else if (GET_CODE (op1) == CONST_DOUBLE - && register_operand (op0, mode)) - op1 = validize_mem (force_const_mem (mode, op1)); + else if (GET_CODE (op1) == CONST_DOUBLE) + { + op1 = validize_mem (force_const_mem (mode, op1)); + if (!register_operand (op0, mode)) + { + rtx temp = gen_reg_rtx (mode); + emit_insn (gen_rtx_SET (VOIDmode, temp, op1)); + emit_move_insn (op0, temp); + return; + } + } } }