diff options
author | Alan Modra <amodra@gmail.com> | 2016-03-10 21:17:13 +1030 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2016-03-10 21:17:13 +1030 |
commit | ba52669fc5861ec7ae9d38ea007340fc6cef83ea (patch) | |
tree | 0fb488f6de57ef8b4dcf655f1d976f3492816539 /gcc/tree.c | |
parent | 27742332348988c735f3a9eb9fa24bce57bec7a6 (diff) | |
download | gcc-ba52669fc5861ec7ae9d38ea007340fc6cef83ea.zip gcc-ba52669fc5861ec7ae9d38ea007340fc6cef83ea.tar.gz gcc-ba52669fc5861ec7ae9d38ea007340fc6cef83ea.tar.bz2 |
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
Diffstat (limited to 'gcc/tree.c')
0 files changed, 0 insertions, 0 deletions