On 11/28/18 11:57 PM, Ilya Leoshkevich wrote:
> Repost of v4: https://gcc.gnu.org/ml/gcc-patches/2018-11/msg02067.html
>
> Bootstrapped and regtested on x86_64-redhat-linux, s390x-redhat-linux
> and ppc64le-redhat-linux.
>
> Consider the following RTL:
>
> (insn (set (reg 65) (if_then_else (eq %cc 0) 1 0)))
> (insn (parallel [(set %cc (compare (reg 65) 0)) (clobber %scratch)]))
> (jump_insn (set %pc (if_then_else (ne %cc 0) (label_ref 23) %pc)))
>
> Combine simplifies this into:
>
> (note NOTE_INSN_DELETED)
> (note NOTE_INSN_DELETED)
> (jump_insn (set %pc (if_then_else (eq %cc 0) (label_ref 23) %pc)))
>
> opening up the possibility to perform jump threading.
>
> gcc/ChangeLog:
>
> 2018-09-19 Ilya Leoshkevich <i...@linux.ibm.com>
>
> PR target/80080
> * cfgcleanup.c (class pass_postreload_jump): New pass.
> (pass_postreload_jump::execute): Likewise.
> (make_pass_postreload_jump): Likewise.
> * passes.def: Add pass_postreload_jump before
> pass_postreload_cse.
> * tree-pass.h (make_pass_postreload_jump): New pass.
OK
jeff