[Bug target/23338] New: -march=i686 -O2 generates smaller code that -march=i686 -Os

dann at godzilla dot ics dot uci dot edu gcc-bugzilla@gcc.gnu.org
Thu Aug 11 18:47:00 GMT 2005


Compiling:
typedef struct {
  int foo [1000];
  int savelines;
} TScreen;

void foo (TScreen *s)
{
  s->savelines = 0;
}
with -march=i686 -O2 and  -march=i686 -Os the .text size is 16 and 18 bytes,
respectively.

the assembly sdiff looks like:

        xorl    %edx, %edx                                    <
        movl    %esp, %ebp                                              movl   
%esp, %ebp
        movl    8(%ebp), %eax                                           movl   
8(%ebp), %eax
        movl    %edx, 4000(%eax)                              |         movl   
$0, 4000(%eax)


The patch below fixes it.


*** i386.md	08 Aug 2005 16:38:37 -0700	1.652
--- i386.md	11 Aug 2005 11:27:11 -0700	
***************
*** 18874,18881 ****
    [(match_scratch:SI 1 "r")
     (set (match_operand:SI 0 "memory_operand" "")
          (const_int 0))]
!   "! optimize_size
!    && ! TARGET_USE_MOV0
     && TARGET_SPLIT_LONG_MOVES
     && get_attr_length (insn) >= ix86_cost->large_insn
     && peep2_regno_dead_p (0, FLAGS_REG)"
--- 18874,18880 ----
    [(match_scratch:SI 1 "r")
     (set (match_operand:SI 0 "memory_operand" "")
          (const_int 0))]
!   "! TARGET_USE_MOV0
     && TARGET_SPLIT_LONG_MOVES
     && get_attr_length (insn) >= ix86_cost->large_insn
     && peep2_regno_dead_p (0, FLAGS_REG)"

-- 
           Summary: -march=i686 -O2 generates smaller code that -march=i686
                    -Os
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dann at godzilla dot ics dot uci dot edu
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23338



More information about the Gcc-bugs mailing list