This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Performance regression
- From: David Edelsohn <dje at watson dot ibm dot com>
- To: Dale Johannesen <dalej at apple dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 26 Sep 2002 11:03:56 -0400
- Subject: Re: Performance regression
- References: <B59E274E-D0B1-11D6-BBE6-003065C86F94@apple.com>
I tried bootstrapping with the appended patch combining your and
my proposals. Regression testing shows two new failures relative to an
otherwise identical bootstrap without the patch:
FAIL: gcc.c-torture/execute/20010224-1.c execution, -O3 -fomit-frame-pointer -funroll-loops
FAIL: gcc.c-torture/execute/20010224-1.c execution, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions
We need to fix this problem before the patch can be committed.
David
Index: rs6000.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.385
diff -c -p -r1.385 rs6000.c
*** rs6000.c 20 Sep 2002 23:46:59 -0000 1.385
--- rs6000.c 26 Sep 2002 15:02:16 -0000
*************** rs6000_emit_move (dest, source, mode)
*** 2579,2586 ****
return;
}
! if (! no_new_pseudos && GET_CODE (operands[0]) != REG)
! operands[1] = force_reg (mode, operands[1]);
if (mode == SFmode && ! TARGET_POWERPC
&& TARGET_HARD_FLOAT && TARGET_FPRS
--- 2564,2585 ----
return;
}
! if (!no_new_pseudos)
! {
! if (GET_CODE (operands[1]) == MEM && optimize > 0
! && (mode == QImode || mode == HImode || mode == SImode)
! && GET_MODE_SIZE (mode) < GET_MODE_SIZE (word_mode))
! {
! rtx reg = gen_reg_rtx (word_mode);
!
! emit_insn (gen_rtx_SET (word_mode, reg,
! gen_rtx_ZERO_EXTEND (word_mode,
! operands[1])));
! operands[1] = gen_lowpart (mode, reg);
! }
! if (GET_CODE (operands[0]) != REG)
! operands[1] = force_reg (mode, operands[1]);
! }
if (mode == SFmode && ! TARGET_POWERPC
&& TARGET_HARD_FLOAT && TARGET_FPRS