如何使用 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
重新编译)
我试过了
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
重新编译)