Reapply part of r237975, "Fix Clang -Wmissing-override warning", except for DIContext...
[oota-llvm.git] / include / llvm / ExecutionEngine / RuntimeDyld.h
index 5723f058f72f0aa9757acc3753bfc5c99a7c9491..ac0151aa7ec1ee506312df304616bf0545958685 100644 (file)
@@ -17,6 +17,7 @@
 #include "JITSymbolFlags.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/Memory.h"
+#include "llvm/DebugInfo/DIContext.h"
 #include <memory>
 
 namespace llvm {
@@ -54,14 +55,14 @@ public:
   };
 
   /// \brief Information about the loaded object.
-  class LoadedObjectInfo {
+  class LoadedObjectInfo : public llvm::LoadedObjectInfo {
     friend class RuntimeDyldImpl;
   public:
     LoadedObjectInfo(RuntimeDyldImpl &RTDyld, unsigned BeginIdx,
                      unsigned EndIdx)
       : RTDyld(RTDyld), BeginIdx(BeginIdx), EndIdx(EndIdx) { }
 
-    virtual ~LoadedObjectInfo() {}
+    virtual ~LoadedObjectInfo() = default;
 
     virtual object::OwningBinary<object::ObjectFile>
     getObjectForDebug(const object::ObjectFile &Obj) const = 0;
@@ -75,6 +76,15 @@ public:
     unsigned BeginIdx, EndIdx;
   };
 
+  template <typename Derived> struct LoadedObjectInfoHelper : LoadedObjectInfo {
+    LoadedObjectInfoHelper(RuntimeDyldImpl &RTDyld, unsigned BeginIdx,
+                           unsigned EndIdx)
+        : LoadedObjectInfo(RTDyld, BeginIdx, EndIdx) {}
+    llvm::LoadedObjectInfo *clone() const override {
+      return new Derived(static_cast<const Derived &>(*this));
+    }
+  };
+
   /// \brief Memory Management.
   class MemoryManager {
   public: