auxiliary/os,auxiliary/util: Fix the `‘noreturn’ function does return` warning.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 16 Apr 2014 16:36:51 +0000 (17:36 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 17 Apr 2014 08:56:48 +0000 (09:56 +0100)
Now that _debug_assert_fail() has the noreturn attribute, it is better
that execution truly never returns.  Not just for sake of silencing the
warning, but because the code at the return IP address may be invalid or
lead to inconsistent results.

This removes support for the GALLIUM_ABORT_ON_ASSERT debugging
environment variable, but between the usefulness of
GALLIUM_ABORT_ON_ASSERT and better static code analysis I think better
static code analysis wins.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/os/os_misc.h
src/gallium/auxiliary/util/u_debug.c

index 5029ab96aac1028eb0b99f99b3923e3b8dc6f42f..582931fe96a49034a0f11c76679114441cc81e8a 100644 (file)
@@ -67,7 +67,7 @@ extern "C" {
  * Abort the program.
  */
 #if defined(DEBUG)
-#  define os_abort() os_break()
+#  define os_abort() do { os_break(); abort(); } while(0)
 #else
 #  define os_abort() abort()
 #endif
index ae248e02081cb51d102b85d84745386fa8474fe4..fe517175eb19cbe43894b4724379aee06836a2d7 100644 (file)
@@ -274,10 +274,7 @@ void _debug_assert_fail(const char *expr,
                         const char *function) 
 {
    _debug_printf("%s:%u:%s: Assertion `%s' failed.\n", file, line, function, expr);
-   if (debug_get_bool_option("GALLIUM_ABORT_ON_ASSERT", TRUE))
-      os_abort();
-   else
-      _debug_printf("continuing...\n");
+   os_abort();
 }