Это ошибка в реализации Coroutines TS, поставляемой с Clang 6.0?

Ниже приведен воспроизводимый пример:

AnyFutureWithInnerPromise<void> f()
{
    char arr[16]; // crash here due to segmentation fault
    co_return;
}

int main()
{
    f().get();
}

GDB говорит мне, аварийная строка:

movaps XMMWORD PTR [rcx+0xb8],xmm0 

Причина в том, что movaps требует, чтобы его операнды были выровнены по 128 битам, но XMMWORD PTR [rcx+0xb8] это не тот случай.

Если я изменю код следующим образом:

AnyFutureWithInnerPromise<void> f()
{
    std::uint64_t n; // add 8-bytes to make arr 128-bit aligned
    char arr[16]; // ok now        
    co_return;
}

Новая инструкция по сборке:

movaps XMMWORD PTR [rcx+0xc0],xmm0

Это ошибка в реализации Coroutines TS, поставляемой с Clang 6.0?

0 ответов

Другие вопросы по тегам