https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93461
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #6 from Tobias Burnus <burnus at gcc dot gnu.org> --- (In reply to Richard Biener from comment #4) > Fixing this will be an ABI change and may cause old and new objects no > longer to link? By itself, the pattern for constructing the identifier is unchanged – except that there is now more space for longer names. — Before the change, it only accepted identifiers of the following length: __amodulewithanallowedname.asubmodulewithaveryveryverylongbutentirelylegalname_MOD_asubroutinewithaverylongnamethatwillcauseaprobl If you save letters in the module name (amodulewithanallowedname) and/or submodule name (asubmodulewithaveryveryverylongbutentirelylegalname) you have more letters for the procedure name – which is already not that short even after trimming: "asubroutinewithaverylongnamethatwillcauseaprobl". Thus, the problem only occurs if all parts use very long names – and only if one uses submodules which are also a relatively new feature (of GCC 6). Hence, technically, it is an ABI change – but I don't think that any real-world program will have hit this limit!