diff options
author | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2018-09-20 10:07:27 +0000 |
---|---|---|
committer | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2018-09-20 10:07:27 +0000 |
commit | 1076cc2ffae3333db3faaa00751456479ea28ac6 (patch) | |
tree | d14f83258cc11a5eb1e314b0bf587c5d1405d273 /clang/lib/Sema/SemaChecking.cpp | |
parent | 1724c3481d8237ecb5ef23bf8da04af670d425ff (diff) | |
download | llvm-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.cpp | 7 |
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) { |