2017-02-03 10 views
-1

実際の引数名はprintf()であるので、のLLVM-IRから呼び出すことができます。LLVM-IRからprintfの引数名を印刷する方法

例:プログラム内にprintf("%d,%d,x,y);というステートメントがあります。

私はLLVM実際の引数名(上の例ではxとy)を見つけるためのパスを書いています。

+0

最小限で完全で検証可能な例の作成方法については、http://stackoverflow.com/help/mcveを参照してください。 – pringi

答えて

1

これを行う1つの方法は、CallExprを使用してprintf呼び出しを識別する方法です。
getArg(0)の代わりにgetArgs()を使用し、イテレータを使用して引数を解析します。

const Expr* expr = CE->getArg(0); //CE is the CallExpr for printf 
if (const ImplicitCaseExpr* ICE = 
      llvm::dyn_cast<ImplicitCastExpr>(expr)) { 
    const Expr* DRE_VAR = ICE->getSubExpr(); 
    //now, cast and parse the AST 
} 

EDIT:は数ヶ月後にこれを見ると、私はあなたが、プレースホルダのマッピングを行うためのためにこれを行うための唯一の方法は、あろうことを伝えることができます。

関連する問題