aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2001-10-08 20:35:03 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-10-08 20:35:03 +0000
commitf3ca28bffbf80a70183e57c04551d85a42e8e752 (patch)
treee43a454cb994c104c772c00af25950ad4d66c4ac /gcc/java
parent5a2ce672babe9504d6b06e4faea7b15bb1908e2c (diff)
downloadgcc-f3ca28bffbf80a70183e57c04551d85a42e8e752.zip
gcc-f3ca28bffbf80a70183e57c04551d85a42e8e752.tar.gz
gcc-f3ca28bffbf80a70183e57c04551d85a42e8e752.tar.bz2
re PR java/4489 (bytecode generation endless loop with certain switch() exprs)
Fix for PR java/4489: * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always force a new label when computing `body_block'. From-SVN: r46092
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/jcf-write.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 5fbc60e..52ccdab 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2001-10-08 Tom Tromey <tromey@redhat.com>
+
+ Fix for PR java/4489:
+ * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
+ force a new label when computing `body_block'.
+
2001-10-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* jcf-io.c (format_uint): Const-ify.
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 3256625..63ee86d 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -1483,7 +1483,7 @@ generate_bytecode_insns (exp, target, state)
}
}
break;
- case COMPOUND_EXPR:
+ case COMPOUND_EXPR:
generate_bytecode_insns (TREE_OPERAND (exp, 0), IGNORE_TARGET, state);
generate_bytecode_insns (TREE_OPERAND (exp, 1), target, state);
break;
@@ -1701,7 +1701,9 @@ generate_bytecode_insns (exp, target, state)
sw_state.default_label = NULL;
generate_bytecode_insns (TREE_OPERAND (exp, 0), STACK_TARGET, state);
expression_last = state->last_block;
- body_block = get_jcf_label_here (state); /* Force a new block here. */
+ /* Force a new block here. */
+ body_block = gen_jcf_label (state);
+ define_jcf_label (body_block, state);
generate_bytecode_insns (TREE_OPERAND (exp, 1), IGNORE_TARGET, state);
body_last = state->last_block;