#ifndef OSRM_FUZZ_UTIL_HPP
#define OSRM_FUZZ_UTIL_HPP

#include <type_traits>

// Fakes observable side effects the compiler can not optimize away
template <typename T> inline void escape(T p)
{
    static_assert(std::is_pointer<T>::value, "");
    asm volatile("" : : "g"((void *)p) : "memory");
}

// Possibly reads and writes all the memory in your system
inline void clobber() { asm volatile("" : : : "memory"); }

#endif