force_nonfallthru_and_redirect buglet

Richard Henderson rth@redhat.com
Wed Sep 19 12:26:00 GMT 2001


On Wed, Sep 19, 2001 at 07:37:34PM +0200, Jan Hubicka wrote:
> When exactly the FALLTHRU edge is created to the EXIT block at IA-64
> compilation?  I believe that at machines with HAVE_epilogue, all edges
> to EXIT block nonfallthru, as EXIT instruction should be in the way.

It happens here

600                       if (note
601                           && INTVAL (XEXP (note, 0)) < REG_BR_PROB_BASE / 2
602                           && invert_jump (bb_end_insn,
603                                           label_for_bb (e_fall->dest), 0))
604                         {
605                           e_fall->flags &= ~EDGE_FALLTHRU;
606                           e_taken->flags |= EDGE_FALLTHRU;
607                           e = e_fall, e_fall = e_taken, e_taken = e;
608                         }

when we reverse the condition for

(jump_insn 126 131 179 (set (pc)
        (if_then_else (eq (reg:BI 262 p6 [368])
                (const_int 0 [0x0]))
            (return)
            (pc))) 220 {*return_true}
    (expr_list:REG_DEAD (reg:BI 262 p6 [368])
        (expr_list:REG_BR_PROB (const_int 4500 [0x1194])
            (nil))))

which seems a perfectly reasonable thing to do.


r~



More information about the Gcc-patches mailing list