Skip to content
Snippets Groups Projects
  • Jin Ma's avatar
    b79cd204
    RISC-V: THEAD: Fix ICE caused by split optimizations for XTheadFMemIdx. · b79cd204
    Jin Ma authored
    Due to the premature split optimizations for XTheadFMemIdx, GPR
    is allocated when reload allocates registers, resulting in the
    following insn.
    
    (insn 66 21 64 5 (set (reg:DF 14 a4 [orig:136 <retval> ] [136])
            (mem:DF (plus:SI (reg/f:SI 15 a5 [141])
                    (ashift:SI (reg/v:SI 10 a0 [orig:137 i ] [137])
                        (const_int 3 [0x3]))) [0  S8 A64])) 218 {*movdf_hardfloat_rv32}
         (nil))
    
    Since we currently do not support adjustments to th_m_mir/th_m_miu,
    which will trigger ICE. So it is recommended to place the split
    optimizations after reload to ensure FPR when registers are allocated.
    
    gcc/ChangeLog:
    
    	* config/riscv/thead.md: Add limits for splits.
    
    gcc/testsuite/ChangeLog:
    
    	* gcc.target/riscv/xtheadfmemidx-medany.c: New test.
    b79cd204
    History
    RISC-V: THEAD: Fix ICE caused by split optimizations for XTheadFMemIdx.
    Jin Ma authored
    Due to the premature split optimizations for XTheadFMemIdx, GPR
    is allocated when reload allocates registers, resulting in the
    following insn.
    
    (insn 66 21 64 5 (set (reg:DF 14 a4 [orig:136 <retval> ] [136])
            (mem:DF (plus:SI (reg/f:SI 15 a5 [141])
                    (ashift:SI (reg/v:SI 10 a0 [orig:137 i ] [137])
                        (const_int 3 [0x3]))) [0  S8 A64])) 218 {*movdf_hardfloat_rv32}
         (nil))
    
    Since we currently do not support adjustments to th_m_mir/th_m_miu,
    which will trigger ICE. So it is recommended to place the split
    optimizations after reload to ensure FPR when registers are allocated.
    
    gcc/ChangeLog:
    
    	* config/riscv/thead.md: Add limits for splits.
    
    gcc/testsuite/ChangeLog:
    
    	* gcc.target/riscv/xtheadfmemidx-medany.c: New test.