[cfe-commits] r44553 - in /cfe/trunk: Driver/RewriteTest.cpp test/Sema/undef-field-reference-1.m

Fariborz Jahanian fjahanian at apple.com
Mon Dec 3 15:06:02 PST 2007


If you do not find <Objc/objc.h> you will get the ICE (case  
sensitivity issue). See if patch I just checked in fixed the problem.

- Fariborz


- Fariborz

On Dec 3, 2007, at 2:59 PM, Ted Kremenek wrote:

> Hi Fariborz,
>
> This test case fails for me.  It has something to do with the piping  
> of the results to clang:
>
> (kremenek at grue:Sema)$ clang -rewrite-test undef-field-reference-1.m  
> | clang
> 0   clang                               0x001fef25  
> _ZN40_GLOBAL__N_Signals.cpp_00000000_4191753915PrintStackTraceEv + 45
> 1   clang                               0x001ff2cb  
> _ZN40_GLOBAL__N_Signals.cpp_00000000_4191753913SignalHandlerEi + 323
> 2   libSystem.B.dylib                   0x9322297b _sigtramp + 43
> 3   ???                                 0xffffffff 0x0 + 4294967295
> 4   clang                               0x000ea4ce  
> _ZN5clang12HeaderSearch24LookupSubframeworkHeaderEPKcS2_PKNS_9FileEntryE 
>  + 84
> 5   clang                               0x000fe9fc  
> _ZN5clang12Preprocessor10LookupFileEPKcS2_bPKNS_15DirectoryLookupERS5_ 
>  + 258
> 6   clang                               0x00102752  
> _ZN5clang12Preprocessor22HandleIncludeDirectiveERNS_5TokenEPKNS_15DirectoryLookupEb 
>  + 600
> 7   clang                               0x00103920  
> _ZN5clang12Preprocessor15HandleDirectiveERNS_5TokenE + 572
> 8   clang                               0x000f00d0  
> _ZN5clang5Lexer16LexTokenInternalERNS_5TokenE + 6148
> 9   clang                               0x00006e78  
> _ZN5clang5Lexer3LexERNS_5TokenE + 72
> 10  clang                               0x00006f09  
> _ZN5clang12Preprocessor3LexERNS_5TokenE + 37
> 11  clang                               0x000e8d9b  
> _ZN5clang6Parser12ConsumeTokenEv + 173
> 12  clang                               0x000d6a6d  
> _ZN5clang6Parser43ParseInitDeclaratorListAfterFirstDeclaratorERNS_10DeclaratorE 
>  + 449
> 13  clang                               0x000e84ed  
> _ZN5clang6Parser36ParseDeclarationOrFunctionDefinitionEv + 945
> 14  clang                               0x000e856f  
> _ZN5clang6Parser24ParseExternalDeclarationEv + 83
> 15  clang                               0x000e874b  
> _ZN5clang6Parser17ParseTopLevelDeclERPv + 61
> 16  clang                               0x00068214  
> _ZN37_GLOBAL__N__ZN5clang11ASTConsumerD2Ev11ASTStreamer16ReadTopLevelDeclEv 
>  + 24
> 17  clang                               0x00068366  
> _ZN5clang8ParseASTERNS_12PreprocessorEjPNS_11ASTConsumerEb + 272
> 18  clang                               0x00024910  
> _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE + 1872
> 19  clang                               0x00026a76 main + 1036
> 20  clang                               0x00001a22 start + 54
>
>
> but this "works":
>
> (kremenek at grue:Sema)$ clang -rewrite-test undef-field-reference-1.m  
> > t.m
> (kremenek at grue:Sema)$ clang t.m
> t.m:13:10: error: 'Objc/objc.h' file not found
> #include <Objc/objc.h>
>         ^
> 1 diagnostic generated.
> (kremenek at grue:Sema)$ cat t.m
> struct objc_selector; struct objc_class; struct objc_super;
> extern struct objc_object *objc_msgSend(struct objc_object *, struct  
> objc_selector *, ...);
> extern struct objc_object *objc_msgSendSuper(struct objc_super *,  
> struct objc_selector *, ...);
> extern struct objc_object *objc_msgSend_stret(struct objc_object *,  
> struct objc_selector *, ...);
> extern struct objc_object *objc_msgSendSuper_stret(struct objc_super  
> *, struct objc_selector *, ...);
> extern struct objc_object *objc_msgSend_fpret(struct objc_object *,  
> struct objc_selector *, ...);
> extern struct objc_object *objc_getClass(const char *);
> extern void objc_exception_throw(struct objc_object *);
> extern void objc_exception_try_enter(void *);
> extern void objc_exception_try_exit(void *);
> extern struct objc_object *objc_exception_extract(void *);
> extern int objc_exception_match(struct objc_class *, struct  
> objc_object *, ...);
> #include <Objc/objc.h>
> // RUN: clang -rewrite-test %s | clang
>
> #include <objc/objc.h>
>
> #ifndef _REWRITER_typedef_MyDerived
> #define _REWRITER_typedef_MyDerived
> typedef struct MyDerived MyDerived;
> #endif
>
> struct MyDerived
> {
> // @public
> 	int IVAR;
> };
> // @end
>
> MyDerived *pd;
> int main() {
> 	return pd->IVAR;
> }
>
> The crashing on the pipe is weird (causing the test case to fail).   
> The "#include <Objc/objc.h>" is causing clang to report problems  
> because I am on a case-sensitive filesystem.
>
> I haven't diagnosed the source of the crash yet (for the first  
> case).  I just noticed it.  I'm running Leopard on x86.
>
> On Dec 3, 2007, at 2:25 PM, Fariborz Jahanian wrote:
>
>> Author: fjahanian
>> Date: Mon Dec  3 16:25:42 2007
>> New Revision: 44553
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=44553&view=rev
>> Log:
>> Fixed a bug exposed by referencing an ivar field using component  
>> reference syntax.
>>
>> Added:
>>   cfe/trunk/test/Sema/undef-field-reference-1.m
>> Modified:
>>   cfe/trunk/Driver/RewriteTest.cpp
>>
>> Modified: cfe/trunk/Driver/RewriteTest.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/RewriteTest.cpp?rev=44553&r1=44552&r2=44553&view=diff
>>
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- cfe/trunk/Driver/RewriteTest.cpp (original)
>> +++ cfe/trunk/Driver/RewriteTest.cpp Mon Dec  3 16:25:42 2007
>> @@ -593,7 +593,9 @@
>>    ResultStr += "#define _REWRITER_typedef_";
>>    ResultStr += ClassDecl->getName();
>>    ResultStr += "\n";
>> -    ResultStr += "typedef struct objc_object ";
>> +    ResultStr += "typedef struct ";
>> +    ResultStr += ClassDecl->getName();
>> +    ResultStr += " ";
>>    ResultStr += ClassDecl->getName();
>>    ResultStr += ";\n#endif\n";
>>
>>
>> Added: cfe/trunk/test/Sema/undef-field-reference-1.m
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/undef-field-reference-1.m?rev=44553&view=auto
>>
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- cfe/trunk/test/Sema/undef-field-reference-1.m (added)
>> +++ cfe/trunk/test/Sema/undef-field-reference-1.m Mon Dec  3  
>> 16:25:42 2007
>> @@ -0,0 +1,17 @@
>> +// RUN: clang -rewrite-test %s | clang
>> +
>> +#include <objc/objc.h>
>> +
>> + at interface MyDerived
>> +{
>> + at public
>> +	int IVAR;
>> +}
>> + at end
>> +
>> +MyDerived *pd;
>> +int main() {
>> +	return pd->IVAR;
>> +}
>> +
>> +
>>
>>
>> _______________________________________________
>> 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