GCC (/ Clang): Zusammenführen von Funktionen mit identischen Anweisungen (COMDAT-Faltung)

Nur neugierig, implementieren die GCC- oder Clang-Toolsets das Äquivalent von MSVCsidentische COMDAT Faltung (ICF) aktuell? Wenn nicht, gibt es Pläne dafür? Ich kann anscheinend keine neuen maßgeblichen Links zu dem Thema finden, die keine alten GCC-Mailinglisten-Nachrichten sind.

Wenn nicht, bedeutet dies, dass Template-Instantiierungen über verschiedene Typen immer verschiedene Funktionen in der resultierenden Binärdatei sind (in Situationen, in denen sie nicht vollständig inline sind), auch wenn sie binärkompatibel sind oder andere Mechanismen vorhanden sind, um dies zu handhaben auf einer anderen Ebene?

Hat jemand festgestellt, dass ICF in der Praxis einen großen Unterschied bei der Minimierung der Größe einer daraus resultierenden ausführbaren Datei macht? Ich habe keine großen MSVC-Projekte zum Testen parat. (Ich vermute, es hilft nur wirklich, wenn Sie Vorlagen über viele verschiedene vtable-layout-kompatible Typen instanziieren.)

Ist es schließlich C ++ 11-kompatibel, wenn zwei Funktionszeiger auf verschiedene Funktionen zur Laufzeit gleich sind?Dieser Link scheint zu implizieren, dass es nicht ist, aber es ist für C99. BEARBEITEN:Vorherige Frage zu diesem Thema gefunden

Antworten auf die Frage(1)

Ihre Antwort auf die Frage