[cfe-commits] r107303 - in /cfe/trunk: lib/CodeGen/Mangle.cpp test/CodeGenObjCXX/method-local-extern-mangle.mm

Fariborz Jahanian fjahanian at apple.com
Wed Jun 30 11:58:28 PDT 2010


On Jun 30, 2010, at 11:46 AM, Douglas Gregor wrote:

>
> On Jun 30, 2010, at 11:27 AM, Fariborz Jahanian wrote:
>
>> Author: fjahanian
>> Date: Wed Jun 30 13:27:47 2010
>> New Revision: 107303
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=107303&view=rev
>> Log:
>> extern variable declared locally to objective-c++ method
>> should not be mangled either. Fixes radar 8016412.
>>
>>
>> Added:
>>   cfe/trunk/test/CodeGenObjCXX/method-local-extern-mangle.mm
>> Modified:
>>   cfe/trunk/lib/CodeGen/Mangle.cpp
>>
>> Modified: cfe/trunk/lib/CodeGen/Mangle.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/Mangle.cpp?rev=107303&r1=107302&r2=107303&view=diff
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- cfe/trunk/lib/CodeGen/Mangle.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/Mangle.cpp Wed Jun 30 13:27:47 2010
>> @@ -294,7 +294,7 @@
>>  if (!FD) {
>>    const DeclContext *DC = D->getDeclContext();
>>    // Check for extern variable declared locally.
>> -    if (isa<FunctionDecl>(DC) && D->hasLinkage())
>> +    if ((isa<FunctionDecl>(DC) || isa<ObjCMethodDecl>(DC) ) && D- 
>> >hasLinkage())
>>      while (!DC->isNamespace() && !DC->isTranslationUnit())
>>        DC = DC->getParent();
>>    if (DC->isTranslationUnit() && D->getLinkage() != InternalLinkage)
>
> You should use DC->isFunctionOrMethod() here, which would also  
> handle extern variables declared locally within a block.

Thanks for pointing this out. Fixes a future bug too. In r107309.

- fariborz

>
>
> 	- Doug
>




More information about the cfe-commits mailing list