繁体   English   中英

检查功能是否在LLVM-IR中由用户定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM