simplify trivial function
[oota-llvm.git] / include / llvm / LinkTimeOptimizer.h
index 76a7af66da0c583ff5ab487923b82ab969ed0932..654623adff85a5bc289d49e3ec488477d8aed441 100644 (file)
@@ -75,10 +75,28 @@ namespace llvm {
       return (strcmp(left, right) == 0); 
     }
   };
-  
+
+  /// This is abstract class to facilitate dlopen() interface.
+  /// See LTO below for more info.
+  class LinkTimeOptimizer {
+  public:
+    typedef hash_map<const char*, LLVMSymbol*, hash<const char*>, 
+                     string_compare> NameToSymbolMap;
+    typedef hash_map<const char*, Module*, hash<const char*>, 
+                     string_compare> NameToModuleMap;
+    virtual enum LTOStatus readLLVMObjectFile(const std::string &,
+                                              NameToSymbolMap &,
+                                              std::set<std::string> &) = 0;
+    virtual enum LTOStatus optimizeModules(const std::string &,
+                                   std::vector<const char*> &,
+                                   std::string &) = 0;
+    virtual void getTargetTriple(const std::string &, std::string &) = 0;
+    virtual ~LinkTimeOptimizer() = 0;
+  };
+
   /// This is the main link time optimization class. It exposes simple API
   /// to perform link time optimization using LLVM intermodular optimizer.
-  class LinkTimeOptimizer {
+  class LTO : public LinkTimeOptimizer {
 
   public:
     typedef hash_map<const char*, LLVMSymbol*, hash<const char*>, 
@@ -92,6 +110,7 @@ namespace llvm {
     enum LTOStatus optimizeModules(const std::string &OutputFilename,
                                    std::vector<const char*> &exportList,
                                    std::string &targetTriple);
+    void getTargetTriple(const std::string &InputFilename, std::string &targetTriple);
 
   private:
     Module *getModule (const std::string &InputFilename);