On Tue, May 17, 2016 at 01:09:11AM +0000, Segher Boessenkool wrote: > This patch restructures how the prologues/epilogues are inserted. Sibcalls > that run without prologue are now handled in shrink-wrap.c; it communicates > what is already handled by setting the EDGE_IGNORE flag. The > try_shrink_wrapping function then doesn't need to be passed the bb_flags > anymore.
> 2016-05-16 Segher Boessenkool <seg...@kernel.crashing.org> > > * function.c (make_epilogue_seq): Remove epilogue_end parameter. > (thread_prologue_and_epilogue_insns): Remove bb_flags. Restructure > code. Ignore sibcalls on EDGE_IGNORE edges. > * shrink-wrap.c (handle_simple_exit): New function. Set EDGE_IGNORE > on edges for sibcalls that run without prologue. The rest of the > function is combined from... > (fix_fake_fallthrough_edge): ... this, and ... > (try_shrink_wrapping): ... a part of this. Remove the bb_with > function argument, make it a local variable. As promised in the 1/3 subthread, I looked at the difference of building Linux with and without (only) this patch. With the 24 (of 30) targets that build, I saw no generated code differences. There also are no testsuite regressions on powerpc, powerpc64, powerpc64le, or x86_64. Segher