[cfe-dev] Two GNU runtime fixes

Fariborz Jahanian fjahanian at apple.com
Sun May 17 09:50:45 PDT 2009


Patch is applied.

http://llvm.org/viewvc/llvm-project?view=rev&revision=71980

- Fariborz

On May 17, 2009, at 4:24 AM, David Chisnall wrote:

> Thanks Daniel,
>
> This regression was caused by the fact that I added references to  
> property set/get methods without checking whether they were actually  
> implemented.  I've updated the diff so that it now tests this.
>
> I've also addressed the FIXME in this test; the GNU back end can now  
> handle all of the syntax in the included file, so the -D line is not  
> required.
>
> With the attached version of the diff, all relevant tests now pass  
> for me.
>
> David
> <clang.diff>
>
> On 16 May 2009, at 20:31, Daniel Dunbar wrote:
>
>> Hi David,
>>
>> codegen-gnu.m seems to be failing for me now with this applied
>> (whereas it was silently passing, but crashing, before):
>> --
>> ddunbar at 67-218-102-166:Coverage$ ../TestRunner.sh codegen-gnu.m
>> ******************** TEST 'codegen-gnu.m' FAILED!  
>> ********************
>> Command:
>> /Users/ddunbar/bin/clang-cc -triple i386-unknown-unknown
>> -DIRGENABLE_GNU -DIRGENABLE -fgnu-runtime -emit-llvm -o
>> Output/codegen-gnu.m.out.tmp codegen-gnu.m &&
>> /Users/ddunbar/bin/clang-cc -triple i386-unknown-unknown
>> -DIRGENABLE_GNU -DIRGENABLE -g -fgnu-runtime -emit-llvm -o
>> Output/codegen-gnu.m.out.tmp codegen-gnu.m &&
>> not /Users/ddunbar/bin/clang-cc -triple i386-unknown-unknown
>> -fgnu-runtime -emit-llvm -o Output/codegen-gnu.m.out.tmp codegen- 
>> gnu.m
>> Incorrect Output:
>> In file included from codegen-gnu.m:7:
>> ./objc-language-features.inc:30:3: warning: method '+fm0' not found
>> (return type defaults to 'id')
>> [super fm0];
>> ^~~~~~~~~~~
>> ./objc-language-features.inc:36:3: warning: method '-im0' not found
>> (return type defaults to 'id')
>> [super im0];
>> ^~~~~~~~~~~
>> ./objc-language-features.inc:21:20: warning: property 'p2' requires
>> method 'p2' to be defined - use @synthesize, @dynamic or provide a
>> method implementation
>> @property(copy) id p2;
>>                  ^
>> ./objc-language-features.inc:26:1: note: implementation is here
>> @implementation A
>> ^
>> ./objc-language-features.inc:21:20: warning: property 'p2' requires
>> method 'setP2:' to be defined - use @synthesize, @dynamic or  
>> provide a
>> method implementation
>> @property(copy) id p2;
>>                  ^
>> ./objc-language-features.inc:26:1: note: implementation is here
>> @implementation A
>> ^
>> ./objc-language-features.inc:22:22: warning: property 'p3' requires
>> method 'p3' to be defined - use @synthesize, @dynamic or provide a
>> method implementation
>> @property(retain) id p3;
>>                    ^
>> ./objc-language-features.inc:26:1: note: implementation is here
>> @implementation A
>> ^
>> ./objc-language-features.inc:22:22: warning: property 'p3' requires
>> method 'setP3:' to be defined - use @synthesize, @dynamic or  
>> provide a
>> method implementation
>> @property(retain) id p3;
>>                    ^
>> ./objc-language-features.inc:26:1: note: implementation is here
>> @implementation A
>> ^
>> ./objc-language-features.inc:23:51: warning: property 'p4' requires
>> method 'getme' to be defined - use @synthesize, @dynamic or provide a
>> method implementation
>> @property(assign, getter=getme, setter=setme:) id p4;
>>                                                 ^
>> ./objc-language-features.inc:26:1: note: implementation is here
>> @implementation A
>> ^
>> ./objc-language-features.inc:23:51: warning: property 'p4' requires
>> method 'setme:' to be defined - use @synthesize, @dynamic or  
>> provide a
>> method implementation
>> @property(assign, getter=getme, setter=setme:) id p4;
>>                                                 ^
>> ./objc-language-features.inc:26:1: note: implementation is here
>> @implementation A
>> ^
>> ./objc-language-features.inc:26:1: warning: incomplete implementation
>> @implementation A
>> ^
>> ./objc-language-features.inc:26:1: warning: method definition for
>> 'fm0' not found
>> 0   clang-cc          0x0000000100b6480a PrintStackTrace(void*) + 38
>> 1   clang-cc          0x0000000100b64d1a SignalHandler(int) + 288
>> 2   libSystem.B.dylib 0x00007fff886bb58a _sigtramp + 26
>> 3   clang-cc          0x000000010064f993 std::vector<llvm::Constant*,
>> std::allocator<llvm::Constant*> >::~vector() + 75
>> 4   clang-cc          0x0000000100690071 llvm::PATypeHolder::operator
>> llvm::Type*() const + 21
>> 5   clang-cc          0x000000010069008d llvm::Value::getType()  
>> const + 25
>> 6   clang-cc          0x0000000100a90c08
>> llvm::ConstantExpr::getBitCast(llvm::Constant*, llvm::Type const*) +
>> 26
>> 7   clang-cc          0x00000001000c4bc1 (anonymous
>> namespace)::CGObjCGNU::GenerateMethodList(std::string const&,
>> std::string const&, llvm::SmallVectorImpl<clang::Selector> const&,
>> llvm::SmallVectorImpl<llvm::Constant*> const&, bool) + 647
>> 8   clang-cc          0x00000001000c942e (anonymous
>> namespace)::CGObjCGNU::GenerateClass(clang::ObjCImplementationDecl
>> const*) + 2170
>> 9   clang-cc          0x00000001000fb40c
>> clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 674
>> 10  clang-cc          0x000000010010ca64 (anonymous
>> namespace 
>> )::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef)
>> + 76
>> 11  clang-cc          0x0000000100036125 (anonymous
>> namespace 
>> )::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) +
>> 139
>> 12  clang-cc          0x00000001001cc3ac
>> clang::ParseAST(clang::Preprocessor&, clang::ASTConsumer*,
>> clang::ASTContext&, bool, bool) + 478
>> 13  clang-cc          0x0000000100076f53
>> ProcessInputFile(clang::Preprocessor&, clang::PreprocessorFactory&,
>> std::string const&, ProgActions, llvm::StringMap<bool,
>> llvm::MallocAllocator> const&) + 2414
>> 14  clang-cc          0x0000000100078417 main + 2237
>> 15  clang-cc          0x0000000100027dbc start + 52
>> 16  clang-cc          0x000000000000000a start + 4294804098
>> Stack dump:
>> 0.	Program arguments: /Users/ddunbar/bin/clang-cc -triple
>> i386-unknown-unknown -DIRGENABLE_GNU -DIRGENABLE -fgnu-runtime
>> -emit-llvm -o Output/codegen-gnu.m.out.tmp codegen-gnu.m
>> 1.	./objc-language-features.inc:43:1: current parser token '@'
>> 2.	./objc-language-features.inc:26:1: LLVM IR generation of  
>> declaration 'A'
>> Output/codegen-gnu.m.out.script: line 3: 67587 Segmentation fault
>> /Users/ddunbar/bin/clang-cc -triple i386-unknown-unknown
>> -DIRGENABLE_GNU -DIRGENABLE -fgnu-runtime -emit-llvm -o
>> Output/codegen-gnu.m.out.tmp codegen-gnu.m
>> ******************** TEST 'codegen-gnu.m' FAILED!  
>> ********************
>> --
>>
>> - Daniel
>>
>> On Sat, May 16, 2009 at 9:20 AM, David Chisnall <csdavec at swansea.ac.uk 
>> > wrote:
>>> Hi,
>>>
>>> This patch fixes two bugs in the GNU Objective-C runtime  
>>> implementation.
>>> One is a case in rethrowing exceptions where the C types don't match
>>> correctly (I already sent this patch to Daniel Dunbar, who found  
>>> the bug, so
>>> it may have already been committed).  The other fixes the case  
>>> properties so
>>> that the methods generated as property accessors are added to the  
>>> class
>>> structure correctly.
>>>
>>> David
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>
>>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list