[cfe-commits] r106492 - /cfe/trunk/lib/CodeGen/CGObjCMac.cpp

Fariborz Jahanian fjahanian at apple.com
Mon Jun 21 16:26:54 PDT 2010


Hi Nico,

This test is failing on our BuildBot in ways which is not obvious to  
me. It is best to just use FileCheck and
check for generation of the extern symbol.

- Thanks, Fariborz

On Jun 21, 2010, at 3:25 PM, Fariborz Jahanian wrote:

> I got the latest patch. Just forgot to check in the test case. It is
> in now.
> One minor note. Generally, we should not leave any temp files behind.
> I already removed build of test.o. See if you can clean up the other
> two at the end  too.
>
> - fariborz
>
> On Jun 21, 2010, at 3:15 PM, Nico Weber wrote:
>
>> Hi Fariborz,
>>
>> I screwed up and uploaded a patch without the test case; looks like
>> you landed that. There's a newer patch on the bug that also  
>> contains a
>> test. Maybe you can land the test too.
>>
>> Sorry,
>> Nico
>>
>> On Mon, Jun 21, 2010 at 3:05 PM, Fariborz Jahanian <fjahanian at apple.com
>>> wrote:
>>> Author: fjahanian
>>> Date: Mon Jun 21 17:05:18 2010
>>> New Revision: 106492
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=106492&view=rev
>>> Log:
>>> In fragile-abi (32bit mode abi) generate global symbol
>>> objc_category_name_xxx for each category implementation.
>>> (fixes PR7431) patch by Nico Weber.
>>>
>>> Modified:
>>>   cfe/trunk/lib/CodeGen/CGObjCMac.cpp
>>>
>>> Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=106492&r1=106491&r2=106492&view=diff
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> = 
>>> ====================================================================
>>> --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
>>> +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Jun 21 17:05:18 2010
>>> @@ -852,6 +852,9 @@
>>>  /// MethodVarNames - uniqued method variable names.
>>>  llvm::DenseMap<Selector, llvm::GlobalVariable*> MethodVarNames;
>>>
>>> +  /// DefinedCategoryNames - list of category names in form
>>> Class_Category.
>>> +  llvm::SetVector<std::string> DefinedCategoryNames;
>>> +
>>>  /// MethodVarTypes - uniqued method type signatures. We have to use
>>>  /// a StringMap here because have no other unique reference.
>>>  llvm::StringMap<llvm::GlobalVariable*> MethodVarTypes;
>>> @@ -2068,6 +2071,7 @@
>>>                      "__OBJC,__category,regular,no_dead_strip",
>>>                      4, true);
>>>  DefinedCategories.push_back(GV);
>>> +  DefinedCategoryNames.insert(ExtName.str());
>>> }
>>>
>>> // FIXME: Get from somewhere?
>>> @@ -3650,8 +3654,14 @@
>>>      OS << "\t.objc_class_name_" << (*I)->getName() << "=0\n"
>>>         << "\t.globl .objc_class_name_" << (*I)->getName() << "\n";
>>>    for (llvm::SetVector<IdentifierInfo*>::iterator I =
>>> LazySymbols.begin(),
>>> -         e = LazySymbols.end(); I != e; ++I)
>>> +         e = LazySymbols.end(); I != e; ++I) {
>>>      OS << "\t.lazy_reference .objc_class_name_" << (*I)-
>>>> getName() << "\n";
>>> +    }
>>> +
>>> +    for (size_t i = 0; i < DefinedCategoryNames.size(); ++i) {
>>> +      OS << "\t.objc_category_name_" << DefinedCategoryNames[i] <<
>>> "=0\n"
>>> +         << "\t.globl .objc_category_name_" <<
>>> DefinedCategoryNames[i] << "\n";
>>> +    }
>>>
>>>    CGM.getModule().setModuleInlineAsm(OS.str());
>>>  }
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list