0

在尝试SelectionDag使用 LLVM(从启用调试模式的源构建)查看在指令选择阶段生成的节点时,我正在使用以下命令,该命令未创建 Graphviz DOT 文件。

llc -view-isel-dags sum.bc

相反,它正在创建sum.s文件。我在这里缺少什么吗?

总和.c

int sum(int x, int y) {
  return x+y;
}

总和.bc

$ clang -emit-llvm sum.c -c -o sum.bc

LLVM 信息

$ llc -help-hidden | grep 'view-isel' -view-isel-dags - Pop up a window to show isel dags as they are selected

$ llvm-config --build-mode
Debug
4

1 回答 1

2

猜猜问题出在默认启用的快速指令选择上。

$ llc -debug sum.ll

在函数 sum 上跳过传递“X86 DAG->DAG 指令选择”

更改 Function sum Before: -O2 的优化级别;之后:-O0

FastISel 已启用

禁用 fastIsel 解决了这个问题。

$ llc -fast-isel=false -view-dag-combine1-dags sum.ll

于 2018-08-30T10:42:31.890 回答