[Bug target/94088] [10 Regression] ICE: in extract_insn, at recog.c:2294 (error: unrecognizable insn), or ICE: in elimination_costs_in_insn, at reload1.c:3538
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 10 08:28:58 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94088
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
commit r10-7101-gcc5c935937d01d96c6b070dae31854180249064c
Author: Jakub Jelinek <jakub@redhat.com>
Date: Tue Mar 10 09:26:44 2020 +0100
i386: Fix up *testqi_ext_3 insn&split for the *testdi_1 changes [PR94088]
In r10-1938-g460bf043c8266dd080308f4783137aee0d0f862c *testdi_1 has been
changed, so that if the mask has upper 32-bits 0 and then at least one bit
set, it requires CCZmode rather than CCNOmode, because in that case it uses
testl instruction rather than testq and so the SF flag wouldn't respect the
state of the 64-bit result.
The *testqi_ext_3 define_insn_and_split needs to match that though,
otherwise it can create an RTL pattern that used to match *testdi_1 but
doesn't anymore and we'd ICE due to an unrecognizable insn.
2020-03-10 Jakub Jelinek <jakub@redhat.com>
PR target/94088
* config/i386/i386.md (*testqi_ext_3): Call ix86_match_ccmode with
CCZmode instead of CCNOmode if operands[2] has DImode and pos + len
is 32.
* gcc.target/i386/pr94088.c: New test.
More information about the Gcc-bugs
mailing list