std::vector<const char*> &,
std::string &) = 0;
virtual void getTargetTriple(const std::string &, std::string &) = 0;
+ virtual void removeModule (const std::string &InputFilename) = 0;
virtual ~LinkTimeOptimizer() = 0;
};
std::vector<const char*> &exportList,
std::string &targetTriple);
void getTargetTriple(const std::string &InputFilename, std::string &targetTriple);
+ void removeModule (const std::string &InputFilename);
private:
Module *getModule (const std::string &InputFilename);
findExternalRefs(c->getOperand(i), references, mangler);
}
+/// If Moduel with InputFilename is available then remove it.
+void
+LTO::removeModule (const std::string &InputFilename)
+{
+ NameToModuleMap::iterator pos = allModules.find(InputFilename.c_str());
+ if (pos != allModules.end()) {
+ Module *m = allModules[InputFilename.c_str()];
+ allModules.erase(pos);
+ delete m;
+ }
+}
+
/// InputFilename is a LLVM bytecode file. If Module with InputFilename is
/// available then return it. Otherwise parseInputFilename.
Module *