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: PATCH: Properly check the end of basic block


On Thu, Nov 18, 2010 at 11:15:47PM +0100, Uros Bizjak wrote:
> On Thu, Nov 18, 2010 at 8:43 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> > On Thu, Nov 18, 2010 at 8:37 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> The fix is then trivial.

Not so much.

> 
> 2010-11-18  Uros Bizjak  <ubizjak@gmail.com>
> 
> 	PR middle-end/46546
> 	* passes.c (init_optimization_passes): Move machine_reorg pass before
> 	free_cfg pass.
> 
> Tested on x86_64-pc-linux-gnu {,-m32}. OK for mainline and release branches?

I'm afraid this is going to break various targets, such change can't be
taken lightly and testing just on 2 targets is definitely not sufficient.

Definitely not something that should be applied ever to release branches,
not sure if it is something that should be done in stage3 for 4.6.

Targets that need cfg in the reorg pass compute it themselves (e.g. ia64),
other targets could depend on that the CFG is gone.

Why does i?86 actually care about CFG in its reorg pass, unlike targets
that do scheduling etc. I don't see why it should care.

E.g. ia64's comments say:
static void
ia64_reorg (void)
{ 
  /* We are freeing block_for_insn in the toplev to keep compatibility
     with old MDEP_REORGS that are not CFG based.  Recompute it now.  */
  compute_bb_for_insn ();
...

I'd say that applying this patch after testing/converting all targets
would be nice thing to do for stage1.

	Jakub


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