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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to