LLVM IR 基本块有意义的名称

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

我正在尝试为 LLVM IR 中的基本块起一个“有意义的名称”。也就是说,我希望这个循环头的名称不是 6,而是类似:

loop.header.6
。我很确定以前的
llvm/opt
版本有这个选项,但我似乎在
llvm-13
中找不到它。实际的源代码可能无关紧要,但为了完整性,下面给出
$ sed -n "18,23p" main.ll
6:                                                ; preds = %27, %1
  %7 = load i32, i32* %4, align 4
  %8 = load i32, i32* %3, align 4
  %9 = icmp slt i32 %7, %8
  br i1 %9, label %10, label %30

源代码+编译标志:

$ cat ~/main.cpp #include <stdio.h> bool isPrime(int p) { for (int i=2;i<p;i++) for (int j=2;j<p;j++) if (i*j == p) return 0; return 1; } int main(int argc, char **argv) { printf("%d\n", isPrime(7)); } $ ./clang -O0 -c -emit-llvm ~/main.cpp -o main.bc $ ./llvm-dis ./main.bc -o main.ll

	
c++ clang llvm
2个回答
2
投票
clang

) 添加。

请注意,经过优化等后,名称可能会产生误导。


0
投票

opt -passes=metarenamer test.ll -o test-renamed.ll -S

如果您不喜欢用数字命名的基本块,这将产生更具可读性的 IR。

© www.soinside.com 2019 - 2024. All rights reserved.