March 18th Florida Man

The generated flags.make in the cmake build directory DOES add my -march=armv8-a+sve switch to the C_FLAGS variable. I believe that cmake is compiling my file correctly, but I was misled by the incorrectly generated compile_commands.json which is done by CMAKE_EXPORT_COMPILE_COMMANDS.

march 18th florida man 1

-march: generate instructions for a specific machine type. Defaults to x86-64-v3 on AMD64 and armv8-a on AArch64. Use -march=compatibility for best compatibility, or -march=native for best performance if a native executable is deployed on the same machine or on a machine with the same CPU features. To list all available machine types, use ...

march 18th florida man 2
For -O0, whether -march=native or -march= is the default still specifies the same family, so both are perfectly compatibly with -O0; and whenever another optimization level is specified, -march=native is beneficial to performance. So, for me, the fact that -O0 is the default doesn't matter for -march 's default.

Using Clang 16.0 or later, I would like to know what values could be used for the -march argument. The command clang --print-supported-cpus shows for -mcpu=, but I see no alternative for -march.

march 18th florida man 4