diff options
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 641a8210dad..76a08c67061 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -818,12 +818,7 @@ mostly_copy_tree_r (tree *tp, int *walk_subtrees, void *data) /* Stop at types, decls, constants like copy_tree_r. */ else if (TREE_CODE_CLASS (code) == tcc_type || TREE_CODE_CLASS (code) == tcc_declaration - || TREE_CODE_CLASS (code) == tcc_constant - /* We can't do anything sensible with a BLOCK used as an - expression, but we also can't just die when we see it - because of non-expression uses. So we avert our eyes - and cross our fingers. Silly Java. */ - || code == BLOCK) + || TREE_CODE_CLASS (code) == tcc_constant) *walk_subtrees = 0; /* Cope with the statement expression extension. */ @@ -2042,7 +2037,9 @@ should_warn_for_implicit_fallthrough (gimple_stmt_iterator *gsi_p, tree label) gsi = *gsi_p; /* Skip all immediately following labels. */ - while (!gsi_end_p (gsi) && gimple_code (gsi_stmt (gsi)) == GIMPLE_LABEL) + while (!gsi_end_p (gsi) + && (gimple_code (gsi_stmt (gsi)) == GIMPLE_LABEL + || gimple_code (gsi_stmt (gsi)) == GIMPLE_PREDICT)) gsi_next (&gsi); /* { ... something; default:; } */ @@ -5807,8 +5804,7 @@ gimplify_save_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) /* If the SAVE_EXPR has not been resolved, then evaluate it once. */ if (!SAVE_EXPR_RESOLVED_P (*expr_p)) { - /* The operand may be a void-valued expression such as SAVE_EXPRs - generated by the Java frontend for class initialization. It is + /* The operand may be a void-valued expression. It is being executed only for its side-effects. */ if (TREE_TYPE (val) == void_type_node) { |