OSDN Git Service

* except.c (sjlj_find_directly_reachable_regions): Don't
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 12 Dec 2001 02:58:23 +0000 (02:58 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 12 Dec 2001 02:58:23 +0000 (02:58 +0000)
        consider RNL_BLOCKED a directly reachable region.
        (sjlj_assign_call_site_values): Trust directly_reachable.
        (sjlj_emit_dispatch_table): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47915 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/except.c

index 2755fa1..95d55b1 100644 (file)
@@ -1,5 +1,12 @@
 2001-12-11  Richard Henderson  <rth@redhat.com>
 
+       * except.c (sjlj_find_directly_reachable_regions): Don't
+       consider RNL_BLOCKED a directly reachable region.
+       (sjlj_assign_call_site_values): Trust directly_reachable.
+       (sjlj_emit_dispatch_table): Likewise.
+
+2001-12-11  Richard Henderson  <rth@redhat.com>
+
        * config/alpha/alpha.md (divmodsi_internal_er): Split, so that
        we represent the address load's dependency on the gp.
        (divmoddi_internal_er): Likewise.
@@ -22,9 +29,9 @@
 
 2001-12-11  Aldy Hernandez  <aldyh@redhat.com>
 
-        * output.h (regno_uninitialized): Make argument unsigned.
+       * output.h (regno_uninitialized): Make argument unsigned.
 
-        * flow.c (regno_uninitialized): Make regno unsigned.
+       * flow.c (regno_uninitialized): Make regno unsigned.
 
 2001-12-11  David O'Brien  <obrien@FreeBSD.org>
 
@@ -69,8 +76,8 @@
 
 2001-12-11  Aldy Hernandez  <aldyh@redhat.com>
 
-        * flow.c (find_regno_partial): Indent properly.  Add a default to
-        switch.
+       * flow.c (find_regno_partial): Indent properly.  Add a default to
+       switch.
 
 2001-12-11  Neil Booth  <neil@daikokuya.demon.co.uk>
 
@@ -300,7 +307,7 @@ Sun Dec  9 18:40:07 2001  Douglas B. Rupp  <rupp@gnat.com>
        * ia64.md: Add missing braces.
        * rs6000-protos.h (s8bit_cint_operand): Prototype.
        * s390.h (INITIAL_ELIMINATION_OFFSET): Add abort clause in
-        if-else statement.
+       if-else statement.
        * stormy16.h (REG_CLASS_CONTENTS): Add missing braces.
        * v850.h (OUTPUT_ADDR_CONST_EXTRA): Don't issue a `return'.
        * dbxout.c (dbxout_source_file): Move a variable into the scope
@@ -336,17 +343,17 @@ Sun Dec  9 18:40:07 2001  Douglas B. Rupp  <rupp@gnat.com>
 2001-10-08  Aldy Hernandez  <aldyh@redhat.com>
 
        * c-common.h (rid): Add RID_CHOOSE_EXPR and
-        RID_TYPES_COMPATIBLE_P.
+       RID_TYPES_COMPATIBLE_P.
 
-        * c-parse.in (reswords): Add __builtin_choose_expr.
-        Add __builtin_types_compatible_p.
-        Add CHOOSE_EXPR token.
+       * c-parse.in (reswords): Add __builtin_choose_expr.
+       Add __builtin_types_compatible_p.
+       Add CHOOSE_EXPR token.
        Add TYPES_COMPATIBLE_P token.
-        Add production for CHOOSE_EXPR.
-        Add production for TYPES_COMPATIBLE_P.
+       Add production for CHOOSE_EXPR.
+       Add production for TYPES_COMPATIBLE_P.
 
-        * doc/extend.texi (__builtin_choose_expr): Add documentation.
-        (__builtin_types_compatible_p): Likewise.
+       * doc/extend.texi (__builtin_choose_expr): Add documentation.
+       (__builtin_types_compatible_p): Likewise.
 
 2001-12-08  David Edelsohn  <edelsohn@gnu.org>
 
@@ -404,19 +411,19 @@ Sun Dec  9 18:40:07 2001  Douglas B. Rupp  <rupp@gnat.com>
 
 2001-12-07  Dale Johannesen  <dalej@apple.com>
 
-        * config/rs6000/darwin.h: Set MAX_LONG_TYPE_SIZE to 32.
-        * config/rs6000/rs6000.c (rs6000_emit_move): In Darwin-
-        specific codegen, eliminate a register copy.
-        (print_operand_address): Add support for Darwin's lo16(constant)
+       * config/rs6000/darwin.h: Set MAX_LONG_TYPE_SIZE to 32.
+       * config/rs6000/rs6000.c (rs6000_emit_move): In Darwin-
+       specific codegen, eliminate a register copy.
+       (print_operand_address): Add support for Darwin's lo16(constant)
        syntax.
-        (rs6000_machopic_legitimize_pic_address): Fix darwin-specific
-        generation of addresses within very large data objects.
-        (s8bit_cint_operand):  New.
-        * config/rs6000/rs6000.md: Remove "iu" reference for 750/7400.
-        Move "mtjmpr" to correct functional unit for 750/7400/7450.
-        Add imul2 and imul3 insn types for multiplication by 16- and
+       (rs6000_machopic_legitimize_pic_address): Fix darwin-specific
+       generation of addresses within very large data objects.
+       (s8bit_cint_operand):  New.
+       * config/rs6000/rs6000.md: Remove "iu" reference for 750/7400.
+       Move "mtjmpr" to correct functional unit for 750/7400/7450.
+       Add imul2 and imul3 insn types for multiplication by 16- and
        8-bit constants.
-        Change tablejump patterns to strongly discourage using LR
+       Change tablejump patterns to strongly discourage using LR
        rather than CTR.
        Add %lo16 patterns for Darwin loads and stores.
 
@@ -440,9 +447,9 @@ Sun Dec  9 18:40:07 2001  Douglas B. Rupp  <rupp@gnat.com>
 
        * doc/extend.texi (Variable Attributes): Document vector_size.
 
-        * attribs.c (c_common_attribute_table): Add vector_size.
+       * attribs.c (c_common_attribute_table): Add vector_size.
        (handle_vector_size_attribute): New.
-        (vector_size_helper): New.
+       (vector_size_helper): New.
        (decl_attributes): Relayout the decl after calculating attribs.
 
 2001-12-07  Joseph S. Myers  <jsm28@cam.ac.uk>
@@ -482,7 +489,7 @@ Fri Dec  7 07:06:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 2001-12-06  Aldy Hernandez  <aldyh@redhat.com>
 
        * rs6000.h (PRE_GCC3_DWARF_FRAME_REGISTERS): New.
-        (DWARF_FRAME_REGISTERS): Delete.
+       (DWARF_FRAME_REGISTERS): Delete.
 
 2001-12-06  Janis Johnson  <janis187@us.ibm.com>
 
@@ -501,14 +508,14 @@ Fri Dec  7 07:06:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        Fixes PR libf2c/4826.
 
 2001-12-06  Aldy Hernandez  <aldyh@redhat.com>
-            Richard Henderson  <rth@redhat.com>
+           Richard Henderson  <rth@redhat.com>
 
        * doc/tm.texi (DWARF_FRAME_REGISTERS): Add documentation.
-        (PRE_GCC3_DWARF_FRAME_REGISTERS): Same.
+       (PRE_GCC3_DWARF_FRAME_REGISTERS): Same.
 
-        * unwind-dw2.c (__frame_state_for): Change DWARF_FRAME_REGISTERS
-        to PRE_GCC3_DWARF_FRAME_REGISTERS.
-        (frame_state): Same.
+       * unwind-dw2.c (__frame_state_for): Change DWARF_FRAME_REGISTERS
+       to PRE_GCC3_DWARF_FRAME_REGISTERS.
+       (frame_state): Same.
        (PRE_GCC3_DWARF_FRAME_REGISTERS): Define if not already defined.
 
 2001-12-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
@@ -563,9 +570,9 @@ Thu Dec  6 09:24:12 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 2001-12-06  Nick Clifton  <nickc@cambridge.redhat.com>
 
        * config/arm/arm.c (load_multiple_sequence): Pass pointer to
-        RTX when calling alter_subreg().
+       RTX when calling alter_subreg().
        (store_multiple_sequence): Pass pointer to RTX when calling
-        alter_subreg().
+       alter_subreg().
 
 Thu Dec  6 06:55:13 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
index cc7177d..98e5e24 100644 (file)
@@ -2014,6 +2014,7 @@ sjlj_find_directly_reachable_regions (lp_info)
   for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
     {
       struct eh_region *region;
+      enum reachable_code rc;
       tree type_thrown;
       rtx note;
 
@@ -2035,11 +2036,14 @@ sjlj_find_directly_reachable_regions (lp_info)
 
       /* Find the first containing region that might handle the exception.
         That's the landing pad to which we will transfer control.  */
+      rc = RNL_NOT_CAUGHT;
       for (; region; region = region->outer)
-       if (reachable_next_level (region, type_thrown, 0) != RNL_NOT_CAUGHT)
-         break;
-
-      if (region)
+       {
+         rc = reachable_next_level (region, type_thrown, 0);
+         if (rc != RNL_NOT_CAUGHT)
+           break;
+       }
+      if (rc == RNL_MAYBE_CAUGHT || rc == RNL_CAUGHT)
        {
          lp_info[region->region_number].directly_reachable = 1;
          found_one = true;
@@ -2086,8 +2090,7 @@ sjlj_assign_call_site_values (dispatch_label, lp_info)
 
   index = 0;
   for (i = cfun->eh->last_region_number; i > 0; --i)
-    if (lp_info[i].directly_reachable
-       && lp_info[i].action_index >= 0)
+    if (lp_info[i].directly_reachable)
       lp_info[i].dispatch_index = index++;
 
   /* Finally: assign call-site values.  If dwarf2 terms, this would be
@@ -2316,8 +2319,7 @@ sjlj_emit_dispatch_table (dispatch_label, lp_info)
   first_reachable = 0;
   for (i = cfun->eh->last_region_number; i > 0; --i)
     {
-      if (! lp_info[i].directly_reachable
-         || lp_info[i].action_index < 0)
+      if (! lp_info[i].directly_reachable)
        continue;
 
       if (! first_reachable)