Вечер пятницы и время чилаута в области C++. На этот раз мы снова сыграем в увлекательную игру "кто из компиляторов прав".
Я вытащил этот пример из переписки со студентом более чем годичной давности и проверил на свежих gcc и clang. Они всё ещё не согласны друг с другом.
https://godbolt.org/z/fe14q8aoz
Это упражнение на чтение стандарта, так что ссылки на стандарт обязательны.
Как обычно — наливайте себе пивка с орешками или чая с булочкой и сначала попробуйте решить сами, никуда не подглядывая. Потом пролайкайте самые вдумчивые из ответов.
#questions
Я вытащил этот пример из переписки со студентом более чем годичной давности и проверил на свежих gcc и clang. Они всё ещё не согласны друг с другом.
https://godbolt.org/z/fe14q8aoz
Это упражнение на чтение стандарта, так что ссылки на стандарт обязательны.
Как обычно — наливайте себе пивка с орешками или чая с булочкой и сначала попробуйте решить сами, никуда не подглядывая. Потом пролайкайте самые вдумчивые из ответов.
#questions
godbolt.org
Compiler Explorer - C++
namespace A { struct SA{}; }
template <typename T> void buz(T &&a) {
bar(a);
}
template void buz(A::SA &&a); // POI
namespace A {
void bar(A::SA &) {}
}
template <typename T> void buz(T &&a) {
bar(a);
}
template void buz(A::SA &&a); // POI
namespace A {
void bar(A::SA &) {}
}
👍24❤6🔥2🐳2
На канале sysconf выложили первое сольное видео моей студентки и постоянной содокладчицы Анастасии Черниковой с детальным рассказом про llvm-exegesis и компиляторный бенчмаркинг.
https://www.youtube.com/watch?v=5Bsa1nBQRQU
00:00 Начало. RISC-V и LLVM
05:24 Компиляторный бенчмаркинг
09:14 Использование и возможности llvm-exegesis
18:03 История инструмента, его разнообразные применения и его путь в RISC-V
25:22 llvm-jit его устройство и использование: как отдельно так и внутри инструментов
29:56 Ответы на вопросы
35:00 Моё камео: ответ про соотношение llvm-mca и llvm-exegesis. Далее Настя продолжает отвечать сама.
Давайте поддержим Настю лайками и комментариями на youtube. У меня будет ещё несколько видео моих студентов с конференции sysconf, буду тут их анонсировать по мере выкладки.
P. S. И уже в эту субботу 2 августа мы с Владиком Беловым выступим на Zero Cost Conf, всех буду рад там увидеть.
#conference
https://www.youtube.com/watch?v=5Bsa1nBQRQU
00:00 Начало. RISC-V и LLVM
05:24 Компиляторный бенчмаркинг
09:14 Использование и возможности llvm-exegesis
18:03 История инструмента, его разнообразные применения и его путь в RISC-V
25:22 llvm-jit его устройство и использование: как отдельно так и внутри инструментов
29:56 Ответы на вопросы
35:00 Моё камео: ответ про соотношение llvm-mca и llvm-exegesis. Далее Настя продолжает отвечать сама.
Давайте поддержим Настю лайками и комментариями на youtube. У меня будет ещё несколько видео моих студентов с конференции sysconf, буду тут их анонсировать по мере выкладки.
P. S. И уже в эту субботу 2 августа мы с Владиком Беловым выступим на Zero Cost Conf, всех буду рад там увидеть.
#conference
YouTube
Анастасия Черникова — Компиляторный бенчмаркинг и JIT-компиляция
—
Скачать презентацию с сайта sysconf — https://jrg.su/eccdsR
Обсудили инструмент автоматического бенчмаркинга llvm-exegesis и то, какие проблемы он помогает решать.
Недавно появилась поддержка RISC-V backend: Анастасия рассказала про ее особенности, реализацию…
Скачать презентацию с сайта sysconf — https://jrg.su/eccdsR
Обсудили инструмент автоматического бенчмаркинга llvm-exegesis и то, какие проблемы он помогает решать.
Недавно появилась поддержка RISC-V backend: Анастасия рассказала про ее особенности, реализацию…
👍93❤31🔥13💩3🐳3👎1😁1😱1🕊1🙉1
Сделали совместно с Владиславом Беловым очень важный доклад на C++ Zero Cost Conf про restrict и вообще алиасинг. Тема оказалась неожиданно глубокая и очень ёмкая для компиляторных оптимизаций. И конечно таящая в себе кучу подводных камней. Мне кажется получилось очень классно. Для Владика это первое публичное выступление, давайте накидаем на ютуб лайков и комментариев.
00:00 Начало. Компилятор хочет вам помочь
03:00 Strict aliasing в C++ и его реализация в компиляторах
08:00 Выберите свой язык: производительность или безопасность? Есть пять вариантов...
09:36 Там где нет механизмов, там вас ждут опасности
13:42 Появление Владислава. Язык C как язык "пятого типа" в связи с наличием restrict.
17:40 Пугающий restrict.
20:55 Рестрикт на пальцах.
27:25 Четыре простых вопроса для вашего размышления.
32:26 А почему этого нет в C++ кроме GNU extension? Я возвращаюсь на сцену и пугаю людей.
37:45 Развитие передовой мысли: обзор серьёзных попыток стандартизации restrict в C++.
41:30 Call for action и вопросы.
https://www.youtube.com/watch?v=MQf98rOc1TE
Предложение Владика в стандарт C: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3659.pdf
На этот раз немного ухудшился монтаж: много где я начинаю говорить, видно меня но не слайд о котором я говорю. Презентацию можно скачать отдельно: https://github.com/tilir/cpp-masters/releases/download/zerocost2023/aliasing.pdf
#conference
00:00 Начало. Компилятор хочет вам помочь
03:00 Strict aliasing в C++ и его реализация в компиляторах
08:00 Выберите свой язык: производительность или безопасность? Есть пять вариантов...
09:36 Там где нет механизмов, там вас ждут опасности
13:42 Появление Владислава. Язык C как язык "пятого типа" в связи с наличием restrict.
17:40 Пугающий restrict.
20:55 Рестрикт на пальцах.
27:25 Четыре простых вопроса для вашего размышления.
32:26 А почему этого нет в C++ кроме GNU extension? Я возвращаюсь на сцену и пугаю людей.
37:45 Развитие передовой мысли: обзор серьёзных попыток стандартизации restrict в C++.
41:30 Call for action и вопросы.
https://www.youtube.com/watch?v=MQf98rOc1TE
Предложение Владика в стандарт C: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3659.pdf
На этот раз немного ухудшился монтаж: много где я начинаю говорить, видно меня но не слайд о котором я говорю. Презентацию можно скачать отдельно: https://github.com/tilir/cpp-masters/releases/download/zerocost2023/aliasing.pdf
#conference
YouTube
Алиасинг памяти в компиляторе и в вашей программе / Константин Владимиров и Владислав Белов
На C++ Zero Cost Conf 2025 выступили ребята из Syntacore: инженер-программист отдела компиляторов и инструментов разработки Владислав Белов и руководитель отдела Константин Владимиров. Они разобрали оптимизацию C++ на основе strict aliasing и restrict. А…
🔥56👍22❤6🍓3🙏1🤪1