00001 00015 #include <OpenAnalysis/ExprTree/MemRefsVisitor.hpp> 00016 00017 namespace OA { 00018 00019 //static bool debug = false; 00020 00023 void MemRefsVisitor::visitNode(ExprTree::Node&) 00024 { 00025 assert(0); 00026 } 00027 00028 void MemRefsVisitor::visitOpNode(ExprTree::OpNode& n) 00029 { 00030 // visit each child 00031 OA_ptr<ExprTree::Node> nodePtr; 00032 ExprTree::ChildNodesIterator cNodesIter(n); 00033 for ( ; cNodesIter.isValid(); ++cNodesIter) { 00034 nodePtr = cNodesIter.current(); 00035 00036 nodePtr->acceptVisitor(*this); 00037 } 00038 } 00039 00040 void MemRefsVisitor::visitCallNode(ExprTree::CallNode& n) 00041 { 00042 // not doing anything because callsite parameter expressions 00043 // will be visited separately 00044 00045 } 00046 00047 void MemRefsVisitor::visitMemRefNode(ExprTree::MemRefNode& n) 00048 { 00049 mHasMemRef = true; 00050 mMemRefSet->insert(n.getHandle()); 00051 } 00052 00053 void MemRefsVisitor::visitConstSymNode(ExprTree::ConstSymNode& n) 00054 { 00055 // constants aren't memrefs (BK: Is this right??) 00056 } 00057 00058 void MemRefsVisitor::visitConstValNode(ExprTree::ConstValNode& n) 00059 { 00060 // constants aren't memrefs 00061 } 00062 00063 00064 } // end of OA namespace 00065
1.7.1