]> gcc.gnu.org Git - gcc.git/commitdiff
expr.c (expand_expr): Use GOTO_SUBROUTINE_EXPR form when not optimizing.
authorRichard Henderson <rth@redhat.com>
Wed, 24 Jul 2002 22:05:19 +0000 (15:05 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 24 Jul 2002 22:05:19 +0000 (15:05 -0700)
        * expr.c (expand_expr) [TRY_FINALLY_EXPR]: Use GOTO_SUBROUTINE_EXPR
        form when not optimizing.

From-SVN: r55723

gcc/ChangeLog
gcc/expr.c

index 590e422d80700428b38592e6c404957307937e51..d80a5f7173a02075195d49ed2c8c3e6a5c01b694 100644 (file)
@@ -1,3 +1,8 @@
+2002-07-24  Richard Henderson  <rth@redhat.com>
+
+       * expr.c (expand_expr) [TRY_FINALLY_EXPR]: Use GOTO_SUBROUTINE_EXPR
+       form when not optimizing.
+
 2002-07-24  David Mosberger  <davidm@hpl.hp.com>
 
        * config/ia64/ia64.c (gen_thread_pointer): Fix typo in marking
index e70bf905b205fb44983fd14b451722cce59e3b72..1b880c136164766c9306737ea75d8f1cf5f26e3b 100644 (file)
@@ -8966,12 +8966,18 @@ expand_expr (exp, target, tmode, modifier)
        tree try_block = TREE_OPERAND (exp, 0);
        tree finally_block = TREE_OPERAND (exp, 1);
 
-        if (unsafe_for_reeval (finally_block) > 1)
+        if (!optimize || unsafe_for_reeval (finally_block) > 1)
          {
            /* In this case, wrapping FINALLY_BLOCK in an UNSAVE_EXPR
               is not sufficient, so we cannot expand the block twice.
               So we play games with GOTO_SUBROUTINE_EXPR to let us
               expand the thing only once.  */
+           /* When not optimizing, we go ahead with this form since
+              (1) user breakpoints operate more predictably without
+                  code duplication, and
+              (2) we're not running any of the global optimizers
+                  that would explode in time/space with the highly
+                  connected CFG created by the indirect branching.  */
 
            rtx finally_label = gen_label_rtx ();
            rtx done_label = gen_label_rtx ();
This page took 0.114165 seconds and 5 git commands to generate.