#include <x86intrin.h>

int test1(__m128i v) {

   return _mm_cvtsi128_si32(v);
}

compiled with

g++ -std=gnu++0x -O2 -m32 -march=native -msse -msse2 -msse3 -Wall
-Werror -Wno-unused -Wno-strict-aliasing -march=native
-fomit-frame-pointer -Wno-pmf-conversions -g main.cpp

emits:

004012e0 <__Z5test1U8__vectorx>:
 4012e0:       83 ec 0c                sub    $0xc,%esp
 4012e3:       66 0f 7e c0             movd   %xmm0,%eax
 4012e7:       83 c4 0c                add    $0xc,%esp
 4012ea:       c3                      ret

which shows that the stack pointer is being updated
without any purpose.


-- 
           Summary: Superfluous stack management code is generated
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: piotr dot wyderski at gmail dot com
  GCC host triplet: GCC-trunk(20100107)/Cygwin/WinXP32


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

Reply via email to