LLVM IR Lambda 函数

agg*_*212 2 lambda llvm llvm-clang c++11 llvm-c++-api

我使用 clang++ 3.4 将 C++11 程序 (test.cpp) 编译为 LLVM IR 文件 (test.ll)。该程序包含多个 C++ lambda 函数,我想知道是否可以使用如下技术仅提取 lambda 函数的 IR:

Module *mod = ParseIRFile("test.ll", *err, ctx);
for (Module::iterator f = mod->begin(); f != mod->end(); ++f) {
    //is there some function like isLambdaFunction()?
    if (f->isLambdaFunction()) { 
        cout << "Lambda Function" << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

Eli*_*sky 6

不。LLVM IR 中没有 lambda 函数的概念。Clang 使用方法将 lambda 降低为结构,据我所知。

您可以从 Clang 的 AST 获得此信息,但不能从 LLVM IR 获得。