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 以获得所需的功能。
我已经通过 运行 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 以获得所需的功能。