https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101362
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > In particular can_change_signature is one of the keys for > ix86_function_regparm to use local calling conventions on i?86 So looking through the code on i386 side we check ->local and ->can_change_signature. But ->local is set to false for node->externally_visible which gets set via cgraph_externally_visible_p for DECL_PRESERVE_P which gets set via handle_used_attribute (in c-family/c-attribs.cc). So can_change_signature might not be worried about here. Basically as far as I understand is that can_change_signature says if we can change the signature; though if it is not local, we can't change that version of it because it might called else where outside of the TU.