Skip to content

Commit e21e359

Browse files
committed
code review feedback - allocate default decl array in setDefaultBufferDecls
1 parent ded2c28 commit e21e359

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

clang/lib/AST/Decl.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5754,13 +5754,7 @@ HLSLBufferDecl::CreateDefaultCBuffer(ASTContext &C, DeclContext *LexicalParent,
57545754
HLSLBufferDecl *Result = new (C, DC) HLSLBufferDecl(
57555755
DC, true, SourceLocation(), II, SourceLocation(), SourceLocation());
57565756
Result->setImplicit(true);
5757-
5758-
// allocate array for default decls with ASTContext allocator
5759-
assert(!DefaultCBufferDecls.empty());
5760-
Decl **DeclsArray = new (C) Decl *[DefaultCBufferDecls.size()];
5761-
std::copy(DefaultCBufferDecls.begin(), DefaultCBufferDecls.end(), DeclsArray);
5762-
Result->setDefaultBufferDecls(
5763-
ArrayRef<Decl *>(DeclsArray, DefaultCBufferDecls.size()));
5757+
Result->setDefaultBufferDecls(DefaultCBufferDecls);
57645758
return Result;
57655759
}
57665760

@@ -5777,10 +5771,16 @@ void HLSLBufferDecl::addLayoutStruct(CXXRecordDecl *LS) {
57775771
}
57785772

57795773
void HLSLBufferDecl::setDefaultBufferDecls(ArrayRef<Decl *> Decls) {
5774+
assert(!Decls.empty());
5775+
assert(DefaultBufferDecls.empty() && "default decls are already set");
57805776
assert(isImplicit() &&
57815777
"default decls can only be added to the implicit/default constant "
57825778
"buffer $Globals");
5783-
DefaultBufferDecls = Decls;
5779+
5780+
// allocate array for default decls with ASTContext allocator
5781+
Decl **DeclsArray = new (getASTContext()) Decl *[Decls.size()];
5782+
std::copy(Decls.begin(), Decls.end(), DeclsArray);
5783+
DefaultBufferDecls = ArrayRef<Decl *>(DeclsArray, Decls.size());
57845784
}
57855785

57865786
HLSLBufferDecl::buffer_decl_iterator

0 commit comments

Comments
 (0)