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? - Fariborz > > > - Daniel > > On Mon, Dec 14, 2009 at 1:35 PM, Fariborz Jahanian <[email protected] > > 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 >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
