diff options
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index 3847c5dcd7b..28292843508 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -3526,7 +3526,7 @@ rest_of_compilation (decl) /* Likewise, for DECL_ARGUMENTS. */ tree saved_arguments = 0; int failure = 0; - int run_jump_after_reload; + int rebuild_label_notes_after_reload; /* If we are reconsidering an inline function at the end of compilation, skip the stuff for making it inline. */ @@ -4074,10 +4074,10 @@ rest_of_compilation (decl) { recompute_reg_usage (insns, ! optimize_size); regclass (insns, max_reg_num ()); - run_jump_after_reload = local_alloc (); + rebuild_label_notes_after_reload = local_alloc (); }); else - run_jump_after_reload = 0; + rebuild_label_notes_after_reload = 0; /* Dump rtl code after allocating regs within basic blocks. */ @@ -4112,20 +4112,16 @@ rest_of_compilation (decl) if (failure) goto exit_rest_of_compilation; - /* Register allocation and reloading may have turned an indirect jump into - a direct jump. If so, we must rerun the jump optimizer to ensure that - the JUMP_LABEL of any jump changed by that transformation is valid. - - We do this before reload_cse_regs since it may allow reload_cse to do - a better job. */ - if (run_jump_after_reload) - TIMEVAR (jump_time, jump_optimize (insns, !JUMP_CROSS_JUMP, - !JUMP_NOOP_MOVES, !JUMP_AFTER_REGSCAN)); - /* Do a very simple CSE pass over just the hard registers. */ if (optimize > 0) reload_cse_regs (insns); + /* Register allocation and reloading may have turned an indirect jump into + a direct jump. If so, we must rebuild the JUMP_LABEL fields of + jumping instructions. */ + if (rebuild_label_notes_after_reload) + TIMEVAR (jump_time, rebuild_jump_labels (insns)); + /* If optimizing and we are performing instruction scheduling after reload, then go ahead and split insns now since we are about to recompute flow information anyway. |