This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] combine: More distribute_notes trouble (PR69737)
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Segher Boessenkool <segher at kernel dot crashing dot org>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 11 Feb 2016 12:54:52 -0800
- Subject: Re: [PATCH] combine: More distribute_notes trouble (PR69737)
- Authentication-results: sourceware.org; auth=none
- References: <7c9ac3d29a29c4b1bc78294afb955f30fd36ad77 dot 1455137361 dot git dot segher at kernel dot crashing dot org>
On Thu, Feb 11, 2016 at 9:04 AM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> PR64682 is a problem in distribute_notes, where it has trouble putting
> a REG_DEAD note for a reg that is set twice in the right spot. My fix
> for that did the wrong thing for PR69567. And then my attempted fix
> for that one made PR64682 fail again.
>
> Instead, let's just lose the note in such complicated cases, like we
> already do in certain similar cases.
>
> Tested on powerpc64-linux and x86_64-linux. Also built Linux kernels
> for some 30 supported targets; no difference in generated code was
> observed.
>
> Committing to trunk.
>
> HJ, I tested this on GCC 5 for x86_64-linux, the failure is gone;
> could you test it on your setup before I apply it there though?
>
>
> Segher
>
>
> 2016-02-11 Segher Boessenkool <segher@kernel.crashing.org>
>
> PR rtl-optimization/64682
> PR rtl-optimization/69567
> PR rtl-optimization/69737
> * combine.c (distribute_notes) <REG_DEAD>: If the register is set
> in I2 as well, just lose it.
>
>
Yes, it fixed the regressions on ia32 and x96-64:
New passes:
FAIL: gcc.c-torture/execute/pr64682.c -O2 execution test
FAIL: gcc.c-torture/execute/pr64682.c -O2 execution test
FAIL: gcc.c-torture/execute/pr64682.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none execution test
FAIL: gcc.c-torture/execute/pr64682.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none execution test
FAIL: gcc.c-torture/execute/pr64682.c -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects execution test
FAIL: gcc.c-torture/execute/pr64682.c -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -fomit-frame-pointer execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -fomit-frame-pointer execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -fomit-frame-pointer
-funroll-loops execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -fomit-frame-pointer
-funroll-loops execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -g execution test
FAIL: gcc.c-torture/execute/pr64682.c -O3 -g execution test
Thanks.
--
H.J.