2013-10-13 12 views
7

Ich habe LLVM/opt-3.2 zusammen mit llvm-3.2.0.2 installiert, und ich habe gerade GHC 7.6.2 aus dem Ubuntu-Paket installiert. Allerdings, wenn ich versuche ghc mit -fllvm -v3 zu kompilieren, erhalte ich die Fehlermeldung:Verwenden von GHC mit LLVM 3.2

*** 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 

opt in meinem Weg, aber die Version 3.2, nicht 3.0. Wenn es nicht das Paket hackage llvm ist, das GHC nach der richtigen Version von opt sucht, was ist das?

Antwort

5

Es scheint zwei relevante ghc-tracs dafür zu geben: one und two.

In letzterem trac erwähnt ein Benutzer die Optionen "-pgmlo" und "-pgmlc", die here gefunden werden können.

Ich konnte mein Problem beheben, indem ich "-pgmlo opt -pgmlc llc" zur Liste der GHC-Optionen hinzufügte.

Als Alternative können Sie /usr/lib/ghc/settings bearbeiten und sicherstellen, dass es die folgenden Zeilen hat:

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

Ich würde noch gerne wissen, warum GHC versucht Opt-3.0 standardmäßig zu finden.

6

Ich möchte nur sagen, dass dies immer noch eine Sache ist. Anweisungen für OSX:

> brew tap homebrew/dupes 
> brew install homebrew/versions/llvm34 

Und halten Sie einen Alias ​​in meiner .bashrc:

alias ghc-llvm="ghc -O2 -fllvm -pgmlo opt-3.4 -pgmlc llc-3.4" 

Stellen Sie sicher, llvm34 und nichtllvm35 bekommen. Ich fand auch, dass Sie wirklich -O2 mit LLVM übergeben möchten. Ohne es ist sehr langsam.

+0

Was meinen Sie eigentlich, indem Sie etwas an Ihre .bashrc anhängen, und ab welcher Version von OS X? –

+1

Finden Sie heraus, welche Shell Sie verwenden, indem Sie ps ausführen, und lesen Sie dann die Manpage für diese Shell, um zu erfahren, welches Skript beim Start ausgeführt wird. Für die meisten ist die Shell Bash und es führt $ HOME/.bashrc und mehrere andere Skripte aus, mit denen Sie Ihre Erfahrung anpassen können. –

+0

Danke. Soweit ich weiß, ist das richtig, aber mein eigentliches Problem war das: https://stackoverflow.com/questions/24796874/cant-install-diagrams-arithmoi-on-mac –