aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2022-10-16 19:03:40 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-02-08 19:05:09 +0000
commit6246ae0b85d8159978c01ae916a9ad6cde9378b5 (patch)
tree4e95c640a44c343a08cf21d58972d36bd342e4ce
parenta4a491e2238b12ccd64d3faf9e6401487f6f1f1b (diff)
parentdafdd7863e9eeed3a714329b8758451cbcfc33bf (diff)
downloadsrc-6246ae0b85d8159978c01ae916a9ad6cde9378b5.tar.gz
src-6246ae0b85d8159978c01ae916a9ad6cde9378b5.zip
Merge llvm-project release/15.x llvmorg-15.0.2-10-gf3c5289e7846
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-15.0.2-10-gf3c5289e7846. PR: 265425 MFC after: 2 weeks
-rw-r--r--ObsoleteFiles.inc4
-rw-r--r--contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td8
-rw-r--r--contrib/llvm-project/clang/lib/AST/StmtPrinter.cpp2
-rw-r--r--contrib/llvm-project/clang/lib/CodeGen/CGStmt.cpp15
-rw-r--r--contrib/llvm-project/clang/lib/CodeGen/CoverageMappingGen.cpp32
-rw-r--r--contrib/llvm-project/clang/lib/Sema/SemaInit.cpp8
-rw-r--r--contrib/llvm-project/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp4
-rw-r--r--contrib/llvm-project/clang/lib/Tooling/Syntax/Tokens.cpp222
-rw-r--r--contrib/llvm-project/libcxx/include/__config33
-rw-r--r--contrib/llvm-project/libcxx/include/atomic46
-rw-r--r--contrib/llvm-project/libcxx/include/stdatomic.h4
-rw-r--r--contrib/llvm-project/libcxx/include/version2
-rw-r--r--contrib/llvm-project/lld/COFF/Symbols.h5
-rw-r--r--contrib/llvm-project/lld/COFF/Writer.cpp2
-rw-r--r--contrib/llvm-project/lld/ELF/Arch/RISCV.cpp9
-rw-r--r--contrib/llvm-project/lld/MachO/InputFiles.cpp9
-rw-r--r--contrib/llvm-project/lld/MachO/UnwindInfoSection.cpp45
-rw-r--r--contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleImpl.h29
-rw-r--r--contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleInfo.h19
-rw-r--r--contrib/llvm-project/llvm/include/llvm/Object/ELF.h2
-rw-r--r--contrib/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp7
-rw-r--r--contrib/llvm-project/llvm/lib/Analysis/ValueTracking.cpp13
-rw-r--r--contrib/llvm-project/llvm/lib/CodeGen/DwarfEHPrepare.cpp8
-rw-r--r--contrib/llvm-project/llvm/lib/CodeGen/PrologEpilogInserter.cpp7
-rw-r--r--contrib/llvm-project/llvm/lib/Support/X86TargetParser.cpp10
-rw-r--r--contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp3
-rw-r--r--contrib/llvm-project/llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp2
-rw-r--r--contrib/llvm-project/llvm/lib/Target/X86/X86.td1
-rw-r--r--contrib/llvm-project/llvm/lib/Transforms/Utils/LoopVersioning.cpp4
-rw-r--r--contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp12
-rw-r--r--contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.h8
-rw-r--r--contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp6
-rw-r--r--contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp39
-rw-r--r--etc/mtree/BSD.debug.dist2
-rw-r--r--etc/mtree/BSD.usr.dist2
-rw-r--r--lib/clang/headers/Makefile2
-rw-r--r--lib/clang/include/VCSVersion.inc6
-rw-r--r--lib/clang/include/clang/Basic/Version.inc6
-rw-r--r--lib/clang/include/clang/Config/config.h2
-rw-r--r--lib/clang/include/lld/Common/Version.inc2
-rw-r--r--lib/clang/include/lldb/Version/Version.inc6
-rw-r--r--lib/clang/include/llvm/Config/config.h4
-rw-r--r--lib/clang/include/llvm/Config/llvm-config.h4
-rw-r--r--lib/clang/include/llvm/Support/VCSRevision.h2
-rw-r--r--lib/libc++/module.modulemap36
-rw-r--r--lib/libclang_rt/compiler-rt-vars.mk2
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc644
47 files changed, 778 insertions, 562 deletions
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 4c8194ea1a93..9bf8f3d8043b 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -52,7 +52,7 @@
# xargs -n1 | sort | uniq -d;
# done
-# 20230208: new clang import which bumps version from 14.0.5 to 15.0.0
+# 20230208: new clang import which bumps version from 14.0.5 to 15.0.3
OLD_FILES+=usr/lib/clang/14.0.5/include/cuda_wrappers/algorithm
OLD_FILES+=usr/lib/clang/14.0.5/include/cuda_wrappers/complex
OLD_FILES+=usr/lib/clang/14.0.5/include/cuda_wrappers/new
@@ -363,7 +363,7 @@ OLD_FILES+=usr/lib/clang/14.0.5/share/msan_ignorelist.txt
OLD_DIRS+=usr/lib/clang/14.0.5/share
OLD_DIRS+=usr/lib/clang/14.0.5
-# 20230208: new libc++ import which bumps version from 14.0.5 to 15.0.0
+# 20230208: new libc++ import which bumps version from 14.0.5 to 15.0.3
OLD_FILES+=usr/include/c++/v1/__functional_base
OLD_FILES+=usr/include/c++/v1/__libcpp_version
OLD_FILES+=usr/include/c++/v1/__nullptr
diff --git a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 6ff5b8de57fd..cb460401eb47 100644
--- a/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -419,7 +419,7 @@ def warn_implicit_function_decl : Warning<
InGroup<ImplicitFunctionDeclare>, DefaultIgnore;
def ext_implicit_function_decl_c99 : ExtWarn<
"call to undeclared function %0; ISO C99 and later do not support implicit "
- "function declarations">, InGroup<ImplicitFunctionDeclare>, DefaultError;
+ "function declarations">, InGroup<ImplicitFunctionDeclare>;
def note_function_suggestion : Note<"did you mean %0?">;
def err_ellipsis_first_param : Error<
@@ -705,7 +705,7 @@ def ext_implicit_lib_function_decl : ExtWarn<
def ext_implicit_lib_function_decl_c99 : ExtWarn<
"call to undeclared library function '%0' with type %1; ISO C99 and later "
"do not support implicit function declarations">,
- InGroup<ImplicitFunctionDeclare>, DefaultError;
+ InGroup<ImplicitFunctionDeclare>;
def note_include_header_or_declare : Note<
"include the header <%0> or explicitly provide a declaration for '%1'">;
def note_previous_builtin_declaration : Note<"%0 is a builtin with type %1">;
@@ -4359,7 +4359,7 @@ def err_ident_list_in_fn_declaration : Error<
"a parameter list without types is only allowed in a function definition">;
def ext_param_not_declared : ExtWarn<
"parameter %0 was not declared, defaults to 'int'; ISO C99 and later do not "
- "support implicit int">, InGroup<ImplicitInt>, DefaultError;
+ "support implicit int">, InGroup<ImplicitInt>;
def err_param_default_argument : Error<
"C does not support default arguments">;
def err_param_default_argument_redefinition : Error<
@@ -10029,7 +10029,7 @@ def warn_receiver_forward_class : Warning<
def note_method_sent_forward_class : Note<"method %0 is used for the forward class">;
def ext_missing_type_specifier : ExtWarn<
"type specifier missing, defaults to 'int'; ISO C99 and later do not support "
- "implicit int">, InGroup<ImplicitInt>, DefaultError;
+ "implicit int">, InGroup<ImplicitInt>;
def err_missing_type_specifier : Error<
"a type specifier is required for all declarations">;
def err_decimal_unsupported : Error<
diff --git a/contrib/llvm-project/clang/lib/AST/StmtPrinter.cpp b/contrib/llvm-project/clang/lib/AST/StmtPrinter.cpp
index 8d778500d103..625048c69a86 100644
--- a/contrib/llvm-project/clang/lib/AST/StmtPrinter.cpp
+++ b/contrib/llvm-project/clang/lib/AST/StmtPrinter.cpp
@@ -1993,7 +1993,7 @@ void StmtPrinter::VisitUserDefinedLiteral(UserDefinedLiteral *Node) {
cast<FunctionDecl>(DRE->getDecl())->getTemplateSpecializationArgs();
assert(Args);
- if (Args->size() != 1) {
+ if (Args->size() != 1 || Args->get(0).getKind() != TemplateArgument::Pack) {
const TemplateParameterList *TPL = nullptr;
if (!DRE->hadMultipleCandidates())
if (const auto *TD = dyn_cast<TemplateDecl>(DRE->getDecl()))
diff --git a/contrib/llvm-project/clang/lib/CodeGen/CGStmt.cpp b/contrib/llvm-project/clang/lib/CodeGen/CGStmt.cpp
index 481438de0e53..9935fcc0d3ea 100644
--- a/contrib/llvm-project/clang/lib/CodeGen/CGStmt.cpp
+++ b/contrib/llvm-project/clang/lib/CodeGen/CGStmt.cpp
@@ -1509,6 +1509,21 @@ void CodeGenFunction::EmitCaseStmt(const CaseStmt &S,
llvm::ConstantInt *CaseVal =
Builder.getInt(S.getLHS()->EvaluateKnownConstInt(getContext()));
+
+ // Emit debuginfo for the case value if it is an enum value.
+ const ConstantExpr *CE;
+ if (auto ICE = dyn_cast<ImplicitCastExpr>(S.getLHS()))
+ CE = dyn_cast<ConstantExpr>(ICE->getSubExpr());
+ else
+ CE = dyn_cast<ConstantExpr>(S.getLHS());
+ if (CE) {
+ if (auto DE = dyn_cast<DeclRefExpr>(CE->getSubExpr()))
+ if (CGDebugInfo *Dbg = getDebugInfo())
+ if (CGM.getCodeGenOpts().hasReducedDebugInfo())
+ Dbg->EmitGlobalVariable(DE->getDecl(),
+ APValue(llvm::APSInt(CaseVal->getValue())));
+ }
+
if (SwitchLikelihood)
SwitchLikelihood->push_back(Stmt::getLikelihood(Attrs));
diff --git a/contrib/llvm-project/clang/lib/CodeGen/CoverageMappingGen.cpp b/contrib/llvm-project/clang/lib/CodeGen/CoverageMappingGen.cpp
index 0fe084b628da..836aabf80179 100644
--- a/contrib/llvm-project/clang/lib/CodeGen/CoverageMappingGen.cpp
+++ b/contrib/llvm-project/clang/lib/CodeGen/CoverageMappingGen.cpp
@@ -1377,19 +1377,23 @@ struct CounterCoverageMappingBuilder
// Extend into the condition before we propagate through it below - this is
// needed to handle macros that generate the "if" but not the condition.
- extendRegion(S->getCond());
+ if (!S->isConsteval())
+ extendRegion(S->getCond());
Counter ParentCount = getRegion().getCounter();
Counter ThenCount = getRegionCounter(S);
- // Emitting a counter for the condition makes it easier to interpret the
- // counter for the body when looking at the coverage.
- propagateCounts(ParentCount, S->getCond());
+ if (!S->isConsteval()) {
+ // Emitting a counter for the condition makes it easier to interpret the
+ // counter for the body when looking at the coverage.
+ propagateCounts(ParentCount, S->getCond());
- // The 'then' count applies to the area immediately after the condition.
- auto Gap = findGapAreaBetween(S->getRParenLoc(), getStart(S->getThen()));
- if (Gap)
- fillGapAreaWithCount(Gap->getBegin(), Gap->getEnd(), ThenCount);
+ // The 'then' count applies to the area immediately after the condition.
+ Optional<SourceRange> Gap =
+ findGapAreaBetween(S->getRParenLoc(), getStart(S->getThen()));
+ if (Gap)
+ fillGapAreaWithCount(Gap->getBegin(), Gap->getEnd(), ThenCount);
+ }
extendRegion(S->getThen());
Counter OutCount = propagateCounts(ThenCount, S->getThen());
@@ -1398,9 +1402,9 @@ struct CounterCoverageMappingBuilder
if (const Stmt *Else = S->getElse()) {
bool ThenHasTerminateStmt = HasTerminateStmt;
HasTerminateStmt = false;
-
// The 'else' count applies to the area immediately after the 'then'.
- Gap = findGapAreaBetween(getEnd(S->getThen()), getStart(Else));
+ Optional<SourceRange> Gap =
+ findGapAreaBetween(getEnd(S->getThen()), getStart(Else));
if (Gap)
fillGapAreaWithCount(Gap->getBegin(), Gap->getEnd(), ElseCount);
extendRegion(Else);
@@ -1416,9 +1420,11 @@ struct CounterCoverageMappingBuilder
GapRegionCounter = OutCount;
}
- // Create Branch Region around condition.
- createBranchRegion(S->getCond(), ThenCount,
- subtractCounters(ParentCount, ThenCount));
+ if (!S->isConsteval()) {
+ // Create Branch Region around condition.
+ createBranchRegion(S->getCond(), ThenCount,
+ subtractCounters(ParentCount, ThenCount));
+ }
}
void VisitCXXTryStmt(const CXXTryStmt *S) {
diff --git a/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp b/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp
index d3b454843234..bf7ca718a36b 100644
--- a/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp
+++ b/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp
@@ -695,10 +695,10 @@ void InitListChecker::FillInEmptyInitForField(unsigned Init, FieldDecl *Field,
// member of reference type uninitialized, the program is
// ill-formed.
SemaRef.Diag(Loc, diag::err_init_reference_member_uninitialized)
- << Field->getType()
- << ILE->getSyntacticForm()->getSourceRange();
- SemaRef.Diag(Field->getLocation(),
- diag::note_uninit_reference_member);
+ << Field->getType()
+ << (ILE->isSyntacticForm() ? ILE : ILE->getSyntacticForm())
+ ->getSourceRange();
+ SemaRef.Diag(Field->getLocation(), diag::note_uninit_reference_member);
}
hadError = true;
return;
diff --git a/contrib/llvm-project/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp b/contrib/llvm-project/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp
index 0143b5f8df6b..655be20572b6 100644
--- a/contrib/llvm-project/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp
+++ b/contrib/llvm-project/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp
@@ -165,8 +165,8 @@ struct TransferableCommand {
const unsigned OldPos = Pos;
std::unique_ptr<llvm::opt::Arg> Arg(OptTable.ParseOneArg(
ArgList, Pos,
- /* Include */ ClangCLMode ? CoreOption | CLOption : 0,
- /* Exclude */ ClangCLMode ? 0 : CLOption));
+ /* Include */ ClangCLMode ? CoreOption | CLOption | CLDXCOption : 0,
+ /* Exclude */ ClangCLMode ? 0 : CLOption | CLDXCOption));
if (!Arg)
continue;
diff --git a/contrib/llvm-project/clang/lib/Tooling/Syntax/Tokens.cpp b/contrib/llvm-project/clang/lib/Tooling/Syntax/Tokens.cpp
index e2014f965c90..1fa73c667b7f 100644
--- a/contrib/llvm-project/clang/lib/Tooling/Syntax/Tokens.cpp
+++ b/contrib/llvm-project/clang/lib/Tooling/Syntax/Tokens.cpp
@@ -55,45 +55,140 @@ getTokensCovering(llvm::ArrayRef<syntax::Token> Toks, SourceRange R,
return {Begin, End};
}
-// Finds the smallest expansion range that contains expanded tokens First and
-// Last, e.g.:
+// Finds the range within FID corresponding to expanded tokens [First, Last].
+// Prev precedes First and Next follows Last, these must *not* be included.
+// If no range satisfies the criteria, returns an invalid range.
+//
// #define ID(x) x
// ID(ID(ID(a1) a2))
// ~~ -> a1
// ~~ -> a2
// ~~~~~~~~~ -> a1 a2
-SourceRange findCommonRangeForMacroArgs(const syntax::Token &First,
- const syntax::Token &Last,
- const SourceManager &SM) {
- SourceRange Res;
- auto FirstLoc = First.location(), LastLoc = Last.location();
- // Keep traversing up the spelling chain as longs as tokens are part of the
- // same expansion.
- while (!FirstLoc.isFileID() && !LastLoc.isFileID()) {
- auto ExpInfoFirst = SM.getSLocEntry(SM.getFileID(FirstLoc)).getExpansion();
- auto ExpInfoLast = SM.getSLocEntry(SM.getFileID(LastLoc)).getExpansion();
- // Stop if expansions have diverged.
- if (ExpInfoFirst.getExpansionLocStart() !=
- ExpInfoLast.getExpansionLocStart())
+SourceRange spelledForExpandedSlow(SourceLocation First, SourceLocation Last,
+ SourceLocation Prev, SourceLocation Next,
+ FileID TargetFile,
+ const SourceManager &SM) {
+ // There are two main parts to this algorithm:
+ // - identifying which spelled range covers the expanded tokens
+ // - validating that this range doesn't cover any extra tokens (First/Last)
+ //
+ // We do these in order. However as we transform the expanded range into the
+ // spelled one, we adjust First/Last so the validation remains simple.
+
+ assert(SM.getSLocEntry(TargetFile).isFile());
+ // In most cases, to select First and Last we must return their expansion
+ // range, i.e. the whole of any macros they are included in.
+ //
+ // When First and Last are part of the *same macro arg* of a macro written
+ // in TargetFile, we that slice of the arg, i.e. their spelling range.
+ //
+ // Unwrap such macro calls. If the target file has A(B(C)), the
+ // SourceLocation stack of a token inside C shows us the expansion of A first,
+ // then B, then any macros inside C's body, then C itself.
+ // (This is the reverse of the order the PP applies the expansions in).
+ while (First.isMacroID() && Last.isMacroID()) {
+ auto DecFirst = SM.getDecomposedLoc(First);
+ auto DecLast = SM.getDecomposedLoc(Last);
+ auto &ExpFirst = SM.getSLocEntry(DecFirst.first).getExpansion();
+ auto &ExpLast = SM.getSLocEntry(DecLast.first).getExpansion();
+
+ if (!ExpFirst.isMacroArgExpansion() || !ExpLast.isMacroArgExpansion())
+ break;
+ // Locations are in the same macro arg if they expand to the same place.
+ // (They may still have different FileIDs - an arg can have >1 chunks!)
+ if (ExpFirst.getExpansionLocStart() != ExpLast.getExpansionLocStart())
break;
- // Do not continue into macro bodies.
- if (!ExpInfoFirst.isMacroArgExpansion() ||
- !ExpInfoLast.isMacroArgExpansion())
+ // Careful, given:
+ // #define HIDE ID(ID(a))
+ // ID(ID(HIDE))
+ // The token `a` is wrapped in 4 arg-expansions, we only want to unwrap 2.
+ // We distinguish them by whether the macro expands into the target file.
+ // Fortunately, the target file ones will always appear first.
+ auto &ExpMacro =
+ SM.getSLocEntry(SM.getFileID(ExpFirst.getExpansionLocStart()))
+ .getExpansion();
+ if (ExpMacro.getExpansionLocStart().isMacroID())
break;
- FirstLoc = SM.getImmediateSpellingLoc(FirstLoc);
- LastLoc = SM.getImmediateSpellingLoc(LastLoc);
- // Update the result afterwards, as we want the tokens that triggered the
- // expansion.
- Res = {FirstLoc, LastLoc};
+ // Replace each endpoint with its spelling inside the macro arg.
+ // (This is getImmediateSpellingLoc without repeating lookups).
+ First = ExpFirst.getSpellingLoc().getLocWithOffset(DecFirst.second);
+ Last = ExpLast.getSpellingLoc().getLocWithOffset(DecLast.second);
+
+ // Now: how do we adjust the previous/next bounds? Three cases:
+ // A) If they are also part of the same macro arg, we translate them too.
+ // This will ensure that we don't select any macros nested within the
+ // macro arg that cover extra tokens. Critical case:
+ // #define ID(X) X
+ // ID(prev target) // selecting 'target' succeeds
+ // #define LARGE ID(prev target)
+ // LARGE // selecting 'target' fails.
+ // B) They are not in the macro at all, then their expansion range is a
+ // sibling to it, and we can safely substitute that.
+ // #define PREV prev
+ // #define ID(X) X
+ // PREV ID(target) // selecting 'target' succeeds.
+ // #define LARGE PREV ID(target)
+ // LARGE // selecting 'target' fails.
+ // C) They are in a different arg of this macro, or the macro body.
+ // Now selecting the whole macro arg is fine, but the whole macro is not.
+ // Model this by setting using the edge of the macro call as the bound.
+ // #define ID2(X, Y) X Y
+ // ID2(prev, target) // selecting 'target' succeeds
+ // #define LARGE ID2(prev, target)
+ // LARGE // selecting 'target' fails
+ auto AdjustBound = [&](SourceLocation &Bound) {
+ if (Bound.isInvalid() || !Bound.isMacroID()) // Non-macro must be case B.
+ return;
+ auto DecBound = SM.getDecomposedLoc(Bound);
+ auto &ExpBound = SM.getSLocEntry(DecBound.first).getExpansion();
+ if (ExpBound.isMacroArgExpansion() &&
+ ExpBound.getExpansionLocStart() == ExpFirst.getExpansionLocStart()) {
+ // Case A: translate to (spelling) loc within the macro arg.
+ Bound = ExpBound.getSpellingLoc().getLocWithOffset(DecBound.second);
+ return;
+ }
+ while (Bound.isMacroID()) {
+ SourceRange Exp = SM.getImmediateExpansionRange(Bound).getAsRange();
+ if (Exp.getBegin() == ExpMacro.getExpansionLocStart()) {
+ // Case B: bounds become the macro call itself.
+ Bound = (&Bound == &Prev) ? Exp.getBegin() : Exp.getEnd();
+ return;
+ }
+ // Either case C, or expansion location will later find case B.
+ // We choose the upper bound for Prev and the lower one for Next:
+ // ID(prev) target ID(next)
+ // ^ ^
+ // new-prev new-next
+ Bound = (&Bound == &Prev) ? Exp.getEnd() : Exp.getBegin();
+ }
+ };
+ AdjustBound(Prev);
+ AdjustBound(Next);
}
- // Normally mapping back to expansion location here only changes FileID, as
- // we've already found some tokens expanded from the same macro argument, and
- // they should map to a consecutive subset of spelled tokens. Unfortunately
- // SourceManager::isBeforeInTranslationUnit discriminates sourcelocations
- // based on their FileID in addition to offsets. So even though we are
- // referring to same tokens, SourceManager might tell us that one is before
- // the other if they've got different FileIDs.
- return SM.getExpansionRange(CharSourceRange(Res, true)).getAsRange();
+
+ // In all remaining cases we need the full containing macros.
+ // If this overlaps Prev or Next, then no range is possible.
+ SourceRange Candidate =
+ SM.getExpansionRange(SourceRange(First, Last)).getAsRange();
+ auto DecFirst = SM.getDecomposedExpansionLoc(Candidate.getBegin());
+ auto DecLast = SM.getDecomposedLoc(Candidate.getEnd());
+ // Can end up in the wrong file due to bad input or token-pasting shenanigans.
+ if (Candidate.isInvalid() || DecFirst.first != TargetFile || DecLast.first != TargetFile)
+ return SourceRange();
+ // Check bounds, which may still be inside macros.
+ if (Prev.isValid()) {
+ auto Dec = SM.getDecomposedLoc(SM.getExpansionRange(Prev).getBegin());
+ if (Dec.first != DecFirst.first || Dec.second >= DecFirst.second)
+ return SourceRange();
+ }
+ if (Next.isValid()) {
+ auto Dec = SM.getDecomposedLoc(SM.getExpansionRange(Next).getEnd());
+ if (Dec.first != DecLast.first || Dec.second <= DecLast.second)
+ return SourceRange();
+ }
+ // Now we know that Candidate is a file range that covers [First, Last]
+ // without encroaching on {Prev, Next}. Ship it!
+ return Candidate;
}
} // namespace
@@ -363,51 +458,50 @@ TokenBuffer::spelledForExpanded(llvm::ArrayRef<syntax::Token> Expanded) const {
// of the range, bail out in that case.
if (Expanded.empty())
return llvm::None;
-
- const syntax::Token *BeginSpelled;
- const Mapping *BeginMapping;
- std::tie(BeginSpelled, BeginMapping) =
- spelledForExpandedToken(&Expanded.front());
-
- const syntax::Token *LastSpelled;
- const Mapping *LastMapping;
- std::tie(LastSpelled, LastMapping) =
- spelledForExpandedToken(&Expanded.back());
-
- FileID FID = SourceMgr->getFileID(BeginSpelled->location());
+ const syntax::Token *First = &Expanded.front();
+ const syntax::Token *Last = &Expanded.back();
+ const syntax::Token *FirstSpelled, *LastSpelled;
+ const TokenBuffer::Mapping *FirstMapping, *LastMapping;
+ std::tie(FirstSpelled, FirstMapping) = spelledForExpandedToken(First);
+ std::tie(LastSpelled, LastMapping) = spelledForExpandedToken(Last);
+
+ FileID FID = SourceMgr->getFileID(FirstSpelled->location());
// FIXME: Handle multi-file changes by trying to map onto a common root.
if (FID != SourceMgr->getFileID(LastSpelled->location()))
return llvm::None;
const MarkedFile &File = Files.find(FID)->second;
- // If both tokens are coming from a macro argument expansion, try and map to
- // smallest part of the macro argument. BeginMapping && LastMapping check is
- // only for performance, they are a prerequisite for Expanded.front() and
- // Expanded.back() being part of a macro arg expansion.
- if (BeginMapping && LastMapping &&
- SourceMgr->isMacroArgExpansion(Expanded.front().location()) &&
- SourceMgr->isMacroArgExpansion(Expanded.back().location())) {
- auto CommonRange = findCommonRangeForMacroArgs(Expanded.front(),
- Expanded.back(), *SourceMgr);
- // It might be the case that tokens are arguments of different macro calls,
- // in that case we should continue with the logic below instead of returning
- // an empty range.
- if (CommonRange.isValid())
- return getTokensCovering(File.SpelledTokens, CommonRange, *SourceMgr);
+ // If the range is within one macro argument, the result may be only part of a
+ // Mapping. We must use the general (SourceManager-based) algorithm.
+ if (FirstMapping && FirstMapping == LastMapping &&
+ SourceMgr->isMacroArgExpansion(First->location()) &&
+ SourceMgr->isMacroArgExpansion(Last->location())) {
+ // We use excluded Prev/Next token for bounds checking.
+ SourceLocation Prev = (First == &ExpandedTokens.front())
+ ? SourceLocation()
+ : (First - 1)->location();
+ SourceLocation Next = (Last == &ExpandedTokens.back())
+ ? SourceLocation()
+ : (Last + 1)->location();
+ SourceRange Range = spelledForExpandedSlow(
+ First->location(), Last->location(), Prev, Next, FID, *SourceMgr);
+ if (Range.isInvalid())
+ return llvm::None;
+ return getTokensCovering(File.SpelledTokens, Range, *SourceMgr);
}
+ // Otherwise, use the fast version based on Mappings.
// Do not allow changes that doesn't cover full expansion.
- unsigned BeginExpanded = Expanded.begin() - ExpandedTokens.data();
- unsigned EndExpanded = Expanded.end() - ExpandedTokens.data();
- if (BeginMapping && BeginExpanded != BeginMapping->BeginExpanded)
+ unsigned FirstExpanded = Expanded.begin() - ExpandedTokens.data();
+ unsigned LastExpanded = Expanded.end() - ExpandedTokens.data();
+ if (FirstMapping && FirstExpanded != FirstMapping->BeginExpanded)
return llvm::None;
- if (LastMapping && LastMapping->EndExpanded != EndExpanded)
+ if (LastMapping && LastMapping->EndExpanded != LastExpanded)
return llvm::None;
- // All is good, return the result.
return llvm::makeArrayRef(
- BeginMapping ? File.SpelledTokens.data() + BeginMapping->BeginSpelled
- : BeginSpelled,
+ FirstMapping ? File.SpelledTokens.data() + FirstMapping->BeginSpelled
+ : FirstSpelled,
LastMapping ? File.SpelledTokens.data() + LastMapping->EndSpelled
: LastSpelled + 1);
}
diff --git a/contrib/llvm-project/libcxx/include/__config b/contrib/llvm-project/libcxx/include/__config
index 8c2f7614af53..589b5c3b2241 100644
--- a/contrib/llvm-project/libcxx/include/__config
+++ b/contrib/llvm-project/libcxx/include/__config
@@ -22,9 +22,21 @@
# pragma GCC system_header
#endif
+#if defined(__apple_build_version__)
+# define _LIBCPP_COMPILER_CLANG_BASED
+# define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000)
+#elif defined(__clang__)
+# define _LIBCPP_COMPILER_CLANG_BASED
+# define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__)
+#elif defined(__GNUC__)
+# define _LIBCPP_COMPILER_GCC
+#elif defined(_MSC_VER)
+# define _LIBCPP_COMPILER_MSVC
+#endif
+
#ifdef __cplusplus
-# define _LIBCPP_VERSION 15000
+# define _LIBCPP_VERSION 15003
# define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y
# define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y)
@@ -198,18 +210,6 @@
# define __has_include(...) 0
# endif
-# if defined(__apple_build_version__)
-# define _LIBCPP_COMPILER_CLANG_BASED
-# define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000)
-# elif defined(__clang__)
-# define _LIBCPP_COMPILER_CLANG_BASED
-# define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__)
-# elif defined(__GNUC__)
-# define _LIBCPP_COMPILER_GCC
-# elif defined(_MSC_VER)
-# define _LIBCPP_COMPILER_MSVC
-# endif
-
# if !defined(_LIBCPP_COMPILER_CLANG_BASED) && __cplusplus < 201103L
# error "libc++ only supports C++03 with Clang-based compilers. Please enable C++11"
# endif
@@ -1101,6 +1101,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD
# define _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
# endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES
+// Leave the deprecation notices in by default, but don't remove unary_function and
+// binary_function entirely just yet. That way, folks will have one release to act
+// on the deprecation warnings.
+# ifndef _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
+# define _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
+# endif
+
# if defined(_LIBCPP_ENABLE_CXX20_REMOVED_FEATURES)
# define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS
# define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION
diff --git a/contrib/llvm-project/libcxx/include/atomic b/contrib/llvm-project/libcxx/include/atomic
index 6cdc839c1715..28c86ce5daa2 100644
--- a/contrib/llvm-project/libcxx/include/atomic
+++ b/contrib/llvm-project/libcxx/include/atomic
@@ -1113,6 +1113,12 @@ _Tp kill_dependency(_Tp __y) _NOEXCEPT
# define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE
#endif
+template <class _Tp>
+struct __libcpp_is_always_lock_free {
+ // __atomic_always_lock_free is available in all Standard modes
+ static const bool __value = __atomic_always_lock_free(sizeof(_Tp), 0);
+};
+
#ifdef _LIBCPP_ATOMIC_ONLY_USE_BUILTINS
template<typename _Tp>
@@ -1404,42 +1410,8 @@ _Tp __cxx_atomic_fetch_xor(__cxx_atomic_lock_impl<_Tp>* __a,
return __old;
}
-#ifdef __cpp_lib_atomic_is_always_lock_free
-
-template<typename _Tp> struct __cxx_is_always_lock_free {
- enum { __value = __atomic_always_lock_free(sizeof(_Tp), 0) }; };
-
-#else
-
-template<typename _Tp> struct __cxx_is_always_lock_free { enum { __value = false }; };
-// Implementations must match the C ATOMIC_*_LOCK_FREE macro values.
-template<> struct __cxx_is_always_lock_free<bool> { enum { __value = 2 == ATOMIC_BOOL_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<char> { enum { __value = 2 == ATOMIC_CHAR_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<signed char> { enum { __value = 2 == ATOMIC_CHAR_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<unsigned char> { enum { __value = 2 == ATOMIC_CHAR_LOCK_FREE }; };
-#ifndef _LIBCPP_HAS_NO_CHAR8_T
-template<> struct __cxx_is_always_lock_free<char8_t> { enum { __value = 2 == ATOMIC_CHAR8_T_LOCK_FREE }; };
-#endif
-template<> struct __cxx_is_always_lock_free<char16_t> { enum { __value = 2 == ATOMIC_CHAR16_T_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<char32_t> { enum { __value = 2 == ATOMIC_CHAR32_T_LOCK_FREE }; };
-#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
-template<> struct __cxx_is_always_lock_free<wchar_t> { enum { __value = 2 == ATOMIC_WCHAR_T_LOCK_FREE }; };
-#endif
-template<> struct __cxx_is_always_lock_free<short> { enum { __value = 2 == ATOMIC_SHORT_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<unsigned short> { enum { __value = 2 == ATOMIC_SHORT_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<int> { enum { __value = 2 == ATOMIC_INT_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<unsigned int> { enum { __value = 2 == ATOMIC_INT_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<long> { enum { __value = 2 == ATOMIC_LONG_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<unsigned long> { enum { __value = 2 == ATOMIC_LONG_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<long long> { enum { __value = 2 == ATOMIC_LLONG_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<unsigned long long> { enum { __value = 2 == ATOMIC_LLONG_LOCK_FREE }; };
-template<typename _Tp> struct __cxx_is_always_lock_free<_Tp*> { enum { __value = 2 == ATOMIC_POINTER_LOCK_FREE }; };
-template<> struct __cxx_is_always_lock_free<std::nullptr_t> { enum { __value = 2 == ATOMIC_POINTER_LOCK_FREE }; };
-
-#endif //__cpp_lib_atomic_is_always_lock_free
-
template <typename _Tp,
- typename _Base = typename conditional<__cxx_is_always_lock_free<_Tp>::__value,
+ typename _Base = typename conditional<__libcpp_is_always_lock_free<_Tp>::__value,
__cxx_atomic_base_impl<_Tp>,
__cxx_atomic_lock_impl<_Tp> >::type>
#else
@@ -1562,7 +1534,7 @@ struct __atomic_base // false
mutable __cxx_atomic_impl<_Tp> __a_;
#if defined(__cpp_lib_atomic_is_always_lock_free)
- static _LIBCPP_CONSTEXPR bool is_always_lock_free = __atomic_always_lock_free(sizeof(__a_), 0);
+ static _LIBCPP_CONSTEXPR bool is_always_lock_free = __libcpp_is_always_lock_free<__cxx_atomic_impl<_Tp> >::__value;
#endif
_LIBCPP_INLINE_VISIBILITY
@@ -2665,7 +2637,7 @@ typedef atomic<uintmax_t> atomic_uintmax_t;
// atomic_*_lock_free : prefer the contention type most highly, then the largest lock-free type
#ifdef __cpp_lib_atomic_is_always_lock_free
-# define _LIBCPP_CONTENTION_LOCK_FREE __atomic_always_lock_free(sizeof(__cxx_contention_t), 0)
+# define _LIBCPP_CONTENTION_LOCK_FREE ::std::__libcpp_is_always_lock_free<__cxx_contention_t>::__value
#else
# define _LIBCPP_CONTENTION_LOCK_FREE false
#endif
diff --git a/contrib/llvm-project/libcxx/include/stdatomic.h b/contrib/llvm-project/libcxx/include/stdatomic.h
index d9550c44061c..ff2a5682f5bb 100644
--- a/contrib/llvm-project/libcxx/include/stdatomic.h
+++ b/contrib/llvm-project/libcxx/include/stdatomic.h
@@ -121,7 +121,7 @@ using std::atomic_signal_fence // see below
# pragma GCC system_header
#endif
-#if _LIBCPP_STD_VER > 20
+#if defined(__cplusplus) && _LIBCPP_STD_VER > 20
#include <atomic>
#include <version>
@@ -230,6 +230,6 @@ using std::atomic_thread_fence _LIBCPP_USING_IF_EXISTS;
# include_next <stdatomic.h>
# endif
-#endif // _LIBCPP_STD_VER > 20
+#endif // defined(__cplusplus) && _LIBCPP_STD_VER > 20
#endif // _LIBCPP_STDATOMIC_H
diff --git a/contrib/llvm-project/libcxx/include/version b/contrib/llvm-project/libcxx/include/version
index 8ffb1747eb27..d0c6fe466e70 100644
--- a/contrib/llvm-project/libcxx/include/version
+++ b/contrib/llvm-project/libcxx/include/version
@@ -332,7 +332,7 @@ __cpp_lib_void_t 201411L <type_traits>
# undef __cpp_lib_execution
// # define __cpp_lib_execution 201902L
# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
-# define __cpp_lib_format 202106L
+// # define __cpp_lib_format 202106L
# endif
# define __cpp_lib_generic_unordered_lookup 201811L
# define __cpp_lib_int_pow2 202002L
diff --git a/contrib/llvm-project/lld/COFF/Symbols.h b/contrib/llvm-project/lld/COFF/Symbols.h
index c8865d128fb8..a4c6f893f10c 100644
--- a/contrib/llvm-project/lld/COFF/Symbols.h
+++ b/contrib/llvm-project/lld/COFF/Symbols.h
@@ -106,7 +106,10 @@ protected:
: symbolKind(k), isExternal(true), isCOMDAT(false),
writtenToSymtab(false), pendingArchiveLoad(false), isGCRoot(false),
isRuntimePseudoReloc(false), deferUndefined(false), canInline(true),
- nameSize(n.size()), nameData(n.empty() ? nullptr : n.data()) {}
+ nameSize(n.size()), nameData(n.empty() ? nullptr : n.data()) {
+ assert((!n.empty() || k <= LastDefinedCOFFKind) &&
+ "If the name is empty, the Symbol must be a DefinedCOFF.");
+ }
const unsigned symbolKind : 8;
unsigned isExternal : 1;
diff --git a/contrib/llvm-project/lld/COFF/Writer.cpp b/contrib/llvm-project/lld/COFF/Writer.cpp
index df60c9032b2d..f39697d5d381 100644
--- a/contrib/llvm-project/lld/COFF/Writer.cpp
+++ b/contrib/llvm-project/lld/COFF/Writer.cpp
@@ -395,7 +395,7 @@ getThunk(DenseMap<uint64_t, Defined *> &lastThunks, Defined *target, uint64_t p,
default:
llvm_unreachable("Unexpected architecture");
}
- Defined *d = make<DefinedSynthetic>("", c);
+ Defined *d = make<DefinedSynthetic>("range_extension_thunk", c);
lastThunk = d;
return {d, true};
}
diff --git a/contrib/llvm-project/lld/ELF/Arch/RISCV.cpp b/contrib/llvm-project/lld/ELF/Arch/RISCV.cpp
index 8fca1a686a79..56a516f9cdc1 100644
--- a/contrib/llvm-project/lld/ELF/Arch/RISCV.cpp
+++ b/contrib/llvm-project/lld/ELF/Arch/RISCV.cpp
@@ -750,12 +750,13 @@ void elf::riscvFinalizeRelax(int passes) {
p += size;
// For R_RISCV_ALIGN, we will place `offset` in a location (among NOPs)
- // to satisfy the alignment requirement. If `remove` is a multiple of 4,
- // it is as if we have skipped some NOPs. Otherwise we are in the middle
- // of a 4-byte NOP, and we need to rewrite the NOP sequence.
+ // to satisfy the alignment requirement. If both `remove` and r.addend
+ // are multiples of 4, it is as if we have skipped some NOPs. Otherwise
+ // we are in the middle of a 4-byte NOP, and we need to rewrite the NOP
+ // sequence.
int64_t skip = 0;
if (r.type == R_RISCV_ALIGN) {
- if (remove % 4 != 0) {
+ if (remove % 4 || r.addend % 4) {
skip = r.addend - remove;
int64_t j = 0;
for (; j + 4 <= skip; j += 4)
diff --git a/contrib/llvm-project/lld/MachO/InputFiles.cpp b/contrib/llvm-project/lld/MachO/InputFiles.cpp
index fd0e4ec8834c..87034d41e87d 100644
--- a/contrib/llvm-project/lld/MachO/InputFiles.cpp
+++ b/contrib/llvm-project/lld/MachO/InputFiles.cpp
@@ -1587,6 +1587,15 @@ void ObjFile::registerEhFrames(Section &ehFrameSection) {
funcSym->unwindEntry = isec;
ehRelocator.commit();
}
+
+ // __eh_frame is marked as S_ATTR_LIVE_SUPPORT in input files, because FDEs
+ // are normally required to be kept alive if they reference a live symbol.
+ // However, we've explicitly created a dependency from a symbol to its FDE, so
+ // dead-stripping will just work as usual, and S_ATTR_LIVE_SUPPORT will only
+ // serve to incorrectly prevent us from dead-stripping duplicate FDEs for a
+ // live symbol (e.g. if there were multiple weak copies). Remove this flag to
+ // let dead-stripping proceed correctly.
+ ehFrameSection.flags &= ~S_ATTR_LIVE_SUPPORT;
}
std::string ObjFile::sourceFile() const {
diff --git a/contrib/llvm-project/lld/MachO/UnwindInfoSection.cpp b/contrib/llvm-project/lld/MachO/UnwindInfoSection.cpp
index c3f563d5572b..ca6cbdfbb8bb 100644
--- a/contrib/llvm-project/lld/MachO/UnwindInfoSection.cpp
+++ b/contrib/llvm-project/lld/MachO/UnwindInfoSection.cpp
@@ -196,13 +196,13 @@ UnwindInfoSection::UnwindInfoSection()
// Record function symbols that may need entries emitted in __unwind_info, which
// stores unwind data for address ranges.
//
-// Note that if several adjacent functions have the same unwind encoding, LSDA,
-// and personality function, they share one unwind entry. For this to work,
-// functions without unwind info need explicit "no unwind info" unwind entries
-// -- else the unwinder would think they have the unwind info of the closest
-// function with unwind info right before in the image. Thus, we add function
-// symbols for each unique address regardless of whether they have associated
-// unwind info.
+// Note that if several adjacent functions have the same unwind encoding and
+// personality function and no LSDA, they share one unwind entry. For this to
+// work, functions without unwind info need explicit "no unwind info" unwind
+// entries -- else the unwinder would think they have the unwind info of the
+// closest function with unwind info right before in the image. Thus, we add
+// function symbols for each unique address regardless of whether they have
+// associated unwind info.
void UnwindInfoSection::addSymbol(const Defined *d) {
if (d->unwindEntry)
allEntriesAreOmitted = false;
@@ -427,9 +427,9 @@ void UnwindInfoSectionImpl::finalize() {
// assigned, so we can relocate the __LD,__compact_unwind entries
// into a temporary buffer. Relocation is necessary in order to sort
// the CU entries by function address. Sorting is necessary so that
- // we can fold adjacent CU entries with identical
- // encoding+personality+lsda. Folding is necessary because it reduces
- // the number of CU entries by as much as 3 orders of magnitude!
+ // we can fold adjacent CU entries with identical encoding+personality
+ // and without any LSDA. Folding is necessary because it reduces the
+ // number of CU entries by as much as 3 orders of magnitude!
cuEntries.resize(symbols.size());
// The "map" part of the symbols MapVector was only needed for deduplication
// in addSymbol(). Now that we are done adding, move the contents to a plain
@@ -445,7 +445,7 @@ void UnwindInfoSectionImpl::finalize() {
return cuEntries[a].functionAddress < cuEntries[b].functionAddress;
});
- // Fold adjacent entries with matching encoding+personality+lsda
+ // Fold adjacent entries with matching encoding+personality and without LSDA
// We use three iterators on the same cuIndices to fold in-situ:
// (1) `foldBegin` is the first of a potential sequence of matching entries
// (2) `foldEnd` is the first non-matching entry after `foldBegin`.
@@ -455,11 +455,32 @@ void UnwindInfoSectionImpl::finalize() {
auto foldWrite = cuIndices.begin();
for (auto foldBegin = cuIndices.begin(); foldBegin < cuIndices.end();) {
auto foldEnd = foldBegin;
+ // Common LSDA encodings (e.g. for C++ and Objective-C) contain offsets from
+ // a base address. The base address is normally not contained directly in
+ // the LSDA, and in that case, the personality function treats the starting
+ // address of the function (which is computed by the unwinder) as the base
+ // address and interprets the LSDA accordingly. The unwinder computes the
+ // starting address of a function as the address associated with its CU
+ // entry. For this reason, we cannot fold adjacent entries if they have an
+ // LSDA, because folding would make the unwinder compute the wrong starting
+ // address for the functions with the folded entries, which in turn would
+ // cause the personality function to misinterpret the LSDA for those
+ // functions. In the very rare case where the base address is encoded
+ // directly in the LSDA, two functions at different addresses would
+ // necessarily have different LSDAs, so their CU entries would not have been
+ // folded anyway.
while (++foldEnd < cuIndices.end() &&
cuEntries[*foldBegin].encoding == cuEntries[*foldEnd].encoding &&
+ !cuEntries[*foldBegin].lsda && !cuEntries[*foldEnd].lsda &&
+ // If we've gotten to this point, we don't have an LSDA, which should
+ // also imply that we don't have a personality function, since in all
+ // likelihood a personality function needs the LSDA to do anything
+ // useful. It can be technically valid to have a personality function
+ // and no LSDA though (e.g. the C++ personality __gxx_personality_v0
+ // is just a no-op without LSDA), so we still check for personality
+ // function equivalence to handle that case.
cuEntries[*foldBegin].personality ==
cuEntries[*foldEnd].personality &&
- cuEntries[*foldBegin].lsda == cuEntries[*foldEnd].lsda &&
canFoldEncoding(cuEntries[*foldEnd].encoding))
;
*foldWrite++ = *foldBegin;
diff --git a/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleImpl.h b/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleImpl.h
index ea2847f8c8ee..07ac1768ea27 100644
--- a/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleImpl.h
+++ b/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleImpl.h
@@ -144,8 +144,12 @@ private:
};
template <typename ContextT>
-auto GenericCycleInfo<ContextT>::getTopLevelParentCycle(
- const BlockT *Block) const -> CycleT * {
+auto GenericCycleInfo<ContextT>::getTopLevelParentCycle(BlockT *Block)
+ -> CycleT * {
+ auto Cycle = BlockMapTopLevel.find(Block);
+ if (Cycle != BlockMapTopLevel.end())
+ return Cycle->second;
+
auto MapIt = BlockMap.find(Block);
if (MapIt == BlockMap.end())
return nullptr;
@@ -153,12 +157,15 @@ auto GenericCycleInfo<ContextT>::getTopLevelParentCycle(
auto *C = MapIt->second;
while (C->ParentCycle)
C = C->ParentCycle;
+ BlockMapTopLevel.try_emplace(Block, C);
return C;
}
template <typename ContextT>
-void GenericCycleInfo<ContextT>::moveToNewParent(CycleT *NewParent,
- CycleT *Child) {
+void GenericCycleInfo<ContextT>::moveTopLevelCycleToNewParent(CycleT *NewParent,
+ CycleT *Child) {
+ assert((!Child->ParentCycle && !NewParent->ParentCycle) &&
+ "NewParent and Child must be both top level cycle!\n");
auto &CurrentContainer =
Child->ParentCycle ? Child->ParentCycle->Children : TopLevelCycles;
auto Pos = llvm::find_if(CurrentContainer, [=](const auto &Ptr) -> bool {
@@ -169,6 +176,13 @@ void GenericCycleInfo<ContextT>::moveToNewParent(CycleT *NewParent,
*Pos = std::move(CurrentContainer.back());
CurrentContainer.pop_back();
Child->ParentCycle = NewParent;
+
+ NewParent->Blocks.insert(NewParent->Blocks.end(), Child->block_begin(),
+ Child->block_end());
+
+ for (auto &It : BlockMapTopLevel)
+ if (It.second == Child)
+ It.second = NewParent;
}
/// \brief Main function of the cycle info computations.
@@ -240,10 +254,7 @@ void GenericCycleInfoCompute<ContextT>::run(BlockT *EntryBlock) {
<< "discovered child cycle "
<< Info.Context.print(BlockParent->getHeader()) << "\n");
// Make BlockParent the child of NewCycle.
- Info.moveToNewParent(NewCycle.get(), BlockParent);
- NewCycle->Blocks.insert(NewCycle->Blocks.end(),
- BlockParent->block_begin(),
- BlockParent->block_end());
+ Info.moveTopLevelCycleToNewParent(NewCycle.get(), BlockParent);
for (auto *ChildEntry : BlockParent->entries())
ProcessPredecessors(ChildEntry);
@@ -257,6 +268,7 @@ void GenericCycleInfoCompute<ContextT>::run(BlockT *EntryBlock) {
assert(!is_contained(NewCycle->Blocks, Block));
NewCycle->Blocks.push_back(Block);
ProcessPredecessors(Block);
+ Info.BlockMapTopLevel.try_emplace(Block, NewCycle.get());
}
} while (!Worklist.empty());
@@ -336,6 +348,7 @@ void GenericCycleInfoCompute<ContextT>::dfs(BlockT *EntryBlock) {
template <typename ContextT> void GenericCycleInfo<ContextT>::clear() {
TopLevelCycles.clear();
BlockMap.clear();
+ BlockMapTopLevel.clear();
}
/// \brief Compute the cycle info for a function.
diff --git a/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleInfo.h b/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleInfo.h
index 970664b85715..5f851b795cbc 100644
--- a/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleInfo.h
+++ b/contrib/llvm-project/llvm/include/llvm/ADT/GenericCycleInfo.h
@@ -232,15 +232,24 @@ public:
private:
ContextT Context;
- /// Map basic blocks to their inner-most containing loop.
+ /// Map basic blocks to their inner-most containing cycle.
DenseMap<BlockT *, CycleT *> BlockMap;
+ /// Map basic blocks to their top level containing cycle.
+ DenseMap<BlockT *, CycleT *> BlockMapTopLevel;
+
/// Outermost cycles discovered by any DFS.
///
/// Note: The implementation treats the nullptr as the parent of
/// every top-level cycle. See \ref contains for an example.
std::vector<std::unique_ptr<CycleT>> TopLevelCycles;
+ /// Move \p Child to \p NewParent by manipulating Children vectors.
+ ///
+ /// Note: This is an incomplete operation that does not update the depth of
+ /// the subtree.
+ void moveTopLevelCycleToNewParent(CycleT *NewParent, CycleT *Child);
+
public:
GenericCycleInfo() = default;
GenericCycleInfo(GenericCycleInfo &&) = default;
@@ -254,13 +263,7 @@ public:
CycleT *getCycle(const BlockT *Block) const;
unsigned getCycleDepth(const BlockT *Block) const;
- CycleT *getTopLevelParentCycle(const BlockT *Block) const;
-
- /// Move \p Child to \p NewParent by manipulating Children vectors.
- ///
- /// Note: This is an incomplete operation that does not update the
- /// list of blocks in the new parent or the depth of the subtree.
- void moveToNewParent(CycleT *NewParent, CycleT *Child);
+ CycleT *getTopLevelParentCycle(BlockT *Block);
/// Methods for debug and self-test.
//@{
diff --git a/contrib/llvm-project/llvm/include/llvm/Object/ELF.h b/contrib/llvm-project/llvm/include/llvm/Object/ELF.h
index 794d29fd9913..5eb43777a951 100644
--- a/contrib/llvm-project/llvm/include/llvm/Object/ELF.h
+++ b/contrib/llvm-project/llvm/include/llvm/Object/ELF.h
@@ -1028,7 +1028,7 @@ ELFFile<ELFT>::getVersionDependencies(const Elf_Shdr &Sec,
VN.Offset = VerneedBuf - Start;
if (Verneed->vn_file < StrTab.size())
- VN.File = std::string(StrTab.drop_front(Verneed->vn_file));
+ VN.File = std::string(StrTab.data() + Verneed->vn_file);
else
VN.File = ("<corrupt vn_file: " + Twine(Verneed->vn_file) + ">").str();
diff --git a/contrib/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp b/contrib/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp
index 2958a5054afc..c784c27d36b4 100644
--- a/contrib/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/contrib/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -5917,8 +5917,13 @@ const SCEV *ScalarEvolution::createNodeForPHI(PHINode *PN) {
if (const SCEV *S = createNodeFromSelectLikePHI(PN))
return S;
+ // If the PHI has a single incoming value, follow that value, unless the
+ // PHI's incoming blocks are in a different loop, in which case doing so
+ // risks breaking LCSSA form. Instcombine would normally zap these, but
+ // it doesn't have DominatorTree information, so it may miss cases.
if (Value *V = simplifyInstruction(PN, {getDataLayout(), &TLI, &DT, &AC}))
- return getSCEV(V);
+ if (LI.replacementPreservesLCSSAForm(PN, V))
+ return getSCEV(V);
// If it's not a loop phi, we can't handle it yet.
return getUnknown(PN);
diff --git a/contrib/llvm-project/llvm/lib/Analysis/ValueTracking.cpp b/contrib/llvm-project/llvm/lib/Analysis/ValueTracking.cpp
index 2dd671b4ab9e..569ee6b3ea86 100644
--- a/contrib/llvm-project/llvm/lib/Analysis/ValueTracking.cpp
+++ b/contrib/llvm-project/llvm/lib/Analysis/ValueTracking.cpp
@@ -3593,14 +3593,23 @@ static bool cannotBeOrderedLessThanZeroImpl(const Value *V,
// Unsigned integers are always nonnegative.
case Instruction::UIToFP:
return true;
- case Instruction::FMul:
case Instruction::FDiv:
- // X * X is always non-negative or a NaN.
// X / X is always exactly 1.0 or a NaN.
if (I->getOperand(0) == I->getOperand(1) &&
(!SignBitOnly || cast<FPMathOperator>(I)->hasNoNaNs()))
return true;
+ // Set SignBitOnly for RHS, because X / -0.0 is -Inf (or NaN).
+ return cannotBeOrderedLessThanZeroImpl(I->getOperand(0), TLI, SignBitOnly,
+ Depth + 1) &&
+ cannotBeOrderedLessThanZeroImpl(I->getOperand(1), TLI,
+ /*SignBitOnly*/ true, Depth + 1);
+ case Instruction::FMul:
+ // X * X is always non-negative or a NaN.
+ if (I->getOperand(0) == I->getOperand(1) &&
+ (!SignBitOnly || cast<FPMathOperator>(I)->hasNoNaNs()))
+ return true;
+
LLVM_FALLTHROUGH;
case Instruction::FAdd:
case Instruction::FRem:
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/DwarfEHPrepare.cpp b/contrib/llvm-project/llvm/lib/CodeGen/DwarfEHPrepare.cpp
index fb8a3e383950..aa81f618dc59 100644
--- a/contrib/llvm-project/llvm/lib/CodeGen/DwarfEHPrepare.cpp
+++ b/contrib/llvm-project/llvm/lib/CodeGen/DwarfEHPrepare.cpp
@@ -25,6 +25,7 @@
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
+#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
@@ -247,6 +248,13 @@ bool DwarfEHPrepare::InsertUnwindResumeCalls() {
// Call the rewind function.
CallInst *CI =
CallInst::Create(RewindFunction, RewindFunctionArgs, "", UnwindBB);
+ // The verifier requires that all calls of debug-info-bearing functions
+ // from debug-info-bearing functions have a debug location (for inlining
+ // purposes). Assign a dummy location to satisfy the constraint.
+ Function *RewindFn = dyn_cast<Function>(RewindFunction.getCallee());
+ if (RewindFn && RewindFn->getSubprogram())
+ if (DISubprogram *SP = F.getSubprogram())
+ CI->setDebugLoc(DILocation::get(SP->getContext(), 0, 0, SP));
CI->setCallingConv(RewindFunctionCallingConv);
// We never expect _Unwind_Resume to return.
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/contrib/llvm-project/llvm/lib/CodeGen/PrologEpilogInserter.cpp
index 89a43c4f57f6..85d051cfdbe7 100644
--- a/contrib/llvm-project/llvm/lib/CodeGen/PrologEpilogInserter.cpp
+++ b/contrib/llvm-project/llvm/lib/CodeGen/PrologEpilogInserter.cpp
@@ -1262,9 +1262,10 @@ void PEI::insertZeroCallUsedRegs(MachineFunction &MF) {
}
}
- // Don't clear registers that are reset before exiting.
- for (const CalleeSavedInfo &CSI : MF.getFrameInfo().getCalleeSavedInfo())
- for (MCRegister Reg : TRI.sub_and_superregs_inclusive(CSI.getReg()))
+ // Don't clear registers that must be preserved.
+ for (const MCPhysReg *CSRegs = TRI.getCalleeSavedRegs(&MF);
+ MCPhysReg CSReg = *CSRegs; ++CSRegs)
+ for (MCRegister Reg : TRI.sub_and_superregs_inclusive(CSReg))
RegsToZero.reset(Reg);
const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering();
diff --git a/contrib/llvm-project/llvm/lib/Support/X86TargetParser.cpp b/contrib/llvm-project/llvm/lib/Support/X86TargetParser.cpp
index 2567f3ed8034..0daaa6d815bf 100644
--- a/contrib/llvm-project/llvm/lib/Support/X86TargetParser.cpp
+++ b/contrib/llvm-project/llvm/lib/Support/X86TargetParser.cpp
@@ -203,10 +203,10 @@ constexpr FeatureBitset FeaturesTigerlake =
FeatureCLWB | FeatureMOVDIRI | FeatureSHSTK | FeatureKL | FeatureWIDEKL;
constexpr FeatureBitset FeaturesSapphireRapids =
FeaturesICLServer | FeatureAMX_BF16 | FeatureAMX_INT8 | FeatureAMX_TILE |
- FeatureAVX512BF16 | FeatureAVX512FP16 | FeatureAVX512VP2INTERSECT |
- FeatureAVXVNNI | FeatureCLDEMOTE | FeatureENQCMD | FeatureMOVDIR64B |
- FeatureMOVDIRI | FeaturePTWRITE | FeatureSERIALIZE | FeatureSHSTK |
- FeatureTSXLDTRK | FeatureUINTR | FeatureWAITPKG;
+ FeatureAVX512BF16 | FeatureAVX512FP16 | FeatureAVXVNNI | FeatureCLDEMOTE |
+ FeatureENQCMD | FeatureMOVDIR64B | FeatureMOVDIRI | FeaturePTWRITE |
+ FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR |
+ FeatureWAITPKG;
// Intel Atom processors.
// Bonnell has feature parity with Core2 and adds MOVBE.
@@ -367,7 +367,7 @@ constexpr ProcInfo Processors[] = {
// Tigerlake microarchitecture based processors.
{ {"tigerlake"}, CK_Tigerlake, FEATURE_AVX512VP2INTERSECT, FeaturesTigerlake },
// Sapphire Rapids microarchitecture based processors.
- { {"sapphirerapids"}, CK_SapphireRapids, FEATURE_AVX512VP2INTERSECT, FeaturesSapphireRapids },
+ { {"sapphirerapids"}, CK_SapphireRapids, FEATURE_AVX512BF16, FeaturesSapphireRapids },
// Alderlake microarchitecture based processors.
{ {"alderlake"}, CK_Alderlake, FEATURE_AVX2, FeaturesAlderlake },
// Knights Landing processor.
diff --git a/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp b/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
index bd0232c71d48..f37c50900adb 100644
--- a/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
+++ b/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
@@ -149,6 +149,7 @@ private:
Align H)
: Inst(I), Addr(A), ValTy(T), HaveAlign(H),
NeedAlign(HVC.getTypeAlignment(ValTy)) {}
+ AddrInfo &operator=(const AddrInfo &) = default;
// XXX: add Size member?
Instruction *Inst;
@@ -185,6 +186,7 @@ private:
Segment(Value *Val, int Begin, int Len)
: Val(Val), Start(Begin), Size(Len) {}
Segment(const Segment &Seg) = default;
+ Segment &operator=(const Segment &Seg) = default;
Value *Val; // Value representable as a sequence of bytes.
int Start; // First byte of the value that belongs to the segment.
int Size; // Number of bytes in the segment.
@@ -195,6 +197,7 @@ private:
Block(Value *Val, int Off, int Len, int Pos)
: Seg(Val, Off, Len), Pos(Pos) {}
Block(const Block &Blk) = default;
+ Block &operator=(const Block &Blk) = default;
Segment Seg; // Value segment.
int Pos; // Position (offset) of the segment in the Block.
};
diff --git a/contrib/llvm-project/llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp b/contrib/llvm-project/llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp
index 1926977ea66e..2e426bb79cae 100644
--- a/contrib/llvm-project/llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp
+++ b/contrib/llvm-project/llvm/lib/Target/SPIRV/SPIRVDuplicatesTracker.cpp
@@ -70,6 +70,7 @@ void SPIRVGeneralDuplicatesTracker::buildDepsGraph(
}
}
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
if (MMI) {
const Module *M = MMI->getModule();
for (auto F = M->begin(), E = M->end(); F != E; ++F) {
@@ -92,4 +93,5 @@ void SPIRVGeneralDuplicatesTracker::buildDepsGraph(
}
}
}
+#endif
}
diff --git a/contrib/llvm-project/llvm/lib/Target/X86/X86.td b/contrib/llvm-project/llvm/lib/Target/X86/X86.td
index fa0a6bd415dc..f98916e81cee 100644
--- a/contrib/llvm-project/llvm/lib/Target/X86/X86.td
+++ b/contrib/llvm-project/llvm/lib/Target/X86/X86.td
@@ -909,7 +909,6 @@ def ProcessorFeatures {
FeatureTSXLDTRK,
FeatureENQCMD,
FeatureSHSTK,
- FeatureVP2INTERSECT,
FeatureMOVDIRI,
FeatureMOVDIR64B,
FeatureUINTR];
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopVersioning.cpp b/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopVersioning.cpp
index 97f29527bb95..6309eed7963d 100644
--- a/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopVersioning.cpp
+++ b/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopVersioning.cpp
@@ -137,8 +137,10 @@ void LoopVersioning::addPHINodes(
// See if we have a single-operand PHI with the value defined by the
// original loop.
for (auto I = PHIBlock->begin(); (PN = dyn_cast<PHINode>(I)); ++I) {
- if (PN->getIncomingValue(0) == Inst)
+ if (PN->getIncomingValue(0) == Inst) {
+ SE->forgetValue(PN);
break;
+ }
}
// If not create it.
if (!PN) {
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 91bc7dbad1d0..5fd4e45d80fb 100644
--- a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -8149,9 +8149,15 @@ VPRecipeBase *VPRecipeBuilder::tryToOptimizeInductionPHI(
*PSE.getSE(), *OrigLoop, Range);
// Check if this is pointer induction. If so, build the recipe for it.
- if (auto *II = Legal->getPointerInductionDescriptor(Phi))
- return new VPWidenPointerInductionRecipe(Phi, Operands[0], *II,
- *PSE.getSE());
+ if (auto *II = Legal->getPointerInductionDescriptor(Phi)) {
+ return new VPWidenPointerInductionRecipe(
+ Phi, Operands[0], *II, *PSE.getSE(),
+ LoopVectorizationPlanner::getDecisionAndClampRange(
+ [&](ElementCount VF) {
+ return CM.isScalarAfterVectorization(Phi, VF);
+ },
+ Range));
+ }
return nullptr;
}
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.h b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.h
index f009a7ee6b4b..7a6bc48e2aee 100644
--- a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.h
+++ b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.h
@@ -1187,15 +1187,19 @@ class VPWidenPointerInductionRecipe : public VPHeaderPHIRecipe {
/// explicitly.
ScalarEvolution &SE;
+ bool IsScalarAfterVectorization;
+
public:
/// Create a new VPWidenPointerInductionRecipe for \p Phi with start value \p
/// Start.
VPWidenPointerInductionRecipe(PHINode *Phi, VPValue *Start,
const InductionDescriptor &IndDesc,
- ScalarEvolution &SE)
+ ScalarEvolution &SE,
+ bool IsScalarAfterVectorization)
: VPHeaderPHIRecipe(VPVWidenPointerInductionSC, VPWidenPointerInductionSC,
Phi),
- IndDesc(IndDesc), SE(SE) {
+ IndDesc(IndDesc), SE(SE),
+ IsScalarAfterVectorization(IsScalarAfterVectorization) {
addOperand(Start);
}
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index cb7507264667..9a404640b4b8 100644
--- a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -983,10 +983,8 @@ void VPCanonicalIVPHIRecipe::print(raw_ostream &O, const Twine &Indent,
#endif
bool VPWidenPointerInductionRecipe::onlyScalarsGenerated(ElementCount VF) {
- bool IsUniform = vputils::onlyFirstLaneUsed(this);
- return all_of(users(),
- [&](const VPUser *U) { return U->usesScalars(this); }) &&
- (IsUniform || !VF.isScalable());
+ return IsScalarAfterVectorization &&
+ (!VF.isScalable() || vputils::onlyFirstLaneUsed(this));
}
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
diff --git a/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp b/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp
index ca73dafe2b8e..61676b4323d2 100644
--- a/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp
+++ b/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp
@@ -282,27 +282,28 @@ static void printProgramHeaders(const ELFFile<ELFT> &Obj, StringRef FileName) {
}
template <class ELFT>
-static void printSymbolVersionDependency(ArrayRef<uint8_t> Contents,
- StringRef StrTab) {
+static void printSymbolVersionDependency(StringRef FileName,
+ const ELFFile<ELFT> &Obj,
+ const typename ELFT::Shdr &Sec) {
outs() << "\nVersion References:\n";
- const uint8_t *Buf = Contents.data();
- while (Buf) {
- auto *Verneed = reinterpret_cast<const typename ELFT::Verneed *>(Buf);
- outs() << " required from "
- << StringRef(StrTab.drop_front(Verneed->vn_file).data()) << ":\n";
+ auto WarningHandler = [&](const Twine &Msg) {
+ reportWarning(Msg, FileName);
+ return Error::success();
+ };
+ Expected<std::vector<VerNeed>> V =
+ Obj.getVersionDependencies(Sec, WarningHandler);
+ if (!V) {
+ reportWarning(toString(V.takeError()), FileName);
+ return;
+ }
- const uint8_t *BufAux = Buf + Verneed->vn_aux;
- while (BufAux) {
- auto *Vernaux = reinterpret_cast<const typename ELFT::Vernaux *>(BufAux);
- outs() << " "
- << format("0x%08" PRIx32 " ", (uint32_t)Vernaux->vna_hash)
- << format("0x%02" PRIx16 " ", (uint16_t)Vernaux->vna_flags)
- << format("%02" PRIu16 " ", (uint16_t)Vernaux->vna_other)
- << StringRef(StrTab.drop_front(Vernaux->vna_name).data()) << '\n';
- BufAux = Vernaux->vna_next ? BufAux + Vernaux->vna_next : nullptr;
- }
- Buf = Verneed->vn_next ? Buf + Verneed->vn_next : nullptr;
+ raw_fd_ostream &OS = outs();
+ for (const VerNeed &VN : *V) {
+ OS << " required from " << VN.File << ":\n";
+ for (const VernAux &Aux : VN.AuxV)
+ OS << format(" 0x%08x 0x%02x %02u %s\n", Aux.Hash, Aux.Flags,
+ Aux.Other, Aux.Name.c_str());
}
}
@@ -355,7 +356,7 @@ static void printSymbolVersionInfo(const ELFFile<ELFT> &Elf,
StringRef StrTab = unwrapOrError(Elf.getStringTable(*StrTabSec), FileName);
if (Shdr.sh_type == ELF::SHT_GNU_verneed)
- printSymbolVersionDependency<ELFT>(Contents, StrTab);
+ printSymbolVersionDependency<ELFT>(FileName, Elf, Shdr);
else
printSymbolVersionDefinition<ELFT>(Shdr, Contents, StrTab);
}
diff --git a/etc/mtree/BSD.debug.dist b/etc/mtree/BSD.debug.dist
index 053d76eb05c7..75ac69ff3d7c 100644
--- a/etc/mtree/BSD.debug.dist
+++ b/etc/mtree/BSD.debug.dist
@@ -31,7 +31,7 @@
..
lib
clang
- 15.0.0
+ 15.0.3
lib
freebsd
..
diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist
index 2e524863fa00..0d57b75ffd8c 100644
--- a/etc/mtree/BSD.usr.dist
+++ b/etc/mtree/BSD.usr.dist
@@ -37,7 +37,7 @@
..
lib
clang
- 15.0.0
+ 15.0.3
include
cuda_wrappers
..
diff --git a/lib/clang/headers/Makefile b/lib/clang/headers/Makefile
index 58a5d458667f..c0f80c95e1d4 100644
--- a/lib/clang/headers/Makefile
+++ b/lib/clang/headers/Makefile
@@ -5,7 +5,7 @@
.PATH: ${CLANG_SRCS}/lib/Headers
INCSGROUPS= INCS CUDA HLSL OMP PPC
-INCSDIR= ${LIBDIR}/clang/15.0.0/include
+INCSDIR= ${LIBDIR}/clang/15.0.3/include
CUDADIR= ${INCSDIR}/cuda_wrappers
HLSLDIR= ${INCSDIR}/hlsl
OMPDIR= ${INCSDIR}/openmp_wrappers
diff --git a/lib/clang/include/VCSVersion.inc b/lib/clang/include/VCSVersion.inc
index 4441e4d4aafa..8b9c83471140 100644
--- a/lib/clang/include/VCSVersion.inc
+++ b/lib/clang/include/VCSVersion.inc
@@ -1,10 +1,10 @@
// $FreeBSD$
-#define LLVM_REVISION "llvmorg-15.0.0-9-g1c73596d3454"
+#define LLVM_REVISION "llvmorg-15.0.2-10-gf3c5289e7846"
#define LLVM_REPOSITORY "https://github.com/llvm/llvm-project.git"
-#define CLANG_REVISION "llvmorg-15.0.0-9-g1c73596d3454"
+#define CLANG_REVISION "llvmorg-15.0.2-10-gf3c5289e7846"
#define CLANG_REPOSITORY "https://github.com/llvm/llvm-project.git"
-#define LLDB_REVISION "llvmorg-15.0.0-9-g1c73596d3454"
+#define LLDB_REVISION "llvmorg-15.0.2-10-gf3c5289e7846"
#define LLDB_REPOSITORY "https://github.com/llvm/llvm-project.git"
diff --git a/lib/clang/include/clang/Basic/Version.inc b/lib/clang/include/clang/Basic/Version.inc
index a7851f10eb7a..dfac74612407 100644
--- a/lib/clang/include/clang/Basic/Version.inc
+++ b/lib/clang/include/clang/Basic/Version.inc
@@ -1,9 +1,9 @@
/* $FreeBSD$ */
-#define CLANG_VERSION 15.0.0
-#define CLANG_VERSION_STRING "15.0.0"
+#define CLANG_VERSION 15.0.3
+#define CLANG_VERSION_STRING "15.0.3"
#define CLANG_VERSION_MAJOR 15
#define CLANG_VERSION_MINOR 0
-#define CLANG_VERSION_PATCHLEVEL 0
+#define CLANG_VERSION_PATCHLEVEL 3
#define CLANG_VENDOR "FreeBSD "
diff --git a/lib/clang/include/clang/Config/config.h b/lib/clang/include/clang/Config/config.h
index 6c3208239419..92267b160d05 100644
--- a/lib/clang/include/clang/Config/config.h
+++ b/lib/clang/include/clang/Config/config.h
@@ -80,7 +80,7 @@
#define CLANG_HAVE_RLIMITS 1
/* The LLVM product name and version */
-#define BACKEND_PACKAGE_STRING "LLVM 15.0.0"
+#define BACKEND_PACKAGE_STRING "LLVM 15.0.3"
/* Linker version detected at compile time. */
/* #undef HOST_LINK_VERSION */
diff --git a/lib/clang/include/lld/Common/Version.inc b/lib/clang/include/lld/Common/Version.inc
index 7325d25e08a6..cf87a5e72363 100644
--- a/lib/clang/include/lld/Common/Version.inc
+++ b/lib/clang/include/lld/Common/Version.inc
@@ -1,4 +1,4 @@
// Local identifier in __FreeBSD_version style
#define LLD_FREEBSD_VERSION 1400005
-#define LLD_VERSION_STRING "15.0.0 (FreeBSD llvmorg-15.0.0-9-g1c73596d3454-" __XSTRING(LLD_FREEBSD_VERSION) ")"
+#define LLD_VERSION_STRING "15.0.3 (FreeBSD llvmorg-15.0.2-10-gf3c5289e7846-" __XSTRING(LLD_FREEBSD_VERSION) ")"
diff --git a/lib/clang/include/lldb/Version/Version.inc b/lib/clang/include/lldb/Version/Version.inc
index 919499091d2a..30970de1d1d9 100644
--- a/lib/clang/include/lldb/Version/Version.inc
+++ b/lib/clang/include/lldb/Version/Version.inc
@@ -1,6 +1,6 @@
-#define LLDB_VERSION 15.0.0
-#define LLDB_VERSION_STRING "15.0.0"
+#define LLDB_VERSION 15.0.3
+#define LLDB_VERSION_STRING "15.0.3"
#define LLDB_VERSION_MAJOR 15
#define LLDB_VERSION_MINOR 0
-#define LLDB_VERSION_PATCH 0
+#define LLDB_VERSION_PATCH 3
/* #undef LLDB_FULL_VERSION_STRING */
diff --git a/lib/clang/include/llvm/Config/config.h b/lib/clang/include/llvm/Config/config.h
index 4834ac961e39..4343e1a77f1c 100644
--- a/lib/clang/include/llvm/Config/config.h
+++ b/lib/clang/include/llvm/Config/config.h
@@ -353,10 +353,10 @@
#define PACKAGE_NAME "LLVM"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "LLVM 15.0.0"
+#define PACKAGE_STRING "LLVM 15.0.3"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "15.0.0"
+#define PACKAGE_VERSION "15.0.3"
/* Define to the vendor of this package. */
/* #undef PACKAGE_VENDOR */
diff --git a/lib/clang/include/llvm/Config/llvm-config.h b/lib/clang/include/llvm/Config/llvm-config.h
index e0f50991ec6d..3cb632668e85 100644
--- a/lib/clang/include/llvm/Config/llvm-config.h
+++ b/lib/clang/include/llvm/Config/llvm-config.h
@@ -74,10 +74,10 @@
#define LLVM_VERSION_MINOR 0
/* Patch version of the LLVM API */
-#define LLVM_VERSION_PATCH 0
+#define LLVM_VERSION_PATCH 3
/* LLVM version string */
-#define LLVM_VERSION_STRING "15.0.0"
+#define LLVM_VERSION_STRING "15.0.3"
/* Whether LLVM records statistics for use with GetStatistics(),
* PrintStatistics() or PrintStatisticsJSON()
diff --git a/lib/clang/include/llvm/Support/VCSRevision.h b/lib/clang/include/llvm/Support/VCSRevision.h
index a655458a3666..36e2fcbcd33c 100644
--- a/lib/clang/include/llvm/Support/VCSRevision.h
+++ b/lib/clang/include/llvm/Support/VCSRevision.h
@@ -1,3 +1,3 @@
/* $FreeBSD$ */
-#define LLVM_REVISION "llvmorg-15.0.0-9-g1c73596d3454"
+#define LLVM_REVISION "llvmorg-15.0.2-10-gf3c5289e7846"
#define LLVM_REPOSITORY "https://github.com/llvm/llvm-project.git"
diff --git a/lib/libc++/module.modulemap b/lib/libc++/module.modulemap
index 900e077944f6..6d788743f68b 100644
--- a/lib/libc++/module.modulemap
+++ b/lib/libc++/module.modulemap
@@ -59,7 +59,10 @@ module std [system] {
// FIXME: <stdalign.h> is missing.
// <signal.h> provided by C library.
// <stdarg.h> provided by compiler.
- // <stdbool.h> provided by compiler.
+ module stdbool_h {
+ // <stdbool.h>'s __bool_true_false_are_defined macro requires textual inclusion.
+ textual header "stdbool.h"
+ }
module stddef_h {
// <stddef.h>'s __need_* macros require textual inclusion.
textual header "stddef.h"
@@ -311,6 +314,7 @@ module std [system] {
module ranges_all_of { private header "__algorithm/ranges_all_of.h" }
module ranges_any_of { private header "__algorithm/ranges_any_of.h" }
module ranges_binary_search { private header "__algorithm/ranges_binary_search.h" }
+ module ranges_clamp { private header "__algorithm/ranges_clamp.h" }
module ranges_copy { private header "__algorithm/ranges_copy.h" }
module ranges_copy_backward { private header "__algorithm/ranges_copy_backward.h" }
module ranges_copy_if { private header "__algorithm/ranges_copy_if.h" }
@@ -335,6 +339,7 @@ module std [system] {
module ranges_is_heap { private header "__algorithm/ranges_is_heap.h" }
module ranges_is_heap_until { private header "__algorithm/ranges_is_heap_until.h" }
module ranges_is_partitioned { private header "__algorithm/ranges_is_partitioned.h" }
+ module ranges_is_permutation { private header "__algorithm/ranges_is_permutation.h" }
module ranges_is_sorted { private header "__algorithm/ranges_is_sorted.h" }
module ranges_is_sorted_until { private header "__algorithm/ranges_is_sorted_until.h" }
module ranges_iterator_concept { private header "__algorithm/ranges_iterator_concept.h" }
@@ -351,6 +356,7 @@ module std [system] {
module ranges_mismatch { private header "__algorithm/ranges_mismatch.h" }
module ranges_move { private header "__algorithm/ranges_move.h" }
module ranges_move_backward { private header "__algorithm/ranges_move_backward.h" }
+ module ranges_next_permutation { private header "__algorithm/ranges_next_permutation.h" }
module ranges_none_of { private header "__algorithm/ranges_none_of.h" }
module ranges_nth_element { private header "__algorithm/ranges_nth_element.h" }
module ranges_partial_sort { private header "__algorithm/ranges_partial_sort.h" }
@@ -359,6 +365,7 @@ module std [system] {
module ranges_partition_copy { private header "__algorithm/ranges_partition_copy.h" }
module ranges_partition_point { private header "__algorithm/ranges_partition_point.h" }
module ranges_pop_heap { private header "__algorithm/ranges_pop_heap.h" }
+ module ranges_prev_permutation { private header "__algorithm/ranges_prev_permutation.h" }
module ranges_push_heap { private header "__algorithm/ranges_push_heap.h" }
module ranges_remove { private header "__algorithm/ranges_remove.h" }
module ranges_remove_copy { private header "__algorithm/ranges_remove_copy.h" }
@@ -370,7 +377,9 @@ module std [system] {
module ranges_replace_if { private header "__algorithm/ranges_replace_if.h" }
module ranges_reverse { private header "__algorithm/ranges_reverse.h" }
module ranges_reverse_copy { private header "__algorithm/ranges_reverse_copy.h" }
+ module ranges_rotate { private header "__algorithm/ranges_rotate.h" }
module ranges_rotate_copy { private header "__algorithm/ranges_rotate_copy.h" }
+ module ranges_sample { private header "__algorithm/ranges_sample.h" }
module ranges_search { private header "__algorithm/ranges_search.h" }
module ranges_search_n { private header "__algorithm/ranges_search_n.h" }
module ranges_set_difference { private header "__algorithm/ranges_set_difference.h" }
@@ -384,6 +393,9 @@ module std [system] {
module ranges_stable_sort { private header "__algorithm/ranges_stable_sort.h" }
module ranges_swap_ranges { private header "__algorithm/ranges_swap_ranges.h" }
module ranges_transform { private header "__algorithm/ranges_transform.h" }
+ module uniform_random_bit_generator_adaptor {
+ private header "__algorithm/uniform_random_bit_generator_adaptor.h"
+ }
module ranges_unique { private header "__algorithm/ranges_unique.h" }
module ranges_unique_copy { private header "__algorithm/ranges_unique_copy.h" }
module ranges_upper_bound { private header "__algorithm/ranges_upper_bound.h" }
@@ -419,6 +431,7 @@ module std [system] {
module unique { private header "__algorithm/unique.h" }
module unique_copy { private header "__algorithm/unique_copy.h" }
module unwrap_iter { private header "__algorithm/unwrap_iter.h" }
+ module unwrap_range { private header "__algorithm/unwrap_range.h" }
module upper_bound { private header "__algorithm/upper_bound.h" }
}
}
@@ -832,6 +845,7 @@ module std [system] {
module ranges_uninitialized_algorithms { private header "__memory/ranges_uninitialized_algorithms.h" }
module raw_storage_iterator { private header "__memory/raw_storage_iterator.h" }
module shared_ptr { private header "__memory/shared_ptr.h" }
+ module swap_allocator { private header "__memory/swap_allocator.h" }
module temporary_buffer { private header "__memory/temporary_buffer.h" }
module uninitialized_algorithms { private header "__memory/uninitialized_algorithms.h" }
module unique_ptr { private header "__memory/unique_ptr.h" }
@@ -1090,10 +1104,16 @@ module std [system] {
module add_pointer { private header "__type_traits/add_pointer.h" }
module add_rvalue_reference { private header "__type_traits/add_rvalue_reference.h" }
module add_volatile { private header "__type_traits/add_volatile.h" }
+ module aligned_storage { private header "__type_traits/aligned_storage.h" }
+ module aligned_union { private header "__type_traits/aligned_union.h" }
module alignment_of { private header "__type_traits/alignment_of.h" }
module apply_cv { private header "__type_traits/apply_cv.h" }
+ module common_reference { private header "__type_traits/common_reference.h" }
+ module common_type { private header "__type_traits/common_type.h" }
module conditional { private header "__type_traits/conditional.h" }
module conjunction { private header "__type_traits/conjunction.h" }
+ module copy_cv { private header "__type_traits/copy_cv.h" }
+ module copy_cvref { private header "__type_traits/copy_cvref.h" }
module decay { private header "__type_traits/decay.h" }
module disjunction { private header "__type_traits/disjunction.h" }
module enable_if { private header "__type_traits/enable_if.h" }
@@ -1135,6 +1155,7 @@ module std [system] {
module is_move_constructible { private header "__type_traits/is_move_constructible.h" }
module is_nothrow_assignable { private header "__type_traits/is_nothrow_assignable.h" }
module is_nothrow_constructible { private header "__type_traits/is_nothrow_constructible.h" }
+ module is_nothrow_convertible { private header "__type_traits/is_nothrow_convertible.h" }
module is_nothrow_copy_assignable { private header "__type_traits/is_nothrow_copy_assignable.h" }
module is_nothrow_copy_constructible { private header "__type_traits/is_nothrow_copy_constructible.h" }
module is_nothrow_default_constructible { private header "__type_traits/is_nothrow_default_constructible.h" }
@@ -1146,6 +1167,7 @@ module std [system] {
module is_pod { private header "__type_traits/is_pod.h" }
module is_pointer { private header "__type_traits/is_pointer.h" }
module is_polymorphic { private header "__type_traits/is_polymorphic.h" }
+ module is_primary_template { private header "__type_traits/is_primary_template.h" }
module is_reference { private header "__type_traits/is_reference.h" }
module is_reference_wrapper { private header "__type_traits/is_reference_wrapper.h" }
module is_referenceable { private header "__type_traits/is_referenceable.h" }
@@ -1153,6 +1175,7 @@ module std [system] {
module is_scalar { private header "__type_traits/is_scalar.h" }
module is_scoped_enum { private header "__type_traits/is_scoped_enum.h" }
module is_signed { private header "__type_traits/is_signed.h" }
+ module is_signed_integer { private header "__type_traits/is_signed_integer.h" }
module is_standard_layout { private header "__type_traits/is_standard_layout.h" }
module is_trivial { private header "__type_traits/is_trivial.h" }
module is_trivially_assignable { private header "__type_traits/is_trivially_assignable.h" }
@@ -1167,18 +1190,28 @@ module std [system] {
module is_unbounded_array { private header "__type_traits/is_unbounded_array.h" }
module is_union { private header "__type_traits/is_union.h" }
module is_unsigned { private header "__type_traits/is_unsigned.h" }
+ module is_unsigned_integer { private header "__type_traits/is_unsigned_integer.h" }
+ module is_valid_expansion { private header "__type_traits/is_valid_expansion.h" }
module is_void { private header "__type_traits/is_void.h" }
module is_volatile { private header "__type_traits/is_volatile.h" }
+ module lazy { private header "__type_traits/lazy.h" }
+ module make_32_64_or_128_bit { private header "__type_traits/make_32_64_or_128_bit.h" }
+ module make_signed { private header "__type_traits/make_signed.h" }
+ module make_unsigned { private header "__type_traits/make_unsigned.h" }
+ module nat { private header "__type_traits/nat.h" }
module negation { private header "__type_traits/negation.h" }
+ module promote { private header "__type_traits/promote.h" }
module rank { private header "__type_traits/rank.h" }
module remove_all_extents { private header "__type_traits/remove_all_extents.h" }
module remove_const { private header "__type_traits/remove_const.h" }
module remove_cv { private header "__type_traits/remove_cv.h" }
+ module remove_cvref { private header "__type_traits/remove_cvref.h" }
module remove_extent { private header "__type_traits/remove_extent.h" }
module remove_pointer { private header "__type_traits/remove_pointer.h" }
module remove_reference { private header "__type_traits/remove_reference.h" }
module remove_volatile { private header "__type_traits/remove_volatile.h" }
module type_identity { private header "__type_traits/type_identity.h" }
+ module type_list { private header "__type_traits/type_list.h" }
module underlying_type { private header "__type_traits/underlying_type.h" }
module void_t { private header "__type_traits/void_t.h" }
}
@@ -1272,6 +1305,7 @@ module std [system] {
module __tree { header "__tree" export * }
module __tuple { private header "__tuple" export * }
module __undef_macros { header "__undef_macros" export * }
+ module __verbose_abort { header "__verbose_abort" export * }
module experimental {
requires cplusplus11
diff --git a/lib/libclang_rt/compiler-rt-vars.mk b/lib/libclang_rt/compiler-rt-vars.mk
index 7f87af108e38..6939d5287055 100644
--- a/lib/libclang_rt/compiler-rt-vars.mk
+++ b/lib/libclang_rt/compiler-rt-vars.mk
@@ -1,4 +1,4 @@
-CLANG_SUBDIR=clang/15.0.0
+CLANG_SUBDIR=clang/15.0.3
CLANGDIR= /usr/lib/${CLANG_SUBDIR}
SANITIZER_LIBDIR= ${CLANGDIR}/lib/freebsd
SANITIZER_SHAREDIR= ${CLANGDIR}/share
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 2f7e913a3739..1a6b9582a960 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -1200,328 +1200,328 @@ OLD_FILES+=usr/share/man/man1/objdump.1.gz
OLD_FILES+=usr/bin/clang
OLD_FILES+=usr/bin/clang++
OLD_FILES+=usr/bin/clang-cpp
-OLD_FILES+=usr/lib/clang/15.0.0/include/cuda_wrappers/algorithm
-OLD_FILES+=usr/lib/clang/15.0.0/include/cuda_wrappers/complex
-OLD_FILES+=usr/lib/clang/15.0.0/include/cuda_wrappers/new
-OLD_DIRS+=usr/lib/clang/15.0.0/include/cuda_wrappers
-OLD_FILES+=usr/lib/clang/15.0.0/include/fuzzer/FuzzedDataProvider.h
-OLD_DIRS+=usr/lib/clang/15.0.0/include/fuzzer
-OLD_FILES+=usr/lib/clang/15.0.0/include/hlsl/hlsl_basic_types.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hlsl/hlsl_intrinsics.h
-OLD_DIRS+=usr/lib/clang/15.0.0/include/hlsl
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/cmath
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/complex
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/complex.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/complex_cmath.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/math.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/openmp_wrappers/new
-OLD_DIRS+=usr/lib/clang/15.0.0/include/openmp_wrappers
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/bmi2intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/bmiintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/emmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/immintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/mm_malloc.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/mmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/pmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/smmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/tmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/x86gprintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/x86intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ppc_wrappers/xmmintrin.h
-OLD_DIRS+=usr/lib/clang/15.0.0/include/ppc_wrappers
-OLD_FILES+=usr/lib/clang/15.0.0/include/profile/InstrProfData.inc
-OLD_FILES+=usr/lib/clang/15.0.0/include/profile/MemProfData.inc
-OLD_DIRS+=usr/lib/clang/15.0.0/include/profile
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/allocator_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/asan_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/common_interface_defs.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/coverage_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/dfsan_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/hwasan_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/linux_syscall_hooks.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/lsan_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/memprof_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/msan_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/netbsd_syscall_hooks.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/scudo_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/tsan_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/tsan_interface_atomic.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sanitizer/ubsan_interface.h
-OLD_DIRS+=usr/lib/clang/15.0.0/include/sanitizer
-OLD_FILES+=usr/lib/clang/15.0.0/include/xray/xray_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xray/xray_log_interface.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xray/xray_records.h
-OLD_DIRS+=usr/lib/clang/15.0.0/include/xray
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_builtin_vars.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_cmath.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_complex_builtins.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_device_functions.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_intrinsics.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_libdevice_declares.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_math.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_math_forward_declares.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_runtime_wrapper.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_cuda_texture_intrinsics.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_hip_cmath.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_hip_libdevice_declares.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_hip_math.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__clang_hip_runtime_wrapper.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__stddef_max_align_t.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__wmmintrin_aes.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/__wmmintrin_pclmul.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/adxintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/altivec.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ammintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/amxintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm64intr.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_acle.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_bf16.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_cde.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_cmse.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_fp16.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_mve.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_neon.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_neon_sve_bridge.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/arm_sve.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/armintr.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx2intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512bf16intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512bitalgintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512bwintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512cdintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512dqintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512erintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512fintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512fp16intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512ifmaintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512ifmavlintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512pfintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vbmi2intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vbmiintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vbmivlintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlbf16intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlbitalgintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlbwintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlcdintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vldqintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlfp16intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlvbmi2intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlvnniintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vlvp2intersectintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vnniintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vp2intersectintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vpopcntdqintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avx512vpopcntdqvlintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avxintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/avxvnniintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/bmi2intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/bmiintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/builtins.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/cet.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/cetintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/cldemoteintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/clflushoptintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/clwbintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/clzerointrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/cpuid.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/crc32intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/emmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/enqcmdintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/f16cintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/float.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/fma4intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/fmaintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/fxsrintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/gfniintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hexagon_circ_brev_intrinsics.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hexagon_protos.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hexagon_types.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hlsl.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hresetintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/htmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/htmxlintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/hvx_hexagon_protos.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ia32intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/immintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/inttypes.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/invpcidintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/iso646.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/keylockerintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/limits.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/lwpintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/lzcntintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/mm3dnow.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/mm_malloc.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/mmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/module.modulemap
-OLD_FILES+=usr/lib/clang/15.0.0/include/movdirintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/msa.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/mwaitxintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/nmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/omp-tools.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/omp.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ompt.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/opencl-c-base.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/opencl-c.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/pconfigintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/pkuintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/pmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/popcntintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/prfchwintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/ptwriteintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/rdpruintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/rdseedintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/riscv_vector.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/rtmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/s390intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/serializeintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/sgxintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/shaintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/smmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stdalign.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stdarg.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stdatomic.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stdbool.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stddef.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stdint.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/stdnoreturn.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/tbmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/tgmath.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/tmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/tsxldtrkintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/uintrintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/unwind.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/vadefs.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/vaesintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/varargs.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/vecintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/velintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/velintrin_approx.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/velintrin_gen.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/vpclmulqdqintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/waitpkgintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/wasm_simd128.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/wbnoinvdintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/wmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/x86gprintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/x86intrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xmmintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xopintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xsavecintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xsaveintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xsaveoptintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xsavesintrin.h
-OLD_FILES+=usr/lib/clang/15.0.0/include/xtestintrin.h
-OLD_DIRS+=usr/lib/clang/15.0.0/include
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-aarch64.so
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-arm.so
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-armhf.so
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-i386.so
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-preinit-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_cxx-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_static-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.asan_static-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi_diag-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi_diag-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi_diag-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.dd-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.dd-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.fuzzer-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.fuzzer-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.fuzzer_interceptors-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.msan-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.msan-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-powerpc.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-powerpc64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-powerpc64le.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.safestack-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.safestack-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats_client-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats_client-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats_client-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.tsan-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-basic-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-basic-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-basic-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-basic-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-fdr-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-fdr-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-profiling-arm.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-profiling-armhf.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
-OLD_FILES+=usr/lib/clang/15.0.0/lib/freebsd/libclang_rt.xray-x86_64.a
-OLD_DIRS+=usr/lib/clang/15.0.0/lib/freebsd
-OLD_DIRS+=usr/lib/clang/15.0.0/lib
-OLD_FILES+=usr/lib/clang/15.0.0/share/asan_ignorelist.txt
-OLD_FILES+=usr/lib/clang/15.0.0/share/cfi_ignorelist.txt
-OLD_FILES+=usr/lib/clang/15.0.0/share/msan_ignorelist.txt
-OLD_DIRS+=usr/lib/clang/15.0.0/share
-OLD_DIRS+=usr/lib/clang/15.0.0
+OLD_FILES+=usr/lib/clang/15.0.3/include/cuda_wrappers/algorithm
+OLD_FILES+=usr/lib/clang/15.0.3/include/cuda_wrappers/complex
+OLD_FILES+=usr/lib/clang/15.0.3/include/cuda_wrappers/new
+OLD_DIRS+=usr/lib/clang/15.0.3/include/cuda_wrappers
+OLD_FILES+=usr/lib/clang/15.0.3/include/fuzzer/FuzzedDataProvider.h
+OLD_DIRS+=usr/lib/clang/15.0.3/include/fuzzer
+OLD_FILES+=usr/lib/clang/15.0.3/include/hlsl/hlsl_basic_types.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hlsl/hlsl_intrinsics.h
+OLD_DIRS+=usr/lib/clang/15.0.3/include/hlsl
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/__clang_openmp_device_functions.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/cmath
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/complex
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/complex.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/complex_cmath.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/math.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/openmp_wrappers/new
+OLD_DIRS+=usr/lib/clang/15.0.3/include/openmp_wrappers
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/bmi2intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/bmiintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/emmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/immintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/mm_malloc.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/mmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/pmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/smmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/tmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/x86gprintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/x86intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ppc_wrappers/xmmintrin.h
+OLD_DIRS+=usr/lib/clang/15.0.3/include/ppc_wrappers
+OLD_FILES+=usr/lib/clang/15.0.3/include/profile/InstrProfData.inc
+OLD_FILES+=usr/lib/clang/15.0.3/include/profile/MemProfData.inc
+OLD_DIRS+=usr/lib/clang/15.0.3/include/profile
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/allocator_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/asan_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/common_interface_defs.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/coverage_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/dfsan_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/hwasan_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/linux_syscall_hooks.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/lsan_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/memprof_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/msan_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/netbsd_syscall_hooks.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/scudo_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/tsan_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/tsan_interface_atomic.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sanitizer/ubsan_interface.h
+OLD_DIRS+=usr/lib/clang/15.0.3/include/sanitizer
+OLD_FILES+=usr/lib/clang/15.0.3/include/xray/xray_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xray/xray_log_interface.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xray/xray_records.h
+OLD_DIRS+=usr/lib/clang/15.0.3/include/xray
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_builtin_vars.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_cmath.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_complex_builtins.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_device_functions.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_intrinsics.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_libdevice_declares.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_math.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_math_forward_declares.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_runtime_wrapper.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_cuda_texture_intrinsics.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_hip_cmath.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_hip_libdevice_declares.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_hip_math.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__clang_hip_runtime_wrapper.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__stddef_max_align_t.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__wmmintrin_aes.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/__wmmintrin_pclmul.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/adxintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/altivec.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ammintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/amxintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm64intr.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_acle.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_bf16.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_cde.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_cmse.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_fp16.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_mve.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_neon.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_neon_sve_bridge.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/arm_sve.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/armintr.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx2intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512bf16intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512bitalgintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512bwintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512cdintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512dqintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512erintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512fintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512fp16intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512ifmaintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512ifmavlintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512pfintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vbmi2intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vbmiintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vbmivlintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlbf16intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlbitalgintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlbwintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlcdintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vldqintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlfp16intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlvbmi2intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlvnniintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vlvp2intersectintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vnniintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vp2intersectintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vpopcntdqintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avx512vpopcntdqvlintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avxintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/avxvnniintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/bmi2intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/bmiintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/builtins.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/cet.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/cetintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/cldemoteintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/clflushoptintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/clwbintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/clzerointrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/cpuid.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/crc32intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/emmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/enqcmdintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/f16cintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/float.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/fma4intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/fmaintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/fxsrintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/gfniintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hexagon_circ_brev_intrinsics.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hexagon_protos.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hexagon_types.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hlsl.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hresetintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/htmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/htmxlintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/hvx_hexagon_protos.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ia32intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/immintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/inttypes.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/invpcidintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/iso646.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/keylockerintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/limits.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/lwpintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/lzcntintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/mm3dnow.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/mm_malloc.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/mmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/module.modulemap
+OLD_FILES+=usr/lib/clang/15.0.3/include/movdirintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/msa.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/mwaitxintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/nmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/omp-tools.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/omp.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ompt.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/opencl-c-base.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/opencl-c.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/pconfigintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/pkuintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/pmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/popcntintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/prfchwintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/ptwriteintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/rdpruintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/rdseedintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/riscv_vector.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/rtmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/s390intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/serializeintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/sgxintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/shaintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/smmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stdalign.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stdarg.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stdatomic.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stdbool.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stddef.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stdint.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/stdnoreturn.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/tbmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/tgmath.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/tmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/tsxldtrkintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/uintrintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/unwind.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/vadefs.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/vaesintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/varargs.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/vecintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/velintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/velintrin_approx.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/velintrin_gen.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/vpclmulqdqintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/waitpkgintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/wasm_simd128.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/wbnoinvdintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/wmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/x86gprintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/x86intrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xmmintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xopintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xsavecintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xsaveintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xsaveoptintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xsavesintrin.h
+OLD_FILES+=usr/lib/clang/15.0.3/include/xtestintrin.h
+OLD_DIRS+=usr/lib/clang/15.0.3/include
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-aarch64.so
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-arm.so
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-armhf.so
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-i386.so
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-preinit-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-preinit-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-preinit-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan-x86_64.so
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_cxx-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_cxx-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_cxx-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_static-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.asan_static-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi_diag-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi_diag-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi_diag-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.dd-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.dd-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.fuzzer-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.fuzzer-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.fuzzer_interceptors-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.msan-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.msan-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-powerpc.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-powerpc64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-powerpc64le.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.profile-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.safestack-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.safestack-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.safestack-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats_client-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats_client-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats_client-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats_client-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.stats_client-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.tsan-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.tsan-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-basic-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-basic-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-basic-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-basic-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-fdr-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-fdr-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-profiling-arm.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-profiling-armhf.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
+OLD_FILES+=usr/lib/clang/15.0.3/lib/freebsd/libclang_rt.xray-x86_64.a
+OLD_DIRS+=usr/lib/clang/15.0.3/lib/freebsd
+OLD_DIRS+=usr/lib/clang/15.0.3/lib
+OLD_FILES+=usr/lib/clang/15.0.3/share/asan_ignorelist.txt
+OLD_FILES+=usr/lib/clang/15.0.3/share/cfi_ignorelist.txt
+OLD_FILES+=usr/lib/clang/15.0.3/share/msan_ignorelist.txt
+OLD_DIRS+=usr/lib/clang/15.0.3/share
+OLD_DIRS+=usr/lib/clang/15.0.3
OLD_DIRS+=usr/lib/clang
OLD_FILES+=usr/share/doc/llvm/clang/LICENSE.TXT
OLD_DIRS+=usr/share/doc/llvm/clang