这是Clang 6.0随附的Coroutines TS实施中的错误吗?

时间:2018-09-21 12:49:12

标签: c++ clang implementation c++-coroutine

以下是可重现的示例:

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

这是Clang 6.0附带的Coroutines TS实施中的错误吗?

0 个答案:

没有答案