Ser*_*nik 5 c++ gcc compiler-optimization
我正在观看一个旧视频Jason Turner:实用表演实践。
一开始就有一个 GCC 5.1 中优化代码的示例:
#include <string>
int main() {
return std::string("a").size();
}
Run Code Online (Sandbox Code Playgroud)
编译为“无”:
main:
mov eax, 1
ret
Run Code Online (Sandbox Code Playgroud)
然而,我很惊讶地看到 GCC 13.2 的另一个输出:
main:
sub rsp, 40
lea rax, [rsp+16]
mov rdi, rsp
mov QWORD PTR [rsp+8], 1
mov QWORD PTR [rsp], rax
mov eax, 97
mov WORD PTR [rsp+16], ax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()
mov eax, 1
add rsp, 40
ret
Run Code Online (Sandbox Code Playgroud)
https://godbolt.org/z/45PWox4Gb
std::string.size()这是 GCC自 5.1(根据评论是 12.3)以来一直无法持续传播的错误吗?-std=它过去常常在没有参数的情况下做到这一点-O3。新版本需要-std=c++20提供相同的输出。
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |