[all-commits] [llvm/llvm-project] 437ccf: [windows-itanium] Propagate DLL storage class to I...
bd1976bris via All-commits
all-commits at lists.llvm.org
Wed Nov 23 16:24:39 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 437ccf5af9c2aec915a68a164a95d506fbac2324
https://github.com/llvm/llvm-project/commit/437ccf5af9c2aec915a68a164a95d506fbac2324
Author: Ben Dunbobbin <Ben.Dunbobbin at sony.com>
Date: 2022-11-24 (Thu, 24 Nov 2022)
Changed paths:
M clang/lib/CodeGen/ItaniumCXXABI.cpp
A clang/test/CodeGenCXX/windows-itanium-init-guard.cpp
Log Message:
-----------
[windows-itanium] Propagate DLL storage class to Initialisation Guard Variables
Initialisation Guard Variables should take their DLL storage class
from the guarded variable. Otherwise, there will be a link error if
the compiler inlines a reference to the guard variable into another
module but that guard variable is not exported from the defining
module.
This is required for platforms such as PlayStation and
windows-itanium, that are aiming for source compatibility with MSVC
w.r.t. dllimport/export annotations, given Clang's existing design
which allows for inlining of a dllimport function as long as all the
variables/functions referenced are also marked dllimport.
A similar change exists for the MSVC ABI:
https://reviews.llvm.org/D4136.
I have added a run test for windows-itanium for this issue to the
build recipe: https://reviews.llvm.org/D88124.
Differential Revision: https://reviews.llvm.org/D138463
More information about the All-commits
mailing list