From: Jason Merrill Date: Fri, 19 Dec 1997 08:34:04 +0000 (+0000) Subject: except.c (expand_start_catch_block): suspend_momentary for the terminate handler. X-Git-Tag: prereleases/egcs-1.0.1-prerelease~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c768367f971298441fb45cc7378b2f8726c473e0;p=thirdparty%2Fgcc.git except.c (expand_start_catch_block): suspend_momentary for the terminate handler. * except.c (expand_start_catch_block): suspend_momentary for the terminate handler. Critical EH bugfix for egcs-1.0.1. From-SVN: r17147 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5275663fe153..a6c118c93cc3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +Fri Dec 19 09:37:26 1997 Jason Merrill + + * except.c (expand_start_catch_block): suspend_momentary for the + terminate handler. + Thu Nov 27 09:39:31 1997 Jason Merrill * except.c: Call terminate without caching so many bits. diff --git a/gcc/cp/except.c b/gcc/cp/except.c index bad75bd5e28a..65eaf8ae52d4 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -645,12 +645,15 @@ expand_start_catch_block (declspecs, declarator) must call terminate. See eh23.C. */ if (TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (decl))) { + int yes = suspend_momentary (); + tree term = build_function_call (Terminate, NULL_TREE); + resume_momentary (yes); + /* Generate the copy constructor call directly so we can wrap it. See also expand_default_init. */ init = ocp_convert (TREE_TYPE (decl), init, CONV_IMPLICIT|CONV_FORCE_TEMP, 0); - init = build (TRY_CATCH_EXPR, TREE_TYPE (init), init, - build_function_call (Terminate, NULL_TREE)); + init = build (TRY_CATCH_EXPR, TREE_TYPE (init), init, term); } /* Let `cp_finish_decl' know that this initializer is ok. */