On Thu, Dec 14, 2017 at 04:08:45PM -0200, Alexandre Oliva wrote:
> On Dec 13, 2017, Alexandre Oliva <aol...@redhat.com> wrote:
> 
> > On Dec 12, 2017, David Edelsohn <dje....@gmail.com> wrote:
> >> Rainer,
> >> PR83396 opened.  you can add Solaris to the list of targets.
> 
> > Andreas,
> 
> > Here's a fix for the ia64 regression you mentioned in that PR.
> 
> And here's a patch that fixes the two other ia64 build failures you'd
> mentioned.
> 
> Regstrapped on x86_64- and i686-linux-gnu by myself; bootstrapped on
> ia64-linux-gnu by yourself IIUC, though with some weird bootstrap
> compare errors I'm very curious to learn more about.
> 
> Ok to install?
> 
> Emitting markers before labels turned out to not be worth the trouble.
> The markers outside BBs confuse the ebb scheduler, and they don't add
> any useful information.  I'll arrange for markers to be moved past
> labels, even in gimple, but for now this will fix the two remaining
> known problems on ia64.
> 
> for  gcc/ChangeLog
> 
>       PR bootstrap/83396
>       * cfgexpand.c (expand_gimple_basic_block): Expand label first,
>       even if there are markers before it.
>       * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.

Ok, but please work on reversion of everything that has been changed
in order to support those (on RTL e.g. the var-tracking.c
      for (insn = get_first_insn (bb);
           insn != BB_HEAD (bb->next_bb)
             ? next = NEXT_INSN (insn), true : false;
           insn = next)
and
          rtx_insn *next;
          bool outside_bb = true;
          for (insn = get_first_insn (bb); insn != BB_HEAD (bb->next_bb);
               insn = next)
            {
              if (insn == BB_HEAD (bb))
                outside_bb = false;
              else if (insn == NEXT_INSN (BB_END (bb)))
                outside_bb = true;
...
                  if (outside_bb)
                    {
                      /* Ignore non-debug insns outside of basic blocks.  */
                      if (!DEBUG_INSN_P (insn))
                        continue;
                      /* Debug binds shouldn't appear outside of bbs.  */
                      gcc_assert (!DEBUG_BIND_INSN_P (insn));
                    }
and the NULL BLOCK_FOR_INSN stuff, on GIMPLE the gsi_after_labels changes,
the tree-cfg.c verification needs to be changed to disallow even the
markers before labels, ...).  That can be done incrementally, it is better
to unbreak the tree ASAP.

        Jakub

Reply via email to