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/83304] [8 Regression] FAIL: gcc.c-torture/execute/pr61725.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions


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

--- Comment #11 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Author: segher
Date: Fri Dec  8 11:26:35 2017
New Revision: 255506

URL: https://gcc.gnu.org/viewcvs?rev=255506&root=gcc&view=rev
Log:
combine: Fix PR83304

In PR83304 two insns are combined, where the I2 uses a register that
has a REG_DEAD note on an insn after I2 but before I3.  In such a case
move_deaths should move that death note.  But move_deaths only looks
at the reg_stat[regno].last_death insn, and that field can be zeroed
out (previously, use_crosses_set_p would prevent the combination in
this case).

If the last_death field is zero it means "unknown", not "no death", so
we have to find if there is a REG_DEAD note.


        PR rtl-optimization/83304
        * combine.c (move_deaths): If we do not know where a register died,
        search for it.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/combine.c

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