https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63560
Bug ID: 63560 Summary: __go_set_defer_retaddr shouldn't be split by IPA split Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: mliska at suse dot cz CC: cmang at google dot com, hubicka at ucw dot cz, iant at google dot com, mliska at suse dot cz Starting from r216305, IPA ICF can unify functions that will change decision made by IPA inline. As a result, we end up with split function: Not working version: bytes_test.$thunk0 (struct { struct __go_descriptor * fn; } * __go_thunk_parameter) { bool _3; <bb 2>: # DEBUG $ret49 => 0 _3 = __go_set_defer_retaddr (&retaddr); if (_3 != 0) goto <bb 4> (retaddr); else goto <bb 3>; <bb 3>: bytes_test.$thunk0.part.15 (__go_thunk_parameter_4(D)); retaddr: # DEBUG $ret49 => 0 return 0; } I discussed this stuff with Ian and Honza and the agreement is that we should not split functions decorated with noinline attribute. Honza will come up with a patch. Thank you, Martin