diff --git a/include/fmt/format.h b/include/fmt/format.h index c6898dae..c5668f1d 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -44,7 +44,7 @@ #include "core.h" #ifdef FMT_DEPRECATED_INCLUDE_OS -# include "os.h" +# include "os.h" #endif #ifdef __INTEL_COMPILER @@ -67,6 +67,12 @@ # define FMT_HAS_BUILTIN(x) 0 #endif +#if FMT_GCC_VERSION || FMT_CLANG_VERSION +# define FMT_NOINLINE __attribute__((noinline)) +#else +# define FMT_NOINLINE +#endif + #if __cplusplus == 201103L || __cplusplus == 201402L # if defined(__clang__) # define FMT_FALLTHROUGH [[clang::fallthrough]] @@ -1392,7 +1398,7 @@ template struct nonfinite_writer { }; template -OutputIt fill(OutputIt it, size_t n, const fill_t& fill) { +FMT_NOINLINE OutputIt fill(OutputIt it, size_t n, const fill_t& fill) { auto fill_size = fill.size(); if (fill_size == 1) return std::fill_n(it, n, fill[0]); for (size_t i = 0; i < n; ++i) it = std::copy_n(fill.data(), fill_size, it);