[cfe-commits] r91335 - in /cfe/trunk: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/nested-rethrow.m

Daniel Dunbar daniel at zuster.org
Tue Dec 15 10:53:33 PST 2009


On Tue, Dec 15, 2009 at 8:45 AM, Fariborz Jahanian <fjahanian at apple.com> wrote:
>
> On Dec 14, 2009, at 6:29 PM, Daniel Dunbar wrote:
>
>> Hi Fariborz,
>>
>> Should this test go into the LLVM test-suite?
>
> There is an executable version of this test case attached to the radar. But
> it depends on the Foundation.
> Can it go into LLVM test suite? If not, I don't see added benefit of moving
> this test there too?

Yes, we already have Objective-C tests in the LLVM test suite. The
benefit of moving them there is that it will be executed, and the
results compared to a reference build (gcc).

 - Daniel

> - Fariborz
>
>>
>>
>> - Daniel
>>
>> On Mon, Dec 14, 2009 at 1:35 PM, Fariborz Jahanian <fjahanian at apple.com>
>> wrote:
>>>
>>> Author: fjahanian
>>> Date: Mon Dec 14 15:35:01 2009
>>> New Revision: 91335
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=91335&view=rev
>>> Log:
>>> Patch to fix 32-bit @try failure with internal assertion when compiling
>>> an Objective-C rethrow nested inside another try/catch block. (fixes
>>> radar 7466728).
>>>
>>>
>>> Added:
>>>   cfe/trunk/test/CodeGenObjC/nested-rethrow.m
>>> 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=91335&r1=91334&r2=91335&view=diff
>>>
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
>>> +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Dec 14 15:35:01 2009
>>> @@ -2541,8 +2541,11 @@
>>>  // through finally.
>>>  CGF.PushCleanupBlock(FinallyBlock);
>>>
>>> -  CGF.ObjCEHValueStack.push_back(0);
>>> -
>>> +  if (CGF.ObjCEHValueStack.empty())
>>> +    CGF.ObjCEHValueStack.push_back(0);
>>> +  // If This is a nested @try, caught exception is that of enclosing
>>> @try.
>>> +  else
>>> +    CGF.ObjCEHValueStack.push_back(CGF.ObjCEHValueStack.back());
>>>  // Allocate memory for the exception data and rethrow pointer.
>>>  llvm::Value *ExceptionData =
>>> CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy,
>>>                                                    "exceptiondata.ptr");
>>>
>>> Added: cfe/trunk/test/CodeGenObjC/nested-rethrow.m
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/nested-rethrow.m?rev=91335&view=auto
>>>
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGenObjC/nested-rethrow.m (added)
>>> +++ cfe/trunk/test/CodeGenObjC/nested-rethrow.m Mon Dec 14 15:35:01 2009
>>> @@ -0,0 +1,24 @@
>>> +// RUN: clang -cc1 -triple i386-apple-darwin9 -emit-llvm %s -o - |
>>> FileCheck %s
>>> +
>>> +#include <stdio.h>
>>> +
>>> +int main()
>>> +{
>>> +    @try {
>>> +        @throw @"foo";
>>> +    } @catch (id e) {
>>> +        @try {
>>> +// CHECK: call void @objc_exception_throw
>>> +           @throw;
>>> +        } @catch (id e) {
>>> +            if (e) {
>>> +                printf("caught \n");
>>> +            } else {
>>> +                printf("caught (WRONG)\n");
>>> +            }
>>> +        } @catch (...) {
>>> +            printf("caught nothing (WRONG)\n");
>>> +        }
>>> +    }
>>> +}
>>> +
>>>
>>>
>>> _______________________________________________
>>> 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