This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Critical edge splitting (was: New regressions as of2003-11-04)
- From: Chris Lattner <sabre at nondot dot org>
- To: Daniel Berlin <dberlin at dberlin dot org>
- Cc: Diego Novillo <dnovillo at redhat dot com>, Jeff Law <law at redhat dot com>,gcc mailing list <gcc at gcc dot gnu dot org>,Andrew Macleod <amacleod at redhat dot com>,Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>,Jan Hubicka <jh at suse dot cz>
- Date: Wed, 5 Nov 2003 10:51:12 -0600 (CST)
- Subject: Re: [tree-ssa] Critical edge splitting (was: New regressions as of2003-11-04)
Dan Berlin wrote:
> Please be aware, that if you guys want, I can also temporarily fix the
> regression at the cost of possibly redoing dominators + dominance
> frontiers for every lexical expression we PRE (This is absolute worst
> case, where every expression has a different set of critical edges we
> might need to insert on. I don't know how often this happens in
> practice).
If critical edge splitting is the whole problem here, why don't you just
enhance your critical edge splitter to _update_ the relevant information?
Critical edges only locally change dominance properties, so this is very
easy.
If you're interested, the LLVM critical edge splitter updates dominator
sets, immediate dominators, dominator trees, and dominance frontiers (in
significantly less than 150 LOC). The code is here:
http://llvm.cs.uiuc.edu/doxygen/BreakCriticalEdges_8cpp-source.html
I'm not sure that I understand what the problem is with presplitting all
edges, but at least this will give you a nice simple incremental way to do
it without recalculating the world. :)
-Chris
--
http://llvm.cs.uiuc.edu/
http://www.nondot.org/~sabre/Projects/