本文整理汇总了C++中Use::getSourceLocation方法的典型用法代码示例。如果您正苦于以下问题:C++ Use::getSourceLocation方法的具体用法?C++ Use::getSourceLocation怎么用?C++ Use::getSourceLocation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Use
的用法示例。
在下文中一共展示了Use::getSourceLocation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lookupReplaceUse
void Resolve::lookupReplaceUse(UnresolvedValue *V, Use &U, BasicBlock *Block) {
auto Name = V->getName();
auto K = V->getContext();
if (auto S = K->Map.get(V, Block)) {
/// %S = 2;
/// ^
/// Came from here (MallocInst, Argument, or Prototype)
///
/// Foo(%S);
/// ^
/// UnresolvedValue; replace with %Replacement
if (auto M = dyn_cast<MallocInst>(S)) {
if (dyn_cast<StoreInst>(U->getUser()))
U.set(M);
else {
auto Replacement = LoadInst::get(M);
Replacement->setSourceLocation(V->getSourceLocation());
U.set(Replacement);
}
} else if (isa<BindInst>(S) || isa<Argument>(S)) {
U.set(S);
} else if (isa<Prototype>(S)) {
auto Replacement = Pointer::get(S);
Replacement->setSourceLocation(S->getSourceLocation());
U.set(Replacement);
}
} else {
/// %V was not seen earlier (%S not initialized)
/// Only one possibility: %V(...)
/// ^
/// Callee of CallInst
auto SourceLoc = U->getSourceLocation();
if (auto Inst = dyn_cast<CallInst>(U->getUser()))
if (Inst->getCallee() == V) {
DiagnosticPrinter(SourceLoc) << "unbound function " + Name;
exit(1);
}
DiagnosticPrinter(SourceLoc) << "unbound symbol " + Name;
exit(1);
}
}