Performance regression
David Edelsohn
dje@watson.ibm.com
Thu Sep 26 08:04:00 GMT 2002
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
More information about the Gcc-patches
mailing list