【问题标题】:Dot file not genearting for -view-isel-dags option未为 -view-isle-days 选项生成点文件
【发布时间】:2018-08-28 10:16:03
【问题描述】:

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

llc -view-isel-dags sum.bc

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

sum.c

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

sum.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

【问题讨论】:

  • 通常-view 选项会在/tmp 中创建一个DOT 文件并直接在GraphViz 查看器中打开它。因此,您可以在/tmp 下找到.dot 文件。查看SelectionDAGISel.cpp 它不提供仅创建.dot 文件的选项。 .sllc 命令的产物,因为它将 IR 降低到特定程序集。
  • 感谢您的快速回复。在/tmp 下找不到.dot 文件。
  • 发出该命令时,我得到Writing '/tmp/dag.compute_rhs-22fa16.dot'... done. 输出行。你没有得到类似的东西吗?
  • 不,没有任何东西打印到终端。
  • llc -help-hidden | grep 'view-isel' 是否返回任何内容?另外,llvm-config --build-mode 打印什么?您能否使用此信息修改您的问题,以避免在 cmets 中进行长时间讨论?

标签: compiler-construction llvm graphviz dot llc


【解决方案1】:

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

$ llc -debug sum.ll

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

更改函数 sum 的优化级别 之前:-O2 ;之后:-O0

FastISel 已启用

禁用 fastIsel 解决了这个问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2015-02-26
    相关资源
    最近更新 更多