Skip to content

Commit 6b70614

Browse files
SC llvm teamSC llvm team
SC llvm team
authored and
SC llvm team
committed
Merged main:79a32609759af317a62184c2c7b1300263a336c8 into amd-gfx:aaa80328586e
Local branch amd-gfx aaa8032 Merged main:0012b1ea84e671a9e0c9f7f2d1564315ed9cbcca into amd-gfx:b8aa986939d6 Remote branch main 79a3260 [hwasan] Remove memory attrs from instrumented functions. (llvm#92974)
2 parents aaa8032 + 79a3260 commit 6b70614

File tree

102 files changed

+4370
-342
lines changed

Some content is hidden

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

102 files changed

+4370
-342
lines changed

bolt/include/bolt/Passes/StokeInfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ struct StokeFuncInfo {
8787
<< "," << NumBlocks << "," << IsLoopFree << "," << NumLoops << ","
8888
<< MaxLoopDepth << "," << HotSize << "," << TotalSize << ","
8989
<< Score << "," << HasCall << ",\"{ ";
90-
for (std::string S : DefIn)
90+
for (const std::string &S : DefIn)
9191
Outfile << "%" << S << " ";
9292
Outfile << "}\",\"{ ";
93-
for (std::string S : LiveOut)
93+
for (const std::string &S : LiveOut)
9494
Outfile << "%" << S << " ";
9595
Outfile << "}\"," << HeapOut << "," << StackOut << "," << HasRipAddr
9696
<< "," << Omitted << "\n";

bolt/runtime/instr.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,7 +1245,6 @@ void Graph::computeEdgeFrequencies(const uint64_t *Counters,
12451245
continue;
12461246

12471247
assert(SpanningTreeNodes[Cur].NumInEdges == 1, "must have 1 parent");
1248-
const uint32_t Parent = SpanningTreeNodes[Cur].InEdges[0].Node;
12491248
const uint32_t ParentEdge = SpanningTreeNodes[Cur].InEdges[0].ID;
12501249

12511250
// Calculate parent edge freq.
@@ -1464,9 +1463,8 @@ void visitCallFlowEntry(CallFlowHashTable::MapEntry &Entry, int FD,
14641463
int openProfile() {
14651464
// Build the profile name string by appending our PID
14661465
char Buf[BufSize];
1467-
char *Ptr = Buf;
14681466
uint64_t PID = __getpid();
1469-
Ptr = strCopy(Buf, __bolt_instr_filename, BufSize);
1467+
char *Ptr = strCopy(Buf, __bolt_instr_filename, BufSize);
14701468
if (__bolt_instr_use_pid) {
14711469
Ptr = strCopy(Ptr, ".", BufSize - (Ptr - Buf + 1));
14721470
Ptr = intToStr(Ptr, PID, 10);

clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ AST_MATCHER(QualType, isEnableIf) {
5454
AST_MATCHER_P(TemplateTypeParmDecl, hasDefaultArgument,
5555
clang::ast_matchers::internal::Matcher<QualType>, TypeMatcher) {
5656
return Node.hasDefaultArgument() &&
57-
TypeMatcher.matches(Node.getDefaultArgument(), Finder, Builder);
57+
TypeMatcher.matches(
58+
Node.getDefaultArgument().getArgument().getAsType(), Finder,
59+
Builder);
5860
}
5961
AST_MATCHER(TemplateDecl, hasAssociatedConstraints) {
6062
return Node.hasAssociatedConstraints();

clang-tools-extra/clang-tidy/bugprone/IncorrectEnableIfCheck.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ namespace {
1919
AST_MATCHER_P(TemplateTypeParmDecl, hasUnnamedDefaultArgument,
2020
ast_matchers::internal::Matcher<TypeLoc>, InnerMatcher) {
2121
if (Node.getIdentifier() != nullptr || !Node.hasDefaultArgument() ||
22-
Node.getDefaultArgumentInfo() == nullptr)
22+
Node.getDefaultArgument().getArgument().isNull())
2323
return false;
2424

25-
TypeLoc DefaultArgTypeLoc = Node.getDefaultArgumentInfo()->getTypeLoc();
25+
TypeLoc DefaultArgTypeLoc =
26+
Node.getDefaultArgument().getTypeSourceInfo()->getTypeLoc();
2627
return InnerMatcher.matches(DefaultArgTypeLoc, Finder, Builder);
2728
}
2829

clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,11 @@ matchTrailingTemplateParam(const FunctionTemplateDecl *FunctionTemplate) {
177177
dyn_cast<TemplateTypeParmDecl>(LastParam)) {
178178
if (LastTemplateParam->hasDefaultArgument() &&
179179
LastTemplateParam->getIdentifier() == nullptr) {
180-
return {matchEnableIfSpecialization(
181-
LastTemplateParam->getDefaultArgumentInfo()->getTypeLoc()),
182-
LastTemplateParam};
180+
return {
181+
matchEnableIfSpecialization(LastTemplateParam->getDefaultArgument()
182+
.getTypeSourceInfo()
183+
->getTypeLoc()),
184+
LastTemplateParam};
183185
}
184186
}
185187
return {};

clang-tools-extra/clangd/Hover.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,12 @@ fetchTemplateParameters(const TemplateParameterList *Params,
247247
if (!TTP->getName().empty())
248248
P.Name = TTP->getNameAsString();
249249

250-
if (TTP->hasDefaultArgument())
251-
P.Default = TTP->getDefaultArgument().getAsString(PP);
250+
if (TTP->hasDefaultArgument()) {
251+
P.Default.emplace();
252+
llvm::raw_string_ostream Out(*P.Default);
253+
TTP->getDefaultArgument().getArgument().print(PP, Out,
254+
/*IncludeType=*/false);
255+
}
252256
} else if (const auto *NTTP = dyn_cast<NonTypeTemplateParmDecl>(Param)) {
253257
P.Type = printType(NTTP, PP);
254258

clang/include/clang/AST/ASTNodeTraverser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ class ASTNodeTraverser
695695
if (const auto *TC = D->getTypeConstraint())
696696
Visit(TC->getImmediatelyDeclaredConstraint());
697697
if (D->hasDefaultArgument())
698-
Visit(D->getDefaultArgument(), SourceRange(),
698+
Visit(D->getDefaultArgument().getArgument(), SourceRange(),
699699
D->getDefaultArgStorage().getInheritedFrom(),
700700
D->defaultArgumentWasInherited() ? "inherited from" : "previous");
701701
}

clang/include/clang/AST/DeclTemplate.h

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ class TemplateTypeParmDecl final : public TypeDecl,
11851185

11861186
/// The default template argument, if any.
11871187
using DefArgStorage =
1188-
DefaultArgStorage<TemplateTypeParmDecl, TypeSourceInfo *>;
1188+
DefaultArgStorage<TemplateTypeParmDecl, TemplateArgumentLoc *>;
11891189
DefArgStorage DefaultArgument;
11901190

11911191
TemplateTypeParmDecl(DeclContext *DC, SourceLocation KeyLoc,
@@ -1225,13 +1225,9 @@ class TemplateTypeParmDecl final : public TypeDecl,
12251225
bool hasDefaultArgument() const { return DefaultArgument.isSet(); }
12261226

12271227
/// Retrieve the default argument, if any.
1228-
QualType getDefaultArgument() const {
1229-
return DefaultArgument.get()->getType();
1230-
}
1231-
1232-
/// Retrieves the default argument's source information, if any.
1233-
TypeSourceInfo *getDefaultArgumentInfo() const {
1234-
return DefaultArgument.get();
1228+
const TemplateArgumentLoc &getDefaultArgument() const {
1229+
static const TemplateArgumentLoc NoneLoc;
1230+
return DefaultArgument.isSet() ? *DefaultArgument.get() : NoneLoc;
12351231
}
12361232

12371233
/// Retrieves the location of the default argument declaration.
@@ -1244,9 +1240,8 @@ class TemplateTypeParmDecl final : public TypeDecl,
12441240
}
12451241

12461242
/// Set the default argument for this template parameter.
1247-
void setDefaultArgument(TypeSourceInfo *DefArg) {
1248-
DefaultArgument.set(DefArg);
1249-
}
1243+
void setDefaultArgument(const ASTContext &C,
1244+
const TemplateArgumentLoc &DefArg);
12501245

12511246
/// Set that this default argument was inherited from another
12521247
/// parameter.

clang/include/clang/AST/RecursiveASTVisitor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1960,7 +1960,7 @@ DEF_TRAVERSE_DECL(TemplateTypeParmDecl, {
19601960
TRY_TO(TraverseType(QualType(D->getTypeForDecl(), 0)));
19611961
TRY_TO(TraverseTemplateTypeParamDeclConstraints(D));
19621962
if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())
1963-
TRY_TO(TraverseTypeLoc(D->getDefaultArgumentInfo()->getTypeLoc()));
1963+
TRY_TO(TraverseTemplateArgumentLoc(D->getDefaultArgument()));
19641964
})
19651965

19661966
DEF_TRAVERSE_DECL(TypedefDecl, {

clang/include/clang/Sema/Sema.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10067,7 +10067,9 @@ class Sema final : public SemaBase {
1006710067

1006810068
bool SubstTemplateArgument(const TemplateArgumentLoc &Input,
1006910069
const MultiLevelTemplateArgumentList &TemplateArgs,
10070-
TemplateArgumentLoc &Output);
10070+
TemplateArgumentLoc &Output,
10071+
SourceLocation Loc = {},
10072+
const DeclarationName &Entity = {});
1007110073
bool
1007210074
SubstTemplateArguments(ArrayRef<TemplateArgumentLoc> Args,
1007310075
const MultiLevelTemplateArgumentList &TemplateArgs,

clang/lib/AST/ASTContext.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6494,7 +6494,8 @@ bool ASTContext::isSameDefaultTemplateArgument(const NamedDecl *X,
64946494
if (!TTPX->hasDefaultArgument() || !TTPY->hasDefaultArgument())
64956495
return false;
64966496

6497-
return hasSameType(TTPX->getDefaultArgument(), TTPY->getDefaultArgument());
6497+
return hasSameType(TTPX->getDefaultArgument().getArgument().getAsType(),
6498+
TTPY->getDefaultArgument().getArgument().getAsType());
64986499
}
64996500

65006501
if (auto *NTTPX = dyn_cast<NonTypeTemplateParmDecl>(X)) {

clang/lib/AST/ASTImporter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5917,11 +5917,11 @@ ASTNodeImporter::VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D) {
59175917
}
59185918

59195919
if (D->hasDefaultArgument()) {
5920-
Expected<TypeSourceInfo *> ToDefaultArgOrErr =
5921-
import(D->getDefaultArgumentInfo());
5920+
Expected<TemplateArgumentLoc> ToDefaultArgOrErr =
5921+
import(D->getDefaultArgument());
59225922
if (!ToDefaultArgOrErr)
59235923
return ToDefaultArgOrErr.takeError();
5924-
ToD->setDefaultArgument(*ToDefaultArgOrErr);
5924+
ToD->setDefaultArgument(ToD->getASTContext(), *ToDefaultArgOrErr);
59255925
}
59265926

59275927
return ToD;

clang/lib/AST/DeclPrinter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1883,7 +1883,8 @@ void DeclPrinter::VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *TTP) {
18831883

18841884
if (TTP->hasDefaultArgument()) {
18851885
Out << " = ";
1886-
Out << TTP->getDefaultArgument().getAsString(Policy);
1886+
TTP->getDefaultArgument().getArgument().print(Policy, Out,
1887+
/*IncludeType=*/false);
18871888
}
18881889
}
18891890

clang/lib/AST/DeclTemplate.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -669,23 +669,30 @@ TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, GlobalDeclID ID,
669669
}
670670

671671
SourceLocation TemplateTypeParmDecl::getDefaultArgumentLoc() const {
672-
return hasDefaultArgument()
673-
? getDefaultArgumentInfo()->getTypeLoc().getBeginLoc()
674-
: SourceLocation();
672+
return hasDefaultArgument() ? getDefaultArgument().getLocation()
673+
: SourceLocation();
675674
}
676675

677676
SourceRange TemplateTypeParmDecl::getSourceRange() const {
678677
if (hasDefaultArgument() && !defaultArgumentWasInherited())
679678
return SourceRange(getBeginLoc(),
680-
getDefaultArgumentInfo()->getTypeLoc().getEndLoc());
679+
getDefaultArgument().getSourceRange().getEnd());
681680
// TypeDecl::getSourceRange returns a range containing name location, which is
682681
// wrong for unnamed template parameters. e.g:
683682
// it will return <[[typename>]] instead of <[[typename]]>
684-
else if (getDeclName().isEmpty())
683+
if (getDeclName().isEmpty())
685684
return SourceRange(getBeginLoc());
686685
return TypeDecl::getSourceRange();
687686
}
688687

688+
void TemplateTypeParmDecl::setDefaultArgument(
689+
const ASTContext &C, const TemplateArgumentLoc &DefArg) {
690+
if (DefArg.getArgument().isNull())
691+
DefaultArgument.set(nullptr);
692+
else
693+
DefaultArgument.set(new (C) TemplateArgumentLoc(DefArg));
694+
}
695+
689696
unsigned TemplateTypeParmDecl::getDepth() const {
690697
return getTypeForDecl()->castAs<TemplateTypeParmType>()->getDepth();
691698
}

clang/lib/AST/JSONNodeDumper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ void JSONNodeDumper::VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D) {
10281028

10291029
if (D->hasDefaultArgument())
10301030
JOS.attributeObject("defaultArg", [=] {
1031-
Visit(D->getDefaultArgument(), SourceRange(),
1031+
Visit(D->getDefaultArgument().getArgument(), SourceRange(),
10321032
D->getDefaultArgStorage().getInheritedFrom(),
10331033
D->defaultArgumentWasInherited() ? "inherited from" : "previous");
10341034
});

clang/lib/AST/ODRDiagsEmitter.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,13 +1409,15 @@ bool ODRDiagsEmitter::diagnoseMismatch(
14091409
}
14101410

14111411
if (HasFirstDefaultArgument && HasSecondDefaultArgument) {
1412-
QualType FirstType = FirstTTPD->getDefaultArgument();
1413-
QualType SecondType = SecondTTPD->getDefaultArgument();
1414-
if (computeODRHash(FirstType) != computeODRHash(SecondType)) {
1412+
TemplateArgument FirstTA =
1413+
FirstTTPD->getDefaultArgument().getArgument();
1414+
TemplateArgument SecondTA =
1415+
SecondTTPD->getDefaultArgument().getArgument();
1416+
if (computeODRHash(FirstTA) != computeODRHash(SecondTA)) {
14151417
DiagTemplateError(FunctionTemplateParameterDifferentDefaultArgument)
1416-
<< (i + 1) << FirstType;
1418+
<< (i + 1) << FirstTA;
14171419
DiagTemplateNote(FunctionTemplateParameterDifferentDefaultArgument)
1418-
<< (i + 1) << SecondType;
1420+
<< (i + 1) << SecondTA;
14191421
return true;
14201422
}
14211423
}

clang/lib/AST/ODRHash.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ class ODRDeclVisitor : public ConstDeclVisitor<ODRDeclVisitor> {
462462
D->hasDefaultArgument() && !D->defaultArgumentWasInherited();
463463
Hash.AddBoolean(hasDefaultArgument);
464464
if (hasDefaultArgument) {
465-
AddTemplateArgument(D->getDefaultArgument());
465+
AddTemplateArgument(D->getDefaultArgument().getArgument());
466466
}
467467
Hash.AddBoolean(D->isParameterPack());
468468

clang/lib/AST/TypePrinter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2273,8 +2273,8 @@ bool clang::isSubstitutedDefaultArgument(ASTContext &Ctx, TemplateArgument Arg,
22732273

22742274
if (auto *TTPD = dyn_cast<TemplateTypeParmDecl>(Param)) {
22752275
return TTPD->hasDefaultArgument() &&
2276-
isSubstitutedTemplateArgument(Ctx, Arg, TTPD->getDefaultArgument(),
2277-
Args, Depth);
2276+
isSubstitutedTemplateArgument(
2277+
Ctx, Arg, TTPD->getDefaultArgument().getArgument(), Args, Depth);
22782278
} else if (auto *TTPD = dyn_cast<TemplateTemplateParmDecl>(Param)) {
22792279
return TTPD->hasDefaultArgument() &&
22802280
isSubstitutedTemplateArgument(

clang/lib/ExtractAPI/DeclarationFragments.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -999,11 +999,11 @@ DeclarationFragmentsBuilder::getFragmentsForTemplateParameters(
999999
DeclarationFragments::FragmentKind::GenericParameter);
10001000

10011001
if (TemplateParam->hasDefaultArgument()) {
1002-
DeclarationFragments After;
1002+
const auto Default = TemplateParam->getDefaultArgument();
10031003
Fragments.append(" = ", DeclarationFragments::FragmentKind::Text)
1004-
.append(getFragmentsForType(TemplateParam->getDefaultArgument(),
1005-
TemplateParam->getASTContext(), After));
1006-
Fragments.append(std::move(After));
1004+
.append(getFragmentsForTemplateArguments(
1005+
{Default.getArgument()}, TemplateParam->getASTContext(),
1006+
{Default}));
10071007
}
10081008
} else if (const auto *NTP =
10091009
dyn_cast<NonTypeTemplateParmDecl>(ParameterArray[i])) {

clang/lib/Index/IndexDecl.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,8 @@ class IndexingDeclVisitor : public ConstDeclVisitor<IndexingDeclVisitor, bool> {
703703
IndexCtx.handleDecl(TP);
704704
if (const auto *TTP = dyn_cast<TemplateTypeParmDecl>(TP)) {
705705
if (TTP->hasDefaultArgument())
706-
IndexCtx.indexTypeSourceInfo(TTP->getDefaultArgumentInfo(), Parent);
706+
handleTemplateArgumentLoc(TTP->getDefaultArgument(), Parent,
707+
TP->getLexicalDeclContext());
707708
if (auto *C = TTP->getTypeConstraint())
708709
IndexCtx.handleReference(C->getNamedConcept(), C->getConceptNameLoc(),
709710
Parent, TTP->getLexicalDeclContext());

0 commit comments

Comments
 (0)