From: Duncan P. N. Exon Smith Date: Mon, 2 Feb 2015 19:54:05 +0000 (+0000) Subject: IR: Separate helpers for string operands, NFC X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=265dc3e4c97fa8e76cdf76c0348eedf7d5f8112d;p=oota-llvm.git IR: Separate helpers for string operands, NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227846 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/IR/DebugInfoMetadata.h b/include/llvm/IR/DebugInfoMetadata.h index 28f29ec8353..4727e1f9990 100644 --- a/include/llvm/IR/DebugInfoMetadata.h +++ b/include/llvm/IR/DebugInfoMetadata.h @@ -100,6 +100,12 @@ protected: } ~DebugNode() {} + StringRef getStringOperand(unsigned I) const { + if (auto *S = cast_or_null(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(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(); } diff --git a/lib/IR/DebugInfoMetadata.cpp b/lib/IR/DebugInfoMetadata.cpp index 9daf7857ba6..66dcc8e8055 100644 --- a/lib/IR/DebugInfoMetadata.cpp +++ b/lib/IR/DebugInfoMetadata.cpp @@ -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 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);