https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111558
Jeffrey A. Law <law at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #4 from Jeffrey A. Law <law at gcc dot gnu.org> --- This is behaving per design. The basic idea behind shrink wrapping is to push prologue instructions into deeper control nests and hoist epilogue instructions into deeper control nests. That reduces the dynamic instruction counts. That may mean we end up with more static copies of the saves and restores, but the dynamic count will be lower. LLVM is in the process of improving their shrink wrapping code to behave more like GCC's as it ultimately results in better performance.