0

フィードされた IR コードを再生成できる LLVM API コードを生成しようとしています。この質問などのさまざまな質問を介して発見したように、ある時点で、この目標を達成するために次のことを行うことが可能でした:

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

ただし、次のエラーが表示されます: llc: エラー: ターゲット 'cpp' が無効です。さらに調査したところ、バージョン 3.1 で c バックエンドが削除されたときに、以前のバージョンの LLVM で同じ問題が発生したことがわかりました。ただし、私はcppを使用しています。これにより、何らかの理由で私のバージョンのllvmにcppバックエンドが存在しないと思われます。

ここから本当に知りたいのは、これまでの分析が正しい場合、cpp バックエンドを有効にする方法、または llc を希望どおりに使用できる状態にする方法です。もちろん、私が間違っていたり、別の方法がある場合は、それを受け入れます。

使用するために選択したバージョンは LLVM 3.6 です。これは、OS X で brew を介してインストールされました。よろしくお願いします。

編集:この質問は、おそらく同様の質問として指摘されています。ただし、その質問は LLVM 3.2 の特定のコンテキストで行われました。私の質問はバージョン 3.6 の現在の状況に関するものであり、現時点で実際の解決策がある可能性があるためです。その質問に対する唯一の答えは、一般的な外部リソースを指しており、実際の解決策が何であるかを十分に説明していません。

4

2 に答える 2

1

cpp バックエンドを有効にする正しい方法は、LLVM ソースをダウンロードして自分でビルドすることです。そのプロセスがどのように機能したかを次に示します。

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

適切なバージョンのclangを使用していて、パスにllvmバイナリの別のセットが含まれていないと仮定すると、次のコマンドが期待どおりに機能するはずです。

clang++ -S -O0 -emit-llvm MyFile.cpp -o MyIR.ll
llc -march=cpp MyIR.ll -o MyIR_Maker.cpp
于 2016-04-02T17:17:21.523 に答える
0

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

于 2017-03-19T14:51:27.777 に答える