https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88684
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Given that the GCC default is #ifndef __GXX_MERGED_TYPEINFO_NAMES // By default, typeinfo names are not merged. #define __GXX_MERGED_TYPEINFO_NAMES 0 #endif we should use strcmp on Linux too. Note, what libsanitizer does doesn't match what typeinfo does, which is: return ((__name == __arg.__name) || (__name[0] != '*' && __builtin_strcmp (__name, __arg.__name) == 0)); for equality and { return (__name[0] == '*' && __arg.__name[0] == '*') ? __name < __arg.__name : __builtin_strcmp (__name, __arg.__name) < 0; } for before.