This is the mail archive of the
mailing list for the GCC project.
Re: [tree-ssa] Removal of gotos from cfg based ir
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Andrew MacLeod <amacleod at redhat dot com>
- Cc: Michael Matz <matz at suse dot de>,Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>,Jeff Law <law at redhat dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>,jh at suse dot cz
- Date: Fri, 14 Nov 2003 22:28:19 +0100
- Subject: Re: [tree-ssa] Removal of gotos from cfg based ir
- References: <Pine.LNX.email@example.com> <1068840451.2358.262.camel@p4>
> I dont see that its helps that much. There is a small amount of bookwork
> required to maintain the stmt's in step with the CFG, but it certainly
> doesn't seem to be very much,as long as the flow is explicit in the IL
> (or insn stream if you prefer).
On RTL, cfglayout is about 1300 lines and good about half of cfgcleanup
is about bookkeeping the forwarders and geting across them. Plus we do
have code in other places that use redirect_edge_and_branch_force. I
think this is actually quite a lot of code and I was doing my best to
make it as small as possible. It would be even more in tracer/loop
unroller if we didn't use cfglayout.
I think this is quite a lot of complexity.
I don't worry much how we do it (CFG as IL or gotos inside the shadows
or so), but I definitly want to see fallthru edge gone or arbitrarily
Do we know of other alternatives?
What would be the preference?
I would like to avoid the idea of containers representing EH edges as it
complicates simple analyzers of instructions.
Concerning the argument about saving IL into file, we can either save
the Il before lowering it for optimization or save the CFG as well - it
is not too much pain.
Concerning the argument that function lowering would not be needed, I
think it is wrong. If we manipulate the CFG in arbitrary way, unroll
loops and such, we would not be able to match it back into original
control flow statements.