[英]Check if function is user defined in LLVM-IR or not
我正在编写LLVM
传递,该传递仅在用户定义时(由用户在源文件中定义)打印功能名称。
我找不到任何将用户定义函数与初始化函数(或静态构造函数)区分开的方法。 我尝试检查该函数是否刚刚声明或定义,但由于定义了一些初始化函数(如__cxx_global_var_init
),因此无法正常工作。
在打发时,我无法完成您想做的事情。
就是说,Clang提供了一种在初始编译期间确定这一点的方法。 请参阅: clang :: SourceManager :: isInSystemHeader() 。 您必须编写一个Clang插件或基于libTooling的程序才能利用此功能,因为一旦执行opt后信息就会消失。 这是一个使用AST访问者的人工示例:
bool VisitFunctionDecl(clang::FunctionDecl* funcDecl)
{
if (sourceManager.isInSystemHeader(funcDecl->getLocStart()))
{
return true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.