Size: a a a

Compiler Development

2020 January 06

VK

Vladimir Kazanov in Compiler Development
лично я не был впечатлен 😊
источник

E

EgorBo in Compiler Development
а может кто в Go или Rust проверить - удаляются ли баунд чеки для конструкций вида

array[unknwonIndex & 10] // и % 10 (unsigned)

если известно что в массиве больше 10 элементов
источник

AZ

Alexander Zaitsev in Compiler Development
Vladimir Kazanov
лично я не был впечатлен 😊
Да, я видел. И я тоже не впечатлился
источник

M

MaxGraey in Compiler Development
EgorBo
а может кто в Go или Rust проверить - удаляются ли баунд чеки для конструкций вида

array[unknwonIndex & 10] // и % 10 (unsigned)

если известно что в массиве больше 10 элементов
В Rust удаляются
https://godbolt.org/z/C-nCD3
источник

E

EgorBo in Compiler Development
отлично, спасибо
источник

AT

Alexander Tchitchigin in Compiler Development
Ага, если размер статически известен, по крайней мере: https://godbolt.org/z/BFX5wC
источник

AT

Alexander Tchitchigin in Compiler Development
Надо ещё с `if`ами проверить...
источник

M

MaxGraey in Compiler Development
Ну да, там как раз условие и стояло про вычисляемый размер на этапе компиляции
источник

E

EgorBo in Compiler Development
MaxGraey
Ну да, там как раз условие и стояло про вычисляемый размер на этапе компиляции
это условие было для упрощения, в общем случае должно работать и для неизвестных
источник

M

MaxGraey in Compiler Development
Alexander Tchitchigin
Надо ещё с `if`ами проверить...
Лучше в PM. Например в v8 знаю есть такая оптимизация. Если switch (c & 3) { case 0..10: … } то все ветки после 2й выбрасываются
источник

AT

Alexander Tchitchigin in Compiler Development
EgorBo
это условие было для упрощения, в общем случае должно работать и для неизвестных
Чё-то не работает: https://godbolt.org/z/x6bjot
Или я не так пишу?
источник

E

EgorBo in Compiler Development
да, должно работать
источник

M

MaxGraey in Compiler Development
EgorBo
это условие было для упрощения, в общем случае должно работать и для неизвестных
Это если будет Value range analysis. А для этого нужно хотя бы иметь начальные условия
источник

E

EgorBo in Compiler Development
MaxGraey
Это если будет Value range analysis. А для этого нужно хотя бы иметь начальные условия
так они есть же
источник

E

EgorBo in Compiler Development
что массив не менее 10 элементов
источник

E

EgorBo in Compiler Development
и что индекс менее 10
источник

M

MaxGraey in Compiler Development
EgorBo
так они есть же
Где эти условия?)
источник

E

EgorBo in Compiler Development
MaxGraey
Где эти условия?)
источник

AT

Alexander Tchitchigin in Compiler Development
MaxGraey
Где эти условия?)
Я if вписал! 😃
источник

M

MaxGraey in Compiler Development
Alexander Tchitchigin
Я if вписал! 😃
Ага, вижу) Да, видимо здесь им есть куда еще расти)
источник