Size: a a a

Compiler Development

2020 January 22

MS

Mikola Summer Duck in Compiler Development
Кстати про рестрикт.
источник

E

EgorBo in Compiler Development
вырожденный кейс
источник

E

EgorBo in Compiler Development
никто не аллоцирует на месте два массива чтобы сделать меммув :)
источник

MS

Mikola Summer Duck in Compiler Development
А какая семантика рестрикта когда массивы не пересекаются, но конец одного и начало другого находятся непосредственно рядом в памяти и граница попадает на середину слова?
источник

BD

Berkus Decker in Compiler Development
Алексей
то есть одного рестрикта должно быть достаточно
By adding this type qualifier, a programmer hints to the compiler that for the lifetime of the pointer, only the pointer itself or a value directly derived from it (such as pointer + 1) will be used to access the object to which it points.

test(ptr, ptr + 1, 100) в принципе удовлетворяет одному рестрикту, но делать memcpy там нельзя
источник

А

Алексей in Compiler Development
почему?
источник

BD

Berkus Decker in Compiler Development
EgorBo
никто не аллоцирует на месте два массива чтобы сделать меммув :)
ну сделай другой массив, вопрос в том что можно на месте доказать что они не алиасятся
источник

А

Алексей in Compiler Development
аааа
источник

BD

Berkus Decker in Compiler Development
потому что получится фигня )
источник

MS

Mikola Summer Duck in Compiler Development
Mikola Summer Duck
А какая семантика рестрикта когда массивы не пересекаются, но конец одного и начало другого находятся непосредственно рядом в памяти и граница попадает на середину слова?
Значит ли это что я не могу, например, наивно оптимизировать функцию сравнения двух строк одинакового размера кратного размеру регистра загружая кучки байтов в инт и сравнивая инты, не обрабатывая при этом особым образом края массивов?
источник

BD

Berkus Decker in Compiler Development
Mikola Summer Duck
Значит ли это что я не могу, например, наивно оптимизировать функцию сравнения двух строк одинакового размера кратного размеру регистра загружая кучки байтов в инт и сравнивая инты, не обрабатывая при этом особым образом края массивов?
ты в любом случае так не можешь оптимизировать, для краев всегда спецобработка
источник

MS

Mikola Summer Duck in Compiler Development
Berkus Decker
ты в любом случае так не можешь оптимизировать, для краев всегда спецобработка
Именно поэтому, или почему-то ещё?
источник

BD

Berkus Decker in Compiler Development
нет, не поэтому
источник

BD

Berkus Decker in Compiler Development
рестрикт тут не причем особо
источник

BD

Berkus Decker in Compiler Development
https://cellperformance.beyond3d.com/articles/2006/05/demystifying-the-restrict-keyword.html в педовикии вот интересные ссылки есть
источник

E

EgorBo in Compiler Development
а ссылку на верону уже постили тут? вот про нововведения в овнершипе: https://github.com/microsoft/verona/blob/master/docs/explore.md#concurrent-ownership
источник

E

EgorBo in Compiler Development
(это тот самый "раст" от мс)
источник

BD

Berkus Decker in Compiler Development
да, про with() уже писали
источник

BD

Berkus Decker in Compiler Development
ой, то есть when()
источник

TS

Timur Safin in Compiler Development
EgorBo
какая-то опасная оптимизация тогда, юзер намеренно выбрал безопасный memmove а тут привет
https://sourceware.org/bugzilla/show_bug.cgi?id=12518 memcpy и memmove вроде бы синонимы в glibc
источник