This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Insert on edge comment
- From: Chris Lattner <sabre at nondot dot org>
- To: Andrew MacLeod <amacleod at redhat dot com>
- Cc: Jeff Law <law at redhat dot com>, <vmakarov at redhat dot com>, <matz at suse dot de>,gcc mailing list <gcc at gcc dot gnu dot org>
- Date: Sat, 31 May 2003 15:49:12 -0500 (CDT)
- Subject: Re: [tree-ssa] Insert on edge comment
> > Its only critical edges that we've been talking about, I just never
> > explicitly said that. The commit routines simply insert at the beginning
> > or end of the appropriate block if the edge isn't critical.
> Actually, it just occurred to me.... thats all i have ever been talking
> about actually.. is inserting on a critical edge... I guess I never
> explicitly said that did I? :-)
I actually did understand that. :) I was trying to address several
points in the thread:
1. Make sure people knew that only critical edges were the important ones
2. Point out that it's really trivial to update auxillary data structures
(including SSA, if you consider it auxilliary) on the fly, using only
local information.
3. Point out that things like "switch" statements and "infinite loop"
statements make things much harder. For example, in the case of the
switch statement, the edge breaker needs to know how to handle fall
through cases, and other stuff. This is the reason why a
multi-way-branch makes a bit more sense than a "source-level" switch
statement.
-Chris
>
> I have a tendancy to only talk about the interesting parts, bypassing
> the trivial bits since they seem obvious... Splitting critical edges is
> the only interesting part of inserting on an edge.. the others are
> turning into an insert_before (first_in_dest) or insert_after
> (last_in_src) if the edge isn't critical.
>
> That might solve some of the confusion about the "complexity" of our
> insert on edge :-)
>
> Andrew
>
-Chris
--
http://llvm.cs.uiuc.edu/
http://www.nondot.org/~sabre/Projects/