172 похожих чатов

Здравствуйте. Вчера выпустили наконец межязыковую оптимизацию, aka Linker Plugin LTO. Но

у меня что-то не получилось заставить её инлайнить функции Раста в C++.

Подчеркну, что в большинстве своём функция в C++ это просто трамплин в Rust, там инструкций до call от силы пару манипуляций. В будущем планирую на чистом Расте написать, но пока остановился на этом.

А вот функции в Расте достаточно большие. В обоих случаях речь идёт о FFI.

C++ билдится clang 8 с аргументами -flto=thin -O3 и во время линка с растом и во время компиляции translation unit-ов, Rust билдится с flto="thin" и с включённым linker plugin lto в RUSTFLAGS.

Я даже вижу как в вызовах rustc передаётся аргумент linker plugin lto.

Так вот, билжу я так же с включенными дебаг символами с обоих сторон.

Да и линковка всего этого дела длится значительно долго чем раньше. Clang линкует объектные файлы плюсов и статическую либу раста, собирая все это в shared library.

Когда я смотрю дизассемблером, внутри плюсовых функций call в растовые и никакого инлайнинга, хоть и растовые вызываются только там и с помощью version script-а почти все скрыто.

Как делать чтобы инлайнился раст?

1 ответов

4 просмотра

а зачем он thin? делай жырный

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
#delphi кто-нибудь встречал официальное описание директивы {$ALIGN ON} (подчеркиваю - официальное, а не левый источник)? какой именно режим выравнивания включится? будут ли в...
Viktor Akselrod
14
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
то есть человек, который рассказывал что Native API лучше чем WinAPI потому что меньше тактов тратиться на проверки, теперь рассказывает что все эти лишние оптимизирующие инст...
Aleksandr
12
reply = (struct pam_response *)malloc(sizeof(struct pam_response)); reply[0].resp = strdup(password); Это так можно ображаться к структуре за указателем, помимо (*reply)...
Юлиан🦉 Колессиков ⛵️
10
объясните, я прада не понимаю. зачем в перле нужен аниивент? кому он пригодился в действительно нагруженных проектах?
nerv
30
а в чем проблема по итогу?
Aleksandr
10
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Еще такой вопрос. Memo наследует виндовскую PopMenu, а SynEdit нет. Как это поменять, что бы и SynEdit виндовское меню имело?
Alexander
10
Карта сайта