Simplify is_suppressed_warning helper
authorCyrill Gorcunov <gorcunov@gmail.com>
Sun, 4 Dec 2011 15:24:25 +0000 (19:24 +0400)
committerCyrill Gorcunov <gorcunov@gmail.com>
Sun, 4 Dec 2011 15:24:25 +0000 (19:24 +0400)
The former is really hard to read.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
nasm.c

diff --git a/nasm.c b/nasm.c
index 40ef4f9..d744253 100644 (file)
--- a/nasm.c
+++ b/nasm.c
@@ -1908,15 +1908,24 @@ static void nasm_verror_vc(int severity, const char *fmt, va_list ap)
  */
 static bool is_suppressed_warning(int severity)
 {
-    /*
-     * See if it's a suppressed warning.
-     */
-    return (severity & ERR_MASK) == ERR_WARNING &&
-       (((severity & ERR_WARN_MASK) != 0 &&
-         !warning_on[(severity & ERR_WARN_MASK) >> ERR_WARN_SHR]) ||
-        /* See if it's a pass-one only warning and we're not in pass one. */
-        ((severity & ERR_PASS1) && pass0 != 1) ||
-        ((severity & ERR_PASS2) && pass0 != 2));
+
+    /* Not a warning at all */
+    if ((severity & ERR_MASK) != ERR_WARNING)
+        return false;
+
+    /* Might be a warning but suppresed explicitly */
+    if (severity & ERR_WARN_MASK) {
+        int index = (severity & ERR_WARN_MASK) >> ERR_WARN_SHR;
+        if (warning_on[index])
+            return false;
+    }
+
+    /* See if it's a pass-one only warning and we're not in pass one. */
+    if (((severity & ERR_PASS1) && pass0 != 1) ||
+        ((severity & ERR_PASS2) && pass0 != 2))
+        return true;
+
+    return true;
 }
 
 /**