]> git.ipfire.org Git - thirdparty/gcc.git/commit
PR69195, Reload confused by invalid reg_equiv
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Mar 2016 10:47:13 +0000 (10:47 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Mar 2016 10:47:13 +0000 (10:47 +0000)
commit6972afacbdb3984ba2016c431f43a4d43d2bf30d
tree0fb488f6de57ef8b4dcf655f1d976f3492816539
parentc82c99ec270d81819eb9c62fbee049c2a7e3611d
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234101 138bc75d-0d04-0410-961f-82ee72b054a4
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]