<p dir="ltr"><br>
On May 21, 2015 7:47 PM, "Alexei Starovoitov" <<a href="mailto:alexei.starovoitov@gmail.com">alexei.starovoitov@gmail.com</a>> wrote:<br>
><br>
> This commit r237975 breaks the build with errors like:<br>
> /w/llvm/include/llvm/DebugInfo/DIContext.h:170:45: error:   overriding<br>
> ‘virtual std::unique_ptr<llvm::LoadedObjectInfo><br>
> llvm::LoadedObjectInfo::clone() const’</p>
<p dir="ltr">Is there more to this error message? It seems incomplete.</p>
<p dir="ltr">Anyone else seeing this and/or have a buildbot link? Compiler version?</p>
<p dir="ltr">><br>
> I've reverted it locally for now. Please fix it.<br>
><br>
> Thanks<br>
><br>
><br>
> On Thu, May 21, 2015 at 5:00 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
> > Author: dblaikie<br>
> > Date: Thu May 21 19:00:00 2015<br>
> > New Revision: 237975<br>
> ><br>
> > URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D237975-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=MPxscTkYVJnHr5q-Akq3bjEak4qJqiOQCnV3sCfgzts&s=jugOC1pFw-8Rk7l0Zml9exQPDrWV9bM4kBsgc5Ywh_k&e=">http://llvm.org/viewvc/llvm-project?rev=237975&view=rev</a><br>
> > Log:<br>
> > Fix Clang -Wmissing-override warning<br>
> ><br>
> > & remove the duplication by introducing a CRTP base to implement the<br>
> > clone behavior.<br>
> ><br>
> > Modified:<br>
> >     llvm/trunk/include/llvm/DebugInfo/DIContext.h<br>
> >     llvm/trunk/include/llvm/ExecutionEngine/RuntimeDyld.h<br>
> >     llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp<br>
> >     llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp<br>
> >     llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp<br>
> ><br>
> > Modified: llvm/trunk/include/llvm/DebugInfo/DIContext.h<br>
> > URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_DebugInfo_DIContext.h-3Frev-3D237975-26r1-3D237974-26r2-3D237975-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=MPxscTkYVJnHr5q-Akq3bjEak4qJqiOQCnV3sCfgzts&s=0AdC57whgqGCRzU5aX8p6Pzyyqe1DXiEmFFWaiC48MY&e=">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DIContext.h?rev=237975&r1=237974&r2=237975&view=diff</a><br>
> > ==============================================================================<br>
> > --- llvm/trunk/include/llvm/DebugInfo/DIContext.h (original)<br>
> > +++ llvm/trunk/include/llvm/DebugInfo/DIContext.h Thu May 21 19:00:00 2015<br>
> > @@ -141,8 +141,7 @@ private:<br>
> >  /// on the fly.<br>
> >  class LoadedObjectInfo {<br>
> >  public:<br>
> > -  LoadedObjectInfo() {}<br>
> > -  virtual ~LoadedObjectInfo() {}<br>
> > +  virtual ~LoadedObjectInfo() = default;<br>
> ><br>
> >    /// Obtain the Load Address of a section by Name.<br>
> >    ///<br>
> ><br>
> > Modified: llvm/trunk/include/llvm/ExecutionEngine/RuntimeDyld.h<br>
> > URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_ExecutionEngine_RuntimeDyld.h-3Frev-3D237975-26r1-3D237974-26r2-3D237975-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=MPxscTkYVJnHr5q-Akq3bjEak4qJqiOQCnV3sCfgzts&s=cOzPF9HMHMyQ3LKzwd12MAUz7ND55PxfIQz3wp82Res&e=">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/RuntimeDyld.h?rev=237975&r1=237974&r2=237975&view=diff</a><br>
> > ==============================================================================<br>
> > --- llvm/trunk/include/llvm/ExecutionEngine/RuntimeDyld.h (original)<br>
> > +++ llvm/trunk/include/llvm/ExecutionEngine/RuntimeDyld.h Thu May 21 19:00:00 2015<br>
> > @@ -62,7 +62,7 @@ public:<br>
> >                       unsigned EndIdx)<br>
> >        : RTDyld(RTDyld), BeginIdx(BeginIdx), EndIdx(EndIdx) { }<br>
> ><br>
> > -    virtual ~LoadedObjectInfo() {}<br>
> > +    virtual ~LoadedObjectInfo() = default;<br>
> ><br>
> >      virtual object::OwningBinary<object::ObjectFile><br>
> >      getObjectForDebug(const object::ObjectFile &Obj) const = 0;<br>
> > @@ -76,6 +76,15 @@ public:<br>
> >      unsigned BeginIdx, EndIdx;<br>
> >    };<br>
> ><br>
> > +  template <typename Derived> struct LoadedObjectInfoHelper : LoadedObjectInfo {<br>
> > +    LoadedObjectInfoHelper(RuntimeDyldImpl &RTDyld, unsigned BeginIdx,<br>
> > +                           unsigned EndIdx)<br>
> > +        : LoadedObjectInfo(RTDyld, BeginIdx, EndIdx) {}<br>
> > +    llvm::LoadedObjectInfo *clone() const override {<br>
> > +      return new Derived(static_cast<const Derived &>(*this));<br>
> > +    }<br>
> > +  };<br>
> > +<br>
> >    /// \brief Memory Management.<br>
> >    class MemoryManager {<br>
> >    public:<br>
> ><br>
> > Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp<br>
> > URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_RuntimeDyld_RuntimeDyldCOFF.cpp-3Frev-3D237975-26r1-3D237974-26r2-3D237975-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=MPxscTkYVJnHr5q-Akq3bjEak4qJqiOQCnV3sCfgzts&s=Y7DQmezsRKX-K2kOVO6rz09HWjsDHuS79Wxhwt6Bj7E&e=">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp?rev=237975&r1=237974&r2=237975&view=diff</a><br>
> > ==============================================================================<br>
> > --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp (original)<br>
> > +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp Thu May 21 19:00:00 2015<br>
> > @@ -24,18 +24,17 @@ using namespace llvm::object;<br>
> ><br>
> >  namespace {<br>
> ><br>
> > -class LoadedCOFFObjectInfo : public RuntimeDyld::LoadedObjectInfo {<br>
> > +class LoadedCOFFObjectInfo<br>
> > +    : public RuntimeDyld::LoadedObjectInfoHelper<LoadedCOFFObjectInfo> {<br>
> >  public:<br>
> >    LoadedCOFFObjectInfo(RuntimeDyldImpl &RTDyld, unsigned BeginIdx,<br>
> >                         unsigned EndIdx)<br>
> > -      : RuntimeDyld::LoadedObjectInfo(RTDyld, BeginIdx, EndIdx) {}<br>
> > +      : LoadedObjectInfoHelper(RTDyld, BeginIdx, EndIdx) {}<br>
> ><br>
> >    OwningBinary<ObjectFile><br>
> >    getObjectForDebug(const ObjectFile &Obj) const override {<br>
> >      return OwningBinary<ObjectFile>();<br>
> >    }<br>
> > -<br>
> > -  RuntimeDyld::LoadedObjectInfo *clone() const { return new LoadedCOFFObjectInfo(*this); }<br>
> >  };<br>
> >  }<br>
> ><br>
> ><br>
> > Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp<br>
> > URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_RuntimeDyld_RuntimeDyldELF.cpp-3Frev-3D237975-26r1-3D237974-26r2-3D237975-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=MPxscTkYVJnHr5q-Akq3bjEak4qJqiOQCnV3sCfgzts&s=j0C-0YRJ2PEWGpn2GHl6xwtELg8GHcna4_Vcawl-2_0&e=">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp?rev=237975&r1=237974&r2=237975&view=diff</a><br>
> > ==============================================================================<br>
> > --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp (original)<br>
> > +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp Thu May 21 19:00:00 2015<br>
> > @@ -104,16 +104,15 @@ void DyldELFObject<ELFT>::updateSymbolAd<br>
> >    sym->st_value = static_cast<addr_type>(Addr);<br>
> >  }<br>
> ><br>
> > -class LoadedELFObjectInfo : public RuntimeDyld::LoadedObjectInfo {<br>
> > +class LoadedELFObjectInfo<br>
> > +    : public RuntimeDyld::LoadedObjectInfoHelper<LoadedELFObjectInfo> {<br>
> >  public:<br>
> >    LoadedELFObjectInfo(RuntimeDyldImpl &RTDyld, unsigned BeginIdx,<br>
> >                        unsigned EndIdx)<br>
> > -    : RuntimeDyld::LoadedObjectInfo(RTDyld, BeginIdx, EndIdx) {}<br>
> > +      : LoadedObjectInfoHelper(RTDyld, BeginIdx, EndIdx) {}<br>
> ><br>
> >    OwningBinary<ObjectFile><br>
> >    getObjectForDebug(const ObjectFile &Obj) const override;<br>
> > -<br>
> > -  RuntimeDyld::LoadedObjectInfo *clone() const { return new LoadedELFObjectInfo(*this); }<br>
> >  };<br>
> ><br>
> >  template <typename ELFT><br>
> ><br>
> > Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp<br>
> > URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_RuntimeDyld_RuntimeDyldMachO.cpp-3Frev-3D237975-26r1-3D237974-26r2-3D237975-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=MPxscTkYVJnHr5q-Akq3bjEak4qJqiOQCnV3sCfgzts&s=S8_dFyc9ZGgyD2WW20qLQEYe3YiGo7wGAs52FgaetKY&e=">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp?rev=237975&r1=237974&r2=237975&view=diff</a><br>
> > ==============================================================================<br>
> > --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp (original)<br>
> > +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp Thu May 21 19:00:00 2015<br>
> > @@ -26,18 +26,17 @@ using namespace llvm::object;<br>
> ><br>
> >  namespace {<br>
> ><br>
> > -class LoadedMachOObjectInfo : public RuntimeDyld::LoadedObjectInfo {<br>
> > +class LoadedMachOObjectInfo<br>
> > +    : public RuntimeDyld::LoadedObjectInfoHelper<LoadedMachOObjectInfo> {<br>
> >  public:<br>
> >    LoadedMachOObjectInfo(RuntimeDyldImpl &RTDyld, unsigned BeginIdx,<br>
> >                          unsigned EndIdx)<br>
> > -    : RuntimeDyld::LoadedObjectInfo(RTDyld, BeginIdx, EndIdx) {}<br>
> > +      : LoadedObjectInfoHelper(RTDyld, BeginIdx, EndIdx) {}<br>
> ><br>
> >    OwningBinary<ObjectFile><br>
> >    getObjectForDebug(const ObjectFile &Obj) const override {<br>
> >      return OwningBinary<ObjectFile>();<br>
> >    }<br>
> > -<br>
> > -  RuntimeDyld::LoadedObjectInfo *clone() const { return new LoadedMachOObjectInfo(*this); }<br>
> >  };<br>
> ><br>
> >  }<br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > llvm-commits mailing list<br>
> > <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> > <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</p>