本文整理汇总了C++中basicblock::const_iterator::getMetadata方法的典型用法代码示例。如果您正苦于以下问题:C++ const_iterator::getMetadata方法的具体用法?C++ const_iterator::getMetadata怎么用?C++ const_iterator::getMetadata使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类basicblock::const_iterator
的用法示例。
在下文中一共展示了const_iterator::getMetadata方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printLocation
// Print instruction location, falls back to printing function location,
// (and LLVM instruction if specified).
void printLocation(const llvm::Instruction *I, bool fallback) {
const BasicBlock *BB = I->getParent();
bool approx = false;
BasicBlock::const_iterator It = I;
do {
BasicBlock::const_iterator ItB = BB->begin();
while (It != ItB) {
if (MDNode *N = It->getMetadata("dbg")) {
DILocation Loc(N);
errs() << /*Loc.getDirectory() << "/" <<*/ Loc.getFilename()
<< ":" << Loc.getLineNumber();
if (unsigned Col = Loc.getColumnNumber()) {
errs() << ":" << Col;
}
if (approx)
errs() << "(?)";
errs() << ": ";
DIScope Scope = Loc.getScope();
while (Scope.isLexicalBlock()) {
DILexicalBlock LB(Scope.getNode());
Scope = LB.getContext();
}
if (Scope.isSubprogram()) {
DISubprogram SP(Scope.getNode());
errs() << "in function '" << SP.getDisplayName() << "': ";
}
return;
}
approx = true;
--It;
}
BB = BB->getUniquePredecessor();
if (BB)
It = BB->end();
} while (BB);
printLocation(I->getParent()->getParent());
if (fallback)
errs() << *I << ":\n";
}