-----Original Message----- From: Richard Biener [mailto:richard.guent...@gmail.com] Sent: Tuesday, February 17, 2015 3:42 PM To: Ajit Kumar Agarwal Cc: gcc@gcc.gnu.org; Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; Nagaraju Mekala Subject: Re: Tree SSA If-combine optimization pass in GCC
On Tue, Feb 17, 2015 at 9:22 AM, Ajit Kumar Agarwal <ajit.kumar.agar...@xilinx.com> wrote: > Hello All: > > I can see the IF-combining (If-merging) pass of optimization on tree-ssa form > of intermediate representation. > The IF-combine or merging takes of merging the IF-THEN-ELSE if the > condition Expr found be congruent or Similar. > > The IF-combine happens if the two IF-THEN-ELSE are contiguous to each other. > If the IF-THEN-ELSE happens to be not contiguous but are wide apart with > there is code in between. > Does the If-combine takes care of this. This requires to do the > head-duplication and Tail-duplication for the Code in between If-THEN-ELSE to > bring the IF-THEN-ELSE contiguous to each other. > > After the head and tail duplication of the code in between the > IF-THEN-ElSE sequence becomes contiguous to each other. Apart from > this, Does the tree-ssa-if-combine pass considers the control flow of the > body of the IF-THEN-ELSE. Is there any limitation on control flow of the body > of the IF-THEN-ELSE. > > Can I know the scope of tree-ssa-ifcombine optimizations pass with respect to > the above points. > > Thoughts Please? >>if-combine is a simple CFG + condition pattern matcher. It does not perform >>head/tail duplication. Also there is no "control flow" in the bodies, >>control flow is part of the CFG that is >>matched so I'm not quite getting >>your last question. Thanks ! My last question was If there is a control flow likes loops inside the IF-THEN-ELSE, which could be possible if the Loop unswitching is performed and the Loop body is placed inside the IF-THEN-ELSE, then in that case the two IF-THEN-ELSE can be merged if the cond expr matches and the control flow of the body of If-then-else matches? There are many cases in SPEC 2006 benchmarks where the IF-combine could be enabled if the if-then-else sequence is made contiguous by performing the head/tail duplication. >>if-combine was designed to accompany IL-only patterns that get partly >>translated into control flow. Like >>tem1 = name & bit1; >>tem2 = name & bit2; >>tem3 = tem1 | tem2; >>if (tem3) ... >>vs. >>tem1 = name & bit1; >>if (tem1) >>goto x; >>else >>{ >>tem2 = name & bit2; >>if (tem2) >> goto x; >>} >>x: >>... Thanks for the examples. This explains the scope of if-combine optimization pass. Thanks & Regards Ajit Richard. > Thanks & Regards > Ajit