aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VMCore')
-rw-r--r--lib/VMCore/Value.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp
index 6157dd5..67cd11a 100644
--- a/lib/VMCore/Value.cpp
+++ b/lib/VMCore/Value.cpp
@@ -177,7 +177,10 @@ void Value::setName(const Twine &NewName) {
const char *NameStr = NameData.data();
unsigned NameLen = NameData.size();
- if (NameLen == 0 && !hasName()) return;
+ // Name isn't changing?
+ if (getName() == StringRef(NameStr, NameLen))
+ return;
+
assert(getType() != Type::VoidTy && "Cannot assign a name to void values!");
// Get the symbol table to update for this object.
@@ -193,13 +196,8 @@ void Value::setName(const Twine &NewName) {
return;
}
- if (Name) {
- // Name isn't changing?
- if (NameLen == Name->getKeyLength() &&
- !memcmp(Name->getKeyData(), NameStr, NameLen))
- return;
+ if (Name)
Name->Destroy();
- }
// NOTE: Could optimize for the case the name is shrinking to not deallocate
// then reallocated.
@@ -213,11 +211,6 @@ void Value::setName(const Twine &NewName) {
// NOTE: Could optimize for the case the name is shrinking to not deallocate
// then reallocated.
if (hasName()) {
- // Name isn't changing?
- if (NameLen == Name->getKeyLength() &&
- !memcmp(Name->getKeyData(), NameStr, NameLen))
- return;
-
// Remove old name.
ST->removeValueName(Name);
Name->Destroy();