]> git.ipfire.org Git - thirdparty/gcc.git/commit
arm: don't allow movMcc when short-it but no vsel [PR124134] master trunk
authorRichard Earnshaw <rearnsha@arm.com>
Tue, 17 Feb 2026 16:19:32 +0000 (16:19 +0000)
committerRichard Earnshaw <rearnsha@arm.com>
Tue, 17 Feb 2026 17:59:53 +0000 (17:59 +0000)
commit06221fe413302f16bbbc22324f98173f45ea9088
tree7a79604d2bab9d99be3b873f1af8656441dbf41f
parenta0c32988904caf13a2ac439efd9061b50586e998
arm: don't allow movMcc when short-it but no vsel [PR124134]

Perverse combinations of options can lead to the compiler having to
work around unexpected situations.  Armv8 originally specified that
complex IT sequences were deprecated for performance (it was later
rescinded).  If the options restrict the floating-point unit to
one without vsel, then movMcc patterns need complex IT sequences
and we can end up with unmatched RTL patterns.  Avoid this by
failing early when the target patterns are disabled.

gcc/ChangeLog:

PR target/124134
* config/arm/arm.md (movsfcc): FAIL if using restricted IT
blocks and we lack VSEL.
(movdfcc): Likewise.

gcc/testsuite/ChangeLog:

PR target/124134
* gcc.target/arm/pr124134.c: New test.
gcc/config/arm/arm.md
gcc/testsuite/gcc.target/arm/pr124134.c [new file with mode: 0644]