On Jun 15, 2012, at 11:38 , Eli Friedman <[email protected]> wrote:

> On Fri, Jun 15, 2012 at 11:19 AM, Jordan Rose <[email protected]> wrote:
>> Author: jrose
>> Date: Fri Jun 15 13:19:48 2012
>> New Revision: 158531
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=158531&view=rev
>> Log:
>> Warn when a static variable is referenced in a non-static inline function.
>> 
>> This is explicitly forbidden in C99 6.7.4p3. This is /not/ forbidden in C++,
>> probably because by default file-scope const/constexpr variables have 
>> internal
>> linkage, while functions have external linkage. There's also the issue of
>> anonymous namespaces to consider. Nevertheless, there should probably be a
>> similar warning, since the semantics of inlining a function that references
>> a variable with internal linkage do not seem well-defined.
> 
> The equivalent language in C++ is [basic.def.odr]p5.  It's a bit
> tricky to diagnose, though.
> 
> -Eli

Okay, it looks like it's basically the same restriction with an out for most 
const/constexpr variables. And since anonymous namespaces affect lookup, they 
work the same way as true internal linkage.

I'll go back and add this later. Thanks, Eli.

Jordan

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to