Demoting CHelpers.h to include/llvm/Support.
[oota-llvm.git] / lib / VMCore / Value.cpp
index 790ae17a9839dcb282a03e4be27454b0f322ab59..0150c7e6e96a00f0c56562d70dc04d54e48e8378 100644 (file)
@@ -117,6 +117,21 @@ static bool getSymTab(Value *V, ValueSymbolTable *&ST) {
   return false;
 }
 
+/// getNameStart - Return a pointer to a null terminated string for this name.
+/// Note that names can have null characters within the string as well as at
+/// their end.  This always returns a non-null pointer.
+const char *Value::getNameStart() const {
+  if (Name == 0) return "";
+  return Name->getKeyData();
+}
+
+/// getNameLen - Return the length of the string, correctly handling nul
+/// characters embedded into them.
+unsigned Value::getNameLen() const {
+  return Name ? Name->getKeyLength() : 0;
+}
+
+
 std::string Value::getNameStr() const {
   if (Name == 0) return "";
   return std::string(Name->getKeyData(),
@@ -261,15 +276,15 @@ void Value::uncheckedReplaceAllUsesWith(Value *New) {
   while (!use_empty()) {
     Use &U = *UseList;
     // Must handle Constants specially, we cannot call replaceUsesOfWith on a
-    // constant!
+    // constant because they are uniqued.
     if (Constant *C = dyn_cast<Constant>(U.getUser())) {
-      if (!isa<GlobalValue>(C))
+      if (!isa<GlobalValue>(C)) {
         C->replaceUsesOfWithOnConstant(this, New, &U);
-      else
-        U.set(New);
-    } else {
-      U.set(New);
+        continue;
+      }
     }
+    
+    U.set(New);
   }
 }