[llvm] annotate interfaces in llvm/Analysis for DLL export #136623
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
This patch is one in a series of code-mods that annotate LLVM’s public interface for export. This patch annotates the
llvm/Analysis
library. These annotations currently have no meaningful impact on the LLVM build; however, they are a prerequisite to support an LLVM Windows DLL (shared library) build.Background
This effort is tracked in #109483. Additional context is provided in this discourse, and documentation for
LLVM_ABI
and related annotations is found in the LLVM repo here.The bulk of these changes were generated automatically using the Interface Definition Scanner (IDS) tool, followed formatting with
git clang-format
.The following manual adjustments were also applied after running IDS on Linux:
#include "llvm/Support/Compiler.h"
to files where it was not auto-added by IDS due to no pre-existing block of include statements.LLVM_ABI
to Windows-only code (auto generated with IDS on Windows)LLVM_ABI
at the class levelLLVM_TEMPLATE_ABI
andLLVM_EXPORT_TEMPLATE
to exported instantiated templatesLLVM_ABI_FRIEND
to a small number offriend
function declarationsLLVM_ABI
to a subset of private class methods and fields that require exportLLVM_ABI
to a small number of symbols that require export but are not declared in headersLLVM_ABI
functions defined via X-macroValidation
Local builds and tests to validate cross-platform compatibility. This included llvm, clang, and lldb on the following configurations: