This is the mail archive of the
mailing list for the GCC project.
Re: [tree-ssa] Removal of gotos from cfg based ir
On Fri, 2003-11-14 at 16:13, Richard Henderson wrote:
> On Fri, Nov 14, 2003 at 11:16:45AM -0500, Andrew MacLeod wrote:
> > Normally, it would only be a CALL_EXPR inside the abnorm wouldn't it?
> No. Functions often return values.
> > If thats the case, and we'd have to wrap every MODIFY like this, couldnt
> > we come up with a way of treating an entire block as a list of possible
> > trapping stmts, and do something different to handle that kind of beast?
> > They are all going to the same location aren't they?
> If they really all do trap, then they will all be in different
> basic blocks, one to a block. Of necessity. If you try to do
> differently, you'll screw up the data flow.
yeah, I was drawing it out here. gross :-)
> > why not just create one in RTL land when we need it using the
> > same datastructures? I dont think at -O0 I want a CFG in either IL,
> We *always* need a CFG in rtl. We need it for register allocation.
So Ive been told. so we have a cfg.
> > and it seems like a restriction to force entry into RTL to have a CFG
> > already created. I dont think the front end and the back end ought to
> > be that tightly coupled...
> Ah hah, that's a point of disconnect. The front end should only
> call tree_rest_of_compilation, and then *everything* happens there
> behind the scenes. This is, shockingly, a vast improvement over
> the situation on mainline.
Errr, thats more or less what I said isn't it? they should not be
tightly coupled. The F/E calls rest_of_compilation(). It doesn't have to
pass a CFG to tree-ssa, it passes GENERIC. In the same vein, tree-ssa
ought to have a clean entry point to the RTL optimizer. In my mind,
tree-ssa generates GIMPLE/GENERIC, and passes it on. nothing else.
Someone could stick IPA between tree-ssa and rtl this way if they want,
or the could stick it between F/E and tree/SSA. or both. I dont think
tree-ssa ought to be passing a CFG to anyone. it should be passing a
clean IL to the next phase, which happens to be the translation into