将GHC与LLVM 3.2一起使用

将GHC与LLVM 3.2一起使用,llvm,ghc,Llvm,Ghc,我已经安装了LLVM/opt-3.2,我刚刚从Ubuntu软件包中安装了GHC 7.6.2。但是,当我尝试使用-fllvm-v3编译ghc时,我得到了错误: *** CodeGen: *** LlVM CodeGen: Error (figuring out LLVM version): fd:10: hGetLine: end of file <no location info>: Warning: Couldn't figure out LLVM version!

我已经安装了LLVM/opt-3.2,我刚刚从Ubuntu软件包中安装了GHC 7.6.2。但是,当我尝试使用-fllvm-v3编译ghc时,我得到了错误:

*** CodeGen:
*** LlVM CodeGen:
Error (figuring out LLVM version): fd:10: hGetLine: end of file

<no location info>:
    Warning: Couldn't figure out LLVM version!
             Make sure you have installed LLVM
*** LLVM Optimiser:
'opt-3.0' '/tmp/ghc17812_0/ghc17812_0.ll' '-o' '/tmp/ghc17812_0/ghc17812_0.bc' '-mem2reg' '--enable-tbaa=true'
*** Deleting temp files:
...
ghc: could not execute: opt-3.0
***CodeGen:
***LlVM代码源:
错误(计算LLVM版本):fd:10:hGetLine:文件结束
:
警告:无法确定LLVM版本!
确保已安装LLVM
***LLVM优化程序:
“opt-3.0”“/tmp/ghc17812_0/ghc17812_0.ll”“-o”“/tmp/ghc17812_0/ghc17812_0.bc”“-mem2reg”“-启用tbaa=true”
***删除临时文件:
...
ghc:无法执行:opt-3.0

opt
在我的路径中,但版本是3.2,而不是3.0。如果不是hackage llvm包让GHC寻找正确版本的opt,那是什么

这方面似乎有两个相关的ghc TRAC:和

在后一个trac中,用户提到了可以找到的选项“-pgmlo”和“-pgmlc”

我能够通过在GHC选项列表中添加“-pgmlo opt-pgmlc llc”来解决我的问题

或者,您可以编辑
/usr/lib/ghc/settings
,并确保其具有以下行:

("LLVM llc command", "llc"),
("LLVM opt command", "opt")

我仍然想知道为什么GHC会在默认情况下尝试查找opt-3.0。

只是想说明这仍然是一件事。OSX的说明:

> brew tap homebrew/dupes
> brew install homebrew/versions/llvm34
并在my
中保留别名。bashrc

alias ghc-llvm="ghc -O2 -fllvm -pgmlo opt-3.4 -pgmlc llc-3.4"
确保获得
llvm34
而不是
llvm35

我还发现,你真的想通过LLVM的-O2。如果没有它,速度会非常慢。

在.bashrc中添加一些东西到底是什么意思?从什么版本的OS X开始?通过运行ps找出您正在使用的shell,然后阅读该shell的手册页,了解它在启动时运行的脚本。对于大多数人来说,shell是bash,它运行$HOME/.bashrc和其他几个脚本,您可以使用它们来定制您的体验。谢谢。据我所知,这是对的,但我的实际问题是: