https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126602
--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Tamar Christina <[email protected]>: https://gcc.gnu.org/g:fdfe1570235b1bddc4572255ff161b5dc25cc460 commit r17-2945-gfdfe1570235b1bddc4572255ff161b5dc25cc460 Author: Tamar Christina <[email protected]> Date: Tue Aug 4 15:23:23 2026 +0100 middle-end: fix condition on multiple negate pattern [PR126602] The optimization added in r17-527-gca2920882be has a bogus constraint which allows floating point FMAs through and folds them into integer ones. i.e. we produce Matching expression match.pd:159, gimple-match-10.cc:33 Matching expression match.pd:159, gimple-match-10.cc:33 Applying pattern match.pd:10328, gimple-match-5.cc:8685 gimple_simplified to _15 = (vector(8) unsigned int) a_6; _16 = (vector(8) unsigned int) _13; _17 = (vector(8) unsigned int) _1; _18 = .FNMA (_15, _16, _17); _3 = (svfloat32_t __attribute__((arm_sve_vector_bits(256)))) _18; Generated FMA _3 = (svfloat32_t __attribute__((arm_sve_vector_bits(256)))) _18; Which ICEs because the SVE attributes don't match. This fixes the guard where I think the intention was for this to only apply to Integral types. gcc/ChangeLog: PR tree-optimization/126602 * match.pd: Fix constraints. gcc/testsuite/ChangeLog: PR tree-optimization/126602 * gcc.target/aarch64/sve/pr126602.c: New test.
