[cfe-commits] r44553 - in /cfe/trunk: Driver/RewriteTest.cpp test/Sema/undef-field-reference-1.m
Ted Kremenek
kremenek at apple.com
Mon Dec 3 15:09:19 PST 2007
That fixed it. Thanks!
I'm a little concerned though. Clang shouldn't be crashing on any
input. Doesn't fixing what the rewriter outputs only stop the problem
from manifesting?
On Dec 3, 2007, at 3:06 PM, Fariborz Jahanian wrote:
> 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