本文整理汇总了C++中function::arg_iterator::hasOneUse方法的典型用法代码示例。如果您正苦于以下问题:C++ arg_iterator::hasOneUse方法的具体用法?C++ arg_iterator::hasOneUse怎么用?C++ arg_iterator::hasOneUse使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类function::arg_iterator
的用法示例。
在下文中一共展示了arg_iterator::hasOneUse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dupFuncArgu
/////////////////////////
//dupFuncArgu() //
/////////////////////////
void InsDuplica::dupFuncArgu(Function &F) {
BasicBlock *firstBB = F.begin();
Instruction *firstI = firstBB->begin();
for (Function::arg_iterator AI = F.arg_begin(), E = F.arg_end();
AI != E; ++AI) {
arguSet.insert(AI);
//if argument is used only once or all on the same block,
//do not dup it.
if (AI->hasOneUse()) {
valueMap[AI] = AI;
} else {
//make copy of cast
Type *arguType = AI->getType();
//FIXME unknow signed or not
CastInst* newCast = CastInst::CreateIntegerCast(AI, arguType, 1, AI->getName()+"_dup", firstI);
//CastInst *newCast = new CastInst(AI, arguType, AI->getName()+"_dup", firstI);
valueMap[AI] = newCast;
}
}
}