https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121604
Bug ID: 121604 Summary: [15/16 Regression] Wrong folding of svbrkb intrinsic since r15-5957-g5289540ed58e42 Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: acoplan at gcc dot gnu.org Target Milestone: --- The following testcase is miscompiled since r15-5957-g5289540ed58e42ae66255e31f22afe4ca0a6e15e: $ cat brkb.c #include <arm_sve.h> svbool_t foo() { return svbrkb_b_m(svpfalse(), svptrue_b8(), svptrue_b8()); } $ gcc/xgcc -B gcc -c brkb.c -O2 -march=armv8.2-a+sve -S -o - .arch armv8.2-a+crc+sve .file "brkb.c" .text .align 2 .p2align 5,,15 .global foo .variant_pcs foo .type foo, %function foo: .LFB2: .cfi_startproc ptrue p0.b, all ret .cfi_endproc .LFE2: .size foo, .-foo .ident "GCC: (GNU) 16.0.0 20250819 (experimental) [master 7eb8b65780d]" .section .note.GNU-stack,"",@progbits it should instead fold to pfalse, see the definition of the intrinsic here: https://developer.arm.com/architectures/instruction-sets/intrinsics/svbrkb[_b]_m For a runtime testcase, take the following: ``` #include <arm_sve.h> __attribute__((noipa)) svbool_t foo() { return svbrkb_b_m(svpfalse(), svptrue_b8(), svptrue_b8()); } int main(void) { /* brkb (ptrue) -> pfalse. */ if (svptest_any (svptrue_b8 (), foo ())) __builtin_abort (); } ``` It looks like BRKA is affected too, at first glance.