Question about simplify_cond_and_lookup_avail_expr
Devang Patel
dpatel@apple.com
Mon Nov 29 21:21:00 GMT 2004
On Nov 29, 2004, at 12:13 PM, Jeffrey A Law wrote:
> On Mon, 2004-11-29 at 11:58 -0800, Devang Patel wrote:
>> On Nov 24, 2004, at 6:09 PM, Andrew Pinski wrote:
>>
>>> No this is in the wrong place, this should be done by a tree
>>> combiner.
>>
>> Tree combiner is mentioned many times but I do not understand its role
>> clearly. What is it suppose to do?
> It's basically the same as the RTL combiner. It would take a series of
> dependent expressions combine them into a single expression and try
> to simplify it.
>
> There are a few possible outcomes:
>
> 1. The result can be simplified and it simplifies into a gimple
> expression.
>
> 2. The result can be simplified, but it does not simplify into
> a gimple expression. However, we may be able to gimplify
> the expression and still end up with something that is better
> than the original series of expressions (this is similar to
> the 3->2 insn combinations in the RTL combiner)
>
> 3. The result simplifies, but gimplification doesn't produce
> a series of statements that is cheaper than the original.
>
> 4. The result does not simplify.
>
> Cases 1 & 2 are wins. Cases 3 & 4 do not win and we would not change
> the IL in those cases.
>
> One trivial example would be the reassociation done by the dominator
> optimizer.
>
> t = a + C1
> res = t + C2
>
> A tree combiner would turn that into
>
> res = a + C3 /* Where C3 is C1 + C2 computed at compile time */
>
> Or consider a couple typecasts in series:
>
> t = (type1) a;
> res = (type2) t;
>
>
> Depending on the types of a, type1 and type2, we may be able to
> simplify
> that into
>
> res = (type2) a;
>
> This happens often enough that I nearly wrote an optimizer to deal
> with it explicitly.
>
>
>
> Everything in the forward propagation pass (and the proposed extensions
> to it is) just a specialized form of tree combination.
>
> And the list of goes on and on and on.
Thank you guys.
-
Devang
More information about the Gcc
mailing list