mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-04 17:58:22 +00:00
Make this pass simply invoke SymbolTable::strip().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13749 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
119b342b20
commit
3f0635e012
@ -27,39 +27,10 @@
|
||||
#include "llvm/Pass.h"
|
||||
using namespace llvm;
|
||||
|
||||
static bool StripSymbolTable(SymbolTable &SymTab) {
|
||||
bool RemovedSymbol = false;
|
||||
|
||||
for (SymbolTable::iterator I = SymTab.begin(); I != SymTab.end();) {
|
||||
// Removing items from the plane can cause the plane itself to get deleted.
|
||||
// If this happens, make sure we incremented our plane iterator already!
|
||||
std::map<const std::string, Value *> &Plane = (I++)->second;
|
||||
|
||||
SymbolTable::type_iterator B = Plane.begin(), Bend = Plane.end();
|
||||
while (B != Bend) { // Found nonempty type plane!
|
||||
Value *V = B->second;
|
||||
|
||||
if (isa<Constant>(V) || isa<Type>(V)) {
|
||||
SymTab.type_remove(B++);
|
||||
RemovedSymbol = true;
|
||||
} else {
|
||||
++B;
|
||||
if (!isa<GlobalValue>(V) || cast<GlobalValue>(V)->hasInternalLinkage()){
|
||||
// Set name to "", removing from symbol table!
|
||||
V->setName("", &SymTab);
|
||||
RemovedSymbol = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return RemovedSymbol;
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct SymbolStripping : public FunctionPass {
|
||||
virtual bool runOnFunction(Function &F) {
|
||||
return StripSymbolTable(F.getSymbolTable());
|
||||
return F.getSymbolTable().strip();
|
||||
}
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesAll();
|
||||
@ -69,7 +40,7 @@ namespace {
|
||||
|
||||
struct FullSymbolStripping : public SymbolStripping {
|
||||
virtual bool doInitialization(Module &M) {
|
||||
return StripSymbolTable(M.getSymbolTable());
|
||||
return M.getSymbolTable().strip();
|
||||
}
|
||||
};
|
||||
RegisterOpt<FullSymbolStripping> Y("mstrip",
|
||||
|
Loading…
Reference in New Issue
Block a user