#include "llvm/Function.h"
#include "llvm/GlobalVariable.h"
-#include "llvm/ADT/SetVector.h"
#include "llvm/Support/DataTypes.h"
namespace llvm {
typedef iplist<Function> FunctionListType;
/// The type for the list of dependent libraries.
- typedef SetVector<std::string> LibraryListType;
+ typedef std::vector<std::string> LibraryListType;
/// The Global Variable iterator.
typedef GlobalListType::iterator global_iterator;
/// @brief Returns the number of items in the list of libraries.
inline size_t lib_size() const { return LibraryList.size(); }
/// @brief Add a library to the list of dependent libraries
- inline void addLibrary(const std::string& Lib){ LibraryList.insert(Lib); }
+ void addLibrary(const std::string& Lib);
/// @brief Remove a library from the list of dependent libraries
- inline void removeLibrary(const std::string& Lib) { LibraryList.remove(Lib); }
+ void removeLibrary(const std::string& Lib);
/// @brief Get all the libraries
inline const LibraryListType& getLibraries() const { return LibraryList; }
#include "llvm/Pass.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/SetOperations.h"
-#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Analysis/Dominators.h"
I->dropAllReferences();
}
+void Module::addLibrary(const std::string& Lib) {
+ for (Module::lib_iterator I = lib_begin(), E = lib_end(); I != E; ++I)
+ if (*I == Lib)
+ return;
+ LibraryList.push_back(Lib);
+}
+
+void Module::removeLibrary(const std::string& Lib) {
+ LibraryListType::iterator I = LibraryList.begin();
+ LibraryListType::iterator E = LibraryList.end();
+ for (;I != E; ++I)
+ if (*I == Lib) {
+ LibraryList.erase(I);
+ return;
+ }
+}
+