On 11/19/18 12:58 PM, Uros Bizjak wrote:
> Hello!
> 
> The assert in create_pre_exit at mode-switching.c expects return copy
> pair with nothing in between. However, the compiler starts mode
> switching pass with the following sequence:
> 
> (insn 19 18 16 2 (set (reg:V2SF 21 xmm0)
>         (mem/c:V2SF (plus:DI (reg/f:DI 7 sp)
>                 (const_int -72 [0xffffffffffffffb8])) [0  S8 A64]))
> "pr88070.c":8 1157 {*movv2sf_internal}
>      (nil))
> (insn 16 19 20 2 (set (reg:V2SF 0 ax [orig:91 <retval> ] [91])
>         (reg:V2SF 0 ax [89])) "pr88070.c":8 1157 {*movv2sf_internal}
>      (nil))
> (insn 20 16 21 2 (unspec_volatile [
>             (const_int 0 [0])
>         ] UNSPECV_BLOCKAGE) "pr88070.c":8 710 {blockage}
>      (nil))
> (insn 21 20 23 2 (use (reg:V2SF 21 xmm0)) "pr88070.c":8 -1
>      (nil))
So I know there's an updated patch.  But I thought it might be worth
mentioning that insn 16 here appears to be a nop-move.   Removing it
might address this instance of the problem, but I doubt it's general
enough to address any larger issues.

You still might want to investigate why it's still in the IL.

Jeff

Reply via email to