This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [SFN] Bootstrap broken


On Thu, Dec 14, 2017 at 04:08:45PM -0200, Alexandre Oliva wrote:
> On Dec 13, 2017, Alexandre Oliva <aoliva@redhat.com> wrote:
> 
> > On Dec 12, 2017, David Edelsohn <dje.gcc@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]