This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/83393] [8 Regression] wrong code with -O2 -fno-forward-propagate -fno-tree-bit-ccp
- From: "segher at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 13 Dec 2017 14:06:28 +0000
- Subject: [Bug rtl-optimization/83393] [8 Regression] wrong code with -O2 -fno-forward-propagate -fno-tree-bit-ccp
- Auto-submitted: auto-generated
- References: <bug-83393-4@http.gcc.gnu.org/bugzilla/>
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