00001 00002 /* ReachingDefsStandard.cpp 00003 NOTE: This file was automatically generated by DFAGen. It is the 00004 implementation of the class for ReachingDefs analysis results. 00005 */ 00006 00007 00008 #include "auto_ReachingDefsStandard.hpp" 00009 00010 namespace OA { 00011 namespace ReachingDefs { 00012 00013 00014 ReachingDefsDFSet::iterator ReachingDefsStandard::getReachingDefsIterator(StmtHandle s) { 00015 ReachingDefsDFSet::iterator retval; 00016 00017 if(mReachingDefs[s].ptrEqual(0)) { 00018 mReachingDefs[s] = new ReachingDefsDFSet(); 00019 } 00020 00021 retval = mReachingDefs[s]->begin(); 00022 00023 return retval; 00024 } 00025 00026 00027 ReachingDefsDFSet::iterator ReachingDefsStandard::getExitReachingDefsIterator() { 00028 ReachingDefsDFSet::iterator retval; 00029 00030 retval = mExitReachingDefs->begin(); 00031 return retval; 00032 } 00033 00034 00035 void ReachingDefsStandard::output(IRHandlesIRInterface& ir) { 00036 #if 0 00037 sOutBuild->objStart("ReachingDefsStandard"); 00038 00039 sOutBuild->mapStart("mReachingDefs", "StmtHandle", "OA_ptr<LocSet>"); 00040 std::map<StmtHandle,OA_ptr<LocSet> >::iterator mapIter; 00041 for (mapIter = mReachingDefs.begin(); mapIter != mReachingDefs.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 = getReachingDefsIterator(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("mReachingDefs"); 00066 sOutBuild->objEnd("ReachingDefsStandard"); 00067 #endif 00068 } 00069 00070 00071 void ReachingDefsStandard::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir) 00072 { 00073 std::cout << "======ReachingDefs===="<< std::endl; 00074 ReachingDefsDFSet::iterator iter; 00075 00076 std::map<StmtHandle, OA_ptr<ReachingDefsDFSet> >::iterator mapIter; 00077 00078 for (mapIter = mReachingDefs.begin(); mapIter != mReachingDefs.end(); mapIter++) { 00079 std::cout<< "\tstmt = " << ir->toString(mapIter->first) << std::endl; 00080 iter = getReachingDefsIterator(mapIter->first); 00081 00082 for ( ; iter != mReachingDefs[mapIter->first]->end(); iter++ ) { 00083 std::cout << "\t\t"; 00084 cout << mIR->toString(*iter); 00085 std::cout << std::endl; 00086 } 00087 } 00088 } 00089 00090 00091 } // end of ReachingDefs namespace 00092 } // end of OA namespace
1.6.1