[all-commits] [llvm/llvm-project] 592e93: [clang-repl] Fix REPL_EXTERNAL_VISIBILITY and buil...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Sun May 28 03:20:21 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 592e935e115ffb451eb9b782376711dab6558fe0
      https://github.com/llvm/llvm-project/commit/592e935e115ffb451eb9b782376711dab6558fe0
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-05-28 (Sun, 28 May 2023)

  Changed paths:
    M clang/include/clang/Interpreter/Value.h
    M clang/tools/clang-shlib/CMakeLists.txt

  Log Message:
  -----------
  [clang-repl] Fix REPL_EXTERNAL_VISIBILITY and building libclang-cpp.dll for MinGW configurations

This fixes two issues that are observed after
5111286f06e1e10f24745007a45a830760f1790c:

For builds with GCC with LLVM_LINK_LLVM_DYLIB=ON, we previously got
build errors, as libclang-cpp.dll suddenly only contained the
functions that were marked dllexport via REPL_EXTERNAL_VISIBILITY,
instead of all symbols as expected.

For MinGW builds with Clang, building previously succeeded (as it
used either the __attribute__((visibility("default"))) annotation or
nothing at all), and the functions were exported from libclang-cpp.dll
if that was built, but the unit test failed (as neither of those cases
made the functions exported from an EXE).

Don't use the visibility attributes on MinGW targets for these purposes;
setting default visibility only makes a difference if building with
e.g. -fvisibility=hidden, but it doesn't make the symbols exported
from an EXE.

Differential Revision: https://reviews.llvm.org/D151620


  Commit: 684facbb43ea0eccc6a579d2373781b422522d2d
      https://github.com/llvm/llvm-project/commit/684facbb43ea0eccc6a579d2373781b422522d2d
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-05-28 (Sun, 28 May 2023)

  Changed paths:
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align.replace.indirect.pass.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align_nothrow.replace.indirect.pass.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new.size_nothrow.replace.indirect.pass.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.size_align_nothrow.replace.indirect.pass.cpp

  Log Message:
  -----------
  [libcxx] [test] Fix the new alloc tests for Windows

Use ASSERT_WITH_OPERATOR_NEW_FALLBACKS where relevant to waive
the known cases where operator new isn't overridden as expected,
in MinGW DLL configurations.

Clarify the reason for why the fallback in
new.delete.array/new.size_align_nothrow.replace.indirect doesn't
work as expected, which can be considered a vcruntime bug.

Differential Revision: https://reviews.llvm.org/D151304


Compare: https://github.com/llvm/llvm-project/compare/9efa4cdb5169...684facbb43ea


More information about the All-commits mailing list