On Mon, Sep 27, 2021 at 07:25:58PM +0100, Jonathan Wakely wrote: > On Mon, 27 Sept 2021 at 19:16, L A Walsh <gcc@xxxxxxxxx> wrote: > > On 2021/09/27 10:13, Segher Boessenkool wrote: > > > On Mon, Sep 27, 2021 at 02:55:28PM +0200, Vincent Lefevre wrote: > > >> On 2021-09-17 12:53:25 -0500, Segher Boessenkool wrote: > > >> > > >>> For x86 -march=something is the same as -march=native, _if_ the compiler > > >>> knows about your CPU. > > >>> > > ---- > > I have a question, as someone reading this conversation .... > > > > If one is using cross-compilation -- as it sounded like the original > > author might be doing, what could the compiler know about the target > > machine? > > Only what you tell it. > > > Is there some sort of "profile-this-cpu-for-pertinent-options" binary > > or compiler-option that one should(or could) run on the target > > machine in order that the correct compiler switches be set? > > > > Otherwise, it would seem that -march=native would only be useful for > > the (probably majority of) cases where one is compiling for their own > > machine (?). > > Yes, -march=native is for native compilation, not cross compilation. > The clue is in the name :-) And in fact you get something like $ x86_64-linux-gcc-12.0.0 -Wall -W -O2 -S at.c -march=native cc1: error: bad value ('native') for '-march=' switch cc1: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client rocketlake icelake-server cascadelake tigerlake cooperlake sapphirerapids alderlake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 x86-64-v2 x86-64-v3 x86-64-v4 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 znver3 btver1 btver2 when you try. Not the friendliest error message perhaps, but it is a pretty silly thing to try as well :-) (This has been the same since at least 5.4.1 (but the note is newer)). Segher