【问题标题】:How to print arguments names of printf from LLVM-IR如何从 LLVM-IR 打印 printf 的参数名称
【发布时间】:2017-02-03 13:53:18
【问题描述】:

谁能帮我找到来自LLVM-IR的printf()调用的实际参数名称。

例如:我在程序中有printf("%d,%d,x,y); 语句。

我正在编写 LLVM 传递以查找实际参数名称(上例中的 x 和 y)。

【问题讨论】:

标签: llvm llvm-clang


【解决方案1】:

一种方法是使用CallExpr 来识别 printf 调用。
您将使用 getArgs() 而不是 getArg(0) 并使用迭代器来解析参数。

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
}

编辑:几个月后看看这个,我可以告诉你,唯一的方法就是你做占位符映射。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多