forked from OSchip/llvm-project
Don't use a cookie if the global placement new function is used.
llvm-svn: 91251
This commit is contained in:
parent
8c17e6de2b
commit
399f499f0c
|
@ -64,6 +64,19 @@ static uint64_t CalculateCookiePadding(ASTContext &Ctx, const CXXNewExpr *E) {
|
|||
if (!E->isArray())
|
||||
return 0;
|
||||
|
||||
// No cookie is required if the new operator being used is
|
||||
// ::operator new[](size_t, void*).
|
||||
const FunctionDecl *OperatorNew = E->getOperatorNew();
|
||||
if (OperatorNew->getDeclContext()->getLookupContext()->isFileContext()) {
|
||||
if (OperatorNew->getNumParams() == 2) {
|
||||
CanQualType ParamType =
|
||||
Ctx.getCanonicalType(OperatorNew->getParamDecl(1)->getType());
|
||||
|
||||
if (ParamType == Ctx.VoidPtrTy)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return CalculateCookiePadding(Ctx, E->getAllocatedType());
|
||||
QualType T = E->getAllocatedType();
|
||||
}
|
||||
|
@ -265,7 +278,6 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) {
|
|||
return NewPtr;
|
||||
}
|
||||
|
||||
|
||||
static std::pair<llvm::Value *, llvm::Value *>
|
||||
GetAllocatedObjectPtrAndNumElements(CodeGenFunction &CGF,
|
||||
llvm::Value *Ptr, QualType DeleteTy) {
|
||||
|
|
Loading…
Reference in New Issue