auto_LivenessStandard.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "auto_LivenessStandard.hpp"
00009
00010 namespace OA {
00011 namespace Liveness {
00012
00013
00014 LivenessDFSet::iterator LivenessStandard::getLivenessIterator(StmtHandle s) {
00015 LivenessDFSet::iterator retval;
00016
00017 if(mLiveness[s].ptrEqual(0)) {
00018 mLiveness[s] = new LivenessDFSet();
00019 }
00020
00021 retval = mLiveness[s]->begin();
00022
00023 return retval;
00024 }
00025
00026
00027 LivenessDFSet::iterator LivenessStandard::getExitLivenessIterator() {
00028 LivenessDFSet::iterator retval;
00029
00030 retval = mExitLiveness->begin();
00031 return retval;
00032 }
00033
00034
00035 void LivenessStandard::output(IRHandlesIRInterface& ir) {
00036 #if 0
00037 sOutBuild->objStart("LivenessStandard");
00038
00039 sOutBuild->mapStart("mLiveness", "StmtHandle", "OA_ptr<LocSet>");
00040 std::map<StmtHandle,OA_ptr<LocSet> >::iterator mapIter;
00041 for (mapIter = mLiveness.begin(); mapIter != mLiveness.end(); mapIter++) {
00042 StmtHandle s = mapIter->first;
00043 OA_ptr<LocSet> rdset = mapIter->second;
00044 if ( rdset.ptrEqual(0) ) continue;
00045
00046 sOutBuild->mapEntryStart();
00047 sOutBuild->mapKeyStart();
00048 sOutBuild->outputIRHandle(s, ir);
00049 sOutBuild->mapKeyEnd();
00050 sOutBuild->mapValueStart();
00051
00052
00053 sOutBuild->listStart();
00054 OA_ptr<".TYPEITER."> setIter;
00055 setIter = getLivenessIterator(s);
00056 for ( ; setIter->isValid(); (*setIter)++ ) {
00057 sOutBuild->listItemStart(); {
00058 setIter->current()->output(ir);
00059 } sOutBuild->listItemEnd();
00060 }
00061 sOutBuild->listEnd();
00062 sOutBuild->mapValueEnd();
00063 sOutBuild->mapEntryEnd();
00064 }
00065 sOutBuild->mapEnd("mLiveness");
00066 sOutBuild->objEnd("LivenessStandard");
00067 #endif
00068 }
00069
00070
00071 void LivenessStandard::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir)
00072 {
00073 std::cout << "======Liveness===="<< std::endl;
00074 LivenessDFSet::iterator iter;
00075
00076 std::map<StmtHandle, OA_ptr<LivenessDFSet> >::iterator mapIter;
00077
00078 for (mapIter = mLiveness.begin(); mapIter != mLiveness.end(); mapIter++) {
00079 std::cout<< "\tstmt = " << ir->toString(mapIter->first) << std::endl;
00080 iter = getLivenessIterator(mapIter->first);
00081
00082 for ( ; iter != mLiveness[mapIter->first]->end(); iter++ ) {
00083 std::cout << "\t\t";
00084 cout << (*iter)->toString(mIR);
00085 std::cout << std::endl;
00086 }
00087 }
00088 }
00089
00090
00091 }
00092 }