From 5d0da01b54e5b4c94ca8bdcf87cb87b98c3a4fa4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 23 Mar 2012 19:05:17 -0300 Subject: Mark qt_assert and qFatal as non-returning functions (excpt. MSVC) This allows the compiler to optimise the code a bit better: since they don't return, it can assume in the code after the Q_ASSERT that the condition was true. MSVC is the exception: with MSVC, we have the CrtDbgReport dialog, which allows the developer to continue execution, inside the debugger. Therefore, we can't mark any of those functions as non-returning because they can, after all, return. Unfortunately, the Q_ASSERT usually expands to no code in release mode, so the improvement in code generation happens in debug mode only... Change-Id: I4d542d6853cd51c71ffab1d563ed64ef7c419115 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/global/qlogging.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/global/qlogging.cpp') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index f30df92a54..81fe82a973 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -201,6 +201,9 @@ void QMessageLogger::fatal(const char *msg, ...) va_list ap; va_start(ap, msg); // use variable arg list qt_message(QtFatalMsg, context, msg, ap); +#ifndef Q_CC_MSVC + Q_UNREACHABLE(); +#endif va_end(ap); } -- cgit v1.2.3