| Index: util/misc/initialization_state_dcheck.h
 | 
| diff --git a/util/misc/initialization_state_dcheck.h b/util/misc/initialization_state_dcheck.h
 | 
| index 88f7ac1e9a946da993f348078a30c5ec111c2cd5..790a3d8cf75948675d783bc94d209fbeb0812c83 100644
 | 
| --- a/util/misc/initialization_state_dcheck.h
 | 
| +++ b/util/misc/initialization_state_dcheck.h
 | 
| @@ -18,7 +18,9 @@
 | 
|  //! \file
 | 
|  
 | 
|  #include "base/basictypes.h"
 | 
| +#include "base/compiler_specific.h"
 | 
|  #include "base/logging.h"
 | 
| +#include "build/build_config.h"
 | 
|  #include "util/misc/initialization_state.h"
 | 
|  
 | 
|  namespace crashpad {
 | 
| @@ -154,6 +156,11 @@ class InitializationStateDcheck : public InitializationState {
 | 
|  
 | 
|  #else
 | 
|  
 | 
| +#if defined(COMPILER_MSVC)
 | 
| +// bool[0] (below) is not accepted by MSVC.
 | 
| +struct InitializationStateDcheck {
 | 
| +};
 | 
| +#else
 | 
|  // Since this is to be used as a DCHECK (for debugging), it should be
 | 
|  // non-intrusive in non-DCHECK (non-debug, release) builds. An empty struct
 | 
|  // would still have a nonzero size (rationale:
 | 
| @@ -163,30 +170,16 @@ class InitializationStateDcheck : public InitializationState {
 | 
|  // and they can be “initialized” with the same () syntax used to initialize
 | 
|  // objects of the DCHECK_IS_ON InitializationStateDcheck class above.
 | 
|  using InitializationStateDcheck = bool[0];
 | 
| +#endif  // COMPILER_MSVC
 | 
|  
 | 
| -namespace internal {
 | 
| -
 | 
| -// This function exists to make use of the InitializationStateDcheck object so
 | 
| -// that it appears to be used. It always returns true, so that it can be used
 | 
| -// as the argument to a no-op DCHECK.
 | 
| -inline bool EatInitializationState(const InitializationStateDcheck*) {
 | 
| -  return true;
 | 
| -}
 | 
| -
 | 
| -}  // namepspace internal
 | 
| -
 | 
| -// The contents of these DCHECKs will never be evaluated, but they make use of
 | 
| -// initialization_state_dcheck to avoid triggering -Wunused-private-field
 | 
| -// warnings.
 | 
| +// Avoid triggering warnings by repurposing these macros when DCHECKs are
 | 
| +// disabled.
 | 
|  #define INITIALIZATION_STATE_SET_INITIALIZING(initialization_state_dcheck) \
 | 
| -  DCHECK(::crashpad::internal::EatInitializationState( \
 | 
| -      &(initialization_state_dcheck)))
 | 
| +  ALLOW_UNUSED_LOCAL(initialization_state_dcheck)
 | 
|  #define INITIALIZATION_STATE_SET_VALID(initialization_state_dcheck) \
 | 
| -  DCHECK(::crashpad::internal::EatInitializationState( \
 | 
| -      &(initialization_state_dcheck)))
 | 
| +  ALLOW_UNUSED_LOCAL(initialization_state_dcheck)
 | 
|  #define INITIALIZATION_STATE_DCHECK_VALID(initialization_state_dcheck) \
 | 
| -  DCHECK(::crashpad::internal::EatInitializationState( \
 | 
| -      &(initialization_state_dcheck)))
 | 
| +  ALLOW_UNUSED_LOCAL(initialization_state_dcheck)
 | 
|  
 | 
|  #endif
 | 
|  
 | 
| 
 |