[CLANG][BPF] change __builtin_preserve_access_index() signature
authorYonghong Song <yhs@fb.com>
Thu, 19 Sep 2019 02:59:43 +0000 (02:59 +0000)
committerYonghong Song <yhs@fb.com>
Thu, 19 Sep 2019 02:59:43 +0000 (02:59 +0000)
commitc15aa241f8213334f6980b7981cee1f28f81112a
treef9930723d982a0fed5bc9ab4e520aec3987f5bfb
parent494243597b46350a248ee25efb0e3a728fc5900c
[CLANG][BPF] change __builtin_preserve_access_index() signature

The clang intrinsic __builtin_preserve_access_index() currently
has signature:
  const void * __builtin_preserve_access_index(const void * ptr)

This may cause compiler warning when:
  - parameter type is "volatile void *" or "const volatile void *", or
  - the assign-to type of the intrinsic does not have "const" qualifier.
Further, this signature does not allow dereference of the
builtin result pointer as it is a "const void *" type, which
adds extra step for the user to do type casting.

Let us change the signature to:
  PointerT __builtin_preserve_access_index(PointerT ptr)
such that the result and argument types are the same.
With this, directly dereferencing the builtin return value
becomes possible.

Differential Revision: https://reviews.llvm.org/D67734

llvm-svn: 372294
clang/docs/LanguageExtensions.rst
clang/include/clang/Basic/Builtins.def
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/Sema/SemaChecking.cpp
clang/test/Sema/builtin-preserve-access-index.c