30 OA_ptr<DataFlow::DataFlowSet> ManagerLivenessStandard::initializeBottom()
32 OA_ptr<DataFlow::LocDFSet> retval;
33 retval =
new DataFlow::LocDFSet;
43 std::cout <<
"In Liveness::ManagerLivenessStandard::performAnalysis" << std::endl;
52 for ( ; sIt->
isValid(); (*sIt)++) {
55 std::cout<<
"\tstmt (" << stmt.
hval() <<
") = ";
56 mIR->dump(stmt,std::cout);
60 mStmtMustDefMap[stmt];
65 for (; defIterPtr->
isValid(); (*defIterPtr)++) {
68 std::cout <<
"\t\tdef ref (" << ref.
hval() <<
") = ";
69 mIR->dump(ref,std::cout);
73 for (; locIterPtr->
isValid(); ++(*locIterPtr)) {
74 mStmtMustDefMap[stmt].insert(locIterPtr->
current());
81 for ( ; callsiteItPtr->
isValid(); ++(*callsiteItPtr)) {
88 for ( ; locIterPtr->
isValid(); (*locIterPtr)++) {
90 mStmtMustDefMap[stmt].insert(defLocPtr);
96 for (; useIterPtr->
isValid(); (*useIterPtr)++) {
99 std::cout <<
"\t\tuse ref (" << useref.
hval() <<
") = ";
100 mIR->dump(useref,std::cout);
104 for (; uselocIterPtr->
isValid(); ++(*uselocIterPtr)) {
105 mStmtMayUseMap[stmt].insert(uselocIterPtr->
current());
117 mSolver->solve(cfg,algorithm);
152 OA_ptr<DataFlow::DataFlowSet>
153 ManagerLivenessStandard::meet (OA_ptr<DataFlow::DataFlowSet> set1orig,
154 OA_ptr<DataFlow::DataFlowSet> set2orig)
156 OA_ptr<DataFlow::LocDFSet> set1
157 = set1orig.
convert<DataFlow::LocDFSet>();
159 std::cout <<
"ManagerLivenessStandard::meet" << std::endl;
160 std::cout <<
"\tset1 = ";
161 set1->dump(std::cout,mIR);
162 std::cout <<
", set2 = ";
163 set2orig->dump(std::cout,mIR);
166 DataFlow::LocDFSet retval
167 = set1->setUnion(*set2orig);
169 std::cout << std::endl <<
"\tretval set = ";
170 retval.dump(std::cout,mIR);
171 std::cout << std::endl;
174 return retval.clone();
178 OA_ptr<DataFlow::DataFlowSet>
179 ManagerLivenessStandard::transfer(OA_ptr<DataFlow::DataFlowSet> in,
OA::StmtHandle stmt)
181 OA_ptr<DataFlow::LocDFSet> inRecast
182 = in.convert<DataFlow::LocDFSet>();
185 std::cout <<
"In transfer, stmt(hval=" << stmt.
hval() <<
")= ";
186 mIR->dump(stmt,std::cout);
190 DataFlow::LocDFSetIterator inIter(*inRecast);
191 for (; inIter.isValid(); ++inIter) {
192 OA_ptr<Location> livevar = inIter.current();
194 std::cout <<
"\tlivevar in Inset = ";
195 livevar->dump(std::cout,mIR);
198 mLiveMap->insertLive(stmt,livevar);
200 LocSet::iterator setIter;
201 for (setIter=mStmtMustDefMap[stmt].begin(); setIter!=mStmtMustDefMap[stmt].end(); setIter++) {
202 OA_ptr<Location> loc = *setIter;
203 inRecast->remove(loc);
204 mLiveMap->removeLive(stmt,loc);
208 LocSet::iterator gensetIter;
209 for (gensetIter=mStmtMayUseMap[stmt].begin(); gensetIter!=mStmtMayUseMap[stmt].end(); gensetIter++) {
210 OA_ptr<Location> loc = *gensetIter;
211 inRecast->insert(loc);
212 mLiveMap->insertLive(stmt,loc);