re PR objc/31281 (ICE on ObjC try-catch blocks with next runtime)
PR 31281 * objc/objc-act.c (next_sjlj_build_catch_list): Delete volatile from rethrow decl. * testsuite/objc/execute/exceptions/pr31281.m: New. From-SVN: r123501
This commit is contained in:
parent
59af43910d
commit
dd1af55f6a
@ -1,3 +1,8 @@
|
||||
2007-04-04 Stuart Hastings <stuart@apple.com>
|
||||
|
||||
PR 31281
|
||||
* objc/objc-act.c (next_sjlj_build_catch_list): Delete volatile from rethrow decl.
|
||||
|
||||
2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
|
||||
|
||||
* Make-lang.in: Add dummy lang.install-pdf target.
|
||||
|
@ -3642,7 +3642,7 @@ next_sjlj_build_catch_list (void)
|
||||
|
||||
{
|
||||
struct _objc_exception_data _stack;
|
||||
id volatile _rethrow = 0;
|
||||
id _rethrow = 0;
|
||||
try
|
||||
{
|
||||
objc_exception_try_enter (&_stack);
|
||||
@ -3686,7 +3686,6 @@ next_sjlj_build_try_catch_finally (void)
|
||||
|
||||
rethrow_decl = objc_create_temporary_var (objc_object_type);
|
||||
cur_try_context->rethrow_decl = rethrow_decl;
|
||||
TREE_THIS_VOLATILE (rethrow_decl) = 1;
|
||||
TREE_CHAIN (rethrow_decl) = stack_decl;
|
||||
|
||||
/* Build the outermost variable binding level. */
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-04-04 Stuart Hastings <stuart@apple.com>
|
||||
|
||||
PR 31281
|
||||
* testsuite/objc/execute/exceptions/pr31281.m: New.
|
||||
|
||||
2007-04-04 Danny Smith <dannysmith.users.sourceforge.net>
|
||||
|
||||
* g++.dg/ext/dllimport12.C: Update comments.
|
||||
|
27
gcc/testsuite/objc/execute/exceptions/pr31281.m
Normal file
27
gcc/testsuite/objc/execute/exceptions/pr31281.m
Normal file
@ -0,0 +1,27 @@
|
||||
/* From PR31281. */
|
||||
extern void abort (void);
|
||||
int __attribute__((noinline))
|
||||
f(unsigned int i)
|
||||
{
|
||||
int j, k;
|
||||
@try { } @catch(id) { return 13; }
|
||||
for (j=0; j<i; j++)
|
||||
for (k=0; k<i; k++)
|
||||
{
|
||||
@try {
|
||||
if (i)
|
||||
break;
|
||||
} @catch(id) { }
|
||||
return 9;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
if (f(1))
|
||||
abort ();
|
||||
return 0 ;
|
||||
}
|
Loading…
Reference in New Issue
Block a user