请参阅下面的llvm IR
%call = call double @atan2(double %19, double %21) #3 //library call
%21 = call float @llvm.fabs.f32(float %sub) //llvm intrinsic
%22 = call float @foo(float %sub) //not intrinsic nor library
我发现@ llvm.fabs.f32是对llvm的固有调用,因为我可以获取参数名称和类型,所以foo既不是固有的,也不是库。但是如何知道atan2是c / c ++标准库调用?
答案 0 :(得分:0)
TargetLibraryInfo类(https://llvm.org/doxygen/classllvm_1_1TargetLibraryInfo.html#details)的getLibFunc可以在LLVM中用于此目的。首先需要通过将TargetLibraryInfoWrapperPass添加到getAnalysisUsage函数中来执行。完成传递之后,可以通过创建TargetLibraryInfo类型的对象来使用getLibFunc()。