Decouple dllexport/dllimport from linkage
authorNico Rieck <nico.rieck@gmail.com>
Tue, 14 Jan 2014 15:22:47 +0000 (15:22 +0000)
committerNico Rieck <nico.rieck@gmail.com>
Tue, 14 Jan 2014 15:22:47 +0000 (15:22 +0000)
commit38f68c5a2e3993a3ae51421d82e57ccca8f6ec38
tree33b1f01682f8443c419396a7368769dbcb4d1a3f
parentd05a6582daf7af4142c91576739d4a780d4a30c8
Decouple dllexport/dllimport from linkage

Representing dllexport/dllimport as distinct linkage types prevents using
these attributes on templates and inline functions.

Instead of introducing further mixed linkage types to include linkonce and
weak ODR, the old import/export linkage types are replaced with a new
separate visibility-like specifier:

  define available_externally dllimport void @f() {}
  @Var = dllexport global i32 1, align 4

Linkage for dllexported globals and functions is now equal to their linkage
without dllexport. Imported globals and functions must be either
declarations with external linkage, or definitions with
AvailableExternallyLinkage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199218 91177308-0d34-0410-b5e6-96231b3b80d8
27 files changed:
docs/BitCodeFormat.rst
docs/LangRef.rst
include/llvm-c/Core.h
include/llvm/IR/GlobalValue.h
lib/AsmParser/LLParser.cpp
lib/AsmParser/LLParser.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/ExecutionEngine/ExecutionEngine.cpp
lib/IR/AsmWriter.cpp
lib/IR/Core.cpp
lib/IR/Verifier.cpp
lib/Linker/LinkModules.cpp
lib/Target/CppBackend/CPPBackend.cpp
lib/Target/X86/X86AsmPrinter.cpp
lib/Target/X86/X86FastISel.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86Subtarget.cpp
lib/Target/XCore/XCoreAsmPrinter.cpp
lib/Transforms/IPO/Internalize.cpp
test/Bitcode/linkage-types-3.2.ll
test/CodeGen/X86/dll-linkage.ll [deleted file]
test/CodeGen/X86/dllexport-x86_64.ll [new file with mode: 0644]
test/CodeGen/X86/dllexport.ll
test/CodeGen/X86/dllimport-x86_64.ll [new file with mode: 0644]
test/CodeGen/X86/dllimport.ll [new file with mode: 0644]