Clang: Как проверить, был ли выполнен LTO
Для gcc этот ответ говорит нам о том, как мы можем проверить, была ли выполнена оптимизация Link-Time. Для clang я не вижу записей, похожих на .gnu.lto
,
В частности, у меня есть бинарный файл, в котором я совершенно уверен, что LTO должен иметь значительную выгоду, но я ничего не вижу. Интересно, действительно ли cmake поступает правильно?
Есть ли способ узнать, выполнял ли Clang LTO, посмотрев на двоичный файл или файл *.o?
1 ответ
Можно было бы попробовать запустить llvm-dis
на одном из ваших.o файлов. Если LTO действительно выполнялся, файлы.o содержат битовый код llvm и llvm-dis
создаст файл.ll, содержащий humain-читабельную llvm ir. В противном случае будет выдано сообщение об ошибке "error: Invalid bitcode signature".
file
утилита сообщит, что файл "LLVM IR bitcode". Средства LTO в LLVM/clang не создают "жирных" объектных файлов, это всего лишь IR.