aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorIlya Leoshkevich <iii@linux.ibm.com>2018-12-03 09:49:02 +0000
committerIlya Leoshkevich <iii@gcc.gnu.org>2018-12-03 09:49:02 +0000
commit98fe146e5be55232c20ef242ee7c7e2123373df4 (patch)
tree2a93928458a1a7d8f995e86940931e86e729de63 /gcc/final.c
parente45130c59e988c6825b14b9f10f41fb2e256c2e5 (diff)
downloadgcc-98fe146e5be55232c20ef242ee7c7e2123373df4.zip
gcc-98fe146e5be55232c20ef242ee7c7e2123373df4.tar.gz
gcc-98fe146e5be55232c20ef242ee7c7e2123373df4.tar.bz2
Repeat jump threading after combine
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-12-03 Ilya Leoshkevich <iii@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. gcc/testsuite/ChangeLog: 2018-12-03 Ilya Leoshkevich <iii@linux.ibm.com> PR target/80080 * gcc.target/s390/pr80080-4.c: New test. From-SVN: r266734
Diffstat (limited to 'gcc/final.c')
0 files changed, 0 insertions, 0 deletions