On 10/02/2015 01:37 AM, Richard Biener wrote:
The following patch doesn't pass bootstrap & regtest. It did at some
point though and its comment hints that fixing leaks after inlining
was too interesting a problem to solve ;)
Thus patch is FYI.
Richard.
Index: tree-ssa.c
===================================================================
--- tree-ssa.c (revision 228320)
+++ tree-ssa.c (working copy)
@@ -693,6 +693,16 @@ verify_def (basic_block bb, basic_block
goto err;
}
+ if (bb == NULL
+ /* ??? Too many latent cases in the main opt pipeline. But it's
+ worth to fix all cases before inlining as that reduces the
+ amount of garbage kept live. */
+ && !cfun->after_inlining)
+ {
+ error ("removed STMT failed to release SSA name");
+ goto err;
+ }
+
I was building the verification step into the ssa name manager.
Essentially at the point where we flush from the pending to the free
list, we should have a consistent state.
Thus we ought to be able to walk the IL marking everything we can see,
combine that with the contents of the freelist and the result ought to
be every SSA_NAME ever created.
Reality is somewhat different, of course.
Yours takes a slightly different approach. Ultimately if we get the
leaks plugged, we might even consider using both.
jeff