On Wed, Mar 25, 2015 at 11:11 AM, Jakub Jelinek <ja...@redhat.com> wrote: > On Wed, Mar 25, 2015 at 01:06:46PM +0300, Ilya Enkovich wrote: >> > 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? >> >> IIRC the reason for this pass was a different passes split, not >> instrumentation itself. Previously function processing always started >> with pass_fixup_cfg. Splitting processing into three stages we got >> three pass_fixup_cfg passes. > > Sure, but it would be really nice if for !flag_check_pointer_bounds > we really could have just one stage again, rather than 3. > When it is a global option, and for LTO ideally ored in from all the TUs, > that shouldn't be that hard...
LTO doesn't even run all this stuff at it only runs before LTO streaming. I don't think we want to go back to not going into SSA for all functions before early-opts (esp. early inlining). Which unfortunately won't get the EH cleanup related benefits. Btw, execute_fixup_cfg can be optimized as well - edge purging only needs to be done for the last stmt of a BB. Richard. > Jakub