http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54857
Bug #: 54857 Summary: Superfluous NOPs on Atom Classification: Unclassified Product: gcc Version: 4.7.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other AssignedTo: unassig...@gcc.gnu.org ReportedBy: piotr.wyder...@gmail.com GCC [4.7.1 on Linux and 4.6.1 on Cygwin] generates a LOT of unnecessary NOPs when the target is Atom. The following testcase shows the odd behaviour: int func(float f) { return (int)f; }; The output is: gcc -S -O2 -march=atom -mtune=atom test.cpp .LFB0: .cfi_startproc cvttss2si %xmm0, %eax nop nop nop nop nop nop ret .cfi_endproc When the target is e.g. Core2: gcc -S -O2 -march=core2 -mtune=core2 test.cpp it is simply: .LFB0: .cfi_startproc cvttss2si %xmm0, %eax ret .cfi_endproc gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/mnt/local/a3d.gcc-4.7.1/libexec/gcc/x86_64-unknown-linux-gnu/4.7.1/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-4.7.1/configure --prefix=/mnt/local/a3d.gcc-4.7.1 --with-gmp=/mnt/local/a3d.gcc-4.7.1/gcc-prerequisites --with-mpfr=/mnt/local/a3d.gcc-4.7.1/gcc-prerequisites --with-mpc=/mnt/local/a3d.gcc-4.7.1/gcc-prerequisites --with-ppl=/mnt/local/a3d.gcc-4.7.1/gcc-prerequisites --with-cloog=/mnt/local/a3d.gcc-4.7.1/gcc-prerequisites --with-local-prefix=/mnt/local/a3d.gcc-4.7.1 --enable-languages=c,c++ --disable-multilib Thread model: posix gcc version 4.7.1 (GCC)