Size: a a a

2021 March 05

AN

Alex Noname in rust_offtopic
там же оно делает проверки для выхода за границе в дебаге
источник

RB

Roman Blog in rust_offtopic
ну проверки там взялись именно для того, чтобы тебя запутать
источник

RB

Roman Blog in rust_offtopic
потому как херня не позволяет дампить начальный ir
источник

D

Dima in rust_offtopic
Alex Noname
что это за говно оно родило
_3 = <T as From<u8>>::from(const 2_u8) -> [return: bb1, unwind: bb5]; // scope 0 at src/main.rs:4:16: 4:26
не знаю что за говно оно родило, и мне на данный момент это не очень интересно, потому что это не моя проблема
источник

AN

Alex Noname in rust_offtopic
_3 = <i32 as From<u8>>::from(const 42_u8) -> bb1;
источник

AN

Alex Noname in rust_offtopic
vs
источник

AN

Alex Noname in rust_offtopic
3 = <T as From<u8>>::from(const 42_u8) -> [return: bb1, unwind: bb5];
источник

RB

Roman Blog in rust_offtopic
Stanislav Popov
лень )
В общем, забудь про оптимизации на этом мусоре - это всё обречено. Всё, что у тебя есть - это llvm. Поэтому твоя задача одна - не прятать от него код. Посмотри на раст-сектантов - они везде обмазываются inline, чтобы скрыть свой позор.
источник

RB

Roman Blog in rust_offtopic
Alex Noname
_3 = <i32 as From<u8>>::from(const 42_u8) -> bb1;
ну это до того момента, как ты там не вызываешь произвольную функцию
источник

RB

Roman Blog in rust_offtopic
внутри
источник

AN

Alex Noname in rust_offtopic
Roman Blog
ну это до того момента, как ты там не вызываешь произвольную функцию
ну да я же и сравнил дженерик с ручным типом
источник

AN

Alex Noname in rust_offtopic
а подожди
источник

НТ

Николай Тихонов... in rust_offtopic
Alex Noname
3 = <T as From<u8>>::from(const 42_u8) -> [return: bb1, unwind: bb5];
че за гавно
источник

AN

Alex Noname in rust_offtopic
я понял. тут нет noexecpt
источник

AN

Alex Noname in rust_offtopic
🤦‍♂️
источник

НТ

Николай Тихонов... in rust_offtopic
(uint8_t)motherfucker
источник

НТ

Николай Тихонов... in rust_offtopic
и все
источник

AN

Alex Noname in rust_offtopic
т.е. только после инлайно можно что то делать
источник

RB

Roman Blog in rust_offtopic
Roman Blog
В общем, забудь про оптимизации на этом мусоре - это всё обречено. Всё, что у тебя есть - это llvm. Поэтому твоя задача одна - не прятать от него код. Посмотри на раст-сектантов - они везде обмазываются inline, чтобы скрыть свой позор.
Я не помню где об этом писал. Всё что нашёл - https://habr.com/ru/post/455379/#comment_20264405 - там есть пример https://godbolt.org/z/EQnbPF
источник

RB

Roman Blog in rust_offtopic
как видишь - оно выполняет цикл у которого есть сайд-эффект. Этот сайд-эффект оно может вынести из цикла, посчитать и далее он находится под If и оно может убрать if
источник