From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31250 invoked by alias); 5 May 2002 04:36:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 31229 invoked by uid 71); 5 May 2002 04:36:01 -0000 Resent-Date: 5 May 2002 04:36:01 -0000 Resent-Message-ID: <20020505043601.31228.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, Sylvain.Pion@sophia.inria.fr Resent-Reply-To: gcc-gnats@gcc.gnu.org, Sylvain.Pion@sophia.inria.fr Received:(qmail 30066 invoked by uid 61); 5 May 2002 04:27:19 -0000 Message-Id:<20020505042719.30065.qmail@sources.redhat.com> Date: Sat, 04 May 2002 21:36:00 -0000 From: Sylvain.Pion@sophia.inria.fr Reply-To: Sylvain.Pion@sophia.inria.fr To: gcc-gnats@gcc.gnu.org Cc: Sylvain.Pion@sophia.inria.fr X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) X-GNATS-Notify:Sylvain.Pion@sophia.inria.fr Subject: optimization/6562: useless subl/addl $12, %esp in small functions involving sse2 X-SW-Source: 2002-05/txt/msg00123.txt.bz2 List-Id: >Number: 6562 >Category: optimization >Synopsis: useless subl/addl $12, %esp in small functions involving sse2 >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: pessimizes-code >Submitter-Id: net >Arrival-Date: Sat May 04 21:36:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Sylvain Pion >Release: 3.1 and 3.2 20020502 >Organization: >Environment: Configured with: /u/zosma/0/prisme/spion/gcc/gcc_trunc/configure --disable-shared --disable-nls --enable-languages=c++ --prefix=/u/zosma/0/prisme/spion/gcc/Linux_trunc --with-gnu-as --with-gnu-ld --with-as=/u/zosma/0/prisme/spion/gcc/Binutils/Linux/bin/as --with-ld=/u/zosma/0/prisme/spion/gcc/Binutils/Linux/bin/ld Thread model: single gcc version 3.2 20020502 (experimental) >Description: Compiling small functions sometimes adds unnecessary "subl $12, %esp" and "addl $12, %esp". For example, the attached function involving SSE2, which produces the x86 assembly : add: subl $12, %esp movsd 24(%esp), %xmm0 addsd 16(%esp), %xmm0 movsd %xmm0, (%esp) fldl (%esp) addl $12, %esp ret A similar problem appears with C++ try blocks (see PR 3962), so it's not SSE related. >How-To-Repeat: Compile the following function with : gcc -S -O2 -fomit-frame-pointer -mfpmath=sse -march=pentium4 foo.c double add(double a, double b) { return a+b; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: