mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-22 10:24:26 +00:00
Enable *BasicBlockPass::createPrinterPass()
Enables raw_ostream I/O for BasicBlockPass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174776 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -23,6 +23,7 @@
|
|||||||
namespace llvm {
|
namespace llvm {
|
||||||
class FunctionPass;
|
class FunctionPass;
|
||||||
class ModulePass;
|
class ModulePass;
|
||||||
|
class BasicBlockPass;
|
||||||
class raw_ostream;
|
class raw_ostream;
|
||||||
|
|
||||||
/// createPrintModulePass - Create and return a pass that writes the
|
/// createPrintModulePass - Create and return a pass that writes the
|
||||||
@ -37,6 +38,11 @@ namespace llvm {
|
|||||||
raw_ostream *OS,
|
raw_ostream *OS,
|
||||||
bool DeleteStream=false);
|
bool DeleteStream=false);
|
||||||
|
|
||||||
|
/// createPrintBasicBlockPass - Create and return a pass that writes the
|
||||||
|
/// BB to the specified raw_ostream.
|
||||||
|
BasicBlockPass *createPrintBasicBlockPass(raw_ostream *OS,
|
||||||
|
bool DeleteStream=false,
|
||||||
|
const std::string &Banner = "");
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -217,6 +217,7 @@ void initializePreVerifierPass(PassRegistry&);
|
|||||||
void initializePrintDbgInfoPass(PassRegistry&);
|
void initializePrintDbgInfoPass(PassRegistry&);
|
||||||
void initializePrintFunctionPassPass(PassRegistry&);
|
void initializePrintFunctionPassPass(PassRegistry&);
|
||||||
void initializePrintModulePassPass(PassRegistry&);
|
void initializePrintModulePassPass(PassRegistry&);
|
||||||
|
void initializePrintBasicBlockPassPass(PassRegistry&);
|
||||||
void initializeProcessImplicitDefsPass(PassRegistry&);
|
void initializeProcessImplicitDefsPass(PassRegistry&);
|
||||||
void initializeProfileEstimatorPassPass(PassRegistry&);
|
void initializeProfileEstimatorPassPass(PassRegistry&);
|
||||||
void initializeProfileInfoAnalysisGroup(PassRegistry&);
|
void initializeProfileInfoAnalysisGroup(PassRegistry&);
|
||||||
|
@ -151,6 +151,7 @@ namespace {
|
|||||||
(void) llvm::createMergeFunctionsPass();
|
(void) llvm::createMergeFunctionsPass();
|
||||||
(void) llvm::createPrintModulePass(0);
|
(void) llvm::createPrintModulePass(0);
|
||||||
(void) llvm::createPrintFunctionPass("", 0);
|
(void) llvm::createPrintFunctionPass("", 0);
|
||||||
|
(void) llvm::createPrintBasicBlockPass(0);
|
||||||
(void) llvm::createDbgInfoPrinterPass();
|
(void) llvm::createDbgInfoPrinterPass();
|
||||||
(void) llvm::createModuleDebugInfoPrinterPass();
|
(void) llvm::createModuleDebugInfoPrinterPass();
|
||||||
(void) llvm::createPartialInliningPass();
|
(void) llvm::createPartialInliningPass();
|
||||||
|
@ -39,6 +39,7 @@ void llvm::initializeCore(PassRegistry &Registry) {
|
|||||||
initializeDominatorTreePass(Registry);
|
initializeDominatorTreePass(Registry);
|
||||||
initializePrintModulePassPass(Registry);
|
initializePrintModulePassPass(Registry);
|
||||||
initializePrintFunctionPassPass(Registry);
|
initializePrintFunctionPassPass(Registry);
|
||||||
|
initializePrintBasicBlockPassPass(Registry);
|
||||||
initializeVerifierPass(Registry);
|
initializeVerifierPass(Registry);
|
||||||
initializePreVerifierPass(Registry);
|
initializePreVerifierPass(Registry);
|
||||||
}
|
}
|
||||||
|
@ -143,8 +143,7 @@ PassManagerType FunctionPass::getPotentialPassManagerType() const {
|
|||||||
|
|
||||||
Pass *BasicBlockPass::createPrinterPass(raw_ostream &O,
|
Pass *BasicBlockPass::createPrinterPass(raw_ostream &O,
|
||||||
const std::string &Banner) const {
|
const std::string &Banner) const {
|
||||||
|
return createPrintBasicBlockPass(&O, false, Banner);
|
||||||
llvm_unreachable("BasicBlockPass printing unsupported.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BasicBlockPass::doInitialization(Function &) {
|
bool BasicBlockPass::doInitialization(Function &) {
|
||||||
|
@ -73,6 +73,31 @@ namespace {
|
|||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PrintBasicBlockPass : public BasicBlockPass {
|
||||||
|
std::string Banner;
|
||||||
|
raw_ostream *Out; // raw_ostream to print on
|
||||||
|
bool DeleteStream; // Delete the ostream in our dtor?
|
||||||
|
public:
|
||||||
|
static char ID;
|
||||||
|
PrintBasicBlockPass() : BasicBlockPass(ID), Out(&dbgs()),
|
||||||
|
DeleteStream(false) {}
|
||||||
|
PrintBasicBlockPass(const std::string &B, raw_ostream *o, bool DS)
|
||||||
|
: BasicBlockPass(ID), Banner(B), Out(o), DeleteStream(DS) {}
|
||||||
|
|
||||||
|
~PrintBasicBlockPass() {
|
||||||
|
if (DeleteStream) delete Out;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool runOnBasicBlock(BasicBlock &BB) {
|
||||||
|
(*Out) << Banner << BB;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
|
AU.setPreservesAll();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
char PrintModulePass::ID = 0;
|
char PrintModulePass::ID = 0;
|
||||||
@ -81,6 +106,9 @@ INITIALIZE_PASS(PrintModulePass, "print-module",
|
|||||||
char PrintFunctionPass::ID = 0;
|
char PrintFunctionPass::ID = 0;
|
||||||
INITIALIZE_PASS(PrintFunctionPass, "print-function",
|
INITIALIZE_PASS(PrintFunctionPass, "print-function",
|
||||||
"Print function to stderr", false, false)
|
"Print function to stderr", false, false)
|
||||||
|
char PrintBasicBlockPass::ID = 0;
|
||||||
|
INITIALIZE_PASS(PrintBasicBlockPass, "print-bb",
|
||||||
|
"Print BB to stderr", false, false)
|
||||||
|
|
||||||
/// createPrintModulePass - Create and return a pass that writes the
|
/// createPrintModulePass - Create and return a pass that writes the
|
||||||
/// module to the specified raw_ostream.
|
/// module to the specified raw_ostream.
|
||||||
@ -98,3 +126,11 @@ FunctionPass *llvm::createPrintFunctionPass(const std::string &Banner,
|
|||||||
return new PrintFunctionPass(Banner, OS, DeleteStream);
|
return new PrintFunctionPass(Banner, OS, DeleteStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// createPrintBasicBlockPass - Create and return a pass that writes the
|
||||||
|
/// BB to the specified raw_ostream.
|
||||||
|
BasicBlockPass *llvm::createPrintBasicBlockPass(llvm::raw_ostream *OS,
|
||||||
|
bool DeleteStream,
|
||||||
|
const std::string &Banner) {
|
||||||
|
return new PrintBasicBlockPass(Banner, OS, DeleteStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user