From ddc67067146f2783f386e61f880d6fe87fb324a3 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Sun, 16 Mar 2003 20:13:36 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/i386.c | 14 +++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) 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; + } + } } } -- 2.47.3