[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