https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82002
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Daniel Santos from comment #2) > Another problem when we throw in an ms to sysv call: > /home/daniel/proj/sys/gcc/git/gcc/testsuite/gcc.target/i386/pr82002-2a.c: In > function 'b': > /home/daniel/proj/sys/gcc/git/gcc/testsuite/gcc.target/i386/pr82002-2a.c:12: > 1: error: unrecognizable insn: > (insn/f 36 35 37 2 (set (mem/c:V4SF (plus:DI (reg/f:DI 7 sp) > (const_int 10000000016 [0x2540be410])) [2 S16 A128]) > (reg:V4SF 27 xmm6)) > "/home/daniel/proj/sys/gcc/git/gcc/testsuite/gcc.target/i386/pr82002-2a.c":7 > -1 > (expr_list:REG_DEAD (reg:V4SF 27 xmm6) > (expr_list:REG_CFA_EXPRESSION (set (mem/c:V4SF (plus:DI (reg/f:DI 7 > sp) > (const_int 10000000016 [0x2540be410])) [2 S16 A128]) > (reg:V4SF 27 xmm6)) > (nil)))) > during RTL pass: cprop_hardreg > /home/daniel/proj/sys/gcc/git/gcc/testsuite/gcc.target/i386/pr82002-2a.c:12: > 1: internal compiler error: in extract_insn, at recog.c:2306 > 0x5c1958 _fatal_insn(char const*, rtx_def const*, char const*, int, char > const*) > /home/daniel/proj/sys/gcc/git/gcc/rtl-error.c:108 > 0x5c1974 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) > /home/daniel/proj/sys/gcc/git/gcc/rtl-error.c:116 > 0xba05a9 extract_insn(rtx_insn*) > /home/daniel/proj/sys/gcc/git/gcc/recog.c:2306 > 0xba15e8 extract_constrain_insn(rtx_insn*) > /home/daniel/proj/sys/gcc/git/gcc/recog.c:2206 > 0xbaaaf6 copyprop_hardreg_forward_1 > /home/daniel/proj/sys/gcc/git/gcc/regcprop.c:801 > 0xbab8a4 execute > /home/daniel/proj/sys/gcc/git/gcc/regcprop.c:1308 > > > I guess we don't have a 64-bit offset instruction for (v)movabs :) Of course there is none. Which is why e.g. pro_epilogue_adjust_stack has code to handle the case when Pmode is not SImode and offset is not x86_64_immediate_operand. So whatever generated this insn also needs to test for sp + offset not being a valid address and load the offset into some hard register first and use sp + that_reg. pro_and_epilogue pass is after reload, so we can't wait for RA to handle it for us.