Skip to content

Commit 843d26d

Browse files
committed
merge main into amd-staging
xfails: Driver/clang-offload-wrapper.c reverts: fails hipCatch2 93d8d74 [VectorCombine] Remove requirement for Instructions in shuffleToIdentity (llvm#93543) Change-Id: I79fde99dfce78964c2cbcb2ec3233a8a90ed8751
2 parents d2e36e4 + 0a93e9f commit 843d26d

File tree

822 files changed

+75486
-23804
lines changed

Some content is hidden

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

822 files changed

+75486
-23804
lines changed

.ci/generate-buildkite-pipeline-premerge

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ echo "Directories modified:" >&2
5353
echo "$modified_dirs" >&2
5454

5555
function compute-projects-to-test() {
56+
isForWindows=$1
57+
shift
5658
projects=${@}
5759
for project in ${projects}; do
5860
echo "${project}"
@@ -63,9 +65,13 @@ function compute-projects-to-test() {
6365
done
6466
;;
6567
llvm)
66-
for p in bolt clang clang-tools-extra flang lld lldb mlir polly; do
68+
for p in bolt clang clang-tools-extra lld lldb mlir polly; do
6769
echo $p
6870
done
71+
# Flang is not stable in Windows CI at the moment
72+
if [[ $isForWindows == 0 ]]; then
73+
echo flang
74+
fi
6975
;;
7076
clang)
7177
for p in clang-tools-extra compiler-rt lldb cross-project-tests; do
@@ -76,7 +82,10 @@ function compute-projects-to-test() {
7682
echo libc
7783
;;
7884
mlir)
79-
echo flang
85+
# Flang is not stable in Windows CI at the moment
86+
if [[ $isForWindows == 0 ]]; then
87+
echo flang
88+
fi
8089
;;
8190
*)
8291
# Nothing to do
@@ -241,15 +250,15 @@ fi
241250
all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
242251
modified_projects="$(keep-modified-projects ${all_projects})"
243252

244-
linux_projects_to_test=$(exclude-linux $(compute-projects-to-test ${modified_projects}))
253+
linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
245254
linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
246255
linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
247256

248257
linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
249258
linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
250259
linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
251260

252-
windows_projects_to_test=$(exclude-windows $(compute-projects-to-test ${modified_projects}))
261+
windows_projects_to_test=$(exclude-windows $(compute-projects-to-test 1 ${modified_projects}))
253262
windows_check_targets=$(check-targets ${windows_projects_to_test} | sort | uniq)
254263
windows_projects=$(add-dependencies ${windows_projects_to_test} | sort | uniq)
255264

.github/new-prs-labeler.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ llvm-lit:
5454
- llvm/utils/lit/**/*
5555

5656
PGO:
57+
- llvm/**/ProfileData/**/*
58+
- llvm/**/SampleProfile*
59+
- llvm/**/CodeGen/MIRSampleProfile*
5760
- llvm/lib/Transforms/Instrumentation/CGProfile.cpp
5861
- llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
5962
- llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp
@@ -62,9 +65,9 @@ PGO:
6265
- llvm/lib/Transforms/Instrumentation/ValueProfile*
6366
- llvm/test/Instrumentation/InstrProfiling/**/*
6467
- llvm/test/Transforms/PGOProfile/**/*
68+
- llvm/test/Transforms/SampleProfile/**/*
6569
- llvm/**/llvm-profdata/**/*
6670
- llvm/**/llvm-profgen/**/*
67-
- llvm/unittests/ProfileData/**/*
6871

6972
vectorization:
7073
- llvm/lib/Transforms/Vectorize/**/*
@@ -746,6 +749,8 @@ backend:ARM:
746749
- clang/lib/CodeGen/Targets/ARM.cpp
747750
- clang/include/clang/Basic/BuiltinsARM*
748751
- llvm/test/MC/DisasemblerARM/**
752+
- clang/include/clang/Sema/SemaARM.h
753+
- clang/lib/Sema/SemaARM.cpp
749754

750755
backend:AArch64:
751756
- llvm/include/llvm/IR/IntrinsicsAArch64.td
@@ -757,6 +762,8 @@ backend:AArch64:
757762
- clang/lib/CodeGen/Targets/AArch64.cpp
758763
- clang/include/clang/Basic/BuiltinsAArch64*
759764
- llvm/test/MC/Disassembler/AArch64/**
765+
- clang/include/clang/Sema/SemaARM.h
766+
- clang/lib/Sema/SemaARM.cpp
760767

761768
backend:loongarch:
762769
- llvm/include/llvm/IR/IntrinsicsLoongArch.td
@@ -767,6 +774,8 @@ backend:loongarch:
767774
- clang/lib/Driver/ToolChains/Arch/LoongArch.*
768775
- clang/lib/CodeGen/Targets/LoongArch.cpp
769776
- clang/include/clang/Basic/BuiltinsLoongArch*
777+
- clang/include/clang/Sema/SemaLoongArch.h
778+
- clang/lib/Sema/SemaLoongArch.cpp
770779

771780
backend:MSP430:
772781
- llvm/include/llvm/IR/IntrinsicsMSP430.td
@@ -814,6 +823,8 @@ backend:WebAssembly:
814823
- llvm/unittests/Target/WebAssembly/**
815824
- llvm/test/DebugInfo/WebAssembly/**
816825
- llvm/test/MC/WebAssembly/**
826+
- clang/include/clang/Sema/SemaWasm.h
827+
- clang/lib/Sema/SemaLoongWasm.cpp
817828

818829
backend:X86:
819830
- llvm/include/llvm/IR/IntrinsicsX86.td
@@ -833,6 +844,8 @@ backend:X86:
833844
- llvm/include/llvm/TargetParser/X86*
834845
- llvm/lib/TargetParser/X86*
835846
- llvm/utils/TableGen/X86*
847+
- clang/include/clang/Sema/SemaX86.h
848+
- clang/lib/Sema/SemaX86.cpp
836849

837850
backend:PowerPC:
838851
- llvm/include/llvm/BinaryFormat/ELFRelocs/PowerPC*
@@ -857,6 +870,8 @@ backend:PowerPC:
857870
- clang/lib/Driver/ToolChains/AIX*
858871
- clang/lib/Driver/ToolChains/Arch/PPC.*
859872
- clang/test/CodeGen/PowerPC/**
873+
- clang/include/clang/Sema/SemaPPC.h
874+
- clang/lib/Sema/SemaPPC.cpp
860875

861876
backend:SystemZ:
862877
- llvm/include/llvm/BinaryFormat/ELFRelocs/SystemZ*
@@ -877,6 +892,8 @@ backend:SystemZ:
877892
- clang/lib/Driver/ToolChains/ZOS*
878893
- clang/lib/Driver/ToolChains/Arch/SystemZ.*
879894
- clang/test/CodeGen/SystemZ/**
895+
- clang/include/clang/Sema/SemaSystemZ.h
896+
- clang/lib/Sema/SemaSystemZ.cpp
880897

881898
third-party:unittests:
882899
- third-party/unittests/**

bolt/test/AArch64/Inputs/array_end.lld_script

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
SECTIONS {
2+
.interp : { *(.interp) }
3+
4+
. = ALIGN(CONSTANT(MAXPAGESIZE));
25
.fini_array :
36
{
47
PROVIDE_HIDDEN (__fini_array_start = .);

bolt/test/Inputs/lsda.ldscript

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
SECTIONS {
2+
.interp : { *(.interp) }
3+
. = ALIGN(CONSTANT(MAXPAGESIZE));
24
.text : { *(.text*) }
5+
. = ALIGN(CONSTANT(MAXPAGESIZE));
36
.gcc_except_table.main : { *(.gcc_except_table*) }
47
. = 0x20000;
58
.eh_frame : { *(.eh_frame) }

clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ void ContainerSizeEmptyCheck::registerMatchers(MatchFinder *Finder) {
150150

151151
Finder->addMatcher(
152152
cxxMemberCallExpr(
153+
argumentCountIs(0),
153154
on(expr(anyOf(hasType(ValidContainer),
154155
hasType(pointsTo(ValidContainer)),
155156
hasType(references(ValidContainer))))
@@ -163,7 +164,8 @@ void ContainerSizeEmptyCheck::registerMatchers(MatchFinder *Finder) {
163164
this);
164165

165166
Finder->addMatcher(
166-
callExpr(has(cxxDependentScopeMemberExpr(
167+
callExpr(argumentCountIs(0),
168+
has(cxxDependentScopeMemberExpr(
167169
hasObjectExpression(
168170
expr(anyOf(hasType(ValidContainer),
169171
hasType(pointsTo(ValidContainer)),

clang-tools-extra/clangd/Config.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,11 @@ struct Config {
110110
IncludesPolicy UnusedIncludes = IncludesPolicy::Strict;
111111
IncludesPolicy MissingIncludes = IncludesPolicy::None;
112112

113-
/// IncludeCleaner will not diagnose usages of these headers matched by
114-
/// these regexes.
115113
struct {
114+
/// IncludeCleaner will not diagnose usages of these headers matched by
115+
/// these regexes.
116116
std::vector<std::function<bool(llvm::StringRef)>> IgnoreHeader;
117+
bool AnalyzeAngledIncludes = false;
117118
} Includes;
118119
} Diagnostics;
119120

clang-tools-extra/clangd/ConfigCompile.cpp

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -572,32 +572,46 @@ struct FragmentCompiler {
572572
#else
573573
static llvm::Regex::RegexFlags Flags = llvm::Regex::NoFlags;
574574
#endif
575-
auto Filters = std::make_shared<std::vector<llvm::Regex>>();
576-
for (auto &HeaderPattern : F.IgnoreHeader) {
577-
// Anchor on the right.
578-
std::string AnchoredPattern = "(" + *HeaderPattern + ")$";
579-
llvm::Regex CompiledRegex(AnchoredPattern, Flags);
580-
std::string RegexError;
581-
if (!CompiledRegex.isValid(RegexError)) {
582-
diag(Warning,
583-
llvm::formatv("Invalid regular expression '{0}': {1}",
584-
*HeaderPattern, RegexError)
585-
.str(),
586-
HeaderPattern.Range);
587-
continue;
575+
std::shared_ptr<std::vector<llvm::Regex>> Filters;
576+
if (!F.IgnoreHeader.empty()) {
577+
Filters = std::make_shared<std::vector<llvm::Regex>>();
578+
for (auto &HeaderPattern : F.IgnoreHeader) {
579+
// Anchor on the right.
580+
std::string AnchoredPattern = "(" + *HeaderPattern + ")$";
581+
llvm::Regex CompiledRegex(AnchoredPattern, Flags);
582+
std::string RegexError;
583+
if (!CompiledRegex.isValid(RegexError)) {
584+
diag(Warning,
585+
llvm::formatv("Invalid regular expression '{0}': {1}",
586+
*HeaderPattern, RegexError)
587+
.str(),
588+
HeaderPattern.Range);
589+
continue;
590+
}
591+
Filters->push_back(std::move(CompiledRegex));
588592
}
589-
Filters->push_back(std::move(CompiledRegex));
590593
}
591-
if (Filters->empty())
594+
// Optional to override the resulting AnalyzeAngledIncludes
595+
// only if it's explicitly set in the current fragment.
596+
// Otherwise it's inherited from parent fragment.
597+
std::optional<bool> AnalyzeAngledIncludes;
598+
if (F.AnalyzeAngledIncludes.has_value())
599+
AnalyzeAngledIncludes = **F.AnalyzeAngledIncludes;
600+
if (!Filters && !AnalyzeAngledIncludes.has_value())
592601
return;
593-
auto Filter = [Filters](llvm::StringRef Path) {
594-
for (auto &Regex : *Filters)
595-
if (Regex.match(Path))
596-
return true;
597-
return false;
598-
};
599-
Out.Apply.push_back([Filter](const Params &, Config &C) {
600-
C.Diagnostics.Includes.IgnoreHeader.emplace_back(Filter);
602+
Out.Apply.push_back([Filters = std::move(Filters),
603+
AnalyzeAngledIncludes](const Params &, Config &C) {
604+
if (Filters) {
605+
auto Filter = [Filters](llvm::StringRef Path) {
606+
for (auto &Regex : *Filters)
607+
if (Regex.match(Path))
608+
return true;
609+
return false;
610+
};
611+
C.Diagnostics.Includes.IgnoreHeader.emplace_back(std::move(Filter));
612+
}
613+
if (AnalyzeAngledIncludes.has_value())
614+
C.Diagnostics.Includes.AnalyzeAngledIncludes = *AnalyzeAngledIncludes;
601615
});
602616
}
603617

clang-tools-extra/clangd/ConfigFragment.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,10 @@ struct Fragment {
254254
/// unused or missing. These can match any suffix of the header file in
255255
/// question.
256256
std::vector<Located<std::string>> IgnoreHeader;
257+
258+
/// If false (default), unused system headers will be ignored.
259+
/// Standard library headers are analyzed regardless of this option.
260+
std::optional<Located<bool>> AnalyzeAngledIncludes;
257261
};
258262
IncludesBlock Includes;
259263

clang-tools-extra/clangd/ConfigYAML.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ class Parser {
169169
if (auto Values = scalarValues(N))
170170
F.IgnoreHeader = std::move(*Values);
171171
});
172+
Dict.handle("AnalyzeAngledIncludes", [&](Node &N) {
173+
if (auto Value = boolValue(N, "AnalyzeAngledIncludes"))
174+
F.AnalyzeAngledIncludes = *Value;
175+
});
172176
Dict.parse(N);
173177
}
174178

clang-tools-extra/clangd/IncludeCleaner.cpp

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,24 +68,30 @@ bool isIgnored(llvm::StringRef HeaderPath, HeaderFilter IgnoreHeaders) {
6868
}
6969

7070
bool mayConsiderUnused(const Inclusion &Inc, ParsedAST &AST,
71-
const include_cleaner::PragmaIncludes *PI) {
71+
const include_cleaner::PragmaIncludes *PI,
72+
bool AnalyzeAngledIncludes) {
7273
assert(Inc.HeaderID);
7374
auto HID = static_cast<IncludeStructure::HeaderID>(*Inc.HeaderID);
7475
auto FE = AST.getSourceManager().getFileManager().getFileRef(
7576
AST.getIncludeStructure().getRealPath(HID));
7677
assert(FE);
7778
if (FE->getDir() == AST.getPreprocessor()
78-
.getHeaderSearchInfo()
79-
.getModuleMap()
80-
.getBuiltinDir())
79+
.getHeaderSearchInfo()
80+
.getModuleMap()
81+
.getBuiltinDir())
8182
return false;
8283
if (PI && PI->shouldKeep(*FE))
8384
return false;
8485
// FIXME(kirillbobyrev): We currently do not support the umbrella headers.
8586
// System headers are likely to be standard library headers.
86-
// Until we have good support for umbrella headers, don't warn about them.
87-
if (Inc.Written.front() == '<')
88-
return tooling::stdlib::Header::named(Inc.Written).has_value();
87+
// Until we have good support for umbrella headers, don't warn about them
88+
// (unless analysis is explicitly enabled).
89+
if (Inc.Written.front() == '<') {
90+
if (tooling::stdlib::Header::named(Inc.Written))
91+
return true;
92+
if (!AnalyzeAngledIncludes)
93+
return false;
94+
}
8995
if (PI) {
9096
// Check if main file is the public interface for a private header. If so we
9197
// shouldn't diagnose it as unused.
@@ -266,7 +272,8 @@ Fix fixAll(const Fix &RemoveAllUnused, const Fix &AddAllMissing) {
266272

267273
std::vector<const Inclusion *>
268274
getUnused(ParsedAST &AST,
269-
const llvm::DenseSet<IncludeStructure::HeaderID> &ReferencedFiles) {
275+
const llvm::DenseSet<IncludeStructure::HeaderID> &ReferencedFiles,
276+
bool AnalyzeAngledIncludes) {
270277
trace::Span Tracer("IncludeCleaner::getUnused");
271278
std::vector<const Inclusion *> Unused;
272279
for (const Inclusion &MFI : AST.getIncludeStructure().MainFileIncludes) {
@@ -275,7 +282,8 @@ getUnused(ParsedAST &AST,
275282
auto IncludeID = static_cast<IncludeStructure::HeaderID>(*MFI.HeaderID);
276283
if (ReferencedFiles.contains(IncludeID))
277284
continue;
278-
if (!mayConsiderUnused(MFI, AST, &AST.getPragmaIncludes())) {
285+
if (!mayConsiderUnused(MFI, AST, &AST.getPragmaIncludes(),
286+
AnalyzeAngledIncludes)) {
279287
dlog("{0} was not used, but is not eligible to be diagnosed as unused",
280288
MFI.Written);
281289
continue;
@@ -347,7 +355,8 @@ include_cleaner::Includes convertIncludes(const ParsedAST &AST) {
347355
return ConvertedIncludes;
348356
}
349357

350-
IncludeCleanerFindings computeIncludeCleanerFindings(ParsedAST &AST) {
358+
IncludeCleanerFindings
359+
computeIncludeCleanerFindings(ParsedAST &AST, bool AnalyzeAngledIncludes) {
351360
// Interaction is only polished for C/CPP.
352361
if (AST.getLangOpts().ObjC)
353362
return {};
@@ -432,7 +441,8 @@ IncludeCleanerFindings computeIncludeCleanerFindings(ParsedAST &AST) {
432441
MapInfo::getHashValue(RHS.Symbol);
433442
});
434443
MissingIncludes.erase(llvm::unique(MissingIncludes), MissingIncludes.end());
435-
std::vector<const Inclusion *> UnusedIncludes = getUnused(AST, Used);
444+
std::vector<const Inclusion *> UnusedIncludes =
445+
getUnused(AST, Used, AnalyzeAngledIncludes);
436446
return {std::move(UnusedIncludes), std::move(MissingIncludes)};
437447
}
438448

clang-tools-extra/clangd/IncludeCleaner.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ struct IncludeCleanerFindings {
5353
std::vector<MissingIncludeDiagInfo> MissingIncludes;
5454
};
5555

56-
IncludeCleanerFindings computeIncludeCleanerFindings(ParsedAST &AST);
56+
IncludeCleanerFindings
57+
computeIncludeCleanerFindings(ParsedAST &AST,
58+
bool AnalyzeAngledIncludes = false);
5759

5860
using HeaderFilter = llvm::ArrayRef<std::function<bool(llvm::StringRef)>>;
5961
std::vector<Diag>

clang-tools-extra/clangd/ParsedAST.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,8 @@ std::vector<Diag> getIncludeCleanerDiags(ParsedAST &AST, llvm::StringRef Code,
373373
Cfg.Diagnostics.UnusedIncludes == Config::IncludesPolicy::None;
374374
if (SuppressMissing && SuppressUnused)
375375
return {};
376-
auto Findings = computeIncludeCleanerFindings(AST);
376+
auto Findings = computeIncludeCleanerFindings(
377+
AST, Cfg.Diagnostics.Includes.AnalyzeAngledIncludes);
377378
if (SuppressMissing)
378379
Findings.MissingIncludes.clear();
379380
if (SuppressUnused)

clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,12 @@ TEST_F(ConfigCompileTests, DiagnosticsIncludeCleaner) {
277277
};
278278
EXPECT_TRUE(HeaderFilter("foo.h"));
279279
EXPECT_FALSE(HeaderFilter("bar.h"));
280+
281+
Frag = {};
282+
EXPECT_FALSE(Conf.Diagnostics.Includes.AnalyzeAngledIncludes);
283+
Frag.Diagnostics.Includes.AnalyzeAngledIncludes = true;
284+
EXPECT_TRUE(compileAndApply());
285+
EXPECT_TRUE(Conf.Diagnostics.Includes.AnalyzeAngledIncludes);
280286
}
281287

282288
TEST_F(ConfigCompileTests, DiagnosticSuppression) {

0 commit comments

Comments
 (0)