2012-02-13 20 views
4

私はLLVM IRを受け取り、修正するツールを開発中です。プログラマがコンパイラにヒントを与えることを可能にすることに興味があります。たとえば、特定のループが集中的に計算されているというヒントを与えることができます。この目的のために、私の心に来ることの一つはプラグマを使うことです。だから私の質問は、プラグマをどのように動作させることができるのでしょうか? LLVM IRにプラグマ情報を入れることはできますか?そのような仕事のためのオプションは何ですか?llvmを使用しているコンパイラへのヒント

答えて

5

この質問には、いくつかの異なるものを参照することができます。

  • あなたがpragmaを実装する方法を理解するために探しているなら、クランはそれをしない方法を見てみましょう。私。さまざまなpragma指令に翻訳されているもの
  • 既存のヒント(たとえばinlinehintbyvalなど)を理解したい場合は、属性(例:Function Attributes)を確認してください。
  • もっと柔軟で独自のものを望む場合は、メタデータを使用できます。 LLVMそれ自体はさまざまな目的のためにそれを使用しますが、あなた自身のコンパイラでは、あなたはそれで何ができるのか非常に自由です。コンパイラへのヒントは1つの可能なアプリケーションです。
+0

gccには「#pragma hot'」と「__attribute__((hot))」があります。 llvm/clangのようなものがありますか? GCCは、 "-fprofile-generate"/" - fprofile-use"を実行せずに "profile feedback"を得るためにそれらを使います。 – osgx

+0

@osgx:私は解答を知っていません。ソースを参照して調べる必要があります...しかし、一般的に、clangはgccが最近コンパイルするすべてをコンパイルします。しかし、すべてのgcc固有のプラグマの機能を複製するかどうかはわかりません –

+0

@osgx:なぜロシア語ですか? –

関連する問題