PR69195, Reload confused by invalid reg_equiv
commitba52669fc5861ec7ae9d38ea007340fc6cef83ea
authorAlan Modra <amodra@gmail.com>
Thu, 10 Mar 2016 10:47:13 +0000 (10 21:17 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 10 Mar 2016 10:47:13 +0000 (10 21:17 +1030)
tree0fb488f6de57ef8b4dcf655f1d976f3492816539
parent27742332348988c735f3a9eb9fa24bce57bec7a6
PR69195, Reload confused by invalid reg_equiv

Optimizing indirect jumps to direct jumps, and deleting dead insns can
lead to changes in register lifetimes, which in turn can result in bad
reg_equiv info being passed to reload.  So do these tasks before
calculating reg_equiv info.

gcc/
PR rtl-optimization/69195
PR rtl-optimization/47992
* ira.c (recorded_label_ref): Delete.
(update_equiv_regs): Return void.
(indirect_jump_optimize): New function.
(ira): Call indirect_jump_optimize and delete_trivially_dead_insns
before regstat_compute_ri.  Don't rebuild_jump_labels here.
Delete update_regstat.
gcc/testsuite/
* gcc.dg/pr69195.c: New.
* gcc.dg/pr69238.c: New.

From-SVN: r234101
gcc/ChangeLog
gcc/ira.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr69195.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr69238.c [new file with mode: 0644]