inline — оптимизация времени соединения (lto) для смешанных программ на C ++ / C

Интересно, можно ли было бы эффективно использовать оптимизацию во время соединения (lto) для программ, состоящих из TU с кодом C ++, вызывающего некоторую функцию в TU с кодом C. Итак, есть ли способ получить функцию C встраиваемый в результирующую программу?

Реальным вариантом использования является микропрограммное обеспечение микроконтроллера, написанное на C ++. Но есть фрагменты кода, которые должны быть написаны на C из-за семантики C (например, доступ к неактивному члену объединения).

(Это не имеет ничего общего с функциями ручной маркировки как встроенных)

1

Решение

Это не должно быть проблемой вообще. И в GCC, и в Clang оптимизация времени соединения работает на промежуточном представлении кода. То есть с помощью -flto вы создаете объектные файлы с дополнительной информацией LTO (gcc) или байт-кодом LLVM (Clang), после чего исходный язык перестает иметь значение.

Некоторые зашли так далеко, что смешали еще меньше связанных C ++ и D, но все еще используют LTO: http://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]