mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-24 21:05:23 +00:00
For PR645:
Remove the Function::renameLocalSymbols function as it is no longer needed. llvm-svn: 33522
This commit is contained in:
parent
93b5ba7cd2
commit
cca21cf060
@ -111,13 +111,6 @@ public:
|
||||
unsigned getCallingConv() const { return CallingConvention; }
|
||||
void setCallingConv(unsigned CC) { CallingConvention = CC; }
|
||||
|
||||
/// renameLocalSymbols - This method goes through the Function's symbol table
|
||||
/// and renames any symbols that conflict with symbols at global scope. This
|
||||
/// is required before printing out to a textual form, to ensure that there is
|
||||
/// no ambiguity when parsing.
|
||||
void renameLocalSymbols();
|
||||
|
||||
|
||||
/// deleteBody - This method deletes the body of the function, and converts
|
||||
/// the linkage to external.
|
||||
///
|
||||
|
@ -99,9 +99,6 @@ namespace {
|
||||
// Output all floating point constants that cannot be printed accurately.
|
||||
printFloatingPointConstants(F);
|
||||
|
||||
// Ensure that no local symbols conflict with global symbols.
|
||||
F.renameLocalSymbols();
|
||||
|
||||
printFunction(F);
|
||||
FPConstantMap.clear();
|
||||
return false;
|
||||
|
@ -139,45 +139,6 @@ void Function::eraseFromParent() {
|
||||
}
|
||||
|
||||
|
||||
/// renameLocalSymbols - This method goes through the Function's symbol table
|
||||
/// and renames any symbols that conflict with symbols at global scope. This is
|
||||
/// required before printing out to a textual form, to ensure that there is no
|
||||
/// ambiguity when parsing.
|
||||
void Function::renameLocalSymbols() {
|
||||
SymbolTable &LST = getValueSymbolTable(); // Local Symtab
|
||||
SymbolTable &GST = getParent()->getValueSymbolTable(); // Global Symtab
|
||||
|
||||
for (SymbolTable::plane_iterator LPI = LST.plane_begin(), E = LST.plane_end();
|
||||
LPI != E; ++LPI)
|
||||
// All global symbols are of pointer type, ignore any non-pointer planes.
|
||||
if (isa<PointerType>(LPI->first)) {
|
||||
// Only check if the global plane has any symbols of this type.
|
||||
SymbolTable::plane_iterator GPI = GST.find(LPI->first);
|
||||
if (GPI != GST.plane_end()) {
|
||||
SymbolTable::ValueMap &LVM = LPI->second;
|
||||
const SymbolTable::ValueMap &GVM = GPI->second;
|
||||
|
||||
// Loop over all local symbols, renaming those that are in the global
|
||||
// symbol table already.
|
||||
for (SymbolTable::value_iterator VI = LVM.begin(), E = LVM.end();
|
||||
VI != E;) {
|
||||
Value *V = VI->second;
|
||||
const std::string &Name = VI->first;
|
||||
++VI;
|
||||
if (GVM.count(Name)) {
|
||||
static unsigned UniqueNum = 0;
|
||||
// Find a name that does not conflict!
|
||||
while (GVM.count(Name + "_" + utostr(++UniqueNum)) ||
|
||||
LVM.count(Name + "_" + utostr(UniqueNum)))
|
||||
/* scan for UniqueNum that works */;
|
||||
V->setName(Name + "_" + utostr(UniqueNum));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// dropAllReferences() - This function causes all the subinstructions to "let
|
||||
// go" of all references that they are maintaining. This allows one to
|
||||
// 'delete' a whole class at a time, even though there may be circular
|
||||
|
Loading…
x
Reference in New Issue
Block a user