On 03/01/2018 04:13 PM, Jakub Jelinek wrote:
> Hi!
> 
> prev_real_insn doesn't skip over DEBUG_INSNs, on aarch64 on this
> testcase we get both -fcompare-debug failure and wrong-code with -g.
> 
> Instead of adding yet another two:
>       do
>         insn = prev_real_insn (insn);
>       while (DEBUG_INSN_P (insn));
> loops, this patch introduces new functions that stop only at
> NONDEBUG_INSN_P.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, tested with
> cross to aarch64-linux on the testcase, ok for trunk?
> 
> 2018-03-02  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR target/84614
>       * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
>       prototypes.
>       * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
>       comments.
>       (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
>       * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
>       instead of a loop around prev_real_insn.
>       * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
>       prev_real_insn.
> 
>       * gcc.dg/pr84614.c: New test.
THanks.  We're going to need the {next,prev}_real_nondebug_insn routines
in reorg/resource as well.  MIPS can't currently build a linux kernel
because we fail all over the place with DEBUG_INSNs within reorg.

I've got a patch that's enough to get mips to bootstrap and build
kernels, but haven't posted it yet.

jeff

Reply via email to