[Bug target/123217] [13 Regression] ICE: in extract_insn, at recog.cc:2888 (unrecognizable insn) with -mkl and __builtin_ia32_encodekey128_u32()
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Mar 22 05:16:39 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123217
--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:
https://gcc.gnu.org/g:1e544e0075ad84301f69e792af2926647b930342
commit r13-10183-g1e544e0075ad84301f69e792af2926647b930342
Author: Jakub Jelinek <jakub@redhat.com>
Date: Sat Dec 20 11:58:25 2025 +0100
i386: Fix up expansion of 2 keylocker and one user_msr builtin [PR123217]
target can be especially at -O0 a MEM, not just a REG, and most of the
ix86_expand_builtin spots which use target and can't support MEM
destinations deal with it properly, except these 3 spots don't.
Fixed thusly, when we change target to a new pseudo, the caller will
take care of storing that pseudo into the MEM, and this is the
solution other spots with similar requirements use in the function.
2025-12-20 Jakub Jelinek <jakub@redhat.com>
PR target/123217
* config/i386/i386-expand.cc (ix86_expand_builtin)
<case IX86_BUILTIN_ENCODEKEY128U32,
case IX86_BUILTIN_ENCODEKEY256U32>: Set target to a new pseudo even
if it is non-NULL but doesn't satisfy register_operand predicate.
* gcc.target/i386/keylocker-pr123217.c: New test.
(cherry picked from commit 34285402005b19f7ac2d069e4f5e161e86318b3b)
More information about the Gcc-bugs
mailing list