中間表現(IR)コードを変更するLLVMパスを作成しました。移植性を高めるために、私はgccコンパイラでも動作させたいと思っています。そこで、gccの中間表現(IR)をLLVM IRに変換できるツールがあるかどうか疑問に思っていました。GCC IRをLLVMに変換するIR
答えて
おそらくdragonegg(これはGCCフロントエンドを使ってLLVM IRを構築します)が必要です。
そして、GCCの内部表現で作業したい場合は、MELT(GCCを拡張するための高水準ドメイン固有言語)がおそらく適切なツールです。
お寄せいただきありがとうございます。しかし、GCC IRをLLVM IRに変換し、GCC IRに戻す方法もありますか?だから私はフロントエンドとバックエンドのどちらかを変更する必要はありません。 – pythonic
私はLLVM IRとGCC IRが同形であるとは確信していません(そして、彼らはそうではないと確信しています - 悪は常に細部にあります)。しかし、正確に何を達成したいのですか、なぜあなたは尋ねますか?なぜGCCとLLVMの間で前後に行くのか? –
GCC IRをLLVM IRに変換し、パスを適用してIRを変更し、結果のLLVM IRをGCC IRに変換して、gccバックエンドをそこから再開できるようにしたいと考えています。私はコンパイラとしてgccを持っているプラットフォームで作業しているので、そこにはLLVMを持つことはできません。 – pythonic
おそらくmuch gcc IRで動作するコードの別のバージョンを書くのは簡単でしょう。あなたがしたいことはおそらく不可能であり、可能であれば、おそらく非常に難しいでしょう。 (最初の場所にLLVMパスを書くよりも)
私は間違いなく同意します。 GCC IRからLLVM IRへのやりとりは意味がありません! (もしあなたがそれをしたら、それは悪夢になるだろう)。 –
- 1. IR LLVMフォームアセンブリ対
- 2. 理解LLVM-IR
- 3. LLVM IR alloca命令
- 4. llvm IRをcコードに変換するには?
- 5. DalvikバイトコードをLLVM IRに変換するには?
- 6. GマシンのソースをLLVMに変換するIR
- 7. LLVMフレームワーク:IRファイル、リンクライブラリをロード
- 8. LLVM IRを解析するには
- 9. LLVMのboolのデータ型IR
- 10. LLVMで名前を抽出するIR
- 11. LLVMによるオーバーフローのチェック方法IR
- 12. LLVM IRによるx86レジスタの制御?
- 13. ltoリンク後にllvm IRを取得
- 14. 各llvm最適化(各パス)の後にIRをダンプし、llvm irのパスとバックエンドのデバッグ
- 15. llvm IRタイプのエラーをプログラムで再現
- 16. LLVMでグローバル定義をキャストIR
- 17. 変数をLLVMのレジスタに固定します。IR
- 18. LLVM IR:メタデータノードで変数を識別する
- 19. コンパイラの出力言語 - LLVM IR対C
- 20. LLVMの静的解析ツールIR
- 21. llvm用のメイクファイルの書き方IR
- 22. llvmのラベルの表現IRコード
- 23. LLVM IRをより高い最適化レベルに変換します
- 24. CUDAまたはOpenCLをllvmにコンパイルするIR
- 25. LLVM IRでクロージャを効率的に実装する方法は?
- 26. LLVM-IRからprintfの引数名を印刷する方法
- 27. LLVM IRのメタデータを生成する方法は?
- 28. llvmのレジスタから値を取得するIR
- 29. voidポインタ型をllvm irで表現する
- 30. LLVM IR命令のテキスト表現を取得する方法は?
+1は、おそらくLLVM APIが引き起こした痛みを補うためのものです。 –