aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/expr.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java/expr.c')
-rw-r--r--gcc/java/expr.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index 133fa03..d6a443d 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -2534,6 +2534,7 @@ java_expand_expr (exp, target, tmode, modifier)
if (BLOCK_EXPR_BODY (exp))
{
tree local;
+ rtx last;
tree body = BLOCK_EXPR_BODY (exp);
/* Set to 1 or more when we found a static class
initialization flag. */
@@ -2567,11 +2568,11 @@ java_expand_expr (exp, target, tmode, modifier)
emit_queue ();
body = TREE_OPERAND (body, 1);
}
- expand_expr (body, const0_rtx, VOIDmode, 0);
+ last = expand_expr (body, NULL_RTX, VOIDmode, 0);
emit_queue ();
expand_end_bindings (getdecls (), 1, 0);
poplevel (1, 1, 0);
- return const0_rtx;
+ return last;
}
return const0_rtx;
@@ -2628,6 +2629,11 @@ java_expand_expr (exp, target, tmode, modifier)
return expand_expr (build_exception_object_ref (TREE_TYPE (exp)),
target, tmode, modifier);
+ case LABEL_EXPR:
+ /* Used only by expanded inline functions. */
+ expand_label (TREE_OPERAND (exp, 0));
+ return const0_rtx;
+
default:
internal_error ("can't expand %s", tree_code_name [TREE_CODE (exp)]);
}