-----Original Message-----
From: Jeff Law [mailto:l...@redhat.com] 
Sent: Thursday, August 20, 2015 1:13 AM
To: Ajit Kumar Agarwal; Richard Biener
Cc: GCC Patches; Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; 
Nagaraju Mekala
Subject: Re: [Patch,tree-optimization]: Add new path Splitting pass on tree ssa 
representation

On 08/15/2015 11:01 AM, Ajit Kumar Agarwal wrote:
> All:
>
> Please find the updated patch with suggestion and feedback 
> incorporated.
>
> Thanks Jeff and Richard for the review comments.
>
> Following changes were done based on the feedback on RFC comments.
> and the review for the previous patch.
>
> 1. Both tracer and path splitting pass are separate passes so  that 
> two instances of the pass will run in the end, one doing path 
> splitting and one doing  tracing, at different times in the 
> optimization pipeline.
>>I'll have to think about this.  I'm not sure I agree totally with Richi's 
>>assertion that we should share code with the tracer pass, but I'll give it a 
>>good looksie.



> 2. Transform code is shared for tracer and path splitting pass. The 
> common code in extracted in a given function transform_duplicate And 
> place the function in tracer.c and the path splitting pass uses the 
> transform code.
>>OK.  I'll take a good look at that.


> 3. Analysis for the basic block population and traversing the basic 
> block using the Fibonacci heap is commonly used. This cannot be 
> Factored out into new function as the tracer pass does more analysis 
> based on the profile and the different heuristics is used in tracer 
> And path splitting pass.
>>Understood.


> 4. The include headers is minimal and presence of what is required for 
> the path splitting pass.
>>THanks.


> 5. The earlier patch does the SSA updating  with replace function to 
> preserve the SSA representation required to move the loop latch node 
> same as join Block to its predecessors and the loop latch node is just 
> forward block. Such replace function are not required as suggested by 
> the Jeff. Such replace Function goes away with this patch and the 
> transformed code is factored into a given function which is shared 
> between tracer and path splitting pass.
>>Sounds good.

>
> Bootstrapping with i386 and Microblaze target works fine. No 
> regression is seen in Deja GNU tests for Microblaze. There are lesser 
> failures. Mibench/EEMBC benchmarks were run for Microblaze target and 
> the gain of 9.3% is seen in rgbcmy_lite the EEMBC benchmarks.
>>What do you mean by there are "lesser failures"?  Are you saying there are 
>>cases where path splitting generates incorrect code, or cases where path 
>>>>splitting produces code that is less efficient, or something else?

I meant there are more Deja GNU testcases passes with the path splitting 
changes.

>
> SPEC 2000 benchmarks were run with i386 target and the following
> performance number is achieved.
>
> INT benchmarks with path splitting(ratio) Vs INT benchmarks without
> path splitting(ratio) = 3661.225091 vs 3621.520572
>>That's an impressive improvement.

>>Anyway, I'll start taking a close look at this momentarily.

Thanks & Regards
Ajit

Jeff

Reply via email to