Size: a a a

Compiler Development

2019 September 28

Dv

Dr. Friedrich von Never in Compiler Development
EgorBo
в неткоре даже отвергли мой ПР на фолдинг констант
Вот блин, из-за overflow?
источник

AZ

Alexander Zaitsev in Compiler Development
а что по спецификации должно происходить во время overflow?
источник

E

EgorBo in Compiler Development
Dr. Friedrich von Never
Вот блин, из-за overflow?
ага
источник

Dv

Dr. Friedrich von Never in Compiler Development
Alexander Zaitsev
а что по спецификации должно происходить во время overflow?
Ага, то же хотел спросить
источник

E

EgorBo in Compiler Development
Alexander Zaitsev
а что по спецификации должно происходить во время overflow?
зависит, если контекст обернут в checked { } где либо то x * 2 / 2 может рвануть исключением.
если не обернут, то все равно x * 2 / 2 где х >= int.MaxValue/2 — это будут неэквивалентные числа
источник

AZ

Alexander Zaitsev in Compiler Development
что такое "неэквивалентные числа"?
источник

E

EgorBo in Compiler Development
неравные
источник

AZ

Alexander Zaitsev in Compiler Development
а почему?
источник

E

EgorBo in Compiler Development
всмысле почему? :) х * 2 - оверфлоу же
источник

AZ

Alexander Zaitsev in Compiler Development
если я правильно всё понимаю, то правильно, что отклонили
источник

E

EgorBo in Compiler Development
ну в теории правильно да
источник

AZ

Alexander Zaitsev in Compiler Development
EgorBo
всмысле почему? :) х * 2 - оверфлоу же
ну блин. берешь, делаешь UB и всё :)
источник

AH

Ayrat Hudaygulov in Compiler Development
Мрак. Но подозреваю что починив здесь мифический оверфлоу через фолд в константу в каком-то допотопном банке рванет. Но с другой стороны, допотопный банк не обновляется поди
источник

E

EgorBo in Compiler Development
просто тут как с Fast-Math, многим юзкейсам пофиг
источник

E

EgorBo in Compiler Development
Ayrat Hudaygulov
Мрак. Но подозреваю что починив здесь мифический оверфлоу через фолд в константу в каком-то допотопном банке рванет. Но с другой стороны, допотопный банк не обновляется поди
да, бизнес не будет рад таким оптимизациям
источник

E

EgorBo in Compiler Development
но мы идем к тому, что в .NET 5 у нас будет переключатель рантаймов и одним щелчком можно переключится на LLVM :D а там хоть фаст мас, хоть оверлфоу
источник

Dv

Dr. Friedrich von Never in Compiler Development
EgorBo
зависит, если контекст обернут в checked { } где либо то x * 2 / 2 может рвануть исключением.
если не обернут, то все равно x * 2 / 2 где х >= int.MaxValue/2 — это будут неэквивалентные числа
Ну, мы всегда статически знаем во время компиляции, где чекед, а где нет.
источник

E

EgorBo in Compiler Development
Dr. Friedrich von Never
Ну, мы всегда статически знаем во время компиляции, где чекед, а где нет.
ну чекед - это так, не беда особо
источник

Dv

Dr. Friedrich von Never in Compiler Development
ок
источник

E

EgorBo in Compiler Development
хотя с другой стороны где-то в спеке CIL написано что нельзя применять оптимизации, которые чинят код
источник