https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117045
Bug ID: 117045 Summary: Incorrect fold of SVE's svwhilele Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: rsandifo at gcc dot gnu.org Target Milestone: --- Target: aarch64*-*-* #include <arm_sve.h> #include <limits.h> svbool_t f() { return svwhilele_b8_s32(INT_MAX, INT_MAX); } is folded to: ptrue p0.b, vl1 ret But this is incorrect. Each increment of the first WHILELE operand is done in 32 bits (in this example) rather than to infinite precision. The increment therefore wraps and the result should be an all-true predicate instead.