Это ошибка в реализации Coroutines TS, поставляемой с Clang 6.0? - PullRequest
0 голосов
/ 21 сентября 2018

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

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?

...