r195419 - Make ASTUnit structure stable with NDEBUG

Alp Toker alp at nuanti.com
Fri Nov 22 10:21:15 PST 2013


On 22/11/2013 17:48, David Blaikie wrote:
>
>
>
> On Thu, Nov 21, 2013 at 11:49 PM, Alp Toker <alp at nuanti.com 
> <mailto:alp at nuanti.com>> wrote:
>
>     Author: alp
>     Date: Fri Nov 22 01:49:39 2013
>     New Revision: 195419
>
>     URL: http://llvm.org/viewvc/llvm-project?rev=195419&view=rev
>     Log:
>     Make ASTUnit structure stable with NDEBUG
>
>
> I don't believe this is a goal. Is it?

It is:

[cfe-dev] Goal for 3.5: Library-friendly headers
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-November/033345.html


>     ASTUnit instances are allocated infrequently so it's fine to keep
>     this field
>     around in all build configurations.
>
>     Assigns null to silence -Wunused-private-field in Release.
>
>
> That seems like a strange way to silence the warning, can you use an 
> unused or used attribute instead, perhaps?

The unused attribute is less portable and, because it has to be applied 
directly to the declaration, would end up suppressing warnings in all 
build configurations -- not what we want.

Initializing to null silences the warning locally and avoids 
uninitialized values showing up in the debugger.

If this were a hot path like an iterator class there might be a case for 
silencing the warning with cast-to-void instead of assignment, but here 
we're looking at something like once per translation unit. I'd stick 
with this for the readability win alone.

Alp.



>
>     Modified:
>         cfe/trunk/include/clang/Frontend/ASTUnit.h
>         cfe/trunk/lib/Frontend/ASTUnit.cpp
>
>     Modified: cfe/trunk/include/clang/Frontend/ASTUnit.h
>     URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTUnit.h?rev=195419&r1=195418&r2=195419&view=diff
>     ==============================================================================
>     --- cfe/trunk/include/clang/Frontend/ASTUnit.h (original)
>     +++ cfe/trunk/include/clang/Frontend/ASTUnit.h Fri Nov 22 01:49:39
>     2013
>     @@ -406,9 +406,7 @@ private:
>        /// just about any usage.
>        /// Becomes a noop in release mode; only useful for debug mode
>     checking.
>        class ConcurrencyState {
>     -#ifndef NDEBUG
>          void *Mutex; // a llvm::sys::MutexImpl in debug;
>     -#endif
>
>        public:
>          ConcurrencyState();
>
>     Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp
>     URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=195419&r1=195418&r2=195419&view=diff
>     ==============================================================================
>     --- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)
>     +++ cfe/trunk/lib/Frontend/ASTUnit.cpp Fri Nov 22 01:49:39 2013
>     @@ -2953,7 +2953,7 @@ void ASTUnit::ConcurrencyState::finish()
>
>      #else // NDEBUG
>
>     -ASTUnit::ConcurrencyState::ConcurrencyState() {}
>     +ASTUnit::ConcurrencyState::ConcurrencyState() { Mutex = 0; }
>      ASTUnit::ConcurrencyState::~ConcurrencyState() {}
>      void ASTUnit::ConcurrencyState::start() {}
>      void ASTUnit::ConcurrencyState::finish() {}
>
>
>     _______________________________________________
>     cfe-commits mailing list
>     cfe-commits at cs.uiuc.edu <mailto:cfe-commits at cs.uiuc.edu>
>     http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>

-- 
http://www.nuanti.com
the browser experts




More information about the cfe-commits mailing list