Skip to content

Commit 8c04565

Browse files
committed
Merge remote-tracking branch 'origin/main' into until
2 parents 9f0c2aa + d7784a6 commit 8c04565

File tree

1,466 files changed

+45145
-21363
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,466 files changed

+45145
-21363
lines changed

.github/new-prs-labeler.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ clang:static analyzer:
499499
- clang/tools/scan-build/**
500500
- clang/utils/analyzer/**
501501
- clang/docs/analyzer/**
502+
- clang/test/Analysis/**
502503

503504
pgo:
504505
- llvm/lib/Transforms/Instrumentation/CGProfile.cpp

.github/workflows/libcxx-build-and-test.yaml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
stage1:
3838
if: github.repository_owner == 'llvm'
3939
runs-on: libcxx-self-hosted-linux
40-
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
40+
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
4141
continue-on-error: false
4242
strategy:
4343
fail-fast: false
@@ -48,8 +48,8 @@ jobs:
4848
'generic-cxx26',
4949
'generic-modules'
5050
]
51-
cc: [ 'clang-20' ]
52-
cxx: [ 'clang++-20' ]
51+
cc: [ 'clang-21' ]
52+
cxx: [ 'clang++-21' ]
5353
include:
5454
- config: 'generic-gcc'
5555
cc: 'gcc-14'
@@ -75,7 +75,7 @@ jobs:
7575
stage2:
7676
if: github.repository_owner == 'llvm'
7777
runs-on: libcxx-self-hosted-linux
78-
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
78+
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
7979
needs: [ stage1 ]
8080
continue-on-error: false
8181
strategy:
@@ -88,18 +88,22 @@ jobs:
8888
'generic-cxx20',
8989
'generic-cxx23'
9090
]
91-
cc: [ 'clang-20' ]
92-
cxx: [ 'clang++-20' ]
91+
cc: [ 'clang-21' ]
92+
cxx: [ 'clang++-21' ]
9393
include:
9494
- config: 'generic-gcc-cxx11'
9595
cc: 'gcc-14'
9696
cxx: 'g++-14'
97-
- config: 'generic-cxx23'
98-
cc: 'clang-18'
99-
cxx: 'clang++-18'
97+
- config: 'generic-cxx26'
98+
cc: 'clang-20'
99+
cxx: 'clang++-20'
100100
- config: 'generic-cxx26'
101101
cc: 'clang-19'
102102
cxx: 'clang++-19'
103+
# Release transition
104+
- config: 'generic-cxx23'
105+
cc: 'clang-18'
106+
cxx: 'clang++-18'
103107
steps:
104108
- uses: actions/checkout@v4
105109
- name: ${{ matrix.config }}
@@ -163,14 +167,14 @@ jobs:
163167
- config: 'generic-msan'
164168
machine: libcxx-self-hosted-linux
165169
runs-on: ${{ matrix.machine }}
166-
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
170+
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
167171
steps:
168172
- uses: actions/checkout@v4
169173
- name: ${{ matrix.config }}
170174
run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
171175
env:
172-
CC: clang-20
173-
CXX: clang++-20
176+
CC: clang-21
177+
CXX: clang++-21
174178
- uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
175179
if: always()
176180
with:

.github/workflows/release-binaries.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,11 @@ jobs:
138138
arches=arm64
139139
else
140140
arches=x86_64
141+
# Disable Flang builds on macOS x86_64. The FortranLower library takes
142+
# 2-3 hours to build on macOS, much slower than on Linux.
143+
# The long build time causes the release build to time out on x86_64,
144+
# so we need to disable flang there.
145+
target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_PROJECTS='clang;lld;lldb;clang-tools-extra;bolt;polly;mlir'"
141146
fi
142147
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_BOOTSTRAP_DARWIN_osx_ARCHS=$arches -DBOOTSTRAP_BOOTSTRAP_DARWIN_osx_BUILTIN_ARCHS=$arches"
143148
fi

bolt/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,11 @@ endif()
202202

203203
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc.in
204204
${CMAKE_CURRENT_BINARY_DIR}/include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc @ONLY)
205+
206+
set(BOLT_ENUM_TARGETS "")
207+
foreach(t ${BOLT_TARGETS_TO_BUILD})
208+
set(BOLT_ENUM_TARGETS "${BOLT_ENUM_TARGETS}BOLT_TARGET(${t})\n")
209+
endforeach(t)
210+
211+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/bolt/Core/TargetConfig.def.in
212+
${CMAKE_CURRENT_BINARY_DIR}/include/bolt/Core/TargetConfig.def @ONLY)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//===-- TargetConfig.def.in - Information about available targets ---------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
//
9+
// This file is configured by the build system to define the available bolt
10+
// targets.
11+
//
12+
// The variant of this file not ending with .in has been autogenerated by the
13+
// LLVM build. Do not edit!
14+
//
15+
//===----------------------------------------------------------------------===//
16+
17+
#ifndef BOLT_TARGET
18+
# error Please define the macro BOLT_TARGET(TargetName)
19+
#endif
20+
21+
@BOLT_ENUM_TARGETS@
22+
23+
#undef BOLT_TARGET

bolt/lib/RuntimeLibs/InstrumentationRuntimeLibrary.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ void InstrumentationRuntimeLibrary::link(
219219
}
220220
outs() << "BOLT-INFO: output linked against instrumentation runtime "
221221
"library, lib entry point is 0x"
222-
<< Twine::utohexstr(RuntimeFiniAddress) << "\n";
222+
<< Twine::utohexstr(RuntimeStartAddress) << "\n";
223223
outs() << "BOLT-INFO: clear procedure is 0x"
224224
<< Twine::utohexstr(
225225
Linker.lookupSymbol("__bolt_instr_clear_counters").value_or(0))

bolt/tools/binary-analysis/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(LLVM_LINK_COMPONENTS
2-
${LLVM_TARGETS_TO_BUILD}
2+
${BOLT_TARGETS_TO_BUILD}
33
MC
44
Object
55
Support

bolt/tools/binary-analysis/binary-analysis.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,15 @@ int main(int argc, char **argv) {
8888
llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
8989

9090
// Initialize targets and assembly printers/parsers.
91-
llvm::InitializeAllTargetInfos();
92-
llvm::InitializeAllTargetMCs();
93-
llvm::InitializeAllAsmParsers();
94-
llvm::InitializeAllDisassemblers();
95-
96-
llvm::InitializeAllTargets();
97-
llvm::InitializeAllAsmPrinters();
91+
#define BOLT_TARGET(target) \
92+
LLVMInitialize##target##TargetInfo(); \
93+
LLVMInitialize##target##TargetMC(); \
94+
LLVMInitialize##target##AsmParser(); \
95+
LLVMInitialize##target##Disassembler(); \
96+
LLVMInitialize##target##Target(); \
97+
LLVMInitialize##target##AsmPrinter();
98+
99+
#include "bolt/Core/TargetConfig.def"
98100

99101
ParseCommandLine(argc, argv);
100102

bolt/tools/driver/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(LLVM_LINK_COMPONENTS
2-
${LLVM_TARGETS_TO_BUILD}
2+
${BOLT_TARGETS_TO_BUILD}
33
MC
44
Object
55
Support

bolt/tools/driver/llvm-bolt.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,15 @@ int main(int argc, char **argv) {
183183
std::string ToolPath = llvm::sys::fs::getMainExecutable(argv[0], nullptr);
184184

185185
// Initialize targets and assembly printers/parsers.
186-
llvm::InitializeAllTargetInfos();
187-
llvm::InitializeAllTargetMCs();
188-
llvm::InitializeAllAsmParsers();
189-
llvm::InitializeAllDisassemblers();
190-
191-
llvm::InitializeAllTargets();
192-
llvm::InitializeAllAsmPrinters();
186+
#define BOLT_TARGET(target) \
187+
LLVMInitialize##target##TargetInfo(); \
188+
LLVMInitialize##target##TargetMC(); \
189+
LLVMInitialize##target##AsmParser(); \
190+
LLVMInitialize##target##Disassembler(); \
191+
LLVMInitialize##target##Target(); \
192+
LLVMInitialize##target##AsmPrinter();
193+
194+
#include "bolt/Core/TargetConfig.def"
193195

194196
ToolName = argv[0];
195197

bolt/tools/heatmap/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(LLVM_LINK_COMPONENTS
2-
${LLVM_TARGETS_TO_BUILD}
2+
${BOLT_TARGETS_TO_BUILD}
33
MC
44
Object
55
Support

bolt/tools/heatmap/heatmap.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,15 @@ int main(int argc, char **argv) {
7676
opts::OutputFilename = "-";
7777

7878
// Initialize targets and assembly printers/parsers.
79-
llvm::InitializeAllTargetInfos();
80-
llvm::InitializeAllTargetMCs();
81-
llvm::InitializeAllAsmParsers();
82-
llvm::InitializeAllDisassemblers();
83-
84-
llvm::InitializeAllTargets();
85-
llvm::InitializeAllAsmPrinters();
79+
#define BOLT_TARGET(target) \
80+
LLVMInitialize##target##TargetInfo(); \
81+
LLVMInitialize##target##TargetMC(); \
82+
LLVMInitialize##target##AsmParser(); \
83+
LLVMInitialize##target##Disassembler(); \
84+
LLVMInitialize##target##Target(); \
85+
LLVMInitialize##target##AsmPrinter();
86+
87+
#include "bolt/Core/TargetConfig.def"
8688

8789
ToolName = argv[0];
8890
std::string ToolPath = GetExecutablePath(argv[0]);

bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(LLVM_LINK_COMPONENTS
2-
${LLVM_TARGETS_TO_BUILD}
2+
${BOLT_TARGETS_TO_BUILD}
33
)
44

55
add_llvm_fuzzer(llvm-bolt-fuzzer

bolt/tools/llvm-bolt-fuzzer/llvm-bolt-fuzzer.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,16 @@ extern "C" int LLVMFuzzerTestOneInput(const char *Data, size_t Size) {
5858

5959
extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc,
6060
char ***argv) {
61-
llvm::InitializeAllTargetInfos();
62-
llvm::InitializeAllTargetMCs();
63-
llvm::InitializeAllAsmParsers();
64-
llvm::InitializeAllDisassemblers();
61+
// Initialize targets and assembly printers/parsers.
62+
#define BOLT_TARGET(target) \
63+
LLVMInitialize##target##TargetInfo(); \
64+
LLVMInitialize##target##TargetMC(); \
65+
LLVMInitialize##target##AsmParser(); \
66+
LLVMInitialize##target##Disassembler(); \
67+
LLVMInitialize##target##Target(); \
68+
LLVMInitialize##target##AsmPrinter();
6569

66-
llvm::InitializeAllTargets();
67-
llvm::InitializeAllAsmPrinters();
70+
#include "bolt/Core/TargetConfig.def"
6871

6972
return 0;
7073
}

bolt/unittests/Core/BinaryContext.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,15 @@ struct BinaryContextTester : public testing::TestWithParam<Triple::ArchType> {
2727

2828
protected:
2929
void initalizeLLVM() {
30-
llvm::InitializeAllTargetInfos();
31-
llvm::InitializeAllTargetMCs();
32-
llvm::InitializeAllAsmParsers();
33-
llvm::InitializeAllDisassemblers();
34-
llvm::InitializeAllTargets();
35-
llvm::InitializeAllAsmPrinters();
30+
#define BOLT_TARGET(target) \
31+
LLVMInitialize##target##TargetInfo(); \
32+
LLVMInitialize##target##TargetMC(); \
33+
LLVMInitialize##target##AsmParser(); \
34+
LLVMInitialize##target##Disassembler(); \
35+
LLVMInitialize##target##Target(); \
36+
LLVMInitialize##target##AsmPrinter();
37+
38+
#include "bolt/Core/TargetConfig.def"
3639
}
3740

3841
void prepareElf() {

bolt/unittests/Core/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ set(LLVM_LINK_COMPONENTS
22
DebugInfoDWARF
33
Object
44
MC
5-
${LLVM_TARGETS_TO_BUILD}
5+
${BOLT_TARGETS_TO_BUILD}
66
)
77

88
add_bolt_unittest(CoreTests

bolt/unittests/Core/MCPlusBuilder.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,15 @@ struct MCPlusBuilderTester : public testing::TestWithParam<Triple::ArchType> {
3737

3838
protected:
3939
void initalizeLLVM() {
40-
llvm::InitializeAllTargetInfos();
41-
llvm::InitializeAllTargetMCs();
42-
llvm::InitializeAllAsmParsers();
43-
llvm::InitializeAllDisassemblers();
44-
llvm::InitializeAllTargets();
45-
llvm::InitializeAllAsmPrinters();
40+
#define BOLT_TARGET(target) \
41+
LLVMInitialize##target##TargetInfo(); \
42+
LLVMInitialize##target##TargetMC(); \
43+
LLVMInitialize##target##AsmParser(); \
44+
LLVMInitialize##target##Disassembler(); \
45+
LLVMInitialize##target##Target(); \
46+
LLVMInitialize##target##AsmPrinter();
47+
48+
#include "bolt/Core/TargetConfig.def"
4649
}
4750

4851
void prepareElf() {

bolt/unittests/Core/MemoryMaps.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,15 @@ struct MemoryMapsTester : public testing::TestWithParam<Triple::ArchType> {
3838

3939
protected:
4040
void initalizeLLVM() {
41-
llvm::InitializeAllTargetInfos();
42-
llvm::InitializeAllTargetMCs();
43-
llvm::InitializeAllAsmParsers();
44-
llvm::InitializeAllDisassemblers();
45-
llvm::InitializeAllTargets();
46-
llvm::InitializeAllAsmPrinters();
41+
#define BOLT_TARGET(target) \
42+
LLVMInitialize##target##TargetInfo(); \
43+
LLVMInitialize##target##TargetMC(); \
44+
LLVMInitialize##target##AsmParser(); \
45+
LLVMInitialize##target##Disassembler(); \
46+
LLVMInitialize##target##Target(); \
47+
LLVMInitialize##target##AsmPrinter();
48+
49+
#include "bolt/Core/TargetConfig.def"
4750
}
4851

4952
void prepareElf() {

clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
#include "ConstCorrectnessCheck.h"
1010
#include "../utils/FixItHintUtils.h"
11+
#include "../utils/Matchers.h"
12+
#include "../utils/OptionsUtils.h"
1113
#include "clang/AST/ASTContext.h"
1214
#include "clang/ASTMatchers/ASTMatchFinder.h"
1315
#include "clang/ASTMatchers/ASTMatchers.h"
@@ -41,7 +43,9 @@ ConstCorrectnessCheck::ConstCorrectnessCheck(StringRef Name,
4143
TransformValues(Options.get("TransformValues", true)),
4244
TransformReferences(Options.get("TransformReferences", true)),
4345
TransformPointersAsValues(
44-
Options.get("TransformPointersAsValues", false)) {
46+
Options.get("TransformPointersAsValues", false)),
47+
AllowedTypes(
48+
utils::options::parseStringList(Options.get("AllowedTypes", ""))) {
4549
if (AnalyzeValues == false && AnalyzeReferences == false)
4650
this->configurationDiag(
4751
"The check 'misc-const-correctness' will not "
@@ -57,6 +61,8 @@ void ConstCorrectnessCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
5761
Options.store(Opts, "TransformValues", TransformValues);
5862
Options.store(Opts, "TransformReferences", TransformReferences);
5963
Options.store(Opts, "TransformPointersAsValues", TransformPointersAsValues);
64+
Options.store(Opts, "AllowedTypes",
65+
utils::options::serializeStringList(AllowedTypes));
6066
}
6167

6268
void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) {
@@ -73,6 +79,12 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) {
7379
hasType(referenceType(pointee(hasCanonicalType(templateTypeParmType())))),
7480
hasType(referenceType(pointee(substTemplateTypeParmType()))));
7581

82+
const auto AllowedType = hasType(qualType(anyOf(
83+
hasDeclaration(namedDecl(matchers::matchesAnyListedName(AllowedTypes))),
84+
references(namedDecl(matchers::matchesAnyListedName(AllowedTypes))),
85+
pointerType(pointee(hasDeclaration(
86+
namedDecl(matchers::matchesAnyListedName(AllowedTypes))))))));
87+
7688
const auto AutoTemplateType = varDecl(
7789
anyOf(hasType(autoType()), hasType(referenceType(pointee(autoType()))),
7890
hasType(pointerType(pointee(autoType())))));
@@ -87,7 +99,8 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) {
8799
unless(anyOf(ConstType, ConstReference, TemplateType,
88100
hasInitializer(isInstantiationDependent()), AutoTemplateType,
89101
RValueReference, FunctionPointerRef,
90-
hasType(cxxRecordDecl(isLambda())), isImplicit())));
102+
hasType(cxxRecordDecl(isLambda())), isImplicit(),
103+
AllowedType)));
91104

92105
// Match the function scope for which the analysis of all local variables
93106
// shall be run.

clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class ConstCorrectnessCheck : public ClangTidyCheck {
4545
const bool TransformValues;
4646
const bool TransformReferences;
4747
const bool TransformPointersAsValues;
48+
const std::vector<StringRef> AllowedTypes;
4849
};
4950

5051
} // namespace clang::tidy::misc

0 commit comments

Comments
 (0)