如何使用 GHC 编译器将 *.hs 编译成 llvm ir (*.ll)?

How to compile *.hs to llvm ir (*.ll) using GHC compiler?

我试过了

ghc -fllvm -pgmlo -pgmlc -ddump-llvm src.hs

ghc -fllvm -pgmlo -pgmlc -keep-llvm-files src.hs

opt 和 llc(3.5.1 版本)在 PATH

但是我执行命令后没有找到任何llvm ir。

1) -pgm[letter] - 如果您只编译成 C 代码,请使用此命令(在您的情况下,如果您在没有 -fllvm 标志的情况下进行编译)

2) -keep-llvm-files - 在当前目录中查找 .ll 文件,否则尝试在 /tmp 目录中查找它们(我在某处看到了这个错误)

3) ghc 仅适用于 llvm 3.5

可能 GHC 没有重新编译您的程序,因为自从您上次 运行 GHC 以来程序没有改变。这似乎是可能的,因为 -pgmlo -pgmlc 意味着 "use -pgmlc as the LLVM optimizer" 这是行不通的。刚刚 运行

ghc -fllvm -keep-llvm-files -fforce-recomp src.hs

(或者手动修改src.hs重新编译)