mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 00:39:36 +00:00
shrink vmcore by moving symbol table stripping support out of VMCore into
the one IPO pass that uses it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33990 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a3832fd46a
commit
7f1444bc0a
@ -98,10 +98,6 @@ public:
|
||||
/// @{
|
||||
public:
|
||||
|
||||
/// This method will strip the symbol table of its names
|
||||
/// @brief Strip the symbol table.
|
||||
bool strip();
|
||||
|
||||
/// Inserts a type into the symbol table with the specified name. There can be
|
||||
/// a many-to-one mapping between names and types. This method allows a type
|
||||
/// with an existing entry in the symbol table to get a new name.
|
||||
|
@ -120,12 +120,6 @@ public:
|
||||
/// @}
|
||||
/// @name Mutators
|
||||
/// @{
|
||||
public:
|
||||
|
||||
/// This method will strip the symbol table of its names.
|
||||
/// @brief Strip the symbol table.
|
||||
bool strip();
|
||||
|
||||
private:
|
||||
/// This method adds the provided value \p N to the symbol table. The Value
|
||||
/// must have a name which is used to place the value in the symbol table.
|
||||
|
@ -73,6 +73,27 @@ static void RemoveDeadConstant(Constant *C) {
|
||||
}
|
||||
}
|
||||
|
||||
// Strip the symbol table of its names.
|
||||
//
|
||||
static void StripSymtab(ValueSymbolTable &ST) {
|
||||
for (ValueSymbolTable::iterator VI = ST.begin(), VE = ST.end(); VI != VE; ) {
|
||||
Value *V = VI->second;
|
||||
++VI;
|
||||
if (!isa<GlobalValue>(V) || cast<GlobalValue>(V)->hasInternalLinkage()) {
|
||||
// Set name to "", removing from symbol table!
|
||||
V->setName("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Strip the symbol table of its names.
|
||||
static void StripTypeSymtab(TypeSymbolTable &ST) {
|
||||
for (TypeSymbolTable::iterator TI = ST.begin(), E = ST.end(); TI != E; )
|
||||
ST.remove(TI++);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool StripSymbols::runOnModule(Module &M) {
|
||||
// If we're not just stripping debug info, strip all symbols from the
|
||||
// functions and the names from any internal globals.
|
||||
@ -85,11 +106,11 @@ bool StripSymbols::runOnModule(Module &M) {
|
||||
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) {
|
||||
if (I->hasInternalLinkage())
|
||||
I->setName(""); // Internal symbols can't participate in linkage
|
||||
I->getValueSymbolTable().strip();
|
||||
StripSymtab(I->getValueSymbolTable());
|
||||
}
|
||||
|
||||
// Remove all names from types.
|
||||
M.getTypeSymbolTable().strip();
|
||||
StripTypeSymtab(M.getTypeSymbolTable());
|
||||
}
|
||||
|
||||
// Strip debug info in the module if it exists. To do this, we remove
|
||||
|
@ -111,17 +111,6 @@ void TypeSymbolTable::insert(const std::string& Name, const Type* T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Strip the symbol table of its names.
|
||||
bool TypeSymbolTable::strip() {
|
||||
bool RemovedSymbol = false;
|
||||
for (iterator TI = tmap.begin(); TI != tmap.end(); ) {
|
||||
remove(TI++);
|
||||
RemovedSymbol = true;
|
||||
}
|
||||
|
||||
return RemovedSymbol;
|
||||
}
|
||||
|
||||
// This function is called when one of the types in the type plane are refined
|
||||
void TypeSymbolTable::refineAbstractType(const DerivedType *OldType,
|
||||
const Type *NewType) {
|
||||
|
@ -59,22 +59,6 @@ Value *ValueSymbolTable::lookup(const std::string &Name) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Strip the symbol table of its names.
|
||||
//
|
||||
bool ValueSymbolTable::strip() {
|
||||
bool RemovedSymbol = false;
|
||||
for (iterator VI = vmap.begin(), VE = vmap.end(); VI != VE; ) {
|
||||
Value *V = VI->second;
|
||||
++VI;
|
||||
if (!isa<GlobalValue>(V) || cast<GlobalValue>(V)->hasInternalLinkage()) {
|
||||
// Set name to "", removing from symbol table!
|
||||
V->setName("");
|
||||
RemovedSymbol = true;
|
||||
}
|
||||
}
|
||||
return RemovedSymbol;
|
||||
}
|
||||
|
||||
// Insert a value into the symbol table with the specified name...
|
||||
//
|
||||
void ValueSymbolTable::insert(Value* V) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user