# HG changeset patch # User Jeff Walden # Date 1323815468 18000 # Node ID 561838b84f73accc6a845afaa1b64782bfca6a12 # Parent 850c7301c926392e28f2093d06e2ea1b4754853f Silence unused-value warnings with various Valgrind macros in clang, and add a silencing instance to jsgc.cpp. No bug, rs=jorendorff diff --git a/js/src/jsdbgapi.cpp b/js/src/jsdbgapi.cpp --- a/js/src/jsdbgapi.cpp +++ b/js/src/jsdbgapi.cpp @@ -1490,36 +1490,18 @@ JS_DefineProfilingFunctions(JSContext *c #include -/* - * Wrapper for callgrind macros to stop warnings coming from their expansions. - */ -#if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) -# define WRAP_CALLGRIND(call) \ - JS_BEGIN_MACRO \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \ - call; \ - _Pragma("GCC diagnostic pop") \ - JS_END_MACRO -#else -# define WRAP_CALLGRIND(call) \ - JS_BEGIN_MACRO \ - call; \ - JS_END_MACRO -#endif - JS_FRIEND_API(JSBool) js_StartCallgrind() { - WRAP_CALLGRIND(CALLGRIND_START_INSTRUMENTATION); - WRAP_CALLGRIND(CALLGRIND_ZERO_STATS); + JS_SILENCE_UNUSED_VALUE_IN_EXPR(CALLGRIND_START_INSTRUMENTATION); + JS_SILENCE_UNUSED_VALUE_IN_EXPR(CALLGRIND_ZERO_STATS); return true; } JS_FRIEND_API(JSBool) js_StopCallgrind() { - WRAP_CALLGRIND(CALLGRIND_STOP_INSTRUMENTATION); + JS_SILENCE_UNUSED_VALUE_IN_EXPR(CALLGRIND_STOP_INSTRUMENTATION); return true; } @@ -1527,9 +1509,9 @@ JS_FRIEND_API(JSBool) js_DumpCallgrind(const char *outfile) { if (outfile) { - WRAP_CALLGRIND(CALLGRIND_DUMP_STATS_AT(outfile)); + JS_SILENCE_UNUSED_VALUE_IN_EXPR(CALLGRIND_DUMP_STATS_AT(outfile)); } else { - WRAP_CALLGRIND(CALLGRIND_DUMP_STATS); + JS_SILENCE_UNUSED_VALUE_IN_EXPR(CALLGRIND_DUMP_STATS); } return true; diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1010,7 +1010,7 @@ MarkWordConservatively(JSTracer *trc, js * original word. See bug 572678. */ #ifdef JS_VALGRIND - VALGRIND_MAKE_MEM_DEFINED(&w, sizeof(w)); + JS_SILENCE_UNUSED_VALUE_IN_EXPR(VALGRIND_MAKE_MEM_DEFINED(&w, sizeof(w))); #endif MarkIfGCThingWord(trc, w); diff --git a/js/src/jsutil.h b/js/src/jsutil.h --- a/js/src/jsutil.h +++ b/js/src/jsutil.h @@ -440,4 +440,28 @@ typedef size_t jsbitmap; #define JS_CLEAR_BIT(_map,_bit) ((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] &= \ ~((jsbitmap)1<<((_bit)&(JS_BITS_PER_WORD-1)))) +/* Wrapper for various macros to stop warnings coming from their expansions. */ +#if defined(__clang__) +# define JS_SILENCE_UNUSED_VALUE_IN_EXPR(expr) \ + JS_BEGIN_MACRO \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunused-value\"") \ + expr; \ + _Pragma("clang diagnostic pop") \ + JS_END_MACRO +#elif (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# define JS_SILENCE_UNUSED_VALUE_IN_EXPR(expr) \ + JS_BEGIN_MACRO \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \ + expr; \ + _Pragma("GCC diagnostic pop") \ + JS_END_MACRO +#else +# define JS_SILENCE_UNUSED_VALUE_IN_EXPR(expr) \ + JS_BEGIN_MACRO \ + expr; \ + JS_END_MACRO +#endif + #endif /* jsutil_h___ */