I believe this finally fixes all of the problems in 47952. The problem was that we needed to clone
basic_string<char>::~basic_string() which is inline, and also marked extern template, like so extern template class basic_string<char>; which I believe maps things to the gnu extern inline form. In any case, we copied the whole decl during cloning, which resulted in the clone being considered an extern inline too, which made us believe that the clone was available elsewhere and thus not instantiated. This patch changes the clones such that extern inline maps to static inline, so that the functions get instantiated locally if they are not inlined. I shied away from using DECL_ONE_ONLY, since it seems fairly complicated to determine what DECL_COMDAT_GROUP a particular c++ function should be mapped into. Committed. r~