diff options
-rw-r--r-- | gcc/objc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/exceptions/pr31281.m | 27 |
4 files changed, 38 insertions, 2 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 76c3428..eb2061a 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -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. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 0cbd759..19475e2 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -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. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4a5ce3b..7ab79cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/objc/execute/exceptions/pr31281.m b/gcc/testsuite/objc/execute/exceptions/pr31281.m new file mode 100644 index 0000000..41e7a8e --- /dev/null +++ b/gcc/testsuite/objc/execute/exceptions/pr31281.m @@ -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 ; +} |