-1
実際の引数名はprintf()
であるので、のLLVM-IRから呼び出すことができます。LLVM-IRからprintfの引数名を印刷する方法
例:プログラム内にprintf("%d,%d,x,y);
というステートメントがあります。
私はLLVM実際の引数名(上の例ではxとy)を見つけるためのパスを書いています。
実際の引数名はprintf()
であるので、のLLVM-IRから呼び出すことができます。LLVM-IRからprintfの引数名を印刷する方法
例:プログラム内にprintf("%d,%d,x,y);
というステートメントがあります。
私はLLVM実際の引数名(上の例ではxとy)を見つけるためのパスを書いています。
これを行う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:は数ヶ月後にこれを見ると、私はあなたが、プレースホルダのマッピングを行うためのためにこれを行うための唯一の方法は、あろうことを伝えることができます。
最小限で完全で検証可能な例の作成方法については、http://stackoverflow.com/help/mcveを参照してください。 – pringi