diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-02-14 01:52:20 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-02-14 01:52:20 +0000 |
| commit | 902a0238aa1514832a0d88661c9d7ccf112b71e0 (patch) | |
| tree | b8f1416976d83e831505038bf401ff6881b1dcf2 /clang/lib/AST | |
| parent | ce27e42d47bbc136cf1deb1859e10e9e8da5b501 (diff) | |
| download | bcm5719-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.cpp | 5 |
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 |

