[LLVMdev] Subtle breaking change in LLVM 2.7 to 2.8 transition

Ben Karel eschew at gmail.com
Sun Sep 26 00:26:21 PDT 2010


On Mon, Sep 13, 2010 at 5:17 AM, Duncan Sands <baldrick at free.fr> wrote:

> Hi Ben,
>
> > I updated my from LLVM 2.7 to 2.8/trunk tonight and was mystified as to
> why my
> > GC plugin silently stopped working.
> >
> > The problem was that the signature of the virtual function
> > GCMetadataPrinter::finishAssembly (and beginAssembly) changed.
> >
> > This change would probably be an excellent candidate for the "gotchas"
> section
> > of the 2.8 release notes.
>
> can you please send some text appropriate for the release notes that
> explains
> the problem.
>
> Thanks a lot,
>
> Duncan.


I must admit this is a problem that -Woverloaded-virtual would have caught.
I ended up compiling my plugin statically without that flag, because my
project is mixed C and C++, and -Woverloaded-virtual can't be used with C. I
think it still might be worthwhile to include a brief note documenting the
change.

Anyways, how's this for a reasonably short blurb:



The signature of the GCMetadataPrinter::finishAssembly virtual function
changed: the raw_ostream and MCAsmInfo arguments were dropped. GC plugins
which compute stack maps must be updated to avoid having the old definition
overload the new signature.



Cheers,
-- Ben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100926/fe4ebeda/attachment.html>


More information about the llvm-dev mailing list