2012-03-23 6 views
6

が打ち鳴らす3.0オンラインデモページhttp://llvm.org/demo/index.cgiはLLVM C++ APIコード 『出力打ち鳴らすオプションを生成「である。LLVM-IRからllvm C++ apiコードを自動生成することは可能ですか?

を入力プログラムのためにLLVM-IRを表す』出力LLVM C++ APIコードのオプションを提供(もしそうならば、何それが)ある?

それともそれが(その1)LLVMツールオプション?

であることは同じことを行うことが可能にされているが、LLVM-IR入力から?基本的に私は、適切なLLVMを見てみたいと思います特定の与えられたllvm-irシーケンスを生成するために必要なC++ api呼び出し。ドキュメントからの転送ではなく、例を用いて後方に学びたい。

マニュアルページと--helpと--help-clang、llvm-as、llvm-disのために隠されていても明らかなことはありません。

編集:今すぐ確認してください。そのウェブページの出力には「llvm2cppによって生成されました」と表示されます。しかし、最近のllvmのリリースでは、このツールは見つからず、古いリリースでは、llvm2cppのために新しいツールが2.9と3.0で引き継がれています。

答えて

8

はい。 C++バックエンドはこれを行うツールです。 "llc -march = cpp foo.bc"を試してください

+0

ありがとうございました。私はちょうど2.3のリリースノートで見つけました "llvm2cppツールはllcに折りたたまれており、llvm2cppの代わりにllc -march = cppを使用しています"。 BTW -march = C++は3.0では動作しませんが、-march = cppは – Bogatyr

+0

です。残念ながら、lcc -march = cppはデバッグメタデータを持つファイルで失敗します。その既知の回避策ですか?私の全目的は、デバッグメタデータを追加するためのC++ APIを見ることだったので、これはショーストッパーです。 – Bogatyr

+0

@Bogatyr:これはバグとみなすべきです。小さな再生器でLLVM bugzillaのPRを記入してください。 –

1

私はまったく同じ問題に遭遇し、CPPBuilderが何回か言及したのを見ました。 CPPBackendが3.8と3.9の間で削除されたため、このアプローチは残念ながら最近のLLVMバージョンでは機能しません。

CPPバックエンドを使用する場合は、最初の構成時にllvmを構成し、cppbackendを-DLLVM_TARGETS_TO_BUILDに追加し、(ii)llvm < = 3.8を実行する必要があります。

IRBuilderを使用しておらず、ほとんど誰も使用しなかったため、機能が削除されました。私の解決策は、インスピレーションを得るために古いバージョンに頼ってから、それを自分で実装することでした。