Am 21.07.2011 11:21, schrieb Florian Philipp: > Am 21.07.2011 10:57, schrieb Pandu Poluan: >> -original message- >> Subject: Re: [gentoo-user] New computer and Gentoo >> From: Bill Kenworthy <bi...@iinet.net.au> >> Date: 2011-07-21 12:54 >> >>> On Thu, 2011-07-21 at 06:26 +0100, Mick wrote: > [...] >>> Ive just stumbled on something weird with march=native: >>> >>> At some point I had march=prescott on a core2 E4600 running 32bit - >>> worked well. Changed to march=native and did some upgrades with a few >>> odd things like asterisk segfaulting in a glibc library afterwards, and >>> some things not building. Then to add confusion, I changed to an >>> pentium Duo E6600 (flies!) and added another stick of ram. More odd >>> things happening such as reiserfs oopsing on shutdown. >>> >>> Last night the penny dropped and I looked the new processor up and >>> changed to march=core2 and have mostly corrected (recompiled) the >>> damage. >>> >>> So not sure about march=native now as it is only what was built with >>> native thats been problematic. With 20-20 hindsight it was perhaps >>> predictable ... >> >> IMO you're not supposed to compile part of the system with -march=<something> >> and the rest with -march=native. The instructions (and optimizations) >> emitted by -march=native might not be compatible with your previous >> -march. > > I'd like to see a reference for this claim. -march=native doesn't do > more than set -march=core2 and some other optimizations for cache size > etc. This should be no more troublesome than mixing code compiled with > different specific -march settings. When you look at binary > distributions (and especially precompiled packages from the developer > instead of the distribution), this is pretty much normal. > > The compiler is not allowed to change the external interfaces of > functions for optimization purposes (see [1]). Besides this, I can only > think of alignment problems ([2]) but even this should be handled > correctly by the compiler. Everything else is a compiler bug that should > be reported. > > [1] http://en.wikipedia.org/wiki/Calling_convention > [2] http://en.wikipedia.org/wiki/Data_alignment > > Regards, > Florian Philipp >
I've just checked it by comparing the output of `gcc -v -Q -O2 -march=native test.c` with `gcc -v -Q -O2 -march=core2 test.c`: -march=native is resolved to: -march=core2 -mcx16 -msahf -mpopcnt -msse4.2 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=256 -mtune=core2 I also see that the -march=core2 version has the following options enabled: -mno-sse4 whereas -march=native enabled: -mpopcnt -msse4 -msse4.1 -msse4.2 -mssse3 and lower SSE versions were enabled in both cases. Regards, Florian Philipp
signature.asc
Description: OpenPGP digital signature