Size: a a a

2020 September 28

AF

Aidar Fattakhov in pro.cxx
🍞
источник

m

magras in pro.cxx
Да, кажется, теперь понял о чем речь шла.
bool await_ready() {return false;}


Без false корутина не засаспендится.
источник

V

Vyacheslav in pro.cxx
зачем тут
shr     eax, 31
add     eax, edi

?
Это какая-то защита от UB?

https://godbolt.org/z/Wxcx1x
источник

P

PRoSToC0der in pro.cxx
источник

P

PRoSToC0der in pro.cxx
использование знаковых чисел там, где логически можно обойтись беззнаковыми, не zero-cost))
источник

P

PRoSToC0der in pro.cxx
источник

V

Vyacheslav in pro.cxx
но даже если его попросить округлять к меньшему для отрицательных, то он всё равно не округляет
https://godbolt.org/z/bzf4ra

За assume спасибо, буду иметь ввиду
источник

V

Vyacheslav in pro.cxx
в этом случае теоретически gcc мог бы и shr воткнуть
источник

P

PRoSToC0der in pro.cxx
Vyacheslav
в этом случае теоретически gcc мог бы и shr воткнуть
кстати да, странно
источник

SS

Sergey Sobolev in pro.cxx
Марк ☢️ Коренберг
А кто-нибудь юзает svace ?
что именно интересует?
источник

AP

Antony Polukhin in pro.cxx
Mikail Bagishov
А что вы можете сказать про такую функцию?

template<typename T>
void launder(T* object) {
   // view to possibly uninit memory
   auto data = reinterpret_cast<byte*>(object);
   // create temporary file
   int fd = memfd_create();
   // write
   write(fd, data, sizeof(T));
   // seek to file beginning
   seek(fd, 0);
   // read data back
   read(fd, data, sizeof(T));
   // PROFIT: all bytes in object are now initialized
}
Функция не обрабатывает ошибки при работе с системными вызовами, read не начинает lifetime объекта кажется даже в C++20, не каждый инициализированный объект можно побайтово перезаписывать (например объекты драйверов устройств)

1) происходит UB для не тривиально копируемых типов
2) а смысл, если он содержит тот же мусор, что и в начале?
3) поломаются программы использующие mmap, shared memory или dma, сломаются программы с суровыми ограничениями на количество дескрипторов или на системные вязовы
источник

ПК

Побитый Кирпич... in pro.cxx
Antony Polukhin
Функция не обрабатывает ошибки при работе с системными вызовами, read не начинает lifetime объекта кажется даже в C++20, не каждый инициализированный объект можно побайтово перезаписывать (например объекты драйверов устройств)

1) происходит UB для не тривиально копируемых типов
2) а смысл, если он содержит тот же мусор, что и в начале?
3) поломаются программы использующие mmap, shared memory или dma, сломаются программы с суровыми ограничениями на количество дескрипторов или на системные вязовы
Там же impl defined кто начинает, кто нет. Вот пускай разрабы компиляторов скажут, что все эти функции api системы начинают лайфтайм
источник

V

Vyacheslav in pro.cxx
Tail call optimization стандартом не затрагивается, так ведь?
источник

AP

Antony Polukhin in pro.cxx
Vyacheslav
Tail call optimization стандартом не затрагивается, так ведь?
Неа, а что?
источник

V

Vyacheslav in pro.cxx
Antony Polukhin
Неа, а что?
А жаль)
источник

V

Vyacheslav in pro.cxx
Тема плохо проработанная.
источник

V

Vyacheslav in pro.cxx
Vyacheslav
но даже если его попросить округлять к меньшему для отрицательных, то он всё равно не округляет
https://godbolt.org/z/bzf4ra

За assume спасибо, буду иметь ввиду
Хотя, вот такие косяки на пустом месте - имхо, более важны
источник

V

Vyacheslav in pro.cxx
Или вот ещё:
источник

V

Vyacheslav in pro.cxx
Переслано от Vyacheslav
+4 лишних команды. Ну хоть не цикл — на том спасибо
https://godbolt.org/z/v9a7x4
источник

OZ

Olzhas Zhumabek in pro.cxx
Vyacheslav
Тема плохо проработанная.
в С++ много плохо проработанных тем, а человеческих ресурсов маловато. Думаю если текущие имплементации нормально оптимизируют, мне кажется это не такая большая проблема. Так как и то что тривиальные типы должны быть созданы через placement new внутри всяких std::vector и прочего, но мало кто это делает
источник