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~

Reply via email to