https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94342
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Hmm, I see clang produces COMDAT group section [ 3] `.group' [_Z5IndexIiEvi] contains 2 sections: [Index] Name [ 4] .text._Z5IndexIiEvi [ 5] .rela.text._Z5IndexIiEvi COMDAT group section [ 6] `.group' [_ZZ5IndexIiEviE3VAR] contains 1 sections: [Index] Name [ 7] NEW_SECTION COMDAT group section [ 8] `.group' [_ZGVZ5IndexIiEviE3VAR] contains 1 sections: [Index] Name [ 9] .bss._ZGVZ5IndexIiEviE3VAR and if I add a Index<float> specialization it ends up emitting two distinct sections with the same name NEW_SECTION and COMDAT group section [ 3] `.group' [_Z5IndexIiEvi] contains 2 sections: [Index] Name [ 4] .text._Z5IndexIiEvi [ 5] .rela.text._Z5IndexIiEvi COMDAT group section [ 6] `.group' [_Z5IndexIfEvi] contains 2 sections: [Index] Name [ 7] .text._Z5IndexIfEvi [ 8] .rela.text._Z5IndexIfEvi COMDAT group section [ 9] `.group' [_ZZ5IndexIiEviE3VAR] contains 1 sections: [Index] Name [ 10] NEW_SECTION COMDAT group section [ 11] `.group' [_ZGVZ5IndexIiEviE3VAR] contains 1 sections: [Index] Name [ 12] .bss._ZGVZ5IndexIiEviE3VAR COMDAT group section [ 13] `.group' [_ZZ5IndexIfEviE3VAR] contains 1 sections: [Index] Name [ 14] NEW_SECTION COMDAT group section [ 15] `.group' [_ZGVZ5IndexIfEviE3VAR] contains 1 sections: [Index] Name [ 16] .bss._ZGVZ5IndexIfEviE3VAR