Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

PipelinablePass Class Reference

A Pass is Pipelinable if its computation can be applied to each procedure independently. More...

#include <suifpasses/passes.h>

Inheritance diagram for PipelinablePass:

Pass Module AddExplicitLoopLabels AddProcedureEndLabelsPass AddStatementListsToProcs ArrayReferenceDismantlerPass AvoidLabelCollisions build_single_vtable_pass CallExpressionDismantlerPass CFor2ForPass ConstantFolderPass ConvertToFortranForm CopyPropPass CountCallsWithIteratorPass CountCallsWithWalkerPass DeadcodePass dismantle_if_statements_pass DismantleCallArguments DismantleEmptyScopeStatements DismantleMultiEntryScopeStatements DismantleStmtsWithJumpsInside FieldBuilderPass FixupExplicitLoopLabels FlattenStatementListsPass FoldStatementsPass globalize_class_method_symbols_pass globalize_class_variable_symbols_pass GuardAllFors IfConditionsToBinaryExprs InlinePass iterator_pass LoadExpressionDismantlerPass MarkGuardedFors NormalizeProcedureReturns One2MultiArrayExpressionPass PipelinerDispatchPass print_pass PrintDotSuifCFGraphPass PrintSuifCFGraphPass RemoveExplicitLoopLabels RemoveIfAndLoopPass RequireProcedureReturns SuifCFGraphPass UnconvertFromFortranForm walker_based_module walker_pass List of all members.

Public Methods

 PipelinablePass ( SuifEnv* suif_env, const LString &name )
virtual ~PipelinablePass () = 0
virtual void initialize ()
 Initialize the pass.

virtual void execute ()
 will execute the Pass as if it is not pipelined.

virtual Moduleclone () const = 0
 May return "this" if the pass has no state.

virtual void do_file_set_block ( FileSetBlock* file_set_block )
 Override this if computation is to be applied to a file_set_block. More...

virtual void do_file_block ( FileBlock* file_block )
 Override this if computation is to be applied to a file_block. More...

virtual void do_procedure_definition ( ProcedureDefinition* proc_def )
 Override this if computation is to be applied to a procedure_definition. More...

virtual void do_variable_definition ( VariableDefinition* var_def )
 Override this if computation is to be applied to a variable_definition. More...

virtual void finalize ()
 Override this if computation is to be executed after all processing is done. More...


Detailed Description

A Pass is Pipelinable if its computation can be applied to each procedure independently.

In the pipelined execution mode, the system will apply all the computations from the PipelinablePasses to a procedure before moving to another. This execution order should have a better data locality.


Constructor & Destructor Documentation

PipelinablePass::PipelinablePass ( SuifEnv * suif_env,
const LString & name)

PipelinablePass::~PipelinablePass () [pure virtual]


Member Function Documentation

Module * PipelinablePass::clone ( void) const [inline, pure virtual]

May return "this" if the pass has no state.

Reimplemented from Pass.

Reimplemented in AddExplicitLoopLabels, AddProcedureEndLabelsPass, AddStatementListsToProcs, ArrayReferenceDismantlerPass, AvoidLabelCollisions, CFor2ForPass, CallExpressionDismantlerPass, ConstantFolderPass, ConvertToFortranForm, CopyPropPass, CountCallsWithIteratorPass, CountCallsWithWalkerPass, DeadcodePass, DismantleCallArguments, DismantleEmptyScopeStatements, DismantleMultiEntryScopeStatements, DismantleStmtsWithJumpsInside, FieldBuilderPass, FixupExplicitLoopLabels, FlattenStatementListsPass, FoldStatementsPass, GuardAllFors, IfConditionsToBinaryExprs, InlinePass, LoadExpressionDismantlerPass, MarkGuardedFors, NormalizeProcedureReturns, One2MultiArrayExpressionPass, PipelinerDispatchPass, PrintDotSuifCFGraphPass, PrintSuifCFGraphPass, RemoveExplicitLoopLabels, RemoveIfAndLoopPass, RequireProcedureReturns, SuifCFGraphPass, UnconvertFromFortranForm, build_single_vtable_pass, dismantle_if_statements_pass, dismantle_if_statements_pass, globalize_class_method_symbols_pass, globalize_class_method_symbols_pass, globalize_class_variable_symbols_pass, iterator_pass, print_pass, walker_based_module, and walker_pass.

void PipelinablePass::do_file_block ( FileBlock * file_block) [inline, virtual]

Override this if computation is to be applied to a file_block.

The default is empty.

Reimplemented in PipelinerDispatchPass, build_single_vtable_pass, globalize_class_method_symbols_pass, globalize_class_method_symbols_pass, and globalize_class_variable_symbols_pass.

void PipelinablePass::do_file_set_block ( FileSetBlock * file_set_block) [inline, virtual]

Override this if computation is to be applied to a file_set_block.

The default is empty.

Reimplemented from Pass.

Reimplemented in PipelinerDispatchPass, globalize_class_method_symbols_pass, and print_pass.

void PipelinablePass::do_procedure_definition ( ProcedureDefinition * proc_def) [inline, virtual]

Override this if computation is to be applied to a procedure_definition.

The default is empty.

Reimplemented in AddExplicitLoopLabels, AddProcedureEndLabelsPass, AddStatementListsToProcs, ArrayReferenceDismantlerPass, AvoidLabelCollisions, CFor2ForPass, CallExpressionDismantlerPass, ConstantFolderPass, ConvertToFortranForm, CopyPropPass, CountCallsWithIteratorPass, CountCallsWithWalkerPass, DeadcodePass, DismantleCallArguments, DismantleEmptyScopeStatements, DismantleMultiEntryScopeStatements, DismantleStmtsWithJumpsInside, FieldBuilderPass, FixupExplicitLoopLabels, FlattenStatementListsPass, FoldStatementsPass, GuardAllFors, IfConditionsToBinaryExprs, InlinePass, LoadExpressionDismantlerPass, MarkGuardedFors, NormalizeProcedureReturns, One2MultiArrayExpressionPass, PipelinerDispatchPass, PrintDotSuifCFGraphPass, PrintSuifCFGraphPass, RemoveExplicitLoopLabels, RemoveIfAndLoopPass, RequireProcedureReturns, SuifCFGraphPass, UnconvertFromFortranForm, dismantle_if_statements_pass, dismantle_if_statements_pass, globalize_class_method_symbols_pass, iterator_pass, walker_based_module, and walker_pass.

void PipelinablePass::do_variable_definition ( VariableDefinition * var_def) [inline, virtual]

Override this if computation is to be applied to a variable_definition.

The default is empty.

Reimplemented in PipelinerDispatchPass, and globalize_class_method_symbols_pass.

void PipelinablePass::execute ( void) [inline, virtual]

will execute the Pass as if it is not pipelined.

Reimplemented from Pass.

Reimplemented in PipelinerDispatchPass.

void PipelinablePass::finalize () [inline, virtual]

Override this if computation is to be executed after all processing is done.

The default is empty.

Reimplemented in CFor2ForPass.

void PipelinablePass::initialize ( void) [inline, virtual]

Initialize the pass.

Reimplemented from Pass.

Reimplemented in AddExplicitLoopLabels, AddProcedureEndLabelsPass, AddStatementListsToProcs, ArrayReferenceDismantlerPass, CFor2ForPass, CallExpressionDismantlerPass, ConvertToFortranForm, CopyPropPass, DeadcodePass, DismantleCallArguments, DismantleEmptyScopeStatements, DismantleMultiEntryScopeStatements, DismantleStmtsWithJumpsInside, FieldBuilderPass, FixupExplicitLoopLabels, FlattenStatementListsPass, FoldStatementsPass, GuardAllFors, IfConditionsToBinaryExprs, LoadExpressionDismantlerPass, MarkGuardedFors, NormalizeProcedureReturns, One2MultiArrayExpressionPass, PrintDotSuifCFGraphPass, RemoveExplicitLoopLabels, RemoveIfAndLoopPass, RequireProcedureReturns, SuifCFGraphPass, UnconvertFromFortranForm, and walker_based_module.


The documentation for this class was generated from the following files:
Generated at Mon Jul 31 13:44:19 2000 for NCI SUIF by doxygen 1.1.2 written by Dimitri van Heesch, © 1997-2000