最新编译器对 C++ 协程的 HALO 支持

问题描述 投票:0回答:1

我读过文章 使用具有零动态分配的协程 TS,作者坚持认为 HALO 适用于协程,并且他提供了一个 godbolt 链接,其中显示了使用 clang 5.0 应用的生成器示例 HALO。

但是,使用最新版本的 clang(godbolt 上的 clang 13.0.1),我可以看到对operator new 的调用。事实上,我找不到任何最新的编译器支持协程的 HALO。我已经在 MSVC 2019/2022、GCC 11.2 上进行了测试,所有程序集都显示对操作符 new 的调用。

我真的可以像作者在那篇文章中所坚持的那样依赖 HALO 吗?例如,即使在 C++17 将复制省略纳入标准之前,RVO 也相当可靠。我的协程应该期待什么 HALO?

c++ optimization coroutine
1个回答
3
投票

原始示例使用 -O3 进行 HALO,但不使用 -O2。

看起来光环确实发生了,但取决于额外的优化过程。

我所做的就是将其更新为 C++20 和 stdx -> std。

https://godbolt.org/z/qrvWo68Yz

© www.soinside.com 2019 - 2024. All rights reserved.