https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93921
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- _S_copy_chars is just a wrapper function around _S_copy And _S_copy is a wrapper function around either assign or copy based on the size k1-k2 of the original _S_copy_chars. assign is just an assignment of one char. copy is just a wrapper around __builtin_memcpy. I don't understand the ipa dumps to understand why we are not inlining here at all.