On Mon, 2003-07-21 at 14:40, Martin Stricker wrote: > -march optimizes for the specified processor while staying compatible > with lower architectures. -mcpu optimizes for the specified processor. > Both lower and higher processors might not be able to execute it. Actually, it's the other way 'round. It's more evidently so if you remember that high -march declarations imply the corresponding -mcpu. (i.e. "-march=athlon-xp" implies "-mcpu=athlon-xp") "-march=i686" generates code with i686 instructions. Obviously, this will not run on older processors. It will run with no problems though on newer processors (including Pentium4 and AthlonXP). "-mcpu=i686" generates code that has the instructions placed in such an order as to be executed very fast on i686. But the instructions themselves are i386-compatible (so the code still runs on older processors, albeit less efficiently). In fact, the code will remain compatible with any Intel-like CPU. "-march=i686 -mcpu=i686" is redundant, the first one implies the second. -- Florin Andrei "Never send a human to do a machine's job." - Agent Smith -- Shrike-list mailing list Shrike-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/shrike-list