This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/69195] [4.9/5/6 Regression] gcc.dg/torture/pr44913.c FAILs with -O3 -fno-dce -fno-forward-propagate


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69195

--- Comment #19 from Alan Modra <amodra at gcc dot gnu.org> ---
Author: amodra
Date: Thu Mar 10 10:47:13 2016
New Revision: 234101

URL: https://gcc.gnu.org/viewcvs?rev=234101&root=gcc&view=rev
Log:
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.

Added:
    trunk/gcc/testsuite/gcc.dg/pr69195.c
    trunk/gcc/testsuite/gcc.dg/pr69238.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ira.c
    trunk/gcc/testsuite/ChangeLog

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]