https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109954
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- If -march= isn't specified, then the default configured value (explicitly or implicitly) is used for it. That is the case on lots of architectures, not just for -m32. We say in the documentation: @item --with-cpu=@var{cpu} @itemx --with-cpu-32=@var{cpu} @itemx --with-cpu-64=@var{cpu} Specify which cpu variant the compiler should generate code for by default. @var{cpu} will be used as the default value of the @option{-mcpu=} switch. This option is only supported on some targets, including ARC, ARM, i386, M68k, PowerPC, and SPARC@. It is mandatory for ARC@. The @option{--with-cpu-32} and @option{--with-cpu-64} options specify separate default CPUs for 32-bit and 64-bit modes; these options are only supported for aarch64, i386, x86-64, PowerPC, and SPARC@. @item --with-schedule=@var{cpu} @itemx --with-arch=@var{cpu} @itemx --with-arch-32=@var{cpu} @itemx --with-arch-64=@var{cpu} @itemx --with-tune=@var{cpu} @itemx --with-tune-32=@var{cpu} @itemx --with-tune-64=@var{cpu} @itemx --with-abi=@var{abi} @itemx --with-fpu=@var{type} @itemx --with-float=@var{type} These configure options provide default values for the @option{-mschedule=}, @option{-march=}, @option{-mtune=}, @option{-mabi=}, and @option{-mfpu=} options and for @option{-mhard-float} or @option{-msoft-float}. As with @option{--with-cpu}, which switches will be accepted and acceptable values of the arguments depend on the target. So, if you configure gcc --with-arch-32=i386 vs. --with-arch-32=x86-64, it will behave differently. And if you don't use any of those --with-arch*= configure options, a default is picked.