CLang LLVM 将 DAG DOT 文件写入当前目录

CLang LLVM writing DAG DOT files to current directory

我已经通过 运行 llc -view-dag-combine1-dags src.ll 成功生成了从 LLVM LLC 工具输出的 DAG DOT 文件,目标是我从 clang -S -emit-llvm src.c
生成的 IR 代码 但是它默认将输出 DOT 文件写入临时目录:

Writing '/var/folders/yr/bkw72rn11p7454jkmnnn7p780000gn/T/sunit-dag.foo:entry-b6411e.dot'... done. Trying 'open' program... Remember to erase graph file: /var/folders/yr/bkw72rn11p7454jkmnnn7p780000gn/T/sunit-dag.foo:entry-b6411e.dot

我已经尝试了太多变通方法来将文件获取到我的当前目录,即使是尝试列出、排序和复制此临时目录中最新修改的文​​件,但是 运行 一个生成命令可能会生成许多文件(未知数量的文件)所以我的临时解决方案失败了!

问题:
如何将这些文件重定向到我的当前目录?
我会欢迎任何答案,甚至是解决方法。

注意: Clang、LLVM、LLC 版本:3.7

提前致谢。

简答:不能。

长答案:lib/Support/GraphWriter.cpp 中有 llvm::createGraphFilename() 例程,它负责图形文件名并无条件地创建临时文件。因此,您需要更改此函数并重新编译 LLVM 以获得所需的功能。