gpt4 book ai didi

c++ - 如何检查 llvm callInst 是否包含位播?

转载 作者:行者123 更新时间:2023-11-27 22:48:45 25 4
gpt4 key购买 nike

我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com