GCC 优化器从 5.1 开始就被破坏了吗?

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

我正在看一个旧视频Jason Turner:实用表演实践

一开始就有一个 GCC 5.1 中优化代码的示例:

#include <string>

int main() {
    return std::string("a").size();
}

编译为“无”:

main:
        mov     eax, 1
        ret

但是,我很惊讶地看到 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

https://godbolt.org/z/45PWox4Gb

优化器坏了吗?

c++ gcc compiler-optimization
© www.soinside.com 2019 - 2024. All rights reserved.