LLVM IR: find_if, var not captured
LLVM IR: find_if, var not captured
所以我在代码中有以下摘要
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I){
Instruction *Inst = &*I;
if (isa<LoadInst>(Inst)) {
LoadInst *LI = dyn_cast<LoadInst>(Inst);
Value * LoadOperand = LI -> getPointerOperand();
auto it = std::find_if(DataStructureForTrace.begin(), DataStructureForTrace.end(), [](const std::tuple<Value*, unsigned, unsigned, Value* >& e) {return *(std::get<3>(e)) == *(LoadOperand);});
std::get<2>(*it) = 1;
}
}
在第6行中,我会遇到错误,例如:LoadOperand
未捕获。
我尝试了一个假人(不是LLVM类型,只是正常的C 代码)实现,以查看此类物质是否有效,并且确实正常工作。现在,我不确定该错误是否与LLVM或通用C 关联。
有什么建议?
错误是指您在呼叫std::find_if
中未在lambda表达式中捕获LoadOperand
的事实。您可以通过此表达式中的[&LoadOperand]
参考来捕获它:
std::find_if(DataStructureForTrace.begin(), DataStructureForTrace.end(), [&LoadOperand](const std::tuple<Value*, unsigned, unsigned, Value* >& e) {return *(std::get<3>(e)) == *(LoadOperand);});
相关文章:
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- OpenCV Android C++ imwrite not found
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 错误"Could not find Boost"(缺少:上下文标头)
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- Is !NaN not a NaN?
- 为什么我会" void value not ignored as it ought to be"?
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- Directx 11 - CompileFromFile() is not compiling
- 方法错误"not all control paths return a value"和方法不返回值
- Centos7 g++ "to_string is not in a member of std"
- 将系数存储在头文件的数组中("does not name a type"错误)
- QGraphicsItems not showing up QGraphicsScene
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- LLVM IR: find_if, var not captured
- getline(cin, var) not working!