LLVM Function::getContext() - private在此上下文中
LLVM Function::getContext() - private within this context
所以我正在为LLVM编写FunctionPass
,并试图向函数添加一些调用指令。
如果我像这样打电话给Type::getVoidTy();
:
Type::getVoidTy(F.getContext());
一切都很好。
但是如果我这样做:
llvm::LLVMContext context = F.getContext();
Type::getVoidTy(context);
当我尝试编译pass时,我得到以下编译错误:
llvm-3.2.src/include/llvm/LLVMContext.h: In member function ‘virtual bool {anonymous}::Hello::runOnFunction(llvm::Function&)’:
llvm-3.2.src/include/llvm/LLVMContext.h:93:3: error: ‘llvm::LLVMContext::LLVMContext(llvm::LLVMContext&)’ is private
LLVMContext(LLVMContext&) LLVM_DELETED_FUNCTION;
^
llvm-3.2.src/lib/Transforms/Hello/Hello.cpp:370:48: error: within this context
llvm::LLVMContext context = F.getContext();
^
所以我想这是我对c++的理解的一个问题,但我不明白为什么调用访问器会在一种情况下工作,但不是另一个,在同一范围内。
LLVMContext
的复制操作符和复制赋值操作符被显式地删除(参见这里的代码)。
Function::getContext
返回一个可变引用到LLVMContext
。通过赋值:
llvm::LLVMContext& context = F.getContext();
您正在尝试调用已删除的构造函数。你应该随身携带llvm::LLVMContext&
。
相关文章:
- #为""定义宏;静态";针对不同的上下文
- 与互斥锁相比,旋转锁可以保证上下文切换
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- std::make_shared和protected/private构造函数
- 错误"Could not find Boost"(缺少:上下文标头)
- 使用 mod_gsoap 部署服务时,如何在 Gsoap 中更改 soap 上下文的模式?
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 安排带有上下文的协同程序
- 我的文件无法正常工作,无法从C++文件中读取上下文
- DCMTK 了解"DIMSE 没有有效的演示上下文 ID"错误
- 具有std::initializer_list参数的非成员函数(/non构造函数上下文)的重载解析
- antlr 规则上下文是否可以独立于目标
- OpenGL 调试上下文警告 -"将使用视频内存作为缓冲区异议的来源
- MSVC 在不知道类型的情况下评估上下文(和错误)
- 为什么 Perf 具有如此高的上下文切换?
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 非推导上下文,如标准库中的"boost::mpl::identity:<T>:type"?