aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorSven van Haastregt <sven.vanhaastregt@arm.com>2018-09-20 10:07:27 +0000
committerSven van Haastregt <sven.vanhaastregt@arm.com>2018-09-20 10:07:27 +0000
commit1076cc2ffae3333db3faaa00751456479ea28ac6 (patch)
treed14f83258cc11a5eb1e314b0bf587c5d1405d273 /clang/lib/Sema/SemaChecking.cpp
parent1724c3481d8237ecb5ef23bf8da04af670d425ff (diff)
downloadllvm-1076cc2ffae3333db3faaa00751456479ea28ac6.zip
llvm-1076cc2ffae3333db3faaa00751456479ea28ac6.tar.gz
llvm-1076cc2ffae3333db3faaa00751456479ea28ac6.tar.bz2
[OpenCL] Diagnose redundant address space conversion
Add a warning if a parameter with a named address space is passed to a to_addr builtin. For example: int i; to_private(&i); // generate warning as conversion from private to private is redundant. Patch by Alistair Davies. Differential Revision: https://reviews.llvm.org/D51411 llvm-svn: 342638
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index a1bfff4..c46468f 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -849,6 +849,13 @@ static bool SemaOpenCLBuiltinToAddr(Sema &S, unsigned BuiltinID,
return true;
}
+ if (RT->getPointeeType().getAddressSpace() != LangAS::opencl_generic) {
+ S.Diag(Call->getArg(0)->getBeginLoc(),
+ diag::warn_opencl_generic_address_space_arg)
+ << Call->getDirectCallee()->getNameInfo().getAsString()
+ << Call->getArg(0)->getSourceRange();
+ }
+
RT = RT->getPointeeType();
auto Qual = RT.getQualifiers();
switch (BuiltinID) {