diff options
author | Andrew Rogers <andrurogerz@gmail.com> | 2025-06-24 16:23:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-24 16:23:00 -0700 |
commit | a451fff1ad43fe2f49fb8029055baa31d504487c (patch) | |
tree | b51c52ef913a673fb787399eda5e56280d4c924b /flang/lib/Frontend | |
parent | e93a0d0d1ed790173e23247fa2833cdac30b8268 (diff) | |
download | llvm-a451fff1ad43fe2f49fb8029055baa31d504487c.zip llvm-a451fff1ad43fe2f49fb8029055baa31d504487c.tar.gz llvm-a451fff1ad43fe2f49fb8029055baa31d504487c.tar.bz2 |
[llvm] fix extern cl::opt definitions for DLL export (#145374)
## Purpose
This patch is one in a series of code-mods that annotate LLVM’s public
interface for export. This patch ensures a few `cl::opt` declarations
are properly annotated with `LLVM_ABI`. The 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](https://discourse.llvm.org/t/psa-annotating-llvm-public-interface/85307),
and documentation for `LLVM_ABI` and related annotations is found in the
LLVM repo
[here](https://github.com/llvm/llvm-project/blob/main/llvm/docs/InterfaceExportAnnotations.rst).
## Overview
- Remove local `extern` declarations of `llvm::PrintPipelinePasses`
because it is already correctly declared with an `LLVM_ABI` annotation
in `llvm\Passes\PassBuilder.h`. Leaving these declarations results in a
gcc compile warning unless they are also annotated with `LLVM_ABI`.
- Similarly, remove local `extern` declarations of
`ProfileSummaryCutoffHot` and `UseContextLessSummary` from
`llvm/tools/llvm-profgen/ProfileGenerator.cpp` since they are declared
with `LLVM_ABI` in `llvm\ProfileData\ProfileCommon.h`.
- Explicitly annotate the extern declaration of `ProfileCorrelate` in
`clang/lib/CodeGen/BackendUtil.cpp` since it is not declared in a
header. The definition of `ProfileCorrelate` in
`llvm\lib\Transforms\Instrumentation\InstrProfiling.cpp` is already
annotated with `LLVM_ABI`.
## Validation
Local builds and tests to validate cross-platform compatibility. This
included llvm, clang, and lldb on the following configurations:
- Windows with MSVC
- Windows with Clang
- Linux with GCC
- Linux with Clang
- Darwin with Clang
Diffstat (limited to 'flang/lib/Frontend')
-rw-r--r-- | flang/lib/Frontend/FrontendActions.cpp | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp index d684eeb..bf15def 100644 --- a/flang/lib/Frontend/FrontendActions.cpp +++ b/flang/lib/Frontend/FrontendActions.cpp @@ -74,10 +74,6 @@ #include <memory> #include <system_error> -namespace llvm { -extern cl::opt<bool> PrintPipelinePasses; -} // namespace llvm - using namespace Fortran::frontend; constexpr llvm::StringLiteral timingIdParse = "Parse"; |