]> granicus.if.org Git - clang/commit
CodeGen: fix runtime function dll storage
authorSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 15 Dec 2016 06:59:05 +0000 (06:59 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 15 Dec 2016 06:59:05 +0000 (06:59 +0000)
commite13e0e403d22d8abc1105a3ae841eb64de64526e
treeafe808a9e158b75a0e90b8e15c45cdfc27778895
parent676b68f0681fa4bc129cc6d99d09956d5189e6c1
CodeGen: fix runtime function dll storage

Properly attribute DLL storage to runtime functions.  When generating the
runtime function, scan for an existing declaration which may provide an explicit
declaration (local storage) or a DLL import or export storage from the user.
Honour that if available.  Otherwise, if building with a local visibility of the
public or standard namespaces (-flto-visibility-public-std), give the symbols
local storage (it indicates a /MT[d] link, so static runtime).  Otherwise,
assume that the link is dynamic, and give the runtime function dllimport
storage.

This allows for implementations to get the correct storage as long as they are
properly declared, the user to override the import storage, and in case no
explicit storage is given, use of the import storage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289776 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGDeclCXX.cpp
lib/CodeGen/CGException.cpp
lib/CodeGen/CGObjC.cpp
lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h
lib/CodeGen/ItaniumCXXABI.cpp
lib/CodeGen/MicrosoftCXXABI.cpp
test/CodeGenCXX/runtime-dllstorage.cpp [new file with mode: 0644]