Skip to content

Commit 4afd353

Browse files
committed
fix smallvector lifetime issue (TemplateArgs::Args is an ArrayRef)
1 parent 3586713 commit 4afd353

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

clang/lib/CodeGen/CGDebugInfo.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,9 +1313,8 @@ llvm::DIType *CGDebugInfo::CreateType(const BlockPointerType *Ty,
13131313
return DBuilder.createPointerType(EltTy, Size);
13141314
}
13151315

1316-
CGDebugInfo::TemplateArgs
1317-
CGDebugInfo::GetTemplateArgs(const TemplateDecl *TD,
1318-
const TemplateSpecializationType *Ty) const {
1316+
static llvm::SmallVector<TemplateArgument>
1317+
GetTemplateArgs(const TemplateDecl *TD, const TemplateSpecializationType *Ty) {
13191318
assert(Ty->isTypeAlias());
13201319
// TemplateSpecializationType doesn't know if its template args are
13211320
// being substituted into a parameter pack. We can find out if that's
@@ -1366,7 +1365,7 @@ CGDebugInfo::GetTemplateArgs(const TemplateDecl *TD,
13661365
break;
13671366
}
13681367
}
1369-
return {TD->getTemplateParameters(), SpecArgs};
1368+
return SpecArgs;
13701369
}
13711370

13721371
llvm::DIType *CGDebugInfo::CreateType(const TemplateSpecializationType *Ty,
@@ -1391,7 +1390,8 @@ llvm::DIType *CGDebugInfo::CreateType(const TemplateSpecializationType *Ty,
13911390
SourceLocation Loc = AliasDecl->getLocation();
13921391

13931392
if (CGM.getCodeGenOpts().DebugTemplateAlias) {
1394-
TemplateArgs Args = GetTemplateArgs(TD, Ty);
1393+
auto ArgVector = ::GetTemplateArgs(TD, Ty);
1394+
TemplateArgs Args = {TD->getTemplateParameters(), ArgVector};
13951395

13961396
// FIXME: Respect DebugTemplateNameKind::Mangled, e.g. by using GetName.
13971397
// Note we can't use GetName without additional work: TypeAliasTemplateDecl

clang/lib/CodeGen/CGDebugInfo.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,6 @@ class CGDebugInfo {
307307
std::optional<TemplateArgs> GetTemplateArgs(const VarDecl *) const;
308308
std::optional<TemplateArgs> GetTemplateArgs(const RecordDecl *) const;
309309
std::optional<TemplateArgs> GetTemplateArgs(const FunctionDecl *) const;
310-
TemplateArgs GetTemplateArgs(const TemplateDecl *,
311-
const TemplateSpecializationType *) const;
312310

313311
/// A helper function to collect debug info for template
314312
/// parameters.

0 commit comments

Comments
 (0)