@@ -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
57795773void 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
57865786HLSLBufferDecl::buffer_decl_iterator
0 commit comments