本文整理汇总了C++中basicblock::InstListType类的典型用法代码示例。如果您正苦于以下问题:C++ InstListType类的具体用法?C++ InstListType怎么用?C++ InstListType使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了InstListType类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sortBasicBlock
void Decompiler::sortBasicBlock(BasicBlock *BB) {
BasicBlock::InstListType *Cur = &BB->getInstList();
BasicBlock::InstListType::iterator P, I, E, S;
I = Cur->begin();
E = Cur->end();
while (I != E) {
P = I;
if (++I == E) {
break; // Note the terminator is always last instruction
}
if (Dis->getDebugOffset(P->getDebugLoc())
<= Dis->getDebugOffset(I->getDebugLoc())) {
continue;
}
while (--P != Cur->begin()
&& Dis->getDebugOffset(P->getDebugLoc())
> Dis->getDebugOffset(I->getDebugLoc())) {
// Do nothing.
}
// Insert at P, remove at I
S = I;
++S;
Instruction *Tmp = &(*I);
Cur->remove(I);
Cur->insertAfter(P, Tmp);
I = S;
}
I = Cur->begin();
E = Cur->end();
while (I != E) {
// outs() << "Line #: " << I->getDebugLoc().getLine() << "\n";
++I;
}
}
开发者ID:kgrizzle,项目名称:fracture,代码行数:34,代码来源:Decompiler.cpp
示例2: ReplaceInstWithValue
// ReplaceInstWithValue - Replace all uses of an instruction (specified by BI)
// with a value, then remove and delete the original instruction.
//
void llvm::ReplaceInstWithValue(BasicBlock::InstListType &BIL,
BasicBlock::iterator &BI, Value *V) {
Instruction &I = *BI;
// Replaces all of the uses of the instruction with uses of the value
I.replaceAllUsesWith(V);
std::string OldName = I.getName();
// Delete the unnecessary instruction now...
BI = BIL.erase(BI);
// Make sure to propagate a name if there is one already...
if (OldName.size() && !V->hasName())
V->setName(OldName, &BIL.getParent()->getSymbolTable());
}
开发者ID:chris-wood,项目名称:llvm-pgopre,代码行数:18,代码来源:BasicBlockUtils.cpp
示例3: ReplaceInstWithValue
/// ReplaceInstWithValue - Replace all uses of an instruction (specified by BI)
/// with a value, then remove and delete the original instruction.
///
void llvm::ReplaceInstWithValue(BasicBlock::InstListType &BIL,
BasicBlock::iterator &BI, Value *V) {
Instruction &I = *BI;
// Replaces all of the uses of the instruction with uses of the value
I.replaceAllUsesWith(V);
// Make sure to propagate a name if there is one already.
if (I.hasName() && !V->hasName())
V->takeName(&I);
// Delete the unnecessary instruction now...
BI = BIL.erase(BI);
}
开发者ID:2014-class,项目名称:freerouter,代码行数:16,代码来源:BasicBlockUtils.cpp
示例4: ReplaceInstWithInst
/// ReplaceInstWithInst - Replace the instruction specified by BI with the
/// instruction specified by I. The original instruction is deleted and BI is
/// updated to point to the new instruction.
///
void llvm::ReplaceInstWithInst(BasicBlock::InstListType &BIL,
BasicBlock::iterator &BI, Instruction *I) {
assert(I->getParent() == 0 &&
"ReplaceInstWithInst: Instruction already inserted into basic block!");
// Insert the new instruction into the basic block...
BasicBlock::iterator New = BIL.insert(BI, I);
// Replace all uses of the old instruction, and delete it.
ReplaceInstWithValue(BIL, BI, I);
// Move BI back to point to the newly inserted instruction
BI = New;
}
开发者ID:2014-class,项目名称:freerouter,代码行数:18,代码来源:BasicBlockUtils.cpp
示例5: ReplaceInstWithInst
void llvm::ReplaceInstWithInst(BasicBlock::InstListType &BIL,
BasicBlock::iterator &BI, Instruction *I) {
assert(I->getParent() == nullptr &&
"ReplaceInstWithInst: Instruction already inserted into basic block!");
// Copy debug location to newly added instruction, if it wasn't already set
// by the caller.
if (!I->getDebugLoc())
I->setDebugLoc(BI->getDebugLoc());
// Insert the new instruction into the basic block...
BasicBlock::iterator New = BIL.insert(BI, I);
// Replace all uses of the old instruction, and delete it.
ReplaceInstWithValue(BIL, BI, I);
// Move BI back to point to the newly inserted instruction
BI = New;
}
开发者ID:BNieuwenhuizen,项目名称:llvm,代码行数:19,代码来源:BasicBlockUtils.cpp
注:本文中的basicblock::InstListType类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论