IR: Separate helpers for string operands, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227846 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-02-02 19:54:05 +00:00
parent 41367e252a
commit 265dc3e4c9
2 changed files with 15 additions and 7 deletions

View File

@ -100,6 +100,12 @@ protected:
}
~DebugNode() {}
StringRef getStringOperand(unsigned I) const {
if (auto *S = cast_or_null<MDString>(getOperand(I)))
return S->getString();
return StringRef();
}
public:
unsigned getTag() const { return SubclassData16; }
@ -171,11 +177,7 @@ public:
TempGenericDebugNode clone() const { return cloneImpl(); }
unsigned getTag() const { return SubclassData16; }
StringRef getHeader() const {
if (auto *S = cast_or_null<MDString>(getOperand(0)))
return S->getString();
return StringRef();
}
StringRef getHeader() const { return getStringOperand(0); }
op_iterator dwarf_op_begin() const { return op_begin() + 1; }
op_iterator dwarf_op_end() const { return op_end(); }

View File

@ -71,6 +71,13 @@ MDLocation *MDLocation::getImpl(LLVMContext &Context, unsigned Line,
Storage, Context.pImpl->MDLocations);
}
/// \brief Get the MDString, or nullptr if the string is empty.
static MDString *getCanonicalMDString(LLVMContext &Context, StringRef S) {
if (S.empty())
return nullptr;
return MDString::get(Context, S);
}
GenericDebugNode *GenericDebugNode::getImpl(LLVMContext &Context, unsigned Tag,
StringRef Header,
ArrayRef<Metadata *> DwarfOps,
@ -89,8 +96,7 @@ GenericDebugNode *GenericDebugNode::getImpl(LLVMContext &Context, unsigned Tag,
}
// Use a nullptr for empty headers.
Metadata *PreOps[] = {Header.empty() ? nullptr
: MDString::get(Context, Header)};
Metadata *PreOps[] = {getCanonicalMDString(Context, Header)};
return storeImpl(new (DwarfOps.size() + 1) GenericDebugNode(
Context, Storage, Hash, Tag, PreOps, DwarfOps),
Storage, Context.pImpl->GenericDebugNodes);