[cfe-dev] Could clang produce a warning for definite mis-use of __attribute__((const))

Michael Worcester via cfe-dev cfe-dev at lists.llvm.org
Mon Aug 26 10:28:47 PDT 2019


Hi,

Could clang detect a C++ methods that has been annotated with
__attribute__((const)) that accesses the "this" pointer and produce an
error?

https://godbolt.org/z/QUivmv

The docs do make it clear that the functions must not access any memory
even if that memory is accessed through its arguments, but it's quite easy
to forget the implicit "this" argument for member functions, and finding
the error is, while fun, a bit embarrassing.

Note that a function that has pointer arguments and examines the data
pointed to must *not* be declared const if the pointed-to data might change
between successive invocations of the function. In general, since a
function cannot distinguish data that might change from data that cannot,
const functions should never take pointer or, in C++, reference arguments.
Likewise, a function that calls a non-const function usually must not be
const itself.


--
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190826/1959859a/attachment.html>


More information about the cfe-dev mailing list