RFA: Make compare_and_jump_seq check that it has a jump insn

Nick Clifton nickc@redhat.com
Thu Jun 24 11:04:00 GMT 2010


Hi Jeff,

> OK.

Thanks.

> Presumably it was a port error that was causing do_compare_rtx_and_jump
> to return a CODE_LABEL --

Right.

> it certainly seems quite odd to get that as
> the final insn from a compare & jump sequence.

The backend was converting:

    (set (cc) (compare) (foo) (bar))
    (set (pc) (if_then_else) (compare (cc) (const_int 0))
                             (label)
                             (pc))

into:

    (set (cc) (reversed compare) (foo) (bar))
    (set (pc) (if_then_else (compare (cc) (const_int 0))
                            (over-label)
                            (pc))
    (set (pc) (label))
    (over-label)

Hence there was a label as the last instruction.  After tracking this 
down I realised that it was silly to have the backend try to build to 
build constructions like this when gcc can do a much better job 
itself... :-)

Cheers
   Nick



More information about the Gcc-patches mailing list