/// findLexicalScope - Find lexical scope, either regular or inlined, for the /// given DebugLoc. Return NULL if not found. LexicalScope *LexicalScopes::findLexicalScope(DebugLoc DL) { MDNode *Scope = NULL; MDNode *IA = NULL; DL.getScopeAndInlinedAt(Scope, IA, MF->getFunction()->getContext()); if (!Scope) return NULL; if (IA) return InlinedLexicalScopeMap.lookup(DebugLoc::getFromDILocation(IA)); return LexicalScopeMap.lookup(DL.getScope(Scope->getContext())); }
void Instruction::swapProfMetadata() { MDNode *ProfileData = getMetadata(LLVMContext::MD_prof); if (!ProfileData || ProfileData->getNumOperands() != 3 || !isa<MDString>(ProfileData->getOperand(0))) return; MDString *MDName = cast<MDString>(ProfileData->getOperand(0)); if (MDName->getString() != "branch_weights") return; // The first operand is the name. Fetch them backwards and build a new one. Metadata *Ops[] = {ProfileData->getOperand(0), ProfileData->getOperand(2), ProfileData->getOperand(1)}; setMetadata(LLVMContext::MD_prof, MDNode::get(ProfileData->getContext(), Ops)); }