In some cases, a cleanup action was missed.
No reduced testcase found.

Tested on x86_64-pc-linux-gnu, committed on trunk

2012-07-17  Tristan Gingold  <ging...@adacore.com>

        * raise-gcc.c (get_call_site_action_for): Remove useless init
        expression for p.
        (get_action_description_for): Do not overwrite action->kind.

Index: raise-gcc.c
===================================================================
--- raise-gcc.c (revision 189565)
+++ raise-gcc.c (working copy)
@@ -710,7 +710,7 @@
   else
     {
       _uleb128_t cs_lp, cs_action;
-      const unsigned char *p = region->call_site_table;
+      const unsigned char *p;
 
       /* Let the caller know there may be an action to take, but let it
         determine the kind.  */
@@ -947,13 +947,16 @@
                  passed (to follow the ABI).  */
               if (!(uw_phase & _UA_FORCE_UNWIND))
                 {
+                 enum action_kind act;
+
                   /* See if the filter we have is for an exception which
                      matches the one we are propagating.  */
                   _Unwind_Ptr choice = get_ttype_entry_for (region, ar_filter);
 
-                 action->kind = is_handled_by (choice, gnat_exception);
-                  if (action->kind != nothing)
+                 act = is_handled_by (choice, gnat_exception);
+                  if (act != nothing)
                     {
+                     action->kind = act;
                       action->ttype_filter = ar_filter;
                       return;
                     }

Reply via email to