34 lines
748 B
C
34 lines
748 B
C
/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm.
|
|
* Copyright 2018 Pawel Bylica.
|
|
* Licensed under the Apache License, Version 2.0. See the LICENSE file.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/** inline */
|
|
#if _MSC_VER || __STDC_VERSION__
|
|
#define INLINE inline
|
|
#else
|
|
#define INLINE
|
|
#endif
|
|
|
|
/** [[always_inline]] */
|
|
#if _MSC_VER
|
|
#define ALWAYS_INLINE __forceinline
|
|
#elif defined(__has_attribute) && __STDC_VERSION__
|
|
#if __has_attribute(always_inline)
|
|
#define ALWAYS_INLINE __attribute__((always_inline))
|
|
#endif
|
|
#endif
|
|
#if !defined(ALWAYS_INLINE)
|
|
#define ALWAYS_INLINE
|
|
#endif
|
|
|
|
/** [[no_sanitize()]] */
|
|
#if __clang__
|
|
#define NO_SANITIZE(sanitizer) \
|
|
__attribute__((no_sanitize(sanitizer)))
|
|
#else
|
|
#define NO_SANITIZE(sanitizer)
|
|
#endif
|