]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorJason Merrill <jason@gcc.gnu.org>
Tue, 11 Nov 1997 02:32:50 +0000 (21:32 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 11 Nov 1997 02:32:50 +0000 (21:32 -0500)
Sun Oct 19 09:07:38 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

* stmt.c (using_eh_for_cleanups_p): New variable.
(using_eh_for_cleanups): New function.
(expand_decl_cleanup): Don't call expand_eh_region_start_tree
unless using EH for cleanups.

Sun Oct 26 01:28:29 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

* decl.c (init_decl_processing): Call using_eh_for_cleanups.

From-SVN: r16424

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/stmt.c

index bd367f465b526488f516e2fe48c2698e93150bb5..6cd456713127beeb347c29f41dc6bfe314cc97f0 100644 (file)
@@ -1,3 +1,16 @@
+Mon Nov 10 03:02:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * stmt.c (expand_decl_cleanup_no_eh): New fn.
+
+       * except.c (expand_leftover_cleanups): do_pending_stack_adjust.
+
+       Sun Oct 19 09:07:38 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * stmt.c (using_eh_for_cleanups_p): New variable.
+       (using_eh_for_cleanups): New function.
+       (expand_decl_cleanup): Don't call expand_eh_region_start_tree
+       unless using EH for cleanups.
+
 Mon Nov 10 00:05:56 1997  Jeffrey A Law  (law@cygnus.com)
 
        * alias.c (MAX_ALIAS_LOOP_PASSES): Define.
index 577bd4ee38e6609e2fb15c76f4752c194e2b48d1..d138ed2dbfbd06bc38e5d2c3b6970f23ab7c98e6 100644 (file)
@@ -82,6 +82,10 @@ Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
        when we rethrow.
        (expand_builtin_throw): Don't refer to empty_fndecl.
 
+Sun Oct 26 01:28:29 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * decl.c (init_decl_processing): Call using_eh_for_cleanups.
+
 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
 
        * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
index 54e79dd3d52c3d14bb8fcb6eb019e7c5e6e32e05..667f1859b3843f60362d019afa9bea4e500b0463 100644 (file)
@@ -5575,6 +5575,9 @@ init_decl_processing ()
 
   /* Prepare to check format strings against argument lists.  */
   init_function_format_info ();
+
+  /* Show we use EH for cleanups.  */
+  using_eh_for_cleanups ();
 }
 
 /* initialize type descriptor type node of various rtti type.  */
index 9416ecb74d49b76f299b5c858458e70b17b911e5..4cae1ce3bf3ee572450e312e88cd92cd71c7014d 100644 (file)
@@ -445,6 +445,12 @@ struct label_chain
   struct label_chain *next;
   tree label;
 };
+
+
+/* Non-zero if we are using EH to handle cleanus.  */
+static int using_eh_for_cleanups_p = 0;
+
+
 static void expand_goto_internal       PROTO((tree, rtx, rtx));
 static void bc_expand_goto_internal    PROTO((enum bytecode_opcode,
                                               struct bc_label *, tree));
@@ -488,6 +494,12 @@ static struct case_node *case_tree2list    PROTO((case_node *, case_node *));
 extern rtx bc_allocate_local ();
 extern rtx bc_allocate_variable_array ();
 \f
+void
+using_eh_for_cleanups ()
+{
+  using_eh_for_cleanups_p = 1;
+}
+
 void
 init_stmt ()
 {
@@ -3972,7 +3984,8 @@ expand_decl_cleanup (decl, cleanup)
       /* If this was optimized so that there is no exception region for the
         cleanup, then mark the TREE_LIST node, so that we can later tell
         if we need to call expand_eh_region_end.  */
-      if (expand_eh_region_start_tree (decl, cleanup))
+      if (! using_eh_for_cleanups_p
+         || expand_eh_region_start_tree (decl, cleanup))
        TREE_ADDRESSABLE (t) = 1;
 
       if (cond_context)