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.

Reply via email to