2016-03-31 6 views
0

私はそれに供給されるIRコードを再生成できるLLVM APIコードを生成しようとしています。私は次のエラーを取得するしかし現在のバージョンでは、IRコード経由でLLVMのapiコードを生成する方法は?

clang++ -S -O0 -emit-llvm MyFile.cpp -o MyIR.ll 
llc -march=cpp MyIR.ll -o MyIR_Maker.cpp 

: LLC:エラー:無効なターゲット「CPP」を、私は、このようなthis questionなど、さまざまな質問を経て発見されたとして、それは、この目標を達成するために次の操作を実行することが可能にいくつかの点でいました。 さらに調査したところ、バージョン3.1でcバックエンドが削除されたとき、以前のバージョンのLLVMではthe same issue occurredと表示されます。私はcppを使用していますが、何らかの理由でcppバックエンドが私のバージョンのllvmに存在しないと信じています。

実際に私がここから知りたいのは、これまでの分析が正しいとすれば、どのようにしてcppバックエンドを有効にするか、そうでなければ私の欲しいところで私のllcを使うことができる状態になるのですか?もちろん、私が間違っている場合や別の方法がある場合は、私はそれに開放されます。

私たちが扱うバージョンはLLVM 3.6です。これはOS Xのbrewを介してインストールされました。ありがとうございます。

編集:This questionはおそらく同様の質問として指摘されています。しかし、この問題はLLVM 3.2の特定の状況で尋ねられました。ここでは、現時点で実際の解決策が存在する可能性があるため、バージョン3.6の現在の状況に関係しています。その質問に対する唯一の答えは、一般的な外部リソースを指しており、実際の解決策が何であるかを完全には説明していません。

+1

cバックエンドとcppバックエンドは大きく異なります。前者は削除されていますが、後者は引き続きサポートされており、デフォルトでは構築されていません。私はこの質問が[バックエンドとしてのLLVM C++ APIコードの生成](http://stackoverflow.com/questions/14751403/generate-llvm-c-api-code-as-backend)と重複していると思います。そのバックエンドを含めるようにLLVMを構築します。 – Oak

+0

@Oak次に、C++バックエンドを有効にするにはどうすればいいのでしょうか?その質問への答えは、LLVMを構築するための一般的なページと、非常に明確なIMOではない文脈からの引用を指しているようです。私はLLVMバイナリをhomebrew経由でインストールすると述べましたが、自作バージョンを使ってC++バックエンドを有効にすることはできません。 –

+0

既存のバイナリを使う代わりに、自分でLLVMをコンパイルする必要があるでしょう。申し訳ありませんが、私はそのリンクされた質問よりも詳細な答えはありません。 – Oak

答えて

0

そのプロセスが私のために働いていた方法ですCPPバックエンドを有効にする正しい方法は、ここで、LLVMのソースをダウンロードし、それを自分で構築することです表示されます。

  • Go to this page、あなたが使用したいバージョンを見つけます、あなただけ抽出してきたフォルダにコマンドライン
  • cdファイル
  • オープンを抽出し、それは形式「LLVM-xxxsrc」でなければならない「LLVMのソースコード」
  • 題し、それぞれのリンクをダウンロードし、ここで、x。 xxは場合はバージョン番号
  • mkdir build
  • cd build
  • brew install cmake(すでにcmakeのを持っていない場合)
  • cmake -G Xcode ..(これはLLVMを構築することができXcodeプロジェクトを生成します)
  • open LLVM.xcodeproj
  • ですXcodeが開くときに「自動的にスキームを作成する」をクリックしてください。
  • Xcodeによる索引作成が完了するまで待つと、時間がかかります。
  • Xcodeプロジェクトを実行してLLVMをコンパイルしますが、これにも時間がかかります。
  • 生成されたllvm CLIツールはすべて、「ビルド」フォルダ内のDebug/binディレクトリにあります。
  • このフォルダは必要な場所に置いて、自分のパスにエクスポートします。

期待どおりに打ち鳴らすの適切なバージョンを使用していると仮定して、あなたのパスはLLVMのバイナリの異なるセットが含まれていませんが、動作するはずです今、あなたは、以下のコマンドことができるようになります。

clang++ -S -O0 -emit-llvm MyFile.cpp -o MyIR.ll 
llc -march=cpp MyIR.ll -o MyIR_Maker.cpp 
0

Generate LLVM C++ API code as backendで説明したように、この機能(-march=cpp)は2016年5月頃にLLVMから削除されたようです。

+0

この質問は2016年5月以前のものですが、質問に使用されているLLVMのバージョンについて言及しています。私はこれがコメントとして良いかもしれないと思いますか? –

関連する問題