OpenADFortTk (including Open64 and OpenAnalysis references)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
LivenessStandard.cpp
Go to the documentation of this file.
1 // LivenessStandard.cpp
2 
3 
4 #include "LivenessStandard.hpp"
5 
6 namespace OA {
7  namespace Liveness {
8 
9 OA_ptr<LocIterator> LivenessStandard::getLivenessIterator(StmtHandle s)
10 {
11  OA_ptr<LocIterator> retval;
12 
13  if (mLiveness[s].ptrEqual(0)) {
14  OA_ptr<LocSet> emptySet; emptySet = new LocSet;
15  retval = new LocSetIterator(emptySet);
16  } else {
17  retval = new LocSetIterator(mLiveness[s]);
18  }
19  return retval;
20 }
21 
22 OA_ptr<LocIterator> LivenessStandard::getExitLivenessIterator()
23 {
24  OA_ptr<LocIterator> retval;
25  if (mExitLiveness.ptrEqual(0)) {
26  OA_ptr<LocSet> emptySet; emptySet = new LocSet;
27  retval = new LocSetIterator(emptySet);
28  }
29  else {
30  retval = new LocSetIterator(mExitLiveness);
31  }
32  return retval;
33 }
34 
35 void LivenessStandard::output(IRHandlesIRInterface& ir)
36 {
37  sOutBuild->objStart("LivenessStandard");
38 
39  sOutBuild->mapStart("mLiveness", "StmtHandle", "OA_ptr<LocSet>");
40  std::map<StmtHandle,OA_ptr<LocSet> >::iterator mapIter;
41  for (mapIter = mLiveness.begin(); mapIter != mLiveness.end(); mapIter++) {
42  StmtHandle s = mapIter->first;
43  OA_ptr<LocSet> rdset = mapIter->second;
44  if ( rdset.ptrEqual(0) ) continue;
45 
46  sOutBuild->mapEntryStart();
47  sOutBuild->mapKeyStart();
48  sOutBuild->outputIRHandle(s, ir);
49  sOutBuild->mapKeyEnd();
50  sOutBuild->mapValueStart();
51 
52 
53  sOutBuild->listStart();
54  OA_ptr<LocIterator> setIter;
55  setIter = getLivenessIterator(s);
56  for ( ; setIter->isValid(); (*setIter)++ ) {
57  sOutBuild->listItemStart(); {
58  setIter->current()->output(ir);
59  } sOutBuild->listItemEnd();
60  }
61  sOutBuild->listEnd();
62  sOutBuild->mapValueEnd();
63  sOutBuild->mapEntryEnd();
64  }
65  sOutBuild->mapEnd("mLiveness");
66 
67 /* sOutBuild->fieldStart("mExitLiveness");
68  sOutBuild->listStart();
69  OA_ptr<LocIterator> setIter1;
70  setIter1 = getExitLivenessIterator();
71  for (;setIter1->isValid(); (*setIter1)++)
72  {
73  sOutBuild->listItemStart();{
74  setIter1->current()->output(ir);
75  }
76  sOutBuild->listItemEnd();
77  }
78  sOutBuild->listEnd();
79  sOutBuild->fieldEnd("mExitLiveness");*/
80 
81  sOutBuild->objEnd("LivenessStandard");
82 }
83 
84 
85 
86 void LivenessStandard::dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir)
87 {
88  std::cout<< "======Liveness===="<< std::endl;
89  OA_ptr<LocIterator> locIterPtr;
90  std::map<StmtHandle,OA_ptr<LocSet> > ::iterator mapIter;
91  for (mapIter = mLiveness.begin(); mapIter != mLiveness.end(); mapIter++) {
92  std::cout<< "\tstmt = " << ir->toString(mapIter->first) << std::endl;
93  locIterPtr = getLivenessIterator(mapIter->first);
94  for ( ; locIterPtr->isValid(); (*locIterPtr)++ ) {
95  std::cout << "\t\t";
96  //locIterPtr->current()->output(*ir);
97  locIterPtr->current()->dump(std::cout,ir);
98  std::cout << std::endl;
99  }
100 
101  }
102 }
103 
104 
105 
106  } // end of Liveness namespace
107 } // end of OA namespace