https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110442
--- Comment #2 from Sam James <sjames at gcc dot gnu.org> --- We should disable all instrumentation, at least if it needs a runtime. With -fsanitize=undefined: ``` void * resolve (void) { int a = 1 << 32; __builtin_cpu_init (); if (__builtin_cpu_supports ("f16c")) return f1; else return f2; } ``` ``` $ ./a a.c:18:13: runtime error: shift exponent 32 is too large for 32-bit type 'int' Segmentation fault (core dumped) ./a ``` It is OK with -fsanitize=undefined -fsanitize-trap=undefined as no runtime is needed.