[all-commits] [llvm/llvm-project] 4e2efa: [llvm] export private symbols needed by unittests ...

Andrew Rogers via All-commits all-commits at lists.llvm.org
Thu Jul 10 08:20:30 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4e2efa55c6e5ae5a6b56a2381efebe62af6b082b
      https://github.com/llvm/llvm-project/commit/4e2efa55c6e5ae5a6b56a2381efebe62af6b082b
  Author: Andrew Rogers <andrurogerz at gmail.com>
  Date:   2025-07-10 (Thu, 10 Jul 2025)

  Changed paths:
    M llvm/include/llvm/Support/Compiler.h
    M llvm/lib/CodeGen/AsmPrinter/DIEHash.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h
    M llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h
    M llvm/lib/CodeGen/MLRegAllocEvictAdvisor.h
    M llvm/lib/CodeGen/RegAllocScore.h
    M llvm/lib/FileCheck/FileCheckImpl.h
    M llvm/lib/Transforms/Vectorize/VPlan.h
    M llvm/lib/Transforms/Vectorize/VPlanDominatorTree.h
    M llvm/lib/Transforms/Vectorize/VPlanSLP.h
    M llvm/lib/Transforms/Vectorize/VPlanTransforms.h
    M llvm/lib/Transforms/Vectorize/VPlanValue.h
    M llvm/lib/Transforms/Vectorize/VPlanVerifier.h

  Log Message:
  -----------
  [llvm] export private symbols needed by unittests (#145767)

## Purpose
Export a small number of private LLVM symbols so that unit tests can
still build/run when LLVM is built as a Windows DLL or a shared library
with default hidden symbol visibility.

## Background
The effort to build LLVM as a WIndows DLL is tracked in #109483.
Additional context is provided in [this
discourse](https://discourse.llvm.org/t/psa-annotating-llvm-public-interface/85307).

Some LLVM unit tests use internal/private symbols that are not part of
LLVM's public interface. When building LLVM as a DLL or shared library
with default hidden symbol visibility, the symbols are not available
when the unit test links against the DLL or shared library.

This problem can be solved in one of two ways:
1. Export the private symbols from the DLL.
2. Link the unit tests against the intermediate static libraries instead
of the final LLVM DLL.

This PR applies option 1. Based on the discussion of option 2 in
#145448, this option is preferable.

## Overview
* Adds a new `LLVM_ABI_FOR_TEST` export macro, which is currently just
an alias for `LLVM_ABI`.
* Annotates the sub-set of symbols under `llvm/lib` that are required to
get unit tests building using the new macro.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list