Add macro LLVM_ATTRIBUTE_REINITIALIZES
Summary: This marks legitimate use-after-move (e.g. `Found.clear()` in rC342925) which would otherwise be caught by bugprone-use-after-move. bugprone-use-after-move recognizes this attribute after rCTE339571. Reviewers: aaron.ballman, rsmith, mboehme, hokein Reviewed By: mboehme Subscribers: kristina, llvm-commits Differential Revision: https://reviews.llvm.org/D52451 llvm-svn: 342949
This commit is contained in:
parent
86ecf46fb4
commit
037720ba4f
|
|
@ -133,6 +133,19 @@
|
||||||
#define LLVM_NODISCARD
|
#define LLVM_NODISCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Indicate that a non-static, non-const C++ member function reinitializes
|
||||||
|
// the entire object to a known state, independent of the previous state of
|
||||||
|
// the object.
|
||||||
|
//
|
||||||
|
// The clang-tidy check bugprone-use-after-move recognizes this attribute as a
|
||||||
|
// marker that a moved-from object has left the indeterminate state and can be
|
||||||
|
// reused.
|
||||||
|
#if __has_cpp_attribute(clang::reinitializes)
|
||||||
|
#define LLVM_ATTRIBUTE_REINITIALIZES [[clang::reinitializes]]
|
||||||
|
#else
|
||||||
|
#define LLVM_ATTRIBUTE_REINITIALIZES
|
||||||
|
#endif
|
||||||
|
|
||||||
// Some compilers warn about unused functions. When a function is sometimes
|
// Some compilers warn about unused functions. When a function is sometimes
|
||||||
// used or not depending on build settings (e.g. a function only called from
|
// used or not depending on build settings (e.g. a function only called from
|
||||||
// within "assert"), this attribute can be used to suppress such warnings.
|
// within "assert"), this attribute can be used to suppress such warnings.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue