[cfe-commits] r148158 - in /cfe/trunk: lib/Sema/SemaDecl.cpp lib/Sema/SemaExpr.cpp lib/Serialization/ASTWriterDecl.cpp test/SemaCXX/linkage.cpp

Eli Friedman eli.friedman at gmail.com
Sat Jan 14 16:29:20 PST 2012


On Sat, Jan 14, 2012 at 4:14 PM, Chandler Carruth <chandlerc at google.com> wrote:
> On Fri, Jan 13, 2012 at 9:16 PM, Eli Friedman <eli.friedman at gmail.com>
> wrote:
>>
>> On Fri, Jan 13, 2012 at 7:22 PM, Matt Beaumont-Gay <matthewbg at google.com>
>> wrote:
>> > Hi Eli,
>> >
>> > On Fri, Jan 13, 2012 at 15:41, Eli Friedman <eli.friedman at gmail.com>
>> > wrote:
>> >> Modified: cfe/trunk/test/SemaCXX/linkage.cpp
>> >> URL:
>> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/linkage.cpp?rev=148158&r1=148157&r2=148158&view=diff
>> >>
>> >> ==============================================================================
>> >> --- cfe/trunk/test/SemaCXX/linkage.cpp (original)
>> >> +++ cfe/trunk/test/SemaCXX/linkage.cpp Fri Jan 13 17:41:25 2012
>> >> @@ -76,13 +76,15 @@
>> >>     struct X {
>> >>       int f() {
>> >>         extern int g();
>> >> -        extern int a;
>> >> +        // FIXME: We don't compute the correct linkage for this
>> >> variable
>> >> +        // at the moment
>> >> +        // extern int a;
>> >
>> > Are you planning on addressing this FIXME soon? We have some code
>> > which looks roughly like this, and now Clang is producing a warning
>> > "variable 'a' has internal linkage but is not defined".
>>
>> Per the C++11 rules, this variable clearly has internal linkage, but
>> the C++98 rules aren't very clear, and I'm not sure what the
>> gcc-compatible rules are.  If you can point me to some description, I
>> can implement it.
>
>
> I'm not sure what C++11 rules you're referring to (I just haven't read that
> part of the standard), but these definitely don't actually have internal
> linkage... Both Clang and GCC give them external linkage and C mangling.
> This is true even in C++11 mode, both with GCC and Clang in my tests... So
> this warning looks like a false positive.

Oh, wait, nevermind, I was misreading the standard.  It's just that
our code for this stuff appears a bit circular because our
linkage-computation code distinguishes between UniqueExternal and
External, while the standard doesn't.

-Eli




More information about the cfe-commits mailing list