OpenASIP
2.0
|
#include <CallsToJumps.hh>
Public Member Functions | |
CallsToJumps (InterPassData &data) | |
virtual | ~CallsToJumps () |
virtual void | handleControlFlowGraph (ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine) |
std::string | shortDescription () const |
Public Member Functions inherited from ControlFlowGraphPass | |
ControlFlowGraphPass (InterPassData &data) | |
virtual | ~ControlFlowGraphPass () |
void | executeBasicBlockPass (ControlFlowGraph &cfg, const TTAMachine::Machine &targetMachine, BasicBlockPass &bbPass) |
Public Member Functions inherited from SchedulerPass | |
SchedulerPass (InterPassData &data) | |
virtual | ~SchedulerPass () |
InterPassData & | interPassData () |
virtual std::string | longDescription () const |
Pass that converts all CALL operation calls to a JUMP that succeeds a regular move to RA that stores the address of the instruction following the original CALL.
This pass should be called for an unscheduled CFG before DDG construction.
Definition at line 36 of file CallsToJumps.hh.
|
inline |
Definition at line 38 of file CallsToJumps.hh.
|
inlinevirtual |
Definition at line 39 of file CallsToJumps.hh.
|
virtual |
Handles a single control flow graph.
The pass should work with any kind of control flow graph, it should not assume the CFG represents a whole procedure, for example.
cfg | The control flow graph to handle. |
machine | The target machine if any. (NullMachine::instance() if target machine is irrelevant). |
In | case handling is unsuccesful for any reason (cfg might still get modified). |
Reimplemented from ControlFlowGraphPass.
Definition at line 49 of file CallsToJumps.cc.
References TTAProgram::AnnotatedInstructionElement::addAnnotation(), TTAProgram::Instruction::addMove(), TTAProgram::ProgramAnnotation::ANN_JUMP_FUNCTION_CALL, assert, BasicBlockNode::basicBlock(), TTAMachine::Machine::controlUnit(), TTAProgram::MoveGuard::copy(), TTAProgram::Terminal::copy(), TTAProgram::InstructionReferenceManager::createReference(), TTAProgram::CodeGenerator::createTerminalFUPort(), ControlFlowGraph::fallThruSuccessor(), TTAProgram::CodeSnippet::firstInstruction(), TTAProgram::Move::guard(), TTAProgram::Instruction::hasCall(), TTAProgram::InstructionReferenceManager::hasReference(), TTAProgram::CodeSnippet::insertBefore(), TTAMachine::NullInstructionTemplate::instance(), UniversalMachine::instance(), TTAProgram::CodeSnippet::instructionAtIndex(), TTAProgram::CodeSnippet::instructionCount(), ControlFlowGraph::instructionReferenceManager(), BasicBlockNode::isNormalBB(), BasicBlockNode::isScheduled(), TTAProgram::Move::isUnconditional(), Application::logStream(), TTAProgram::Instruction::move(), TTAProgram::Instruction::moveCount(), BoostGraph< GraphNode, GraphEdge >::node(), BoostGraph< GraphNode, GraphEdge >::nodeCount(), TTAProgram::CodeSnippet::remove(), TTAProgram::InstructionReferenceManager::replace(), TTAMachine::ControlUnit::returnAddressPort(), TTAProgram::Move::source(), TTAProgram::Move::toString(), TTAProgram::CodeSnippet::toString(), TTAProgram::Instruction::toString(), and UniversalMachine::universalBus().
Referenced by llvm::LLVMTCEIRBuilder::writeMachineFunction().
|
inlinevirtual |
A short description of the pass, usually the optimization name, such as "basic block scheduler".
Implements SchedulerPass.
Definition at line 44 of file CallsToJumps.hh.