CXXRecordDecl *VBaseClassDecl
= cast<CXXRecordDecl>(QT->getAsRecordType()->getDecl());
this->VBases[i] =
- *new (C) CXXBaseSpecifier(
- VBaseClassDecl->getSourceRange(), true,
- VBaseClassDecl->getTagKind() == RecordDecl::TK_class,
- UniqueVbases[i]->getAccessSpecifier(), QT);
+ CXXBaseSpecifier(VBaseClassDecl->getSourceRange(), true,
+ VBaseClassDecl->getTagKind() == RecordDecl::TK_class,
+ UniqueVbases[i]->getAccessSpecifier(), QT);
}
}
}
// Delete the duplicate base class specifier; we're going to
// overwrite its pointer later.
- delete Bases[idx];
+ Context.Deallocate(Bases[idx]);
Invalid = true;
} else {
// Delete the remaining (good) base class specifiers, since their
// data has been copied into the CXXRecordDecl.
for (unsigned idx = 0; idx < NumGoodBases; ++idx)
- delete Bases[idx];
+ Context.Deallocate(Bases[idx]);
return Invalid;
}
// Translate the parser's template argument list in our AST format.
llvm::SmallVector<TemplateArgument, 16> TemplateArgs;
translateTemplateArguments(TemplateArgsIn, TemplateArgLocs, TemplateArgs);
+ TemplateArgsIn.release();
return BuildTemplateIdExpr(Template, TemplateNameLoc, LAngleLoc,
TemplateArgs.data(), TemplateArgs.size(),