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

            Bug ID: 98179
           Summary: gcc.dg/pr97954.c fails on (at least) BE powerpc
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: segher at gcc dot gnu.org
  Target Milestone: ---

/home/segher/src/gcc/gcc/testsuite/gcc.dg/pr97954.c: In function 'foo':
/home/segher/src/gcc/gcc/testsuite/gcc.dg/pr97954.c:12:1: error: too many
outgoing branch edges from bb 4
during RTL pass: loop2_invariant
/home/segher/src/gcc/gcc/testsuite/gcc.dg/pr97954.c:12:1: internal compiler
error: verify_flow_info failed
0x10435cb3 verify_flow_info()
        /home/segher/src/gcc/gcc/cfghooks.c:269
0x10876cc7 checking_verify_flow_info
        /home/segher/src/gcc/gcc/cfghooks.h:212
0x10876cc7 move_loop_invariants()
        /home/segher/src/gcc/gcc/loop-invariant.c:2299
0x1087142f execute
        /home/segher/src/gcc/gcc/loop-init.c:530

This happens because this passed moved insn 8 from bb 4 to 2:

(jump_insn 8 2 22 2 (parallel [
            (set (reg:SI 118 [ x ])
                (asm_operands:SI ("") ("=r") 0 []
                     []
                     [
                        (label_ref:DI 22)
                    ] pr97954.c:10))
            (clobber (reg:SI 98 ca))
        ]) "pr97954.c":10:3 -1
     (expr_list:REG_UNUSED (reg:SI 98 ca)
        (nil))
 -> 22)

We shouldn't allow such a move at all (not of any jump_insn!)

Reply via email to