[PATCH, middle-end]: move superblock formation to Tree-SSA

Robert Kidd rkidd@crhc.uiuc.edu
Fri Jun 15 12:17:00 GMT 2007


On Jun 12, 2007, at 10:47 PM, Robert Kidd wrote:

> On Jun 12, 2007, at 8:46 AM, Richard Guenther wrote:
>
>> On Tue, 12 Jun 2007, Zdenek Dvorak wrote:
>>
>>> Hello,
>>>
>>>> On Tue, 12 Jun 2007, Diego Novillo wrote:
>>>>
>>>>> On 6/11/07 9:58 PM, Robert Kidd wrote:
>>>>>
>>>>>> 2007-06-11 Robert Kidd <rkidd@crhc.uiuc.edu>
>>>>>>
>>>>>> <cut
>>>>>
>>>>> This is OK with me.  I am not entirely sure whether I can  
>>>>> approve it
>>>>> though, as it crosses on to RTL.  I'm CCing some middle-end  
>>>>> maintainers
>>>>> just in case.
>>>>>
>>>>> Thanks for your patience.  I know this patch has been  
>>>>> outstanding for a
>>>>> long time.
>>>>
>>>> As far as the middle-end is concerned the patch is ok.  (We can  
>>>> move
>>>> the pass later if it turns out to hinder optimizations in some  
>>>> case)
>>>
>>> I would somewhat prefer to have it after loop optimizer for now  
>>> (my reason
>>> being that it may be somewhat difficult to maintain the loops in  
>>> tracer,
>>> which conflicts with my project to preserve loops throughout tree
>>> compilation); we may move the pass earlier if it turns out to be  
>>> useful
>>> :-)
>>
>> Ok.  Robert, can you do performance tests with the pass moved after
>> pass_cd_dce?
>
> I will do that.  I've attached a modified version of the patch that  
> places tracer after pass_cd_dce.  I will report the results of the  
> performance test when it finishes.
>
> Thanks
> Robert
>
> 2007-06-12 Robert Kidd <rkidd@crhc.uiuc.edu>
>
> 	* bb-reorder.c (rest_of_handler_reorder_blocks): Removed call to
> 	RTL level tracer pass.
> 	* passes.c (init_optimization_passes): Move pass_tracer from
> 	after pass_rtl_ifcvt to after pass_cd_dce.
> 	* tracer.c: Update copyright.
> 	(layout_superblocks): Remove function.
> 	(mark_bb_seen): New.
> 	(bb_seen_p): New.
> 	(count_insns): Change to estimate instructions in a Tree-SSA
> 	statement.
> 	(find_trace): Use bb_seen_p.
> 	(tail_duplicate): Use bb_seen_p.  Call add_phi_args_after_copy
> 	after duplicate_block.
> 	(tracer): Change prototype to match that of a pass execute
> 	callback.
> 	(gate_tracer): Rename from gate_handle_tracer.
> 	(rest_of_handle_tracer): Remove function.
> 	* rtl.h: Remove prototype for tracer.
> 	* testsuite/gcc.dg/tree-prof/tracer-1.c: New.
>
> <superblock-1-20070612.patch.txt>

The performance run finished this morning.  Moving the patch to after  
pass_cd_dce gives a negligible change over mainine on integer  
benchmarks on IA64.  On the floating point benchmarks, performance  
improves by 2% without profile feedback and 7% with profiling.

Robert



More information about the Gcc-patches mailing list