From 6100ed4bb3d10f509989e6c2861ca8c22335c069 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Wed, 18 Dec 2019 10:05:25 -0700 Subject: [PATCH] Eliminate NVCC NVidia compiler emits unreachable code warnings Similar to the MSC Compiler, the NVidia NVCC compiler also emits unreachable code warnings when there is a return statement following an exception. These changes eliminate those warnings. --- include/fmt/core.h | 4 ++-- include/fmt/format.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index b5156e20244f..fd4350e710df 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -117,8 +117,8 @@ # endif #endif -// [[noreturn]] is disabled on MSVC because of bogus unreachable code warnings. -#if FMT_EXCEPTIONS && FMT_HAS_CPP_ATTRIBUTE(noreturn) && !FMT_MSC_VER +// [[noreturn]] is disabled on MSVC and NVCC because of bogus unreachable code warnings. +#if FMT_EXCEPTIONS && FMT_HAS_CPP_ATTRIBUTE(noreturn) && !FMT_MSC_VER && !FMT_NVCC # define FMT_NORETURN [[noreturn]] #else # define FMT_NORETURN diff --git a/include/fmt/format.h b/include/fmt/format.h index bec24906c880..1620e6357915 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -86,12 +86,12 @@ #ifndef FMT_THROW # if FMT_EXCEPTIONS -# if FMT_MSC_VER +# if FMT_MSC_VER || FMT_NVCC FMT_BEGIN_NAMESPACE namespace internal { template inline void do_throw(const Exception& x) { - // Silence unreachable code warnings in MSVC because these are nearly - // impossible to fix in a generic code. + // Silence unreachable code warnings in MSVC and NVCC because these + // are nearly impossible to fix in a generic code. volatile bool b = true; if (b) throw x; }