14

オンラインLLVMデモページには、ソースコードからバックエンドとしてLLVM C++APIコードを生成するオプションがありました。ただし、そのデモページは現在無効になっています。利用可能なLLVMツールを使用して自分たちでそれを行うにはどうすればよいのか疑問に思いました。

私は以下を試しました

clang++ -c -emit-llvm input.cpp -o input.ll
llc -march=cpp -o input.ll.cpp input.ll

次のエラーが発生します

llc: error: invalid target 'cpp'.

LLVM/Clangバージョン3.2を使用しています。

4

2 に答える 2

9

LLVM をビルドするときは、設定中に LLVM C++ バックエンドを有効にする必要があります。(autotools) ビルドではデフォルトで有効になっていますが、configureWindows でビルドするときの CMake ビルドでは有効ではありません。CMake で構成するときに適切なフラグを設定することで有効にできます。詳細については、このページを参照してください。

見積もり:

LLVM_TARGETS_TO_BUILD:STRING ビルドするターゲットのセミコロン区切りのリスト、またはすべてのターゲットをビルドする場合は all。大文字と小文字を区別。Visual C++ の場合、デフォルトは X86 です。それ以外の場合は、デフォルトで all になります。例: -DLLVM_TARGETS_TO_BUILD="X86;PowerPC"。

アップデート

version 3.9CppBackend はもはや有効なターゲットではないためです。生成されたコードにいくつかの問題があったため、コードから削除しました。

このコミットを確認してください

Remove bit-rotten CppBackend.

This backend was supposed to generate C++ code which will re-construct
the LLVM IR passed as input. This seems to me to have very marginal
usefulness in the first place.

However, the code has never been updated to use IRBuilder, which makes
its current value negative -- people who look at the output may be
steered to use the *wrong* C++ APIs to construct IR.

Furthermore, it's generated code that doesn't compile since at least
2013.

Differential Revision: http://reviews.llvm.org/D19942

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268631 91177308-0d34-0410-b5e6-96231b3b80d8
于 2013-02-09T22:04:57.753 に答える