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.