Decouple dllexport/dllimport from linkage

Description

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.

Details

Committed
nrieckJan 14 2014, 7:22 AM
Parents
rL199217: AVX-512: optimized scalar compare patterns
Branches
Unknown
Tags
Unknown