mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-02 07:32:52 +00:00
This pass is moving to lib IPO
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18439 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
92f6c15d8f
commit
6992afcdb9
@ -1,56 +0,0 @@
|
||||
//===- SymbolStripping.cpp - Strip symbols for functions and modules ------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file was developed by the LLVM research group and is distributed under
|
||||
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements stripping symbols out of symbol tables.
|
||||
//
|
||||
// Specifically, this allows you to strip all of the symbols out of:
|
||||
// * All functions in a module
|
||||
// * All non-essential symbols in a module (all function symbols + all module
|
||||
// scope symbols)
|
||||
//
|
||||
// Notice that:
|
||||
// * This pass makes code much less readable, so it should only be used in
|
||||
// situations where the 'strip' utility would be used (such as reducing
|
||||
// code size, and making it harder to reverse engineer code).
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/SymbolTable.h"
|
||||
#include "llvm/Pass.h"
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
struct SymbolStripping : public FunctionPass {
|
||||
virtual bool runOnFunction(Function &F) {
|
||||
return F.getSymbolTable().strip();
|
||||
}
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
};
|
||||
RegisterOpt<SymbolStripping> X("strip", "Strip symbols from functions");
|
||||
|
||||
struct FullSymbolStripping : public SymbolStripping {
|
||||
virtual bool doInitialization(Module &M) {
|
||||
return M.getSymbolTable().strip();
|
||||
}
|
||||
};
|
||||
RegisterOpt<FullSymbolStripping> Y("mstrip",
|
||||
"Strip symbols from module and functions");
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createSymbolStrippingPass() {
|
||||
return new SymbolStripping();
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createFullSymbolStrippingPass() {
|
||||
return new FullSymbolStripping();
|
||||
}
|
Loading…
Reference in New Issue
Block a user