[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