assert(V->hasName() && "Can't insert nameless Value into symbol table");
// Try inserting the name, assuming it won't conflict.
- if (vmap.insert(V->Name)) {
- //DEBUG(dbgs() << " Inserted value: " << V->Name << ": " << *V << "\n");
+ if (vmap.insert(V->getValueName())) {
+ //DEBUG(dbgs() << " Inserted value: " << V->getValueName() << ": " << *V << "\n");
return;
}
SmallString<256> UniqueName(V->getName().begin(), V->getName().end());
// The name is too already used, just free it so we can allocate a new name.
- V->Name->Destroy();
-
+ V->getValueName()->Destroy();
+
unsigned BaseSize = UniqueName.size();
while (1) {
// Trim any suffix off and append the next number.
UniqueName.resize(BaseSize);
- raw_svector_ostream(UniqueName) << ++LastUnique;
+ raw_svector_ostream(UniqueName) << "." << ++LastUnique;
// Try insert the vmap entry with this suffix.
- ValueName &NewName = vmap.GetOrCreateValue(UniqueName);
- if (!NewName.getValue()) {
+ auto IterBool = vmap.insert(std::make_pair(UniqueName, V));
+ if (IterBool.second) {
// Newly inserted name. Success!
- NewName.setValue(V);
- V->Name = &NewName;
+ V->setValueName(&*IterBool.first);
//DEBUG(dbgs() << " Inserted value: " << UniqueName << ": " << *V << "\n");
return;
}
/// auto-renames the name and returns that instead.
ValueName *ValueSymbolTable::createValueName(StringRef Name, Value *V) {
// In the common case, the name is not already in the symbol table.
- ValueName &Entry = vmap.GetOrCreateValue(Name);
- if (!Entry.getValue()) {
- Entry.setValue(V);
+ auto IterBool = vmap.insert(std::make_pair(Name, V));
+ if (IterBool.second) {
//DEBUG(dbgs() << " Inserted value: " << Entry.getKeyData() << ": "
// << *V << "\n");
- return &Entry;
+ return &*IterBool.first;
}
// Otherwise, there is a naming conflict. Rename this value.
raw_svector_ostream(UniqueName) << ++LastUnique;
// Try insert the vmap entry with this suffix.
- ValueName &NewName = vmap.GetOrCreateValue(UniqueName);
- if (!NewName.getValue()) {
- // Newly inserted name. Success!
- NewName.setValue(V);
- //DEBUG(dbgs() << " Inserted value: " << UniqueName << ": " << *V << "\n");
- return &NewName;
+ auto IterBool = vmap.insert(std::make_pair(UniqueName, V));
+ if (IterBool.second) {
+ // DEBUG(dbgs() << " Inserted value: " << UniqueName << ": " << *V <<
+ // "\n");
+ return &*IterBool.first;
}
}
}