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