PATCH: Properly check the end of basic block

Steven Bosscher stevenb.gcc@gmail.com
Thu Nov 18 23:09:00 GMT 2010


> Index: passes.c
> ===================================================================
> --- passes.c	(revision 166920)
> +++ passes.c	(working copy)
> @@ -1051,8 +1051,8 @@ init_optimization_passes (void)
>  	  NEXT_PASS (pass_compute_alignments);
>  	  NEXT_PASS (pass_duplicate_computed_gotos);
>  	  NEXT_PASS (pass_variable_tracking);
> -	  NEXT_PASS (pass_free_cfg);
>  	  NEXT_PASS (pass_machine_reorg);
> +	  NEXT_PASS (pass_free_cfg);
>  	  NEXT_PASS (pass_cleanup_barriers);
>  	  NEXT_PASS (pass_delay_slots);
>  	  NEXT_PASS (pass_split_for_shorten_branches);

This breaks at least all targets that run delay slot scheduling during
machine-reorg (MIPS), targets that layout constant pools (SH,ARM),
targets that recompute the CFG in their machine-reorg (blackfin, ia64,
MIPS (?!)).

But I'm impressed that an ix86 bootstrap survives with this patch.
Have you verified that there are no changes in the generated code?

Ciao!
Steven



More information about the Gcc-patches mailing list