- /// isName - Return true if this value has the name specified by the provided
- /// nul terminated string.
- bool isName(const char *N) const;
-
- /// getNameLen - Return the length of the string, correctly handling nul
- /// characters embedded into them.
- unsigned getNameLen() const;
-
- /// getName()/getNameStr() - Return the name of the specified value,
- /// *constructing a string* to hold it. Because these are guaranteed to
- /// construct a string, they are very expensive and should be avoided.
- std::string getName() const { return getNameStr(); }
+ /// getName() - Return a constant reference to the value's name. This is cheap
+ /// and guaranteed to return the same reference as long as the value is not
+ /// modified.
+ ///
+ /// This is currently guaranteed to return a StringRef for which data() points
+ /// to a valid null terminated string. The use of StringRef.data() is
+ /// deprecated here, however, and clients should not rely on it. If such
+ /// behavior is needed, clients should use expensive getNameStr(), or switch
+ /// to an interface that does not depend on null termination.
+ StringRef getName() const;
+
+ /// getNameStr() - Return the name of the specified value, *constructing a
+ /// string* to hold it. This is guaranteed to construct a string and is very
+ /// expensive, clients should use getName() unless necessary.