#ifndef INCLUDE_PERFETTO_BASE_COMPILER_H_
#define INCLUDE_PERFETTO_BASE_COMPILER_H_
#include <stddef.h>
#include <type_traits>
#include "perfetto/public/compiler.h"
#if defined(__has_attribute)
#define PERFETTO_HAS_ATTRIBUTE(x) …
#else
#define PERFETTO_HAS_ATTRIBUTE …
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_WARN_UNUSED_RESULT …
#else
#define PERFETTO_WARN_UNUSED_RESULT
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_UNUSED …
#else
#define PERFETTO_UNUSED
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_NORETURN …
#else
#define PERFETTO_NORETURN …
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_DEBUG_FUNCTION_IDENTIFIER() …
#elif defined(_MSC_VER)
#define PERFETTO_DEBUG_FUNCTION_IDENTIFIER …
#else
#define PERFETTO_DEBUG_FUNCTION_IDENTIFIER …
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_PRINTF_FORMAT(x, y) …
#else
#define PERFETTO_PRINTF_FORMAT …
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_POPCOUNT(x) …
#else
#include <intrin.h>
#define PERFETTO_POPCOUNT …
#endif
#if defined(__clang__)
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
extern "C" void __asan_poison_memory_region(void const volatile*, size_t);
extern "C" void __asan_unpoison_memory_region(void const volatile*, size_t);
#define PERFETTO_ASAN_POISON …
#define PERFETTO_ASAN_UNPOISON …
#else
#define PERFETTO_ASAN_POISON(addr, size) …
#define PERFETTO_ASAN_UNPOISON(addr, size) …
#endif
#else
#define PERFETTO_ASAN_POISON …
#define PERFETTO_ASAN_UNPOISON …
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_IS_LITTLE_ENDIAN() …
#else
#define PERFETTO_IS_LITTLE_ENDIAN …
#endif
#if defined(__GNUC__) || defined(__clang__)
#define PERFETTO_EXPORT_ENTRYPOINT …
#else
#define PERFETTO_EXPORT_ENTRYPOINT
#endif
#if defined(__clang__)
#define PERFETTO_NO_THREAD_SAFETY_ANALYSIS …
#else
#define PERFETTO_NO_THREAD_SAFETY_ANALYSIS
#endif
#if defined(__clang__)
#define PERFETTO_NO_SANITIZE_UNDEFINED …
#else
#define PERFETTO_NO_SANITIZE_UNDEFINED
#endif
#if PERFETTO_HAS_ATTRIBUTE(no_destroy)
#define PERFETTO_HAS_NO_DESTROY() …
#define PERFETTO_NO_DESTROY …
#else
#define PERFETTO_HAS_NO_DESTROY …
#define PERFETTO_NO_DESTROY
#endif
#define PERFETTO_FALLTHROUGH …
namespace perfetto {
namespace base {
template <typename... T>
inline void ignore_result(const T&...) { … }
}
}
#endif