[PATCH] Allow dllimport/dllexport on inline functions and get the linkage right

Reid Kleckner rnk at google.com
Wed May 14 22:12:13 PDT 2014


On Wed, May 14, 2014 at 8:58 PM, David Majnemer <david.majnemer at gmail.com>wrote:

> I'm a bit concerned with moving the DLLImport/DLLExport related linkage
> calculation into Sema out of CodeGen.  I have a feeling that this will
> trigger warn_static_local_in_extern_inline when a static local variable
> inside of a dllimport'd function.
>
> Considering that other things like VTables and RTTI don't rely on the
> GVALinakge mechanism and will need the ability to "upgrade" some linkage to
> a DLLImport/DLLExport friendly linkage, I think I'd rather see a
> DLLImport/DLLExport handled via a function which takes an arbitrary
> llvm::GlobalVariable linkage and a Decl and figures out what the final
> linkage should be.
>
> This kind of upgrading is common inside of CodeGen,
> GetAddrOfGlobalTemporary is a notable example of this.]
>

IMO the linkage at the AST level should reflect what the user wrote, and
the user used dllexport plus inline, giving GVA_StrongODR.  This is useful
information for other Clang-based tools.  I think CodeGen will always have
to munge GlobalValue linkages for entities that don't exist in the user's
program, for example, vtables and global reference temporaries.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140514/c9a45cfc/attachment.html>


More information about the cfe-commits mailing list