question: final void unfactor ( IR ir ) { for ( Enumeration < Instruction > e = forwardRealInstrEnumerator ( ) ; e . hasMoreElements ( ) ; ) { Instruction s = e . nextElement ( ) ; Enumeration < BasicBlock > expOuts = getApplicableExceptionalOut ( s ) ; if ( expOuts . hasMoreElements ( ) && e . hasMoreElements ( ) ) { BasicBlock next = splitNodeWithLinksAt ( s , ir ) ; next . unfactor ( ir ) ; pruneExceptionalOut ( ir ) ; return ; } } }
target:  Convert a block in the FCFG into the equivalent set of CFG blocks by splitting the original block into sub-blocks at each PEI that reaches at least one exception handelr. NOTE: This is sufficient for intraprocedural analysis, since the only program point at which the "wrong" answers will be computed is the exit node, but is not good enough for interprocedural analyses.  To do an interprocedural analysis, either the analysis needs to deal with the FCFG or all nodes that modify globally visible state must be unfactored.