Clang: Как проверить, был ли выполнен LTO

Для gcc этот ответ говорит нам, как мы можем проверить, что Link- Выполнена оптимизация времени. Что касается clang, я не вижу записей, похожих на .gnu.lto.

Точнее, у меня есть двоичный файл, в котором я совершенно уверен, что LTO должен иметь значительное преимущество, но я ничего не вижу. Интересно, действительно ли cmake делает правильную вещь.

Есть ли способ узнать, выполнил ли clang LTO, просмотрев двоичный файл или файл *.o?


person mrks    schedule 26.06.2018    source источник


Ответы (2)


Можно попробовать запустить llvm-dis на одном из ваших файлов .o. Если LTO действительно был выполнен, файлы .o содержат битовый код llvm, а llvm-dis создаст файл .ll, содержащий удобочитаемый llvm ir. В противном случае будет выдано сообщение об ошибке «Ошибка: неверная подпись битового кода».

person mamai    schedule 29.06.2018
comment
Мне пришлось перечитать это, чтобы понять, что отсутствие результата — хорошая новость. Теперь это работает, спасибо! - person mrks; 02.07.2018

Утилита file сообщит, что файл имеет "битовый код LLVM IR". Средства LTO LLVM/clang не создают «толстые» объектные файлы, это просто IR.

person jberryman    schedule 08.03.2019