diff options
| author | jushar | 2023-03-08 13:14:29 +0100 |
|---|---|---|
| committer | Martin Hořeňovský | 2023-03-08 20:55:41 +0100 |
| commit | 3220ae6d4aff68edb27fa6b34d2e4f909a770e19 (patch) | |
| tree | 4478a7b7a5afa0437d7d785b4af4e491fe786525 /src/catch2/benchmark | |
| parent | 0a0ebf50034831718ffc63c6d12abb1fa469d6e9 (diff) | |
| download | catch3-3220ae6d4aff68edb27fa6b34d2e4f909a770e19.tar.gz | |
Add support for the IAR compiler
Diffstat (limited to 'src/catch2/benchmark')
| -rw-r--r-- | src/catch2/benchmark/catch_optimizer.hpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/catch2/benchmark/catch_optimizer.hpp b/src/catch2/benchmark/catch_optimizer.hpp index 0dbfc145..02cf2073 100644 --- a/src/catch2/benchmark/catch_optimizer.hpp +++ b/src/catch2/benchmark/catch_optimizer.hpp @@ -10,7 +10,7 @@ #ifndef CATCH_OPTIMIZER_HPP_INCLUDED #define CATCH_OPTIMIZER_HPP_INCLUDED -#if defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__IAR_SYSTEMS_ICC__) # include <atomic> // atomic_thread_fence #endif @@ -32,16 +32,23 @@ namespace Catch { namespace Detail { inline void optimizer_barrier() { keep_memory(); } } // namespace Detail -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) || defined(__IAR_SYSTEMS_ICC__) +#if defined(_MSVC_VER) #pragma optimize("", off) +#elif defined(__IAR_SYSTEMS_ICC__) +// For IAR the pragma only affects the following function +#pragma optimize=disable +#endif template <typename T> inline void keep_memory(T* p) { // thanks @milleniumbug *reinterpret_cast<char volatile*>(p) = *reinterpret_cast<char const volatile*>(p); } // TODO equivalent keep_memory() +#if defined(_MSVC_VER) #pragma optimize("", on) +#endif namespace Detail { inline void optimizer_barrier() { |