2009-01-25 Darin Adler <darin@apple.com>
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 25 Jan 2009 20:25:34 +0000 (20:25 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 25 Jan 2009 20:25:34 +0000 (20:25 +0000)
        Reviewed by Sam Weinig.

        Bug 23352: Turn on more compiler warnings in the Mac build
        https://bugs.webkit.org/show_bug.cgi?id=23352

        Third patch: Use the noreturn attribute on functions that don't
        return to prepare for the use of the -Wmissing-noreturn warning.

        * jit/JITCall.cpp:
        (JSC::unreachable): Added NO_RETURN.
        * jsc.cpp:
        (functionQuit): Ditto.
        (printUsageStatement): Ditto.
        * wtf/AlwaysInline.h: Added definition of NO_RETURN.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@40230 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/jit/JITCall.cpp
JavaScriptCore/jsc.cpp
JavaScriptCore/wtf/AlwaysInline.h

index 711c077..cf160e1 100644 (file)
@@ -1,3 +1,20 @@
+2009-01-25  Darin Adler  <darin@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Bug 23352: Turn on more compiler warnings in the Mac build
+        https://bugs.webkit.org/show_bug.cgi?id=23352
+
+        Third patch: Use the noreturn attribute on functions that don't
+        return to prepare for the use of the -Wmissing-noreturn warning.
+
+        * jit/JITCall.cpp:
+        (JSC::unreachable): Added NO_RETURN.
+        * jsc.cpp:
+        (functionQuit): Ditto.
+        (printUsageStatement): Ditto.
+        * wtf/AlwaysInline.h: Added definition of NO_RETURN.
+
 2009-01-24  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Maciej Stachowiak.
index 63b768d..7866161 100644 (file)
@@ -187,7 +187,7 @@ void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>:
 
 #else
 
-static void unreachable()
+static NO_RETURN void unreachable()
 {
     ASSERT_NOT_REACHED();
     exit(1);
index e811503..666bd58 100644 (file)
@@ -74,7 +74,7 @@ static JSValuePtr functionVersion(ExecState*, JSObject*, JSValuePtr, const ArgLi
 static JSValuePtr functionRun(ExecState*, JSObject*, JSValuePtr, const ArgList&);
 static JSValuePtr functionLoad(ExecState*, JSObject*, JSValuePtr, const ArgList&);
 static JSValuePtr functionReadline(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionQuit(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static NO_RETURN JSValuePtr functionQuit(ExecState*, JSObject*, JSValuePtr, const ArgList&);
 
 struct Options {
     Options()
@@ -256,10 +256,6 @@ JSValuePtr functionQuit(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
 {
     cleanupGlobalData(&exec->globalData());
     exit(EXIT_SUCCESS);
-#if !COMPILER(MSVC) && !PLATFORM(WIN_CE)
-    // MSVC knows that exit(0) never returns, so it flags this return statement as unreachable.
-    return jsUndefined();
-#endif
 }
 
 // Use SEH for Release builds only to get rid of the crash report dialog
@@ -393,7 +389,7 @@ static void runInteractive(GlobalObject* globalObject)
     printf("\n");
 }
 
-static void printUsageStatement()
+static NO_RETURN void printUsageStatement()
 {
     fprintf(stderr, "Usage: jsc [options] [files] [-- arguments]\n");
     fprintf(stderr, "  -d         Dumps bytecode (debug builds only)\n");
index d39b2b9..64fdd99 100644 (file)
@@ -22,7 +22,7 @@
 
 #ifndef ALWAYS_INLINE
 #if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW)
-#define ALWAYS_INLINE inline __attribute__ ((__always_inline__))
+#define ALWAYS_INLINE inline __attribute__((__always_inline__))
 #elif COMPILER(MSVC) && defined(NDEBUG)
 #define ALWAYS_INLINE __forceinline
 #else
@@ -32,7 +32,7 @@
 
 #ifndef NEVER_INLINE
 #if COMPILER(GCC)
-#define NEVER_INLINE __attribute__ ((__noinline__))
+#define NEVER_INLINE __attribute__((__noinline__))
 #else
 #define NEVER_INLINE
 #endif
 #define LIKELY(x) (x)
 #endif
 #endif
+
+#ifndef NO_RETURN
+#if COMPILER(GCC)
+#define NO_RETURN __attribute((__noreturn__))
+#else
+#define NO_RETURN
+#endif
+#endif