This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR69634] fix debug_insn-inconsistent REG_N_CALLS_CROSSED
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Alexandre Oliva <aoliva at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sat, 6 Feb 2016 11:30:28 +0100
- Subject: Re: [PR69634] fix debug_insn-inconsistent REG_N_CALLS_CROSSED
- Authentication-results: sourceware.org; auth=none
- References: <ory4ayi25h dot fsf at livre dot home>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sat, Feb 06, 2016 at 08:06:18AM -0200, Alexandre Oliva wrote:
> The testcase has a debug insn referencing a pseudo right before an
> insn that modifies the pseudo.
>
> Without debug insns, REG_N_CALLS_CROSSED was zero for that pseudo, so
> sched_analyze_reg added a dep between the pseudo setter and an earlier
> (lib)call.
>
> With debug insns, we miscomputed REG_N_CALLS_CROSSED as nonzero
> because of the debug insn, and then no dep was added between the two
> insns. This was enough to change sched1's decisions about where to
> place the pseudo setter.
>
> REG_N_CALLS_CROSSED is computed by both regstat_bb_compute_ri and
> regstat_bb_compute_calls_crossed, but although the former skipped
> debug insns, the latter didn't.
>
> Fixing this inconsistency was enough to fix the -fcompare-debug error.
>
> Regstrapped on x86_64-linux-gnu and i686-linux-gnu. Ok to install?
Ok, with nit; thanks.
> for gcc/ChangeLog
>
> PR target/69634
> * regstat.c (regstat_bb_compute_calls_crossed): Disregard
> debug insns.
>
> for gcc/testsuite/ChangeLog
>
> PR target/69634
> * gcc.dg/pr69634.c: New.
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/pr69634.c
> @@ -0,0 +1,22 @@
> +/* { dg-do compile } */
> +/* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-vrp -fcompare-debug" } */
> +/* { dg-additional-options "-Wno-psabi -mno-sse" { target i?86-*-* x86_64-*-* } } */
> +/* { dg-additional-options "-m32" { target x86_64-*-* } } */
Please remove the above line, -m32 should come solely from the user, and enough
people either build i686-linux compilers or test with
RUNTESTFLAGS='--target_board=unix\{-m64,-m32\}' that a regression in here
would be noticed soon.
Jakub