This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/38785] huge performance regression on EEMBC bitmnp01
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Jan 2009 20:51:13 -0000
- Subject: [Bug tree-optimization/38785] huge performance regression on EEMBC bitmnp01
- References: <bug-38785-5394@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #10 from rguenther at suse dot de 2009-01-14 20:51 -------
Subject: Re: huge performance regression on
EEMBC bitmnp01
On Wed, 14 Jan 2009, amylaar at gcc dot gnu dot org wrote:
> I think the disregard for conditional execution opportunities and the
> assumption that phi nodes have no execution cost are two separate issues.
> I'd like to address the latter first, because it causes exponential code and
> execution time growth.
>
> A phi node joining two constants has at least the cost of a constant load.
> A phi node joining two different variables which are initialized by a graph
> with constant leafs costs at least a reg-reg copy on one arm, plus the cost
> of its parents if these are needed solely for this phi node.
>
> Therefore, if an expression is only partially anticipatable, we should compare
> the cost of any phi node needed to compute it early with the estimated
> likelyhod that such a computatatio, once done, is actually needed, multiplied
> with the cost of the replaced operation.
>
> Can we use edge probabilities inside tree-pre to calculate execution
> probabilities?
>
> Can we calculate the cost of replaced expressions?
You would completely underestimate the optimization opportunities PRE
unleashes.
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38785