PATCH: Properly check the end of basic block

Richard Sandiford rdsandiford@googlemail.com
Tue Nov 23 12:42:00 GMT 2010


Steven Bosscher <stevenb.gcc@gmail.com> writes:
>> 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 (?!)).

Just out of curiosity, why the (?!) ?  We need dataflow info when
working around an r10k speculative execution errata and when relaxing
PIC calls.  We free it again before doing DBR, like you say.

Richard



More information about the Gcc-patches mailing list