[devel] I: LTO in %optflags by default

Andrey Savchenko bircoph на altlinux.org
Чт Авг 26 09:39:30 MSK 2021


On Thu, 26 Aug 2021 03:04:26 +0300 Dmitry V. Levin wrote:
> On Thu, Aug 26, 2021 at 02:54:54AM +0300, Andrey Savchenko wrote:
> > On Thu, 26 Aug 2021 02:19:29 +0300 Dmitry V. Levin wrote:
> > > On Thu, Aug 26, 2021 at 02:07:49AM +0300, Aleksey Novodvorsky wrote:
> > > > чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv на altlinux.org>:
> > > > >
> > > > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > > > > Hi,
> > > > > >
> > > > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > > >
> > > > > Поскольку мы в теме, нам это казалось очевидным и не требующим
> > > > > дополнительных пояснений, но, поскольку это ещё не всем очевидно,
> > > > > поясню, из каких соображений мы исходили:
> > > > >
> > > > > - LTO - это безусловно полезная оптимизация, об этом много написано,
> > > > >   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
> > > > >
> > > > > - LTO - это уже широко распространённая оптимизация, её уже включили в
> > > > >   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
> > > > >   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
> > > > >   уже можно пользоваться;
> > > > >
> > > > > - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
> > > > >   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
> > > > >   дороже;
> > > > >
> > > > > - После бранчевания мы в начале нового цикла разработки, самое время
> > > > >   включить LTO.
> > > > >
> > > > > - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
> > > > >   вызванной включением LTO, тривиально.
> > > > >
> > > > > - Выключить LTO в пакете в случае необходимости - тривиально.
> > > > >
> > > > > [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
> > > > > [2] https://wiki.ubuntu.com/ToolChain/LTO
> > > > 
> > > > Это хорошо, но все ли наши архитектуры поддерживают LTO?
> > > 
> > > Конечно, LTO поддерживается на всех наших архитектурах.
> > 
> > Если мы говорим про все архитектуры, включая вторичные
> > сборочницы, то нет, на e2k не поддерживается. -flto игнорируется,
> > а вот более продвинутые опции приводят к ошибке:
> > 
> > $ gcc -flto -ffat-lto-objects test.c -o test
> > lcc: error: unrecognized command line option "-ffat-lto-objects"
> 
> А почему там -flto игнорируется, а -ffat-lto-objects не игнорируется?
> Это непоследовательно.

Потому что они обычно игнорируют те опции, которые попадаются на
практике. Кроме того, -ffat-lto-objects появилась существенно позже
-flto. Разумеется, я запрошу игнорирование и этой опции, но это
займёт время.

> Впрочем, мы ожидали чего-то подобного со стороны lcc, поэтому наша
> реализация это учитывает.  Если все будут следовать нашим рекомендациям
> про %optflags_lto, то на e2k это практически не отразится, там просто
> не станут включать %optflags_lto в %optflags.

Да. Но кто-нибудь может просто черезю %add_optflags добавить. Не все
полностью читают devel на регулярной основе. Нужно как минимум на
вики добавить.

Best regards,
Andrew Savchenko
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20210826/3c42126d/attachment.bin>


Подробная информация о списке рассылки Devel