2015-03-25 13:15 GMT+03:00 Richard Biener <richard.guent...@gmail.com>: > On Wed, Mar 25, 2015 at 10:50 AM, Jakub Jelinek <ja...@redhat.com> wrote: >> On Wed, Mar 25, 2015 at 10:38:56AM +0100, Richard Biener wrote: >>> --- gcc/passes.c (revision 221633) >>> +++ gcc/passes.c (working copy) >>> @@ -156,7 +156,8 @@ void >>> pass_manager::execute_early_local_passes () >>> { >>> execute_pass_list (cfun, pass_build_ssa_passes_1->sub); >>> - execute_pass_list (cfun, pass_chkp_instrumentation_passes_1->sub); >>> + if (flag_check_pointer_bounds) >>> + execute_pass_list (cfun, pass_chkp_instrumentation_passes_1->sub); >>> execute_pass_list (cfun, pass_local_optimization_passes_1->sub); >>> } >>> >>> @@ -424,7 +425,8 @@ public: >>> virtual bool gate (function *) >>> { >>> /* Don't bother doing anything if the program has errors. */ >>> - return (!seen_error () && !in_lto_p); >>> + return (flag_check_pointer_bounds >>> + && !seen_error () && !in_lto_p); >>> } >>> >>> }; // class pass_chkp_instrumentation_passes >> >> There is still the wasteful pass_fixup_cfg at the start of: >> PUSH_INSERT_PASSES_WITHIN (pass_local_optimization_passes) >> NEXT_PASS (pass_fixup_cfg); >> which wasn't there before chkp. Perhaps this should be a different >> pass with the same execute method, but gate containing >> flag_check_pointer_bounds? > > That's not wasteful but required due to local_pure_const. The remaining > wasteful fixup_cfg is the one in pass_build_ssa_passes. ISTR > that pass_ipa_chkp_versioning/early_produce_thunks makes that one > required? Or EH / CFG cleanup stuff makes it necessary to not > fail IL checking done by into-SSA.
These two chkp passes don't modify function bodies (mat remove it though). I don't expect them to require following fixup_cfg. Ilya > > Richard. > >> Jakub