summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-02-14 01:52:20 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-02-14 01:52:20 +0000
commit902a0238aa1514832a0d88661c9d7ccf112b71e0 (patch)
treeb8f1416976d83e831505038bf401ff6881b1dcf2 /clang/lib/AST
parentce27e42d47bbc136cf1deb1859e10e9e8da5b501 (diff)
downloadbcm5719-llvm-902a0238aa1514832a0d88661c9d7ccf112b71e0.tar.gz
bcm5719-llvm-902a0238aa1514832a0d88661c9d7ccf112b71e0.zip
DR1748: the reserved placement allocation functions have undefined behavior if
they're given a null pointer as an argument, so we do not need to emit null checks on their results. llvm-svn: 229213
Diffstat (limited to 'clang/lib/AST')
-rw-r--r--clang/lib/AST/ExprCXX.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index fd25b58a70a..1f54d24c471 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -208,8 +208,9 @@ void CXXNewExpr::AllocateArgsArray(const ASTContext &C, bool isArray,
}
bool CXXNewExpr::shouldNullCheckAllocation(const ASTContext &Ctx) const {
- return getOperatorNew()->getType()->
- castAs<FunctionProtoType>()->isNothrow(Ctx);
+ return getOperatorNew()->getType()->castAs<FunctionProtoType>()->isNothrow(
+ Ctx) &&
+ !getOperatorNew()->isReservedGlobalPlacementOperator();
}
// CXXDeleteExpr
OpenPOWER on IntegriCloud