This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[tuples][patch] Fix EH bug


Hi all,

lower_try_finally was failing to set the resulting lowered sequence in
cases when the finally block can is removed.
Tested on i686-linux, about 180 testcases fixed.

Oleg

2008-03-20  Oleg Ryjkov  <olegr@google.com>

        * tree-eh.c (lower_try_finally): Correctly set the lowered sequence.
Index: tree-eh.c
===================================================================
--- tree-eh.c	(revision 133397)
+++ tree-eh.c	(working copy)
@@ -1546,7 +1546,10 @@ lower_try_finally (struct leh_state *sta
 
   /* If the FINALLY block is not reachable, dike it out.  */
   if (ndests == 0)
+    {
+      gimple_seq_add_seq (&this_tf.top_p_seq, gimple_try_eval (tp));
       gimple_try_set_cleanup (tp, NULL);
+    }
   /* If the finally block doesn't fall through, then any destination
      we might try to impose there isn't reached either.  There may be
      some minor amount of cleanup and redirection still needed.  */
Index: ChangeLog.tuples
===================================================================
--- ChangeLog.tuples	(revision 133404)
+++ ChangeLog.tuples	(working copy)
@@ -1,3 +1,7 @@
+2008-03-20  Oleg Ryjkov  <olegr@google.com>
+
+	* tree-eh.c (lower_try_finally): Correctly set the lowered sequence.
+
 2008-03-20  Jakub Staszak  <kuba@et.pl>
             Oleg Ryjkov  <olegr@google.com>
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]