[Bug c++/64110] [5 Regression] ICE: Max. number of generated reload insns per insn is achieved (90)
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Dec 1 12:37:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|jakub at redhat dot com |vmakarov at gcc dot gnu.org
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, before LRA we have:
(insn 27 36 28 2 (set (reg:SI 178 [ x ])
(reg:SI 5 di [ x ])) pr64110.C:7 90 {*movsi_internal}
(expr_list:REG_DEAD (reg:SI 5 di [ x ])
(nil)))
(insn 28 27 29 2 (set (reg/v:HI 177 [ x ])
(subreg:HI (reg:SI 178 [ x ]) 0)) pr64110.C:7 92 {*movhi_internal}
(expr_list:REG_DEAD (reg:SI 178 [ x ])
(nil)))
(note 29 28 89 2 NOTE_INSN_FUNCTION_BEG)
(insn 89 29 247 2 (set (reg:V16HI 214 [ vect_cst_.21 ])
(vec_duplicate:V16HI (reg/v:HI 177 [ x ]))) 4254 {*vec_dupv16hi}
(nil))
and *vec_dupv16hi is:
(define_insn "*vec_dup<mode>"
[(set (match_operand:AVX2_VEC_DUP_MODE 0 "register_operand" "=x,x,x")
(vec_duplicate:AVX2_VEC_DUP_MODE
(match_operand:<ssescalarmode> 1 "nonimmediate_operand" "m,x,!r")))]
"TARGET_AVX2"
Thus, I don't see a bug on the md side, I would have expected LRA to just
use (vec_duplicate:V16HI (reg/v:HI 5 di)) on the rhs (yes, it will be split
after reload).
But, during the ICE I see:
(insn 27 36 28 2 (set (reg:SI 178 [ x ])
(reg:SI 5 di [ x ])) pr64110.C:7 90 {*movsi_internal}
(expr_list:REG_DEAD (reg:SI 5 di [ x ])
(nil)))
(insn 28 27 29 2 (set (reg/v:HI 177 [ x ])
(subreg:HI (reg:SI 178 [ x ]) 0)) pr64110.C:7 92 {*movhi_internal}
(expr_list:REG_DEAD (reg:SI 178 [ x ])
(nil)))
(note 29 28 262 2 NOTE_INSN_FUNCTION_BEG)
(insn 262 29 263 2 (set (reg/v:HI 218 [orig:177 x ] [177])
(reg/v:HI 177 [ x ])) 92 {*movhi_internal}
(nil))
(insn 263 262 264 2 (set (reg/v:HI 219 [orig:177 x ] [177])
(reg/v:HI 218 [orig:177 x ] [177])) 92 {*movhi_internal}
(nil))
(insn 264 263 265 2 (set (reg/v:HI 220 [orig:177 x ] [177])
(reg/v:HI 219 [orig:177 x ] [177])) 92 {*movhi_internal}
(nil))
...
(repeated many times for pseudos 221, 222, ... 305)
(insn 350 349 351 2 (set (reg/v:HI 306 [orig:177 x ] [177])
(reg/v:HI 305 [orig:177 x ] [177])) 92 {*movhi_internal}
(nil))
(insn 351 350 89 2 (set (reg/v:HI 217 [orig:177 x ] [177])
(reg/v:HI 306 [orig:177 x ] [177])) 92 {*movhi_internal}
(nil))
(insn 89 351 261 2 (set (reg:V16HI 216 [orig:214 vect_cst_.21 ] [214])
(vec_duplicate:V16HI (reg/v:HI 217 [orig:177 x ] [177]))) 4254
{*vec_dupv16hi}
(nil))
Vlad, can you please have a look? Thanks.
More information about the Gcc-bugs
mailing list