From f3ca28bffbf80a70183e57c04551d85a42e8e752 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 8 Oct 2001 20:35:03 +0000 Subject: [PATCH] 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 --- gcc/java/ChangeLog | 6 ++++++ gcc/java/jcf-write.c | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5fbc60eda549..52ccdabebe39 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2001-10-08 Tom Tromey + + 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 * jcf-io.c (format_uint): Const-ify. diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 3256625442aa..63ee86d3bbc7 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; -- 2.43.5