Size: a a a

Compiler Development

2020 December 18

DB

Dmitry Borisenkov in Compiler Development
И кстати, тогда уж линковку нужно параллелить, а не компиляцию...
источник

VS

Victor Shamparov in Compiler Development
Berkus Decker
наверное инкрементальная сборка больше для быстрой итерации, а полная мощь оптимизации для финальной сборки? они немного противоречат друг другу
Логично. Ну нам пожаловались на вариант, где сама по себе сборка нормальная, а в режиме "вся программа" слишком долгая.
источник

h

hazer_hazer in Compiler Development
Кстати. Тут вот ещё такое дело. А NaN-Boxing вообще возможно реализовать с дистрибутивным байт-кодом? Просто туда же указатели записывают...
источник

BD

Berkus Decker in Compiler Development
Victor Shamparov
Логично. Ну нам пожаловались на вариант, где сама по себе сборка нормальная, а в режиме "вся программа" слишком долгая.
LTO очевидно медленнее, там вместо просто топологической сортировки символов надо делать и _всякое другое_
источник

VS

Victor Shamparov in Compiler Development
Berkus Decker
LTO очевидно медленнее, там вместо просто топологической сортировки символов надо делать и _всякое другое_
Ага. Оптимизации. Которые обходят весь код. И не всегда с линейной сложностью.
источник

AT

Alexander Tchitchigi... in Compiler Development
hazer_hazer
NaN-Boxing = всё—double
OK, NaN-boxing позволяет хранить (32-bit) integer в виде 2-complement последовательности бит прямо внутри "технически double" значения. Этот "скрытый int" мы "декодируем" методом
void *p = (void *)(&nan_boxed_int);
int32_t i = *(int *)(p + 4);
Плюс-минус endianness. Ну или битовая арифметика по вкусу. Никакие инструкции для приведения double к int не нужны.
источник

AT

Alexander Tchitchigi... in Compiler Development
hazer_hazer
ну. внутри то да. но разве перед этим не придется забокшеный double в int преобразовать?
^
источник

AT

Alexander Tchitchigi... in Compiler Development
Berkus Decker
наверное инкрементальная сборка больше для быстрой итерации, а полная мощь оптимизации для финальной сборки? они немного противоречат друг другу
Performance engineering. 😞
источник

PS

Pavel Samolysov in Compiler Development
Dmitry Borisenkov
Инкрементальная сборка не в помощь?
На c++ это реально боль. Регистрируешь пасс в llvm и жди 2000 таргетов или pytorch где cmake вообще почти без библиотек, все собирается из огромного списка cpp-файлов, поменял один header и можешь идти обедать или даже ужинать.
источник

BD

Berkus Decker in Compiler Development
Alexander Tchitchigin
Performance engineering. 😞
ну это же  область где по определению надо страдать, не?
источник

h

hazer_hazer in Compiler Development
Alexander Tchitchigin
OK, NaN-boxing позволяет хранить (32-bit) integer в виде 2-complement последовательности бит прямо внутри "технически double" значения. Этот "скрытый int" мы "декодируем" методом
void *p = (void *)(&nan_boxed_int);
int32_t i = *(int *)(p + 4);
Плюс-минус endianness. Ну или битовая арифметика по вкусу. Никакие инструкции для приведения double к int не нужны.
А. Каст неправильно называть конверсией?)) Хмм
источник

AT

Alexander Tchitchigi... in Compiler Development
hazer_hazer
Кстати. Тут вот ещё такое дело. А NaN-Boxing вообще возможно реализовать с дистрибутивным байт-кодом? Просто туда же указатели записывают...
NaN-boxing в VM, а не в бат-коде. 🤷‍♀️
источник

PS

Pavel Samolysov in Compiler Development
Berkus Decker
без модулей, без цмака, без нинзи - одними автотулсами и ужасным precompiled header-ом
Да даже со смаком и ниньзей. Ещё вопрос как этот смак написан
источник

BD

Berkus Decker in Compiler Development
hazer_hazer
А. Каст неправильно называть конверсией?)) Хмм
reinterpret cast ничего не конвертирует
источник

DB

Dmitry Borisenkov in Compiler Development
Pavel Samolysov
На c++ это реально боль. Регистрируешь пасс в llvm и жди 2000 таргетов или pytorch где cmake вообще почти без библиотек, все собирается из огромного списка cpp-файлов, поменял один header и можешь идти обедать или даже ужинать.
-DBUILD_SHARED_LIBS=On -DLLVM_ENABLE_TARGETS="...", etc. и покушать не получится.
источник

BD

Berkus Decker in Compiler Development
Pavel Samolysov
Да даже со смаком и ниньзей. Ещё вопрос как этот смак написан
для плюсовых проектов самая большая боль это зависимости между хедерами - можно поменяв одну букву заставить пересобираться вообще весь проект полностью
источник

AT

Alexander Tchitchigi... in Compiler Development
hazer_hazer
А. Каст неправильно называть конверсией?)) Хмм
Я не понял, что Вы называете кастом, а что — конверсией?
источник

h

hazer_hazer in Compiler Development
Alexander Tchitchigin
NaN-boxing в VM, а не в бат-коде. 🤷‍♀️
Но я пока видел только боксинг при записи в констант пуле
источник

PS

Pavel Samolysov in Compiler Development
Dmitry Borisenkov
-DBUILD_SHARED_LIBS=On -DLLVM_ENABLE_TARGETS="...", etc. и покушать не получится.
А если весь проект одна огромная шареная либа собирается из obj list или как оно там в смаке?
источник

AT

Alexander Tchitchigi... in Compiler Development
hazer_hazer
Но я пока видел только боксинг при записи в констант пуле
И откуда у Вас там указатели берутся, если Вы его на этапе компиляции формируете?
источник