except.c (sjlj_find_directly_reachable_regions): Don't consider RNL_BLOCKED a directly reachable region.

* 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.

From-SVN: r47915
This commit is contained in:
Richard Henderson 2001-12-11 18:58:23 -08:00
parent eb15deddff
commit 98ce21b3b3
2 changed files with 51 additions and 42 deletions

View File

@ -1,3 +1,10 @@
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
@ -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>

View 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)