https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117116
--- Comment #19 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-12 branch has been updated by Uros Bizjak <u...@gcc.gnu.org>: https://gcc.gnu.org/g:a8bd38de88715fdbf0d064ff0d50e2b8734de939 commit r12-10774-ga8bd38de88715fdbf0d064ff0d50e2b8734de939 Author: Uros Bizjak <ubiz...@gmail.com> Date: Tue Oct 15 16:51:33 2024 +0200 i386: Fix expand_vector_set for VEC_MERGE/VEC_DUPLICATE RTX [PR117116] Middle end can generate SYMBOL_REF RTX as a value "val" in the call to expand_vector_set, but SYMBOL_REF RTX is not accepted in <sse2p4_1>_pinsr<ssemodesuffix> insn pattern, generated via VEC_MERGE/VEC_DUPLICATE RTX path. Force the value into a register before VEC_MERGE/VEC_DUPLICATE RTX is generated if it doesn't satisfy nonimmediate_operand predicate. PR target/117116 gcc/ChangeLog: * config/i386/i386-expand.cc (expand_vector_set): Force "val" into a register before VEC_MERGE/VEC_DUPLICATE RTX is generated if it doesn't satisfy nonimmediate_operand predicate. gcc/testsuite/ChangeLog: * gcc.target/i386/pr117116.c: New test. (cherry picked from commit 80d7032067a3a5b76aecd657d9b35b0a8f5a941d)