mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-14 07:09:08 +00:00
Change extractProfMetadata and extractProfTotalWeight to const member function.
llvm-svn: 281760
This commit is contained in:
parent
528a2f9ceb
commit
a2d8fe8a1b
@ -232,12 +232,12 @@ public:
|
||||
/// Retrieve the raw weight values of a conditional branch or select.
|
||||
/// Returns true on success with profile weights filled in.
|
||||
/// Returns false if no metadata or invalid metadata was found.
|
||||
bool extractProfMetadata(uint64_t &TrueVal, uint64_t &FalseVal);
|
||||
bool extractProfMetadata(uint64_t &TrueVal, uint64_t &FalseVal) const;
|
||||
|
||||
/// Retrieve total raw weight values of a branch.
|
||||
/// Returns true on success with profile total weights filled in.
|
||||
/// Returns false if no metadata was found.
|
||||
bool extractProfTotalWeight(uint64_t &TotalVal);
|
||||
bool extractProfTotalWeight(uint64_t &TotalVal) const;
|
||||
|
||||
/// Set the debug location information for this instruction.
|
||||
void setDebugLoc(DebugLoc Loc) { DbgLoc = std::move(Loc); }
|
||||
|
@ -314,8 +314,7 @@ ValueAsMetadata *ValueAsMetadata::get(Value *V) {
|
||||
if (!Entry) {
|
||||
assert((isa<Constant>(V) || isa<Argument>(V) || isa<Instruction>(V)) &&
|
||||
"Expected constant or function-local value");
|
||||
assert(!V->IsUsedByMD &&
|
||||
"Expected this to be the only metadata use");
|
||||
assert(!V->IsUsedByMD && "Expected this to be the only metadata use");
|
||||
V->IsUsedByMD = true;
|
||||
if (auto *C = dyn_cast<Constant>(V))
|
||||
Entry = new ConstantAsMetadata(C);
|
||||
@ -360,14 +359,12 @@ void ValueAsMetadata::handleRAUW(Value *From, Value *To) {
|
||||
auto &Store = Context.pImpl->ValuesAsMetadata;
|
||||
auto I = Store.find(From);
|
||||
if (I == Store.end()) {
|
||||
assert(!From->IsUsedByMD &&
|
||||
"Expected From not to be used by metadata");
|
||||
assert(!From->IsUsedByMD && "Expected From not to be used by metadata");
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove old entry from the map.
|
||||
assert(From->IsUsedByMD &&
|
||||
"Expected From to be used by metadata");
|
||||
assert(From->IsUsedByMD && "Expected From to be used by metadata");
|
||||
From->IsUsedByMD = false;
|
||||
ValueAsMetadata *MD = I->second;
|
||||
assert(MD && "Expected valid metadata");
|
||||
@ -404,8 +401,7 @@ void ValueAsMetadata::handleRAUW(Value *From, Value *To) {
|
||||
}
|
||||
|
||||
// Update MD in place (and update the map entry).
|
||||
assert(!To->IsUsedByMD &&
|
||||
"Expected this to be the only metadata use");
|
||||
assert(!To->IsUsedByMD && "Expected this to be the only metadata use");
|
||||
To->IsUsedByMD = true;
|
||||
MD->V = To;
|
||||
Entry = MD;
|
||||
@ -1056,17 +1052,11 @@ void NamedMDNode::setOperand(unsigned I, MDNode *New) {
|
||||
getNMDOps(Operands)[I].reset(New);
|
||||
}
|
||||
|
||||
void NamedMDNode::eraseFromParent() {
|
||||
getParent()->eraseNamedMetadata(this);
|
||||
}
|
||||
void NamedMDNode::eraseFromParent() { getParent()->eraseNamedMetadata(this); }
|
||||
|
||||
void NamedMDNode::dropAllReferences() {
|
||||
getNMDOps(Operands).clear();
|
||||
}
|
||||
void NamedMDNode::dropAllReferences() { getNMDOps(Operands).clear(); }
|
||||
|
||||
StringRef NamedMDNode::getName() const {
|
||||
return StringRef(Name);
|
||||
}
|
||||
StringRef NamedMDNode::getName() const { return StringRef(Name); }
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Instruction Metadata method implementations.
|
||||
@ -1200,7 +1190,7 @@ void Instruction::setMetadata(unsigned KindID, MDNode *Node) {
|
||||
DbgLoc = DebugLoc(Node);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Handle the case when we're adding/updating metadata on an instruction.
|
||||
if (Node) {
|
||||
auto &Info = getContext().pImpl->InstructionMetadata[this];
|
||||
@ -1217,7 +1207,7 @@ void Instruction::setMetadata(unsigned KindID, MDNode *Node) {
|
||||
(getContext().pImpl->InstructionMetadata.count(this) > 0)) &&
|
||||
"HasMetadata bit out of date!");
|
||||
if (!hasMetadataHashEntry())
|
||||
return; // Nothing to remove!
|
||||
return; // Nothing to remove!
|
||||
auto &Info = getContext().pImpl->InstructionMetadata[this];
|
||||
|
||||
// Handle removal of an existing value.
|
||||
@ -1252,12 +1242,13 @@ MDNode *Instruction::getMetadataImpl(unsigned KindID) const {
|
||||
void Instruction::getAllMetadataImpl(
|
||||
SmallVectorImpl<std::pair<unsigned, MDNode *>> &Result) const {
|
||||
Result.clear();
|
||||
|
||||
|
||||
// Handle 'dbg' as a special case since it is not stored in the hash table.
|
||||
if (DbgLoc) {
|
||||
Result.push_back(
|
||||
std::make_pair((unsigned)LLVMContext::MD_dbg, DbgLoc.getAsMDNode()));
|
||||
if (!hasMetadataHashEntry()) return;
|
||||
if (!hasMetadataHashEntry())
|
||||
return;
|
||||
}
|
||||
|
||||
assert(hasMetadataHashEntry() &&
|
||||
@ -1279,10 +1270,11 @@ void Instruction::getAllMetadataOtherThanDebugLocImpl(
|
||||
Info.getAll(Result);
|
||||
}
|
||||
|
||||
bool Instruction::extractProfMetadata(uint64_t &TrueVal, uint64_t &FalseVal) {
|
||||
assert((getOpcode() == Instruction::Br ||
|
||||
getOpcode() == Instruction::Select) &&
|
||||
"Looking for branch weights on something besides branch or select");
|
||||
bool Instruction::extractProfMetadata(uint64_t &TrueVal,
|
||||
uint64_t &FalseVal) const {
|
||||
assert(
|
||||
(getOpcode() == Instruction::Br || getOpcode() == Instruction::Select) &&
|
||||
"Looking for branch weights on something besides branch or select");
|
||||
|
||||
auto *ProfileData = getMetadata(LLVMContext::MD_prof);
|
||||
if (!ProfileData || ProfileData->getNumOperands() != 3)
|
||||
@ -1303,7 +1295,7 @@ bool Instruction::extractProfMetadata(uint64_t &TrueVal, uint64_t &FalseVal) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Instruction::extractProfTotalWeight(uint64_t &TotalVal) {
|
||||
bool Instruction::extractProfTotalWeight(uint64_t &TotalVal) const {
|
||||
assert((getOpcode() == Instruction::Br ||
|
||||
getOpcode() == Instruction::Select ||
|
||||
getOpcode() == Instruction::Call ||
|
||||
|
Loading…
Reference in New Issue
Block a user