27 #ifndef OPM_VALGRIND_HPP
28 #define OPM_VALGRIND_HPP
33 #include <valgrind/memcheck.h>
37 #define OPM_VALGRIND_OPTIM_UNUSED OPM_OPTIM_UNUSED
39 #define OPM_VALGRIND_OPTIM_UNUSED OPM_UNUSED
50 #if !defined NDEBUG && HAVE_VALGRIND
51 return RUNNING_ON_VALGRIND;
84 #if !defined NDEBUG && HAVE_VALGRIND
85 auto tmp = VALGRIND_CHECK_MEM_IS_DEFINED(&value,
sizeof(T));
116 #if !defined NDEBUG && HAVE_VALGRIND
117 auto tmp = VALGRIND_CHECK_MEM_IS_ADDRESSABLE(&value,
sizeof(T));
150 inline bool CheckDefined(
const T* value OPM_VALGRIND_OPTIM_UNUSED,
int size OPM_VALGRIND_OPTIM_UNUSED)
152 #if !defined NDEBUG && HAVE_VALGRIND
153 auto tmp = VALGRIND_CHECK_MEM_IS_DEFINED(value, size*
sizeof(T));
180 #if !defined NDEBUG && HAVE_VALGRIND
181 VALGRIND_MAKE_MEM_UNDEFINED(&value,
sizeof(T));
204 inline void SetUndefined(
const T* value OPM_VALGRIND_OPTIM_UNUSED,
int size OPM_VALGRIND_OPTIM_UNUSED)
206 #if !defined NDEBUG && HAVE_VALGRIND
207 VALGRIND_MAKE_MEM_UNDEFINED(value, size*
sizeof(T));
228 inline void SetDefined(
const T& value OPM_VALGRIND_OPTIM_UNUSED)
230 #if !defined NDEBUG && HAVE_VALGRIND
231 VALGRIND_MAKE_MEM_DEFINED(&value,
sizeof(T));
254 inline void SetDefined(
const T *value OPM_VALGRIND_OPTIM_UNUSED,
int n OPM_VALGRIND_OPTIM_UNUSED)
256 #if !defined NDEBUG && HAVE_VALGRIND
257 VALGRIND_MAKE_MEM_DEFINED(value, n*
sizeof(T));
280 #if !defined NDEBUG && HAVE_VALGRIND
281 VALGRIND_MAKE_MEM_NOACCESS(&value,
sizeof(T));
302 inline void SetNoAccess(
const T *value OPM_VALGRIND_OPTIM_UNUSED,
int size OPM_VALGRIND_OPTIM_UNUSED)
304 #if !defined NDEBUG && HAVE_VALGRIND
305 VALGRIND_MAKE_MEM_NOACCESS(value, size*
sizeof(T));
Provides the OPM_UNUSED macro.
void SetNoAccess(const T &value OPM_VALGRIND_OPTIM_UNUSED)
Make valgrind complain if an object's memory is accessed.
Definition: Valgrind.hpp:278
bool IsRunning()
Returns whether the program is running under Valgrind or not.
Definition: Valgrind.hpp:48
bool CheckDefined(const T &value OPM_VALGRIND_OPTIM_UNUSED)
Make valgrind complain if any of the memory occupied by an object is undefined.
Definition: Valgrind.hpp:82
void SetDefined(const T &value OPM_VALGRIND_OPTIM_UNUSED)
Make the memory on which an object resides defined.
Definition: Valgrind.hpp:228
void SetUndefined(const T &value OPM_VALGRIND_OPTIM_UNUSED)
Make the memory on which an object resides undefined in valgrind runs.
Definition: Valgrind.hpp:178
bool CheckAddressable(const T &value OPM_VALGRIND_OPTIM_UNUSED)
Make valgrind complain if any of the memory occupied by an object is not addressable.
Definition: Valgrind.hpp:114