https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533
Bug ID: 63533 Summary: Function splitter causes unnecessary splits Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: y.gribov at samsung dot com CC: hubicka at gcc dot gnu.org, khlebnikov at openvz dot org, ryabinin.a.a at gmail dot com Created attachment 33712 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33712&action=edit Short repro The attached reprocase contains an innocent function which can not ever benefit from inlining. But fnsplit pass still jumps on it and splits it to two functions thus hurting performance and code size: gcc -O2 -fconserve-stack -S repro.i -o- ...g.part.0: ... g: ... call g.part.0 This can not be recovered later by inliner because of -fconserve-stack option. The reprocase is a reduced version of a real-world code (from Linux kernel).