void SPRAY::PASolver1::computeCombinedPreInfo(Label lab,Lattice& info) { LabelSet pred=_flow.pred(lab); for(LabelSet::iterator i=pred.begin();i!=pred.end();++i) { Lattice* predInfo=_initialElementFactory.create(); predInfo->combine(*_analyzerDataPreInfo[(*i).getId()]); // clone info of predecessor computePostInfo(*i,*predInfo); info.combine(*predInfo); delete predInfo; } }
void SPRAY::PASolver1::computeCombinedPreInfo(Label lab,Lattice& info) { if(!_flow.contains(lab)) { // schroder3 (2016-07-07): If the label does not exist in the CFG, then // it does not have predecessors and the given pre-info therefore does // not change. This check is necessary if Flow::pred(Label) uses the // Sawyer graph as underlying datastructure because Flow::pred then // expects that the given label exists in the CFG. return; } LabelSet pred=_flow.pred(lab); for(LabelSet::iterator i=pred.begin();i!=pred.end();++i) { Lattice* predInfo=_initialElementFactory.create(); predInfo->combine(*_analyzerDataPreInfo[(*i).getId()]); // clone info of predecessor computePostInfo(*i,*predInfo); info.combine(*predInfo); delete predInfo; } }