https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90944
--- Comment #2 from Peter Bergner <bergner at gcc dot gnu.org> --- The following fixes the issue. Does anyone have a better suggestion? Index: combine.c =================================================================== --- combine.c (revision 272620) +++ combine.c (working copy) @@ -15051,10 +15051,14 @@ make_more_copies (void) } } +int pass_combine_count; + /* Try combining insns through substitution. */ static unsigned int rest_of_handle_combine (void) { + pass_combine_count++; + make_more_copies (); df_set_flags (DF_LR_RUN_DCE + DF_DEFER_INSN_RESCAN); Index: passes.c =================================================================== --- passes.c (revision 272620) +++ passes.c (working copy) @@ -342,6 +342,8 @@ rest_of_type_compilation (tree type, int +extern int pass_combine_count; + void pass_manager:: finish_optimization_passes (void) @@ -359,7 +361,7 @@ finish_optimization_passes (void) dumps->dump_finish (pass_profile_1->static_pass_number); } - if (optimize > 0) + if (optimize > 0 && pass_combine_count > 0) { dumps->dump_start (pass_combine_1->static_pass_number, NULL); print_combine_total_stats ();