[Bug target/89399] [7/8/9 Regression] ICE: RTL check: expected code 'set', 'clobber' or 'clobber_high', have 'parallel' in combine_reaching_defs, at ree.c:783

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Feb 19 15:01:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89399

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |law at gcc dot gnu.org
   Target Milestone|---                         |7.5

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems there is a great inconsistency in ree.c, some spots use single_set,
others use *get_sub_rtx, and others use PATTERN directly.
Here we have cand->insn
(insn 7 6 20 2 (parallel [
            (set (reg:SI 0 r0 [orig:111 _2 ] [111])
                (sign_extend:SI (reg:HI 0 r0 [116])))
            (clobber (scratch:SI))
        ]) "pr89399.c":7:5 828 {thumb1_extendhisi2}
     (nil))
and use
782       bool copy_needed
783         = (REGNO (SET_DEST (PATTERN (cand->insn)))
784            != REGNO (get_extended_src_reg (SET_SRC (PATTERN
(cand->insn)))));
find_removable_extensions which adds the candidates seems to be the most
permissive one though (uses single_set).  So, shall we use e.g. get_sub_rtx in
all cases?


More information about the Gcc-bugs mailing list