00001 00016 #ifndef ManagerUDDUChainsStandard_h 00017 #define ManagerUDDUChainsStandard_h 00018 00019 //-------------------------------------------------------------------- 00020 // OpenAnalysis headers 00021 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00022 #include <OpenAnalysis/IRInterface/UDDUChainsIRInterface.hpp> 00023 #include <OpenAnalysis/ReachDefs/Interface.hpp> 00024 #include <OpenAnalysis/Alias/Interface.hpp> 00025 #include <OpenAnalysis/UDDUChains/UDDUChainsStandard.hpp> 00026 #include <OpenAnalysis/SideEffect/InterSideEffectInterface.hpp> 00027 #include <OpenAnalysis/MemRefExpr/MemRefExprVisitor.hpp> 00028 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp> 00029 00030 namespace OA { 00031 namespace UDDUChains { 00032 00033 00039 class ManagerUDDUChainsStandard { 00040 //??? eventually public OA::AnnotationManager 00041 public: 00042 ManagerUDDUChainsStandard(OA_ptr<UDDUChainsIRInterface> _ir); 00043 ~ManagerUDDUChainsStandard () {} 00044 OA_ptr<UDDUChainsStandard> performAnalysis(ProcHandle, 00045 OA_ptr<Alias::Interface> alias, OA_ptr<ReachDefs::Interface> reachDefs, 00046 OA_ptr<SideEffect::InterSideEffectInterface> interSE); 00047 00048 private: 00049 // helper functions 00050 bool locMayAliasMemRef(OA_ptr<Alias::Interface> alias, 00051 OA_ptr<Location> loc, 00052 MemRefHandle memref); 00053 00054 bool locMustAliasMemRef(OA_ptr<Alias::Interface> alias, 00055 OA_ptr<Location> loc, 00056 MemRefHandle memref); 00057 private: 00058 OA_ptr<UDDUChainsIRInterface> mIR; 00059 00060 }; 00061 00062 } // end of UDDUChains namespace 00063 } // end of OA namespace 00064 00065 #endif
1.6.1