[Bug target/103623] [12 Regression] error: unable to generate reloads (ICE in curr_insn_transform, at lra-constraints.c:4132), or error: insn does not satisfy its constraints (ICE in extract_constrain_insn_cached, at recog.c:2682)
linkw at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 18 08:38:48 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103623
--- Comment #25 from Kewen Lin <linkw at gcc dot gnu.org> ---
The key difference from the previous bif support is that: previously we checked
TARGET_HARD_FLOAT but now we didn't. I think we still need to check it, as the
document here
https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-ISA-2_002e05.html,
these bifs requires "-mhard-float" option. And all the alternatives of
unpack<mode>_nodm and pack<mode> with mode iterator FMOVE128 will use
constraint d which only takes effect with -mhard-float.
Just a record for the guards in the previous support:
/* 128-bit long double floating point builtins. */
#define BU_LDBL128_2(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_" NAME, /* NAME */ \
(RS6000_BTM_HARD_FLOAT /* MASK */ \
| RS6000_BTM_LDBL128), \
(RS6000_BTC_ ## ATTR /* ATTR */ \
| RS6000_BTC_BINARY), \
CODE_FOR_ ## ICODE) /* ICODE */
/* 128-bit __ibm128 floating point builtins (use -mfloat128 to indicate that
__ibm128 is available). */
#define BU_IBM128_2(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_" NAME, /* NAME */ \
(RS6000_BTM_HARD_FLOAT /* MASK */ \
| RS6000_BTM_FLOAT128), \
(RS6000_BTC_ ## ATTR /* ATTR */ \
| RS6000_BTC_BINARY), \
CODE_FOR_ ## ICODE) /* ICODE */
More information about the Gcc-bugs
mailing list