Message ID | ZerNefr/rIyTMkAC@tucnak |
---|---|
State | New |
Headers | show |
Series | bb-reorder: Fix assertion | expand |
On Fri, 8 Mar 2024, Jakub Jelinek wrote: > Hi! > > When touching bb-reorder yesterday, I've noticed the checking assert > doesn't actually check what it meant to. > Because asm_noperands returns >= 0 for inline asm patterns (in that case > number of input+output+label operands, so asm goto has at least one) > and -1 if it isn't inline asm. > > The following patch fixes the assertion to actually check that it is > asm goto. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? OK. > 2024-03-08 Jakub Jelinek <jakub@redhat.com> > > * bb-reorder.cc (fix_up_fall_thru_edges): Fix up checking assert, > asm_noperands < 0 means it is not asm goto too. > > --- gcc/bb-reorder.cc.jj 2024-03-07 10:06:56.086285875 +0100 > +++ gcc/bb-reorder.cc 2024-03-07 10:11:44.745261926 +0100 > @@ -2024,7 +2024,8 @@ fix_up_fall_thru_edges (void) > See PR108596. */ > rtx_insn *j = BB_END (cur_bb); > gcc_checking_assert (JUMP_P (j) > - && asm_noperands (PATTERN (j))); > + && (asm_noperands (PATTERN (j)) > + > 0)); > edge e2 = find_edge (cur_bb, e->dest); > if (e2) > e2->flags |= EDGE_CROSSING; > > Jakub > >
--- gcc/bb-reorder.cc.jj 2024-03-07 10:06:56.086285875 +0100 +++ gcc/bb-reorder.cc 2024-03-07 10:11:44.745261926 +0100 @@ -2024,7 +2024,8 @@ fix_up_fall_thru_edges (void) See PR108596. */ rtx_insn *j = BB_END (cur_bb); gcc_checking_assert (JUMP_P (j) - && asm_noperands (PATTERN (j))); + && (asm_noperands (PATTERN (j)) + > 0)); edge e2 = find_edge (cur_bb, e->dest); if (e2) e2->flags |= EDGE_CROSSING;