Описание тега comdat-folding

1 ответ

Любой способ генерировать предупреждения для сравнения указателя функции?

У меня ушло навсегда, чтобы отследить, что в моем коде была ошибка, вызванная /OPT:ICF: Поскольку /OPT:ICF может привести к тому, что один и тот же адрес будет назначен различным функциям или элементам данных только для чтения (константные переменны…
2 ответа

Связь между компилятором MSVC и опцией компоновщика для свертывания COMDAT

На этот вопрос есть несколько ответов о SO, но мой немного отличается. Прежде чем пометить как дубликат, пожалуйста, сделайте это. MSVC всегда предоставлял опцию компилятора /Gy для включения одинаковых функций в разделы COMDAT. В то же время компон…
0 ответов

Назначение IMAGE_COMDAT_SELECT_NODUPLICATES

Microsoft C++ с параметром /Gy поместит каждую функцию в отдельный раздел, чтобы компоновщик мог пропустить неиспользуемые функции, что может уменьшить размер исполняемого файла. Помимо размещения каждой функции в отдельном разделе, она также помеча…
4 ответа

Разные функции имеют разные адреса?

Рассмотрим эти две функции: void foo() {} void bar() {} это гарантировано, что &foo != &bar? Так же, template<class T> void foo() { } это гарантировано, что &foo<int> != &foo<double>? Есть два линкера, которые я зна…
1 ответ

COMDAT название раздела

Я пишу компоновщик для двоичных файлов Windows, и в настоящее время работаю над реализацией COMDAT. Я думаю, что понимаю большую часть спецификации, за исключением той из трех записей для раздела COMDAT (заголовок раздела, символы раздела и вспомога…
0 ответов

Может ли компилятор исключить тела функций, которые принимаются по адресу, но никогда не вызываются?

Исходная информация Рассмотрим эту упрощенную реализацию std::any (нерелевантные части опущены) и некоторый код, который его использует: namespace std { namespace details { // Each instance of this function template has a different address template…