- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 llvm ir 看起来像这样:
call void bitcast (void (%struct.type1*, %opencl.image2d_t addrspace(1)*, i32, %struct.type1*)* @_Z36functype1 to void (%struct.type2*, %opencl.image2d_t addrspace(1)*, i32, %struct.type1*)*)(%struct.type2* sret %19, %opencl.image2d_t addrspace(1)* %237, i32 %238, %struct.type1* byval %sic_payload)
我想检查调用是一个实际的函数调用还是带有位播的调用。有谁知道如何做到这一点?
我试过了:
const CallInst *pInstCall = dyn_cast<CallInst>(&*it);
if (!pInstCall) continue;
dyn_cast<BitCastInst >(pInstCall->getCalledFunction());
但这似乎行不通。
最佳答案
你在找
if (auto *CstExpr = dyn_cast<ConstantExpr>(it->getOperand(0))) {
// BitCastInst is an *Instrution*, here you have a *ConstantExpr* Bitcast
if (CstExpr.isCast()) {
// do something...
}
}
关于c++ - 如何检查 llvm callInst 是否包含位播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049359/
我正在尝试使用 LLVM C++ 绑定(bind)来编写生成以下 IR 的传递 %1 = call i64 @time(i64* null) #3 @time 这里是 C 标准库的 time() 函数
我正在尝试使用 LLVM 构建一个简单版本的代码分析工具。我有一些包含某些程序的中间 LLVM 表示的 .ll 文件,我正在尝试获取已执行的函数调用列表在程序的每个函数中。 这是我的代码,由于我之前的
我的 llvm ir 看起来像这样: call void bitcast (void (%struct.type1*, %opencl.image2d_t addrspace(1)*, i32, %s
考虑 static CallInst *Create(Value *Func, ArrayRef Args, c
Function *fun = call->getCalledFunction(); getCalledFunction(); 如果是间接调用则返回 null。如何获取函数名或指针名? 我在 Stac
我有一个 CallInst 类型的对象。我怎样才能得到被调用函数的名称(又名被调用者)。假设函数被直接调用(即没有间接函数调用)。 最佳答案 StringRef get_function_name(C
这就是我想要做的: if(isa(&(*BI)) ) { ArrayRef arguments('c'); StringRe
如果是直接调用函数,可以通过以下代码获取Function类型。 Function * fun = callInst->getCalledFunction(); Function * funTyp
我是一名优秀的程序员,十分优秀!