By default, clang defines some SIMD related macros:
~ $ 0 clang++ -dM -E -x c /dev/null | grep -i sse
#define __SSE2_MATH__ 1
#define __SSE2__ 1
#define __SSE_MATH__ 1
#define __SSE__ 1
These can be disabled by using -mno-sse. However, combining the -mno-sse flag with another architecture triple outputs a legitimate warning:
~ $ 1 clang++ -mno-sse --target=arm-none-eabi -dM -E -x c /dev/null
clang++: error: unsupported option '-mno-sse' for target 'arm-none-eabi'
Is it possible to disable all SIMD related defines, regardless of the target architecture?