gcc -march=native produces code that is optimized for the CPU that is used to compile the program.
Code proceduced with -march=native is not backwards compatible, for example, an executable procuded on an Intel Core CPU won't be able to run on an (old) Intel Atom CPU.)
Other possible values for the x86 family are:
x86-64
i386
i486
i586 or pentium
lakemont
pentium-mmx
pentiumpro
i686
pentium2
pentium3 or pentium-m
pentium4 or pentium4m
…
prog.c
#include <stdio.h>
int main() {
int fac_10 =1*2*3*4*5*6*7*8*9*10;
printf("10! = %d\n", fac_10);
return 0;
}