On 02/09/2015 13:25, Jonathan Wakely wrote: > This is no different to just using -mtune several times: > > -mtune=pentiumpro -mtune=pentium3 -mtune=pentiumpro > > The last such option will be used. > > Specifying march=arch implies -mtune=arch, but a later -mtune will > override it, just like it will override any explicit uses of -mtune > that came earlier. Thanks for the clarification, Jonathan. I noticed something strange in gcc -v output: $ gcc -v -c foo.c ... gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) COLLECT_GCC_OPTIONS='-v' '-c' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1 -quiet -v -imultiarch x86_64-linux-gnu foo.c -quiet -dumpbase foo.c -mtune=generic -march=x86-64 -auxbase foo -version -fstack-protector -Wformat -Wformat-security -o /tmp/ccFwNaX5.s -mtune=generic -march=x86-64 Won't the -march option override the -mtune option? Another thing. I was under the impression that when the target platform is x86_64 (so not the same x86-64 as above) then some options are enabled by default, such as -msse and -msse2. Is that correct? Or is just the use of SSE for FP? i.e. -mfpmath=sse "For the i386 compiler, you must use -march=cpu-type, -msse or -msse2 switches to enable SSE extensions and make this option effective. For the x86-64 compiler, these extensions are enabled by default." gcc -v does not print what instruction-set extensions it will be using? Is there a way to know that gcc used e.g. SSE3 instructions in the code generation? Regards.