From: Andrew Haley Date: Thu, 5 Sep 2002 13:24:41 +0000 (+0000) Subject: verify.c (verify_jvm_instructions): Allow exception handler inside code that is being... X-Git-Tag: releases/gcc-3.3.0~3018 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b139fcfd92b72e68b12bead6d3486fb737b47193;p=thirdparty%2Fgcc.git verify.c (verify_jvm_instructions): Allow exception handler inside code that is being protected, but generate a warning. 2002-08-28 Andrew Haley * verify.c (verify_jvm_instructions): Allow exception handler inside code that is being protected, but generate a warning. * except.c (link_handler): Initialize `expanded' in new eh_range. (binding_depth, is_class_level, current_pc): Declare extern. From-SVN: r56842 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 8195d1f03e90..2eb6a9d2d92c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +2002-08-28 Andrew Haley + + * verify.c (verify_jvm_instructions): Allow exception handler + inside code that is being protected, but generate a warning. + * except.c (link_handler): Initialize `expanded' in new eh_range. + (binding_depth, is_class_level, current_pc): Declare extern. + 2002-09-01 Mark Wielaard * gcj.texi: Add chapter about system properties. diff --git a/gcc/java/except.c b/gcc/java/except.c index ef773e4a6b32..614587d33622 100644 --- a/gcc/java/except.c +++ b/gcc/java/except.c @@ -61,9 +61,9 @@ static struct eh_range *cache_next_child; struct eh_range whole_range; #if defined(DEBUG_JAVA_BINDING_LEVELS) -int binding_depth; -int is_class_level; -int current_pc; +extern int binding_depth; +extern int is_class_level; +extern int current_pc; extern void indent (); #endif @@ -172,6 +172,7 @@ link_handler (range, outer) h->handlers = build_tree_list (TREE_PURPOSE (range->handlers), TREE_VALUE (range->handlers)); h->next_sibling = NULL; + h->expanded = 0; /* Restart both from the top to avoid having to make this function smart about reentrancy. */ link_handler (h, &whole_range); diff --git a/gcc/java/verify.c b/gcc/java/verify.c index b81927e6913f..c3b3b98a84d1 100644 --- a/gcc/java/verify.c +++ b/gcc/java/verify.c @@ -471,7 +471,6 @@ verify_jvm_instructions (jcf, byte_ops, length) if (start_pc < 0 || start_pc >= length || end_pc < 0 || end_pc > length || start_pc >= end_pc || handler_pc < 0 || handler_pc >= length - || (handler_pc >= start_pc && handler_pc < end_pc) || ! (instruction_bits [start_pc] & BCODE_INSTRUCTION_START) || (end_pc < length && ! (instruction_bits [end_pc] & BCODE_INSTRUCTION_START)) @@ -482,6 +481,9 @@ verify_jvm_instructions (jcf, byte_ops, length) return 0; } + if (handler_pc >= start_pc && handler_pc < end_pc) + warning ("exception handler inside code that is being protected"); + add_handler (start_pc, end_pc, lookup_label (handler_pc), catch_type == 0 ? NULL_TREE