[C, C++] Implement -Wstatic-local

Gabriel Dos Reis gdr@integrable-solutions.net
Wed Jul 24 02:36:00 GMT 2013


On Tue, Jul 23, 2013 at 3:02 PM, Florian Weimer <fweimer@redhat.com> wrote:
> On 07/23/2013 09:51 PM, Andrew Pinski wrote:
>>
>> On Tue, Jul 23, 2013 at 12:48 PM, Florian Weimer <fweimer@redhat.com>
>> wrote:
>>>
>>> We sometimes deal with code bases which use static local variables to cut
>>> down frame size, for compatibility with legacy targets.  Obviously, this
>>> is
>>> bad for thread safety.  This new warning can be used to track down such
>>> cases once you suspect they exist.
>>
>>
>> Hmm, since you mentioned bad for thread safety but then I see in your
>> patch you don't check to see if the variable is a thread local
>> variable.  Maybe you should not mention thread safety at all here or
>> change the code not to include TLS variables.
>
>
> Good point.  What about this instead?
>
> Warn for variables declared inside functions which are static, but not
> declared const.  Such local variables can make functions not reentrant.

Do you envision this to be useful for C++ too?

There are many bits here.  'const' in C++ does not necessary prevent
race conditions with the variable's type has to run non-atomic constructors,
or if the object has data members declared mutable, etc.

It used to be idiomatic in C++ to use local statics in order to enforce
initialization of "morally global" objects -- the function returns a pointer
or reference to the object.

I think the C++ ABI mandates that the implementation adds implicit locks
to enforce orderly initialization

-- Gaby



More information about the Gcc-patches mailing list