diff options
Diffstat (limited to 'llvm/lib/IR/LLVMContextImpl.cpp')
-rw-r--r-- | llvm/lib/IR/LLVMContextImpl.cpp | 42 |
1 files changed, 10 insertions, 32 deletions
diff --git a/llvm/lib/IR/LLVMContextImpl.cpp b/llvm/lib/IR/LLVMContextImpl.cpp index 9fe189329b0..d5d9038d1e9 100644 --- a/llvm/lib/IR/LLVMContextImpl.cpp +++ b/llvm/lib/IR/LLVMContextImpl.cpp @@ -48,26 +48,6 @@ LLVMContextImpl::LLVMContextImpl(LLVMContext &C) NamedStructTypesUniqueID = 0; } -namespace { -struct DropReferences { - // Takes the value_type of a ConstantUniqueMap's internal map, whose 'second' - // is a Constant*. - template <typename PairT> void operator()(const PairT &P) { - P.second->dropAllReferences(); - } -}; - -// Temporary - drops pair.first instead of second. -struct DropFirst { - // Takes the value_type of a ConstantUniqueMap's internal map, whose 'second' - // is a Constant*. - template<typename PairT> - void operator()(const PairT &P) { - P.first->dropAllReferences(); - } -}; -} - LLVMContextImpl::~LLVMContextImpl() { // NOTE: We need to delete the contents of OwnedModules, but Module's dtor // will call LLVMContextImpl::removeModule, thus invalidating iterators into @@ -99,14 +79,14 @@ LLVMContextImpl::~LLVMContextImpl() { #include "llvm/IR/Metadata.def" // Free the constants. - std::for_each(ExprConstants.map_begin(), ExprConstants.map_end(), - DropFirst()); - std::for_each(ArrayConstants.map_begin(), ArrayConstants.map_end(), - DropFirst()); - std::for_each(StructConstants.map_begin(), StructConstants.map_end(), - DropFirst()); - std::for_each(VectorConstants.map_begin(), VectorConstants.map_end(), - DropFirst()); + for (auto *I : ExprConstants) + I->dropAllReferences(); + for (auto *I : ArrayConstants) + I->dropAllReferences(); + for (auto *I : StructConstants) + I->dropAllReferences(); + for (auto *I : VectorConstants) + I->dropAllReferences(); ExprConstants.freeConstants(); ArrayConstants.freeConstants(); StructConstants.freeConstants(); @@ -165,10 +145,8 @@ void LLVMContextImpl::dropTriviallyDeadConstantArrays() { do { Changed = false; - for (auto I = ArrayConstants.map_begin(), E = ArrayConstants.map_end(); - I != E; ) { - auto *C = I->first; - I++; + for (auto I = ArrayConstants.begin(), E = ArrayConstants.end(); I != E;) { + auto *C = *I++; if (C->use_empty()) { Changed = true; C->destroyConstant(); |