summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorSven van Haastregt <sven.vanhaastregt@arm.com>2019-06-26 13:31:24 +0000
committerSven van Haastregt <sven.vanhaastregt@arm.com>2019-06-26 13:31:24 +0000
commit1006a068c63f9df215a29e3185b4c1a0e4a0f83a (patch)
tree2aa6987081b2d36771ad5c7839dabf0ddfdb231f /clang/lib/Sema/SemaExprCXX.cpp
parent1a3dc761860d620ac8ed7e32a4285952142f780b (diff)
downloadbcm5719-llvm-1006a068c63f9df215a29e3185b4c1a0e4a0f83a.tar.gz
bcm5719-llvm-1006a068c63f9df215a29e3185b4c1a0e4a0f83a.zip
[OpenCL] Improve diagnostic for placement new
Without an explicit declaration for placement new, clang would reject uses of placement new with "'default new' is not supported in OpenCL C++". This may mislead users into thinking that placement new is not supported, see e.g. PR42060. Clarify that placement new requires an explicit declaration. Differential Revision: https://reviews.llvm.org/D63561 llvm-svn: 364423
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index b59f3faa6e6..32b35ba7c32 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -2413,7 +2413,11 @@ bool Sema::FindAllocationFunctions(SourceLocation StartLoc, SourceRange Range,
}
if (getLangOpts().OpenCLCPlusPlus && R.empty()) {
- Diag(StartLoc, diag::err_openclcxx_not_supported) << "default new";
+ if (PlaceArgs.empty()) {
+ Diag(StartLoc, diag::err_openclcxx_not_supported) << "default new";
+ } else {
+ Diag(StartLoc, diag::err_openclcxx_placement_new);
+ }
return true;
}
OpenPOWER on IntegriCloud