This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Tree SSA If-combine optimization pass in GCC
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Ajit Kumar Agarwal <ajit dot kumar dot agarwal at xilinx dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, Vinod Kathail <vinodk at xilinx dot com>, Shail Aditya Gupta <shailadi at xilinx dot com>, Vidhumouli Hunsigida <vidhum at xilinx dot com>, Nagaraju Mekala <nmekala at xilinx dot com>
- Date: Tue, 17 Feb 2015 11:12:02 +0100
- Subject: Re: Tree SSA If-combine optimization pass in GCC
- Authentication-results: sourceware.org; auth=none
- References: <020b7d9d890e42ddafb2a22de8291f45 at BN1BFFO11FD045 dot protection dot gbl>
On Tue, Feb 17, 2015 at 9:22 AM, Ajit Kumar Agarwal
<ajit.kumar.agarwal@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.
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:
...
Richard.
> Thanks & Regards
> Ajit