X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FIR%2FLLVMContextImpl.cpp;h=4c2791f0a8d531aeb1bd36dd673df16eee5ecd39;hb=2a2fcc1a0ec4a115bbe76c185f7cd64e77b61e7c;hp=2bccd2a091be0e4296bd30ad1c01c95387b79952;hpb=e3e870facee9f1fcf5b19f15a3deb78b582fb37e;p=oota-llvm.git diff --git a/lib/IR/LLVMContextImpl.cpp b/lib/IR/LLVMContextImpl.cpp index 2bccd2a091b..4c2791f0a8d 100644 --- a/lib/IR/LLVMContextImpl.cpp +++ b/lib/IR/LLVMContextImpl.cpp @@ -14,33 +14,11 @@ #include "LLVMContextImpl.h" #include "llvm/ADT/STLExtras.h" #include "llvm/IR/Attributes.h" +#include "llvm/IR/DiagnosticInfo.h" #include "llvm/IR/Module.h" -#include "llvm/PassSupport.h" -#include "llvm/Support/CommandLine.h" -#include "llvm/Support/Regex.h" #include using namespace llvm; -/// Notify that we finished running a pass. -void LLVMContextImpl::notifyPassRun(LLVMContext *C, Pass *P, Module *M, - Function *F, BasicBlock *BB) { - for (auto const &L : RunListeners) - L->passRun(C, P, M, F, BB); -} -/// Register the given PassRunListener to receive notifyPassRun() -/// callbacks whenever a pass ran. -void LLVMContextImpl::addRunListener(PassRunListener *L) { - RunListeners.push_back(L); -} -/// Unregister a PassRunListener so that it no longer receives -/// notifyPassRun() callbacks. -void LLVMContextImpl::removeRunListener(PassRunListener *L) { - auto I = std::find(RunListeners.begin(), RunListeners.end(), L); - assert(I != RunListeners.end() && "RunListener not registered!"); - delete *I; - RunListeners.erase(I); -} - LLVMContextImpl::LLVMContextImpl(LLVMContext &C) : TheTrueVal(nullptr), TheFalseVal(nullptr), VoidTy(C, Type::VoidTyID), @@ -62,58 +40,16 @@ LLVMContextImpl::LLVMContextImpl(LLVMContext &C) InlineAsmDiagContext = nullptr; DiagnosticHandler = nullptr; DiagnosticContext = nullptr; + YieldCallback = nullptr; + YieldOpaqueHandle = nullptr; NamedStructTypesUniqueID = 0; } -namespace { - -/// \brief Regular expression corresponding to the value given in the -/// command line flag -pass-remarks. Passes whose name matches this -/// regexp will emit a diagnostic when calling -/// LLVMContext::emitOptimizationRemark. -static Regex *OptimizationRemarkPattern = nullptr; - -struct PassRemarksOpt { - void operator=(const std::string &Val) const { - // Create a regexp object to match pass names for emitOptimizationRemark. - if (!Val.empty()) { - delete OptimizationRemarkPattern; - OptimizationRemarkPattern = new Regex(Val); - std::string RegexError; - if (!OptimizationRemarkPattern->isValid(RegexError)) - report_fatal_error("Invalid regular expression '" + Val + - "' in -pass-remarks: " + RegexError, - false); - } - }; -}; - -static PassRemarksOpt PassRemarksOptLoc; - -// -pass-remarks -// Command line flag to enable LLVMContext::emitOptimizationRemark() -// and LLVMContext::emitOptimizationNote() calls. -static cl::opt> -PassRemarks("pass-remarks", cl::value_desc("pattern"), - cl::desc("Enable optimization remarks from passes whose name match " - "the given regular expression"), - cl::Hidden, cl::location(PassRemarksOptLoc), cl::ValueRequired, - cl::ZeroOrMore); -} - -bool -LLVMContextImpl::optimizationRemarksEnabledFor(const char *PassName) const { - return OptimizationRemarkPattern && - OptimizationRemarkPattern->match(PassName); -} - - namespace { struct DropReferences { // Takes the value_type of a ConstantUniqueMap's internal map, whose 'second' // is a Constant*. - template - void operator()(const PairT &P) { + template void operator()(const PairT &P) { P.second->dropAllReferences(); } }; @@ -199,11 +135,6 @@ LLVMContextImpl::~LLVMContextImpl() { // Destroy MDStrings. DeleteContainerSeconds(MDStringCache); - - // Destroy all run listeners. - for (auto &L : RunListeners) - delete L; - RunListeners.clear(); } // ConstantsContext anchors