[cfe-commits] r168410 - /cfe/trunk/lib/AST/Decl.cpp

Enea Zaffanella zaffanella at cs.unipr.it
Sun Dec 16 02:15:23 PST 2012


On 12/15/2012 04:24 PM, Rafael Espíndola wrote:
>> static int y;
>> void foo(void) {
>>    extern int y;
>> }
>>
>> the second declaration of `y' is now getting external linkage, while it
>> should be internal linkage (tested on r170126).
>
> BTW, how are you testing this? I tried
>
> template<int &x>
> void zed() {
> }
> static int y;
> void foo(void) {
>    extern int y;
>    zed<y>();
> }
>
> But I get an internal _Z3zedILZL1yEEvv.

We got a regression in one of our tests for the C code I reported above.
We have lots of AST visitors (checking for compliance wrt many different 
coding standards guidelines): one of those was calling method
   NamedDecl::getLinkage()
and getting a result different wrt the expected one.

As for your C++ testcase ... I can not tell without studying clang 
source code. As a wild guess, could it be the case that clang has 
significantly different code for the C++ case?

Enea.




More information about the cfe-commits mailing list