LLVM不使用机器指令

 有颜色的狼的天空 发布于 2023-02-11 15:22

我正在测试LLVM与gcc生成的代码质量

我有一个像这样的小程序

#include
double mysqrt(double a){
    return sqrt(a);
}

int main()
{
    mysqrt(0.1);
    return 1;
}

克朗正在散发出来

mysqrt:                                 # @mysqrt
# BB#0:                                 # %entry
jmp sqrt                    # TAILCALL

这意味着它正在调用sqrt函数

gcc正在发光

mysqrt:
.LFB25:
.cfi_startproc
subl    $28, %esp
.cfi_def_cfa_offset 32
fldl    32(%esp)
fld %st(0)
fsqrt
fucomi  %st(0), %st

这意味着它使用直接机器指令fsqrt(我想它比调用函数要快得多).这是针对具有O3级优化的X86机器完成的.有人知道为什么LLVM正在调用函数而不是使用机器指令吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有