PandA-2024.02
Public Member Functions | Private Member Functions | Private Attributes
create_tree_manager Class Reference

Class that creates the tree_manager starting from the source code files. More...

#include <create_tree_manager.hpp>

Inheritance diagram for create_tree_manager:
Inheritance graph
[legend]
Collaboration diagram for create_tree_manager:
Collaboration graph
[legend]

Public Member Functions

 create_tree_manager (const ParameterConstRef _parameters, const application_managerRef AppM, const DesignFlowManagerConstRef design_flow_manager)
 Constructor. More...
 
 ~create_tree_manager () override
 Destructor. More...
 
DesignFlowStep_Status Exec () override
 Creates the tree_manager data structure by invoking the GCC/CLANG wrapper. More...
 
bool HasToBeExecuted () const override
 Check if this step has actually to be executed. More...
 
- Public Member Functions inherited from ApplicationFrontendFlowStep
 ApplicationFrontendFlowStep (const application_managerRef AppM, const FrontendFlowStepType frontend_flow_step_type, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
 ~ApplicationFrontendFlowStep () override
 Destructor. More...
 
std::string GetSignature () const override
 Return the signature of this step. More...
 
std::string GetName () const override
 Return the name of this design step. More...
 
- Public Member Functions inherited from FrontendFlowStep
 FrontendFlowStep (const application_managerRef AppM, const FrontendFlowStepType frontend_flow_step_type, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
 ~FrontendFlowStep () override
 Destructor. More...
 
virtual std::string GetKindText () const
 Return the name of the type of this frontend flow step. More...
 
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory () const override
 Return the factory to create this type of steps. More...
 
void PrintTreeManager (const bool before) const
 Dump the tree manager. More...
 
void PrintInitialIR () const override
 Dump the initial intermediate representation. More...
 
void PrintFinalIR () const override
 Dump the final intermediate representation. More...
 
- Public Member Functions inherited from DesignFlowStep
 DesignFlowStep (const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
virtual ~DesignFlowStep ()
 Destructor. More...
 
virtual void Initialize ()
 Initialize the step (i.e., like a constructor, but executed just before exec. More...
 
DesignFlowStep_Status GetStatus () const
 Return the status of this design step. More...
 
virtual void WriteDot (std::ostream &out) const
 Write the label for a dot graph. More...
 
bool IsComposed () const
 Returns if this step is composed. More...
 
int CGetDebugLevel () const
 Return the debug level of the step. More...
 

Private Member Functions

const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship > > ComputeFrontendRelationships (const DesignFlowStep::RelationshipType relationship_type) const override
 Return the set of analyses in relationship with this design step. More...
 
void ComputeRelationships (DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
 Compute the relationships of a step with other steps. More...
 
const std::string getCostTable () const
 return the latency table used by THR to balance the computation More...
 
void createCostTable ()
 createCostTable: Fill the CostTable starting from the technology files More...
 

Private Attributes

const CompilerWrapperRef compiler_wrapper
 The gcc wrapper. More...
 
std::string CostTable
 CostTable: string storing the operations' latency in an encoded map. More...
 

Additional Inherited Members

- Public Types inherited from FrontendFlowStep
using FunctionRelationship = enum { ALL_FUNCTIONS, CALLED_FUNCTIONS, CALLING_FUNCTIONS, SAME_FUNCTION, WHOLE_APPLICATION }
 The different relationship type between function analysis. More...
 
- Public Types inherited from DesignFlowStep
enum  RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP }
 The relationship type. More...
 
- Static Public Member Functions inherited from ApplicationFrontendFlowStep
static const std::string ComputeSignature (const FrontendFlowStepType frontend_flow_step_type)
 Compute the signature of a function frontend flow step. More...
 
- Static Public Member Functions inherited from FrontendFlowStep
static void CreateSteps (const DesignFlowManagerConstRef design_flow_manager, const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship >> &frontend_relationships, const application_managerConstRef application_manager, DesignFlowStepSet &relationships)
 Create the relationship steps of a step with other steps starting from already specified dependencies between frontend flow steps. More...
 
static const std::string EnumToKindText (const FrontendFlowStepType frontend_flow_step_type)
 Given a frontend flow step type, return the name of the type. More...
 
- Protected Attributes inherited from FrontendFlowStep
const application_managerRef AppM
 The application manager. More...
 
const FrontendFlowStepType frontend_flow_step_type
 The type of this step. More...
 
unsigned int print_counter
 Print counter. More...
 
- Protected Attributes inherited from DesignFlowStep
bool composed
 True if this step represents a composition of design flow steps (e.g., a flow); must be set by specialized constructors. More...
 
const Wrefcount< const DesignFlowManagerdesign_flow_manager
 The design flow manager. More...
 
const ParameterConstRef parameters
 Set of input parameters. More...
 
int debug_level
 The debug level. More...
 
const int output_level
 The output level. More...
 

Detailed Description

Class that creates the tree_manager starting from the source code files.

Definition at line 57 of file create_tree_manager.hpp.

Constructor & Destructor Documentation

◆ create_tree_manager()

create_tree_manager::create_tree_manager ( const ParameterConstRef  _parameters,
const application_managerRef  AppM,
const DesignFlowManagerConstRef  design_flow_manager 
)

Constructor.

Parameters
Paramis the set of the parameters
AppMis the reference to the application manager
design_flow_manageris the design flow manager

Definition at line 71 of file create_tree_manager.cpp.

References DesignFlowStep::debug_level, DEBUG_LEVEL_NONE, GET_CLASS, DesignFlowStep::parameters, and ~create_tree_manager().

Referenced by getCostTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~create_tree_manager()

create_tree_manager::~create_tree_manager ( )
overridedefault

Destructor.

Referenced by create_tree_manager(), and getCostTable().

Here is the caller graph for this function:

Member Function Documentation

◆ ComputeFrontendRelationships()

const CustomUnorderedSet< std::pair< FrontendFlowStepType, FrontendFlowStep::FunctionRelationship > > create_tree_manager::ComputeFrontendRelationships ( const DesignFlowStep::RelationshipType  relationship_type) const
overrideprivatevirtual

Return the set of analyses in relationship with this design step.

Parameters
relationship_typeis the type of relationship to be considered

Implements FrontendFlowStep.

Definition at line 149 of file create_tree_manager.cpp.

References DesignFlowStep::DEPENDENCE_RELATIONSHIP, DesignFlowStep::INVALIDATION_RELATIONSHIP, DesignFlowStep::PRECEDENCE_RELATIONSHIP, THROW_UNREACHABLE, and WHOLE_APPLICATION.

◆ ComputeRelationships()

void create_tree_manager::ComputeRelationships ( DesignFlowStepSet relationship,
const DesignFlowStep::RelationshipType  relationship_type 
)
overrideprivatevirtual

Compute the relationships of a step with other steps.

Parameters
dependenciesis where relationships will be stored
relationship_typeis the type of relationship to be computed

Reimplemented from FrontendFlowStep.

Definition at line 83 of file create_tree_manager.cpp.

References FrontendFlowStep::AppM, FrontendFlowStep::ComputeRelationships(), ParserFlowStep::ComputeSignature(), TechnologyFlowStep::ComputeSignature(), DesignFlowStep::DEPENDENCE_RELATIONSHIP, DesignFlowStep::design_flow_manager, DesignFlowStep::INVALIDATION_RELATIONSHIP, LOAD_TECHNOLOGY, Wrefcount< T >::lock(), NULL_VERTEX, DesignFlowStep::parameters, DesignFlowStep::PRECEDENCE_RELATIONSHIP, and THROW_UNREACHABLE.

Here is the call graph for this function:

◆ createCostTable()

void create_tree_manager::createCostTable ( )
private

createCostTable: Fill the CostTable starting from the technology files

manage loads and stores

Definition at line 182 of file create_tree_manager.cpp.

References FrontendFlowStep::AppM, CostTable, el, technology_manager::get_fu(), generic_device::get_technology_manager(), LIBRARY_STD_FU, DesignFlowStep::parameters, SplitString(), STR, STR_cost_latency_table_default, and THROW_ASSERT.

Referenced by Exec(), and getCostTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Exec()

DesignFlowStep_Status create_tree_manager::Exec ( )
overridevirtual

Creates the tree_manager data structure by invoking the GCC/CLANG wrapper.

Returns
the exit status of this step

parsing of archive files

Implements ApplicationFrontendFlowStep.

Definition at line 265 of file create_tree_manager.cpp.

References FrontendFlowStep::AppM, test_panda::command, compiler_wrapper, createCostTable(), DesignFlowStep::debug_level, DEBUG_LEVEL_PEDANTIC, DEBUG_LEVEL_VERY_PEDANTIC, GET_NODE, getCostTable(), GetPath(), INDENT_DBG_MEX, INDENT_OUT_MEX, IsError(), DesignFlowStep::output_level, OUTPUT_LEVEL_MINIMUM, OUTPUT_LEVEL_VERBOSE, PandaSystem(), DesignFlowStep::parameters, ParseTreeFile(), SUCCESS, THROW_ASSERT, THROW_ERROR, and THROW_WARNING.

Referenced by getCostTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCostTable()

const std::string create_tree_manager::getCostTable ( ) const
inlineprivate

return the latency table used by THR to balance the computation

Definition at line 86 of file create_tree_manager.hpp.

References FrontendFlowStep::AppM, CostTable, create_tree_manager(), createCostTable(), DesignFlowStep::design_flow_manager, Exec(), HasToBeExecuted(), and ~create_tree_manager().

Referenced by Exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasToBeExecuted()

bool create_tree_manager::HasToBeExecuted ( ) const
overridevirtual

Check if this step has actually to be executed.

Returns
true if the step has to be executed

Reimplemented from ApplicationFrontendFlowStep.

Definition at line 177 of file create_tree_manager.cpp.

Referenced by getCostTable().

Here is the caller graph for this function:

Field Documentation

◆ compiler_wrapper

const CompilerWrapperRef create_tree_manager::compiler_wrapper
private

The gcc wrapper.

Definition at line 61 of file create_tree_manager.hpp.

Referenced by Exec().

◆ CostTable

std::string create_tree_manager::CostTable
private

CostTable: string storing the operations' latency in an encoded map.

Definition at line 66 of file create_tree_manager.hpp.

Referenced by createCostTable(), and getCostTable().


The documentation for this class was generated from the following files:

Generated on Mon Feb 12 2024 13:03:48 for PandA-2024.02 by doxygen 1.8.13