diff --git a/apps/android_camera/app/src/main/jni/tvm_runtime.h b/apps/android_camera/app/src/main/jni/tvm_runtime.h index 07a812c4b840..bed3bc82d5a3 100644 --- a/apps/android_camera/app/src/main/jni/tvm_runtime.h +++ b/apps/android_camera/app/src/main/jni/tvm_runtime.h @@ -74,7 +74,7 @@ namespace tvm { namespace runtime { namespace detail { // Override logging mechanism -void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { +[[noreturn]] void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { std::string m = file + ":" + std::to_string(lineno) + ": " + message; __android_log_write(ANDROID_LOG_DEBUG, "TVM_RUNTIME", m.c_str()); throw InternalError(file, lineno, message); diff --git a/apps/android_rpc/app/src/main/jni/tvm_runtime.h b/apps/android_rpc/app/src/main/jni/tvm_runtime.h index e9dd4faba23f..1dd37f1c5345 100644 --- a/apps/android_rpc/app/src/main/jni/tvm_runtime.h +++ b/apps/android_rpc/app/src/main/jni/tvm_runtime.h @@ -92,7 +92,7 @@ namespace tvm { namespace runtime { namespace detail { // Override logging mechanism -void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { +[[noreturn]] void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { std::string m = file + ":" + std::to_string(lineno) + ": " + message; __android_log_write(ANDROID_LOG_DEBUG, "TVM_RUNTIME", m.c_str()); throw InternalError(file, lineno, message); diff --git a/apps/ios_rpc/tvmrpc/TVMRuntime.mm b/apps/ios_rpc/tvmrpc/TVMRuntime.mm index 09a1a17ffd37..19c629f686fd 100644 --- a/apps/ios_rpc/tvmrpc/TVMRuntime.mm +++ b/apps/ios_rpc/tvmrpc/TVMRuntime.mm @@ -41,7 +41,7 @@ namespace detail { // Override logging mechanism -void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { +[[noreturn]] void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { throw tvm::runtime::InternalError(file, lineno, message); } diff --git a/include/tvm/runtime/logging.h b/include/tvm/runtime/logging.h index 25e70289118c..8f6ccea40b8a 100644 --- a/include/tvm/runtime/logging.h +++ b/include/tvm/runtime/logging.h @@ -286,7 +286,8 @@ namespace detail { * * \sa TVM_LOG_CUSTOMIZE */ -TVM_DLL void LogFatalImpl(const std::string& file, int lineno, const std::string& message); +[[noreturn]] TVM_DLL void LogFatalImpl(const std::string& file, int lineno, + const std::string& message); /*! * \brief Custom implementations of LogMessage. @@ -306,7 +307,7 @@ class LogFatal { #pragma disagnostic push #pragma warning(disable : 4722) #endif - ~LogFatal() TVM_THROW_EXCEPTION { LogFatalImpl(file_, lineno_, stream_.str()); } + [[noreturn]] ~LogFatal() TVM_THROW_EXCEPTION { LogFatalImpl(file_, lineno_, stream_.str()); } #ifdef _MSC_VER #pragma disagnostic pop #endif diff --git a/src/runtime/hexagon/hexagon_common.cc b/src/runtime/hexagon/hexagon_common.cc index 3a3a32a5cbc2..2a2ddbdfa032 100644 --- a/src/runtime/hexagon/hexagon_common.cc +++ b/src/runtime/hexagon/hexagon_common.cc @@ -84,7 +84,7 @@ void HexagonLog(const std::string& file, int lineno, const std::string& message) } // namespace namespace detail { -void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { +[[noreturn]] void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { HexagonLog(file, lineno, message); throw InternalError(file, lineno, message); } diff --git a/web/emcc/wasm_runtime.cc b/web/emcc/wasm_runtime.cc index 4815520389f8..addc3a3e0c11 100644 --- a/web/emcc/wasm_runtime.cc +++ b/web/emcc/wasm_runtime.cc @@ -68,7 +68,7 @@ namespace tvm { namespace runtime { namespace detail { // Override logging mechanism -void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { +[[noreturn]] void LogFatalImpl(const std::string& file, int lineno, const std::string& message) { std::cerr << "[FATAL] " << file << ":" << lineno << ": " << message << std::endl; abort(); }