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/83393] [8 Regression] wrong code with -O2 -fno-forward-propagate -fno-tree-bit-ccp


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

--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Author: segher
Date: Wed Dec 13 14:05:57 2017
New Revision: 255606

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

In move_deaths we move a REG_DEAD note if the instruction combination
has extended the lifetime of a register so that the existing note is
no longer valid.  We find that note using reg_stat, but what that finds
can refer to a later insn.  If so, we cannot use the cached value.  This
patch implements that.


        PR rtl-optimization/83393
        * combine.c (move_deaths): If reg_stat points to a too new insn in
        last_death, do not use it: find the proper insn instead.

gcc/testsuite/
        PR rtl-optimization/83393
        * gcc.dg/pr83393.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/pr83393.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/combine.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]