https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118068
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |mpolacek at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r14-4140-g6851e3423c2b5ec6516efa0677745d25c905e079 The -O0 macro uses (int)(M) for years, but since that change we no longer fold it to INTEGER_CST. Reduced testcase: typedef float V __attribute__((vector_size (32))); consteval unsigned char foo (int x) { return x; } V bar (V x, V y) { return __builtin_ia32_blendps256 (x, y, (int) foo (0x23)); } If the consteval function returns int rather than unsigned char, then it still works.