diff options
Diffstat (limited to 'gcc/java/expr.c')
-rw-r--r-- | gcc/java/expr.c | 10 |
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)]); } |