相关疑难解决方法(0)

clang 试图优化这个简单的递归算法是什么?

在写下这个问题的答案时:Using variable vs. using number我用 -O3 运行了 clang x86 9.0.0/trunk 以查看它是否可以对这个简单代码进行尾调用优化:

int faculty1 (const unsigned int n) {
    return n == 1 ? n : n * faculty1(n - 1);
}
Run Code Online (Sandbox Code Playgroud)

clang 不仅失败了,而且完全变成了香蕉并给了我这个:

神箭

.LCPI0_0:
        .long   0                       # 0x0
        .long   4294967295              # 0xffffffff
        .long   4294967294              # 0xfffffffe
        .long   4294967293              # 0xfffffffd
.LCPI0_1:
        .long   1                       # 0x1
        .long   1                       # 0x1
        .long   1                       # 0x1
        .long   1                       # 0x1
.LCPI0_2:
        .long   4294967292              # 0xfffffffc
        .long   4294967292              # 0xfffffffc
        .long …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly clang

7
推荐指数
1
解决办法
243
查看次数

标签 统计

assembly ×1

c ×1

clang ×1

x86 ×1