只是好奇,GCC或Clang工具集目前是否实现了MSVC的相同COMDAT折叠(ICF)的等效版本?如果没有,是否有任何计划?我似乎找不到任何关于此主题的最新权威链接,除了旧的GCC邮件列表消息。
如果没有,这是否意味着在结果二进制文件中,对不同类型进行模板实例化的函数始终是不同的函数(在它们没有完全内联的情况下),即使它们是二进制兼容的,或者是否有其他机制来在其他级别上处理这个问题?
此外,有人发现ICF在实践中大大减小了生成的可执行文件的大小吗?我手头没有任何大型MSVC项目来测试它。(我猜想,它只有在您恰好对许多不同的vtable-layout兼容类型进行模板实例化时才真正有帮助。)
最后,两个指向不同函数的函数指针在运行时比较相等是否符合C++11标准?此链接似乎暗示着它不符合,但它是针对C99的。编辑:在此主题上找到先前的问题。
如果没有,这是否意味着在结果二进制文件中,对不同类型进行模板实例化的函数始终是不同的函数(在它们没有完全内联的情况下),即使它们是二进制兼容的,或者是否有其他机制来在其他级别上处理这个问题?
此外,有人发现ICF在实践中大大减小了生成的可执行文件的大小吗?我手头没有任何大型MSVC项目来测试它。(我猜想,它只有在您恰好对许多不同的vtable-layout兼容类型进行模板实例化时才真正有帮助。)
最后,两个指向不同函数的函数指针在运行时比较相等是否符合C++11标准?此链接似乎暗示着它不符合,但它是针对C99的。编辑:在此主题上找到先前的问题。