arm: Fix ICEs in no-literal-pool.c on MVE [PR97251]
authorAlex Coplan <alex.coplan@arm.com>
Wed, 30 Sep 2020 08:02:47 +0000 (09:02 +0100)
committerAlex Coplan <alex.coplan@arm.com>
Wed, 30 Sep 2020 08:02:47 +0000 (09:02 +0100)
commitf63023fafbbc13545fef67e6b32a55b48a945fcf
treed67c33c7e792a350dc2a042abba27a6aab21ff3e
parentde2c1d00f27bfaa1f917a2e3a933a45e3b8ba95a
arm: Fix ICEs in no-literal-pool.c on MVE [PR97251]

This patch fixes ICEs when compiling
gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool.c with
-mfp16-format=ieee -mfloat-abi=hard -march=armv8.1-m.main+mve
-mpure-code.

The existing conditions in the movsf/movdf expanders (as well as the
no_literal_pool patterns) were too restrictive, requiring
TARGET_HARD_FLOAT instead of TARGET_VFP_BASE, which caused unrecognised
insns when compiling this testcase with integer MVE and -mpure-code.

gcc/ChangeLog:

PR target/97251
* config/arm/arm.md (movsf): Relax TARGET_HARD_FLOAT to
TARGET_VFP_BASE.
(movdf): Likewise.
* config/arm/vfp.md (no_literal_pool_df_immediate): Likewise.
(no_literal_pool_sf_immediate): Likewise.
gcc/config/arm/arm.md
gcc/config/arm/vfp.md