diff --git a/base/compiler_specific.h b/base/compiler_specific.h index ba57cc38cdc2e..6210d1ace59ab 100644 --- a/base/compiler_specific.h +++ b/base/compiler_specific.h @@ -94,11 +94,17 @@ // (Typically used to silence a compiler warning when the assignment // is important for some other reason.) // Use like: -// int x ALLOW_UNUSED = ...; +// int x = ...; +// ALLOW_UNUSED_LOCAL(x); +#define ALLOW_UNUSED_LOCAL(x) false ? (void)x : (void)0 + +// Annotate a typedef or function indicating it's ok if it's not used. +// Use like: +// typedef Foo Bar ALLOW_UNUSED_TYPE; #if defined(COMPILER_GCC) -#define ALLOW_UNUSED __attribute__((unused)) +#define ALLOW_UNUSED_TYPE __attribute__((unused)) #else -#define ALLOW_UNUSED +#define ALLOW_UNUSED_TYPE #endif // Annotate a function indicating it should not be inlined. diff --git a/base/logging_unittest.cc b/base/logging_unittest.cc index 6ebe32e432aa0..95a16f2e4bb12 100644 --- a/base/logging_unittest.cc +++ b/base/logging_unittest.cc @@ -240,7 +240,8 @@ TEST_F(LoggingTest, DcheckReleaseBehavior) { // looking in the global namespace. namespace nested_test { class Streamable {}; - ALLOW_UNUSED std::ostream& operator<<(std::ostream& out, const Streamable&) { + ALLOW_UNUSED_TYPE std::ostream& operator<<(std::ostream& out, + const Streamable&) { return out << "Streamable"; } TEST_F(LoggingTest, StreamingWstringFindsCorrectOperator) { diff --git a/base/mac/foundation_util_unittest.mm b/base/mac/foundation_util_unittest.mm index 916a13bd7faa3..e60a0f6b6495c 100644 --- a/base/mac/foundation_util_unittest.mm +++ b/base/mac/foundation_util_unittest.mm @@ -331,12 +331,12 @@ TEST(StringNumberConversionsTest, FormatNSInteger) { #endif // defined(ARCH_CPU_64_BITS) NSInteger some_nsinteger; - FormatNSIntegerAsType* pointer_to_some_nsinteger ALLOW_UNUSED = - &some_nsinteger; + FormatNSIntegerAsType* pointer_to_some_nsinteger = &some_nsinteger; + ALLOW_UNUSED_LOCAL(pointer_to_some_nsinteger); NSUInteger some_nsuinteger; - FormatNSUIntegerAsType* pointer_to_some_nsuinteger ALLOW_UNUSED = - &some_nsuinteger; + FormatNSUIntegerAsType* pointer_to_some_nsuinteger = &some_nsuinteger; + ALLOW_UNUSED_LOCAL(pointer_to_some_nsuinteger); // Check that format specifier works correctly for NSInteger. const struct { diff --git a/base/tuple_unittest.cc b/base/tuple_unittest.cc index 402394cb66ff4..8d620deb63984 100644 --- a/base/tuple_unittest.cc +++ b/base/tuple_unittest.cc @@ -30,7 +30,8 @@ struct Addz { } // namespace TEST(TupleTest, Basic) { - Tuple0 t0 ALLOW_UNUSED = MakeTuple(); + Tuple0 t0 = MakeTuple(); + ALLOW_UNUSED_LOCAL(t0); Tuple1<int> t1(1); Tuple2<int, const char*> t2 = MakeTuple(1, static_cast<const char*>("wee")); Tuple3<int, int, int> t3(1, 2, 3); diff --git a/cc/quads/draw_quad_unittest.cc b/cc/quads/draw_quad_unittest.cc index 308f08426ad52..1d093072d7dcb 100644 --- a/cc/quads/draw_quad_unittest.cc +++ b/cc/quads/draw_quad_unittest.cc @@ -105,14 +105,17 @@ void CompareDrawQuad(DrawQuad* quad, #define QUAD_DATA \ gfx::Rect quad_rect(30, 40, 50, 60); \ gfx::Rect quad_visible_rect(40, 50, 30, 20); \ - gfx::Rect ALLOW_UNUSED quad_opaque_rect(60, 55, 10, 10); \ - bool ALLOW_UNUSED needs_blending = true; + gfx::Rect quad_opaque_rect( 60, 55, 10, 10); \ + ALLOW_UNUSED_LOCAL(quad_opaque_rect); \ + bool needs_blending = true; \ + ALLOW_UNUSED_LOCAL(needs_blending); #define SETUP_AND_COPY_QUAD_NEW(Type, quad) \ DrawQuad* copy_new = \ render_pass->CopyFromAndAppendDrawQuad(quad_new, copy_shared_state); \ CompareDrawQuad(quad_new, copy_new, copy_shared_state); \ - const Type* ALLOW_UNUSED copy_quad = Type::MaterialCast(copy_new); + const Type* copy_quad = Type::MaterialCast(copy_new); \ + ALLOW_UNUSED_LOCAL(copy_quad); #define SETUP_AND_COPY_QUAD_ALL(Type, quad) \ DrawQuad* copy_all = \ @@ -124,7 +127,8 @@ void CompareDrawQuad(DrawQuad* quad, DrawQuad* copy_new = render_pass->CopyFromAndAppendRenderPassDrawQuad( \ quad_new, copy_shared_state, a); \ CompareDrawQuad(quad_new, copy_new, copy_shared_state); \ - const Type* ALLOW_UNUSED copy_quad = Type::MaterialCast(copy_new); + const Type* copy_quad = Type::MaterialCast(copy_new); \ + ALLOW_UNUSED_LOCAL(copy_quad); #define SETUP_AND_COPY_QUAD_ALL_RP(Type, quad, a) \ DrawQuad* copy_all = render_pass->CopyFromAndAppendRenderPassDrawQuad( \ diff --git a/ipc/ipc_message_macros.h b/ipc/ipc_message_macros.h index e38ef28e3fa01..0978765b993df 100644 --- a/ipc/ipc_message_macros.h +++ b/ipc/ipc_message_macros.h @@ -892,7 +892,7 @@ #define IPC_BEGIN_MESSAGE_MAP(class_name, msg) \ { \ - typedef class_name _IpcMessageHandlerClass ALLOW_UNUSED; \ + typedef class_name _IpcMessageHandlerClass ALLOW_UNUSED_TYPE; \ void* param__ = NULL; \ const IPC::Message& ipc_message__ = msg; \ switch (ipc_message__.type()) { @@ -905,11 +905,11 @@ #define IPC_DECLTYPE typeof #endif -#define IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(class_name, msg, param) \ - { \ - typedef class_name _IpcMessageHandlerClass ALLOW_UNUSED; \ - IPC_DECLTYPE(param) param__ = param; \ - const IPC::Message& ipc_message__ = msg; \ +#define IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(class_name, msg, param) \ + { \ + typedef class_name _IpcMessageHandlerClass ALLOW_UNUSED_TYPE; \ + IPC_DECLTYPE(param) param__ = param; \ + const IPC::Message& ipc_message__ = msg; \ switch (ipc_message__.type()) { #define IPC_MESSAGE_FORWARD(msg_class, obj, member_func) \ diff --git a/ppapi/proxy/dispatch_reply_message.h b/ppapi/proxy/dispatch_reply_message.h index 56a450891b710..bb4b7d7d9310e 100644 --- a/ppapi/proxy/dispatch_reply_message.h +++ b/ppapi/proxy/dispatch_reply_message.h @@ -134,7 +134,7 @@ void DispatchResourceReplyOrDefaultParams( // unused variables or other errors if they're used with these macros. #define PPAPI_BEGIN_MESSAGE_MAP(class_name, msg) \ { \ - typedef class_name _IpcMessageHandlerClass ALLOW_UNUSED; \ + typedef class_name _IpcMessageHandlerClass ALLOW_UNUSED_TYPE; \ const IPC::Message& ipc_message__ = msg; \ switch (ipc_message__.type()) { \ diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py index 303c01ebb5567..b135cac46dead 100755 --- a/ui/gl/generate_bindings.py +++ b/ui/gl/generate_bindings.py @@ -1521,9 +1521,10 @@ namespace gfx { # on the extension string or the GL version. file.write("""void Driver%s::InitializeDynamicBindings(GLContext* context) { DCHECK(context && context->IsCurrent(NULL)); - const GLVersionInfo* ver ALLOW_UNUSED = context->GetVersionInfo(); - std::string extensions ALLOW_UNUSED = context->GetExtensions(); - extensions += " "; + const GLVersionInfo* ver = context->GetVersionInfo(); + ALLOW_UNUSED_LOCAL(ver); + std::string extensions = context->GetExtensions() + " "; + ALLOW_UNUSED_LOCAL(extensions); """ % set_name.upper()) for extension in sorted(used_extensions):