LLVM
文章平均质量分 58
赤玉
专注于编译器
展开
-
LLVM中四种寄存器分配算法及开启选项
在LLVM编译器中,一共有四种寄存器分配算法:Basic Register Allocator、Fast Register Allocator、PBQP Register Allocator、Greedy Register Allocator。原创 2024-08-08 19:57:32 · 550 阅读 · 0 评论 -
LLVM编译器安装过程
DLLVM_ENABLE_PROJECTS:指定你要安装的子项目,clang和flang分别是编译c/c++和Fortran语言,如果你要使用PGO,还需要加上compiler-rt。DLLVM_TARGETS_TO_BUILD:指定你安装的LLVM要构建的目标后端,这里是指定只构建当前主机相匹配的目标架构,可选x86或RISCV等。点开tags,找到你想安装的版本,复制链接地址,我这里安装的是llvmorg-18.1.8。DCMAKE_INSTALL_PREFIX:指定你要安装的LLVM的路径。原创 2024-08-05 10:19:39 · 637 阅读 · 0 评论 -
LLVM编译Fortran语言的全过程
以一个给数组求和的程序来作为例子,编译器使用的是LLVM 18.1.8!原创 2024-08-04 12:55:36 · 459 阅读 · 0 评论 -
使用LLVM-COV查看C/C++代码覆盖率
代码覆盖率可以展示某行代码的执行频率,也能表现出分支跳转的执行情况,便于我们性能分析。LLVM-COV是LLVM编译器的一个工具,支持c/c++生成代码覆盖率,如果是fortran语言,则是需要用到gcc编译器的gcov工具才行,我的另一篇有写。会输出到控制台,可以选择重定向到一个txt文件便于阅读。执行之后会生成后缀为profraw的文件。选项,本次使用的编译器是LLVM17.在编译和链接时都加上。原创 2024-08-02 16:46:58 · 507 阅读 · 0 评论 -
LLVM编译器中PGO的用法
PGO是LLVM编译器的一种优化技术,它通过运行程序以收集性能数据(主要是基本块的执行频率),利用这些数据来指导编译器进行更有效的优化。这一步将会生成*.profraw的文件,其中包含了test程序的性能数据,根据不同的输入可以生成多个性能数据文件。此时生成的binary相比于不加此优化的binary应该有更好的性能。在编译之前首先要把得到的性能数据文件做合并(单个文件也要做转化),使用性能数据指导编译器进行第二次编译获得优化后的程序。,运行第一次编译的程序得到性能数据。编译选项进行第一次编译。原创 2024-08-03 10:17:49 · 434 阅读 · 0 评论