7 using namespace OA::DataFlow;
8 using namespace OA::CFG;
9 using namespace OA::Alias;
10 using namespace OA::SideEffect;
13 namespace AvailableExpressions {
18 ManagerAvailableExpressionsStandard::ManagerAvailableExpressionsStandard(
69 cout <<
"In AvailableExpressions::ManagerAvailableExpressionsStandard::performAnalysis"
83 stmtIter =
mIR->getStmtIterator(proc);
84 for(; stmtIter->isValid(); ++(*stmtIter)) {
88 defsIter =
mIR->getDefMemRefs(stmt);
89 for (; defsIter->isValid(); (*defsIter)++) {
94 for (; locIter->isValid(); ++(*locIter)) {
103 stmtIter =
mIR->getStmtIterator(proc);
104 for(; stmtIter->isValid(); ++(*stmtIter)) {
108 defsIter =
mIR->getDefMemRefs(stmt);
109 for (; defsIter->isValid(); (*defsIter)++) {
113 for (; locIter->isValid(); ++(*locIter)) {
128 stmtIter =
mIR->getStmtIterator(proc);
129 for(; stmtIter->isValid(); ++(*stmtIter)) {
133 iterHdlExpr =
mIR->getExprHandleIterator(stmt);
134 for(; iterHdlExpr->isValid(); ++(*iterHdlExpr)) {
137 eTree =
mIR->getNewExprTree(hExp);
150 stmtIter =
mIR->getStmtIterator(proc);
151 for(; stmtIter->isValid(); ++(*stmtIter)) {
155 iterHdlExpr =
mIR->getExprHandleIterator(stmt);
156 for(; iterHdlExpr->isValid(); ++(*iterHdlExpr)) {
159 eTree =
mIR->getNewExprTree(hExp);
168 stmtIter =
mIR->getStmtIterator(proc);
169 for(; stmtIter->isValid(); ++(*stmtIter)) {
173 for (; useIterPtr->isValid(); (*useIterPtr)++) {
176 for (; locIterPtr->isValid(); ++(*locIterPtr)) {
185 stmtIter =
mIR->getStmtIterator(proc);
186 for(; stmtIter->isValid(); ++(*stmtIter)) {
190 for (; useIterPtr->isValid(); (*useIterPtr)++) {
193 for (; locIterPtr->isValid(); ++(*locIterPtr)) {
211 for(AvailableExpressionsDFSet::iterator i = exitSet->begin();
212 i != exitSet->end(); i++)
223 setRecast = inSet.
convert<set<OA_ptr<NewExprTree> > >();
224 set<OA_ptr<NewExprTree> >::iterator iter;
225 iter = setRecast->begin();
226 for(; iter != setRecast->end(); iter++) {
227 cout << (*iter)->toString(
mIR);
243 cout <<
"ManagerAvailableExpressionsStandard::meet" << endl;
253 set1->intersectEqu(*set2);
256 cout << endl <<
"\tcalculated set = ";
288 AvailableExpressionsDFSet::iterator iter1;
291 for(iter1 = x->begin(); iter1 != x->end(); iter1++) {
298 set5 = set3->intersect(set4);
304 set2->insert(iter1Val);
319 OA_ptr<set<
".FLOWTYPE" > > xdfgenset;
320 xdfgenset = xdfset.
convert<set<OA_ptr<NewExprTree> > >();
327 cout <<
"In transfer: " << endl;
328 cout <<
"\t Stmt = " <<
mIR->toString(stmt) << endl;
341 AvailableExpressionsDFSet::iterator genIter = gen->begin();
342 for(; genIter != gen->end(); ++genIter) {
349 AvailableExpressionsDFSet::iterator xIter = x->begin();
350 for(; xIter != x->end(); ++xIter) {
360 cout <<
"\t kill = ";