OTAWA  2.0
Framework to perform machine analysis and compute WCET.
otawa Namespace Reference

Development Note Letting the ToDo / ToDoList class visible in the header is clumsy. More...

Namespaces

 ai
 
 arm
 
 ast
 
 bpred
 
 branch
 
 cache
 
 cat
 
 ccg
 
 cfgio
 
 clp
 
 concept
 
 cpp
 
 dcache
 
 dfa
 
 display
 
 dynbranch
 
 etime
 
 gliss
 
 graph
 
 hard
 
 icache
 
 icat3
 
 ilp
 
 ip
 
 ipet
 
 ograph
 
 oslice
 
 ot
 
 p
 
 ppc
 
 proc
 
 s12x
 
 script
 
 se
 
 sem
 
 sim
 
 stack
 
 trivial
 
 tsim
 
 view
 

Classes

struct  __type
 
struct  __type< bool >
 
struct  __type< char >
 
struct  __type< double >
 
struct  __type< elm::CString >
 
struct  __type< elm::String >
 
struct  __type< float >
 
struct  __type< int >
 
struct  __type< long >
 
struct  __type< long double >
 
struct  __type< long long >
 
struct  __type< short >
 
struct  __type< signed char >
 
struct  __type< unsigned char >
 
struct  __type< unsigned int >
 
struct  __type< unsigned long >
 
struct  __type< unsigned long long >
 
struct  __type< unsigned short >
 
struct  __type< void >
 
class  AbsAddress
 
class  AbsoluteAddress
 
class  AbstractAccessor
 
class  AbstractCFGBuilder
 
class  AbstractFeature
 
class  AbstractIdentifier
 
class  AbstractMaker
 
class  AbstractRegistration
 
class  AccessedAddress
 
class  AccessedAddresses
 
class  AccessedAddressFromStack
 
class  Accessor
 
class  ACSBuilder
 
class  ACSMayBuilder
 
class  Address
 
struct  address_stat_t
 
class  AddressOption
 
class  AlternativeProcessor
 
class  AmbiguousBoundException
 
class  Application
 
class  BACK_EDGES
 
class  BackIter
 
class  BackwardCFGAdapter
 
class  Bag
 
class  BaseBundle
 
class  BaseType
 
class  BasicBlock
 
class  BasicGraphBBTime
 This property is used to pass the microprocessor description to the code processor. More...
 
class  BBCleaner
 
class  BBDeletor
 
class  BBProcessor
 
class  BBRatioDisplayer
 
class  BBRemover
 
class  BBStatCollector
 
class  BitSetManager
 
class  Block
 
class  BranchProblem
 
class  Bundle
 
class  BundleInstIter
 
class  CachePenalty
 
class  CAT2Builder
 
class  CAT2ConstraintBuilder
 
class  CAT2NCBuilder
 
class  CAT2OnlyConstraintBuilder
 
class  CEClass
 
class  CFG
 
class  CFGApplication
 
class  CFGBuilder
 
class  CFGChecker
 
class  CFGCheckSummer
 
class  CFGCollection
 
class  CFGCollector
 
class  CFGInfo
 
class  CFGMaker
 
class  CFGNormalizer
 
class  CFGProcessor
 
class  CFGSaver
 
class  CFGTransformer
 
class  CompositeCFG
 
class  ConcurrentCFGProcessor
 
class  Condition
 
class  ConditionalRestructurer
 
class  ConfigIter
 
class  Conflict
 
class  ConflictOfPath
 
class  ContextPath
 
class  ContextTree
 
class  ContextTreeBuilder
 
class  ContextTreeByCFGBuilder
 
class  ContextualList
 
class  ContextualLoopBound
 
class  ContextualPath
 
class  ContextualProcessor
 
class  ContextualProperty
 
class  ContextualStep
 
class  DeadCodeAnalysis
 
class  DecodingException
 
struct  default_handler_t
 
class  DelayedBuilder
 
class  DelayedInfo
 
class  DelayedMaker
 
class  DeletableProperty
 
class  Dominance
 
class  DomInfo
 
class  DuplicateIdentifierException
 
class  DynFeature
 
class  DynIdentifier
 
class  DynProcessor
 
class  Edge
 
class  EdgeACSBuilder
 
class  EdgeCAT2Builder
 
class  EdgeCAT2ConstraintBuilder
 
class  EdgeInfoOfConflict
 
class  EdgeProcessor
 
class  ENTRY_EDGES
 
class  EntryIter
 
class  Event
 
class  Exception
 
class  EXIT_EDGES
 
class  ExpNode
 
class  Feature
 
class  FeatureDependency
 
class  FeatureIter
 
class  FeatureNotFound
 
class  FeatureRequirer
 
class  FeatureUsage
 
class  File
 
class  FirstLastBuilder
 
class  FixedTextDecoder
 
class  FlowFactLoader
 
class  ForwardCFGAdapter
 
class  FunAccessor
 
class  FunProcessor
 
class  GenericProperty
 
class  Give
 
class  GraphBBTime
 
class  Identifier
 
class  ImmutableRef
 
class  Inst
 
class  LabelAddress
 
class  LBlockManager
 
class  Level
 
class  LinkedBlocksDetector
 
class  ListOfEdgeConflict
 
class  ListOfEndConflict
 
class  ListOfLoopConflict
 
class  Loader
 
class  LoadException
 
class  LockedProperty
 
class  LogOption
 
class  Loop
 
class  LoopIter
 
class  LoopManager
 
class  LoopOfConflict
 
class  LoopReductor
 
class  LoopUnroller
 
class  Maker
 
class  Manager
 
class  MAYBranch
 
class  MAYProblem
 
class  MemArea
 
class  MemBlockMap
 
class  Monitor
 
class  MUSTBranch
 
class  MUSTPERS
 
class  MUSTProblem
 
class  NodeLatency
 
class  NoMemFU
 
class  NOP
 
class  NoProcessor
 
class  NoProcessorException
 
class  NoType
 
class  NullProcessor
 
class  NullStream
 
struct  object_init
 
class  OutOfSegmentException
 
class  ParExeEdge
 
class  ParExeException
 
class  ParExeGraph
 
class  ParExeInst
 
class  ParExeNode
 
class  ParExePipeline
 
class  ParExeProc
 
class  ParExeQueue
 
class  ParExeSequence
 
class  ParExeStage
 
class  PathContext
 
class  PCG
 
class  PCGBlock
 
class  PCGBuilder
 
class  PCGEdge
 
class  PERSBranch
 
class  PERSProblem
 
class  PhonyBlock
 
class  PostDominance
 
class  PostDomInfo
 
class  Process
 
class  ProcessException
 
class  Processor
 
class  ProcessorException
 
class  ProcessorNotFound
 
class  ProcessorPlugin
 
class  ProgItem
 
class  Progress
 
class  Property
 
class  PropList
 
class  PSTBuilder
 
class  QueueResource
 
class  Ref
 
class  Registry
 
class  RegIter
 
class  RegResource
 
class  Requirement
 
class  Resource
 
class  ResourceList
 
struct  scalar_init
 
class  Segment
 
class  SESERegion
 
class  SimState
 
class  SPAddress
 
class  StackAnalysis
 
class  StageResource
 
class  StandardEventBuilder
 
class  StartResource
 
class  StatCollector
 
class  StatInfo
 
class  SubCFGBuilder
 
class  SymAddress
 
class  Symbol
 
class  SynthBlock
 
class  Test
 
class  TextDecoder
 
class  TimingContext
 
class  Trace
 
class  TrivialBBLBlockTime
 
class  Type
 
class  UnavailableFeatureException
 
class  UnsupportedFeatureException
 
class  VarTextDecoder
 
class  VirtualInst
 
class  VirtualInstManager
 
class  Virtualizer
 
class  WorkSpace
 
class  XSLTScript
 

Typedefs

typedef enum otawa::action_t action_t
 
typedef struct otawa::address_stat_t address_stat_t
 
typedef Address address_t
 
typedef struct otawa::call_t call_t
 
typedef otawa::cache::category_t category_t
 
typedef cache::CategoryStats CategoryStats
 
typedef enum otawa::code_part code_part_t
 
typedef struct otawa::default_handler_t default_handler_t
 
typedef enum otawa::delayed_t delayed_t
 
typedef enum otawa::fmlevel fmlevel_t
 
typedef SortedList< LBlock *, NumberOrder > LinkedBlockList
 
typedef Pair< BasicBlock *, Inst * > location_t
 
typedef elm::Tree< SESERegion * > PSTree
 
typedef Vector< t::uint16RegSet
 
typedef elm::Vector< Pair< Block *, Block::EdgeIter > > stack_t
 

Enumerations

enum  action_t { DO_NOTHING = 0, DO_SWALLOW, DO_INSERT }
 
enum  code_part { PROLOGUE, BLOCK, EPILOGUE, CODE_PARTS_NUMBER }
 
enum  delayed_t { DELAYED_None = 0, DELAYED_Always = 1, DELAYED_Taken = 2 }
 
enum  fmlevel { FML_INNER = 0, FML_OUTER = 1, FML_MULTI = 2, FML_NONE }
 

Functions

Identifier< Pair< Address, Address > > ACCESS_RANGE ("otawa::ACCESS_RANGE")
 Put on a memory access instruction, provides a range of possible accesses. More...
 
p::id< AddressADDED_CFG ("otawa::ADDED_CFG", 0)
 This configuration property allows to add unlinked CFG to the used CFG collection. More...
 
p::id< CStringADDED_FUNCTION ("otawa::ADDED_FUNCTION", 0)
 This configuration property allows to add unlinked functions to the used CFG collection. More...
 
p::feature ADDRESS_ANALYSIS_FEATURE ("otawa::ADDRESS_ANALYSIS_FEATURE", new Maker< NoProcessor >())
 This feature ensures that accessed memory information (class AccessedAddress) is provided for each basic block. More...
 
Identifier< address_stat_t * > ADDRESS_STATS ("otawa::ADDRESS_STATS", 0)
 This property provides statistics about ADDRESS_ANALYSIS_FEATURE. More...
 
Identifier< AccessedAddresses * > ADDRESSES ("otawa::ADDRESSES", 0)
 Provide the set of accesses to the memory for the current basic block. More...
 
Identifier< Inst::kind_tALT_KIND ("otawa::ALT_KIND", 0)
 Provide an alternative kind for an instruction, superseding the current kind of the instruction. More...
 
p::id< int > ARGC ("otawa::ARGC", -1)
 Argument count as passed to the program (int). More...
 
p::id< char ** > ARGV ("otawa::ARGV", 0)
 Argument values as passed to the program (char **). More...
 
Identifier< AddressARGV_ADDRESS ("otawa::ARGV_ADDRESS", Address::null)
 This feature is put on the process object whose image supports Unix-like argument passing. More...
 
Identifier< AddressAUXV_ADDRESS ("otawa::AUXV_ADDRESS", Address::null)
 This feature is put on the process object whose image supports Unix-like argument passing. More...
 
Identifier< boolBACK_EDGE ("otawa::BACK_EDGE", false)
 Identifier for marking back edges. More...
 
p::id< Bag< Address > > BB_BOUNDS ("otawa::BB_BOUNDS")
 Configuration identifier, provides a list of BB start point (whatever the control flow of the executable). More...
 
Identifier< AddressBRANCH_TARGET ("otawa::BRANCH_TARGET", Address())
 Put on instruction that may branch to several targets or whose target computation cannot computed. More...
 
Identifier< Vector< MAYProblem::Domain * > * > CACHE_ACS_MAY ("otawa::CACHE_ACS_MAY", NULL)
 This property represents the "may" Abstract Cache State of a basic block. More...
 
Identifier< Vector< MAYProblem::Domain * > * > CACHE_ACS_MAY_ENTRY ("otawa::CACHE_ACS_MAY_ENTRY", NULL)
 This property allows us to set an entry may ACS. More...
 
Identifier< Vector< MUSTProblem::Domain * > * > CACHE_ACS_MUST ("otawa::CACHE_ACS_MUST", 0)
 This property represents the MUST Abstract Cache State of a basic block. More...
 
Identifier< Vector< MUSTProblem::Domain * > * > CACHE_ACS_MUST_ENTRY ("otawa::CACHE_ACS_MUST_ENTRY", 0)
 This property allows to set an entry MUST ACS. More...
 
Identifier< Vector< PERSProblem::Domain * > * > CACHE_ACS_PERS ("otawa::CACHE_ACS_PERS", 0)
 This property represents the "persistence" Abstract Cache State of a basic block. More...
 
Identifier< Vector< PERSProblem::Domain * > * > CACHE_ACS_PERS_ENTRY ("otawa::CACHE_ACS_PERS_ENTRY", 0)
 This property allows to set an entry PERS ACS. More...
 
p::id< hard::CacheConfiguration * > CACHE_CONFIG ("otawa::CACHE_CONFIG", 0)
 This property is used to pass the cache configuration directly to the platform. More...
 
p::id< elm::xom::Element * > CACHE_CONFIG_ELEMENT ("otawa::CACHE_CONFIG_ELEMENT", 0)
 Gives an XML element containing the cache configuration. More...
 
p::id< elm::sys::PathCACHE_CONFIG_PATH ("otawa::CACHE_CONFIG_PATH", "")
 Gives the path of file containing the cache configuration. More...
 
Identifier< Vector< MUSTProblem::Domain * > * > CACHE_EDGE_ACS_MUST ("otawa::cache_edge_acs_must", NULL)
 This property represents the "must" Abstract Cache State of a basic block. More...
 
Identifier< Vector< PERSProblem::Domain * > * > CACHE_EDGE_ACS_PERS ("otawa::cache_edge_acs_pers", NULL)
 This property represents the "persistence" Abstract Cache State of a basic block. More...
 
Identifier< AddressCALL_TARGET ("otawa::CALL_TARGET", Address())
 Put on instruction that may call to several targets or whose target computation cannot computed. More...
 
p::id< Edge * > CALLED_BY ("otawa::CALLED_BY", 0)
 This properties are put on a CFG to get the list of edges calling it. More...
 
Identifier< Vector< category_t > * > CATEGORY_EDGE ("otawa::cactegory_edge", NULL)
 
Identifier< Vector< BasicBlock * > * > CATEGORY_EDGE_HEADER ("otawa::category_edge_header", NULL)
 
p::feature CFG_CHECKSUM_FEATURE ("otawa::CFG_CHECKSUM_FEATURE", new Maker< CFGCheckSummer >())
 This feature ensures that each CFG has hooked a checksum allowing to check binary modifications between launch of an OTAWA application. More...
 
Identifier< const CFGInfo * > CFG_INFO ("otawa::CFG_INFO", 0)
 Get the collection of CFG found in the program. More...
 
p::feature CFG_INFO_FEATURE ("otawa::CFG_INFO_FEATURE", new Maker< CFGBuilder >())
 Feature asserting that the CFG has been scanned in the program. More...
 
p::id< AddressCFG_START ("otawa::CFG_START")
 Provide the start address of a sub-CFG to extract (inclusive). More...
 
p::id< AddressCFG_STOP ("otawa::CFG_STOP", false)
 Provide the stop address of a sub-CFG to extract (exclusive). More...
 
p::feature CHECKED_CFG_FEATURE ("otawa::CHECKED_CFG_FEATURE", new Maker< CFGChecker >())
 This feature ensures that. More...
 
Identifier< unsigned long > CHECKSUM ("otawa::CHECKSUM", 0)
 This property hooked on a CFG provides a checksum build on the instruction of the CFG. More...
 
p::interfaced_feature< const CFGCollectionCOLLECTED_CFG_FEATURE ("otawa::COLLECTED_CFG_FEATURE", new Maker< CFGCollector >())
 This feature asserts that all CFG involved in the current computation has been collected and accessible thanks to INVOLVED_CFGS property. More...
 
p::feature CONDITIONAL_INSTRUCTIONS_FEATURE ("otawa::CONDITIONAL_INSTRUCTIONS_FEATURE", new Maker< NoProcessor >())
 This feature is provided by Process which architecture provides conditional instructions. More...
 
p::feature CONDITIONAL_RESTRUCTURED_FEATURE ("otawa::CONDITIONAL_RESTRUCTURED_FEATURE", p::make< ConditionalRestructurer >())
 This feature ensures that the CFG is transformed to reflect the effects of conditional instructions. More...
 
p::id< elm::xom::Element * > CONFIG_ELEMENT ("otawa::CONFIG_ELEMENT", 0)
 XML element containing the configuration of the current computation. More...
 
p::id< elm::sys::PathCONFIG_PATH ("otawa::CONFIG_PATH", "")
 Path to the XML configuration file used in this computation. More...
 
p::id< ContextualPathCONTEXT ("otawa::CONTEXT")
 Provide context for the referred object. More...
 
Identifier< ContextTree * > CONTEXT_TREE ("otawa::CONTEXT_TREE", 0)
 This property identifier provides a context tree hooked to a framework. More...
 
Feature< ContextTreeByCFGBuilderCONTEXT_TREE_BY_CFG_FEATURE ("otawa::CONTEXT_TREE_BY_CFG_FEATURE")
 Assert that a context tree has been built for each CFG involved in the current computation. More...
 
Feature< ContextTreeBuilderCONTEXT_TREE_FEATURE ("otawa::CONTEXT_TREE_FEATURE")
 This feature asserts that a context tree of the task is available in the framework. More...
 
Identifier< ContextualLoopBound * > CONTEXTUAL_LOOP_BOUND ("otawa::CONTEXTUAL_LOOP_BOUND", 0)
 This property provides context-dependent loop bounds. More...
 
p::feature CONTROL_DECODING_FEATURE ("otawa::CONTROL_DECODING_FEATURE", new Maker< NoProcessor >())
 This feature is usually provided by the loader providing decoding facility for control instructions. More...
 
Feature< DeadCodeAnalysisDEAD_CODE_ANALYSIS_FEATURE ("otawa::DEAD_CODE_ANALYSIS_FEATURE")
 
Feature< TextDecoderDECODED_TEXT ("otawa::DECODED_TEXT")
 This feature ensures that text segment of the process has been decoded and, consequently, that instructions are available. More...
 
Identifier< const AbstractFeature * > DEF_BY ("otawa::DEF_BY", 0)
 Identifier for identifier property providing ownerness of an identifier. More...
 
Identifier< int > DEFAULT_BRANCH_PENALTY ("otawa::DEFAULT_BRANCH_PENALTY", 2)
 
PropertydefBy (const AbstractFeature *feature)
 
Identifier< delayed_tDELAYED ("otawa::DELAYED", DELAYED_None)
 This kind of property is put on control branch to know if the following instruction is executed as part of a delayed branch. More...
 
p::feature DELAYED2_FEATURE ("otawa::DELAYED2_FEATURE", new Maker< NoProcessor >())
 This Process feature informs that the actual architecture supports delayed branch. More...
 
p::feature DELAYED_CFG_FEATURE ("otawa::DELAYED_CFG_FEATURE", new Maker< DelayedBuilder >())
 This feature informs that the current microprocessor supports delayed branches and that the CFG has been changed to reflect effect of delay branches. More...
 
p::feature DELAYED_FEATURE ("otawa::DELAYED_FEATURE", new Maker< NoProcessor >())
 This feature is put on processes by the loader to inform that the control instruction of the current instruction contains delayed branches. More...
 
Identifier< DelayedInfo * > DELAYED_INFO ("otawa::DELAYED_INFO", 0)
 This property provides access to delayed branch information of the current program. More...
 
Identifier< boolDELAYED_INST ("otawa::DELAYED_INST", false)
 This property is set on instruction of a delayed branch. More...
 
Identifier< boolDELAYED_NOP ("otawa::DELAYED_NOP", false)
 This property is true on NOP instructions insserted due to branch delay. More...
 
p::interfaced_feature< DomInfoDOMINANCE_FEATURE ("otawa::DOMINANCE_FEATURE", new Maker< Dominance >())
 This feature ensures that information about domination between nodes of a CFG is available. More...
 
p::id< boolDUMP ("otawa::DUMP", false)
 Dump the results of all analyzes. More...
 
p::id< stringDUMP_FOR ("otawa::DUMP_FOR", "")
 Dump the result of the analysis which name is passed as argument. More...
 
p::id< elm::io::OutStream * > DUMP_STREAM ("otawa::DUMP_STREAM", nullptr)
 Dump the results to the given stream. More...
 
p::id< stringDUMP_TO ("otawa::DUMP_TO", "")
 Dump the result to the given file path. More...
 
Identifier< LockPtr< ListOfEdgeConflict > > EDGE_OF_INFEASABLE_PATH_I ("otawa::EDGE_OF_INFEASABLE_PATH_I", NULL)
 Put on an infeasable path edge Mark a edge that is into an path constrain
More...
 
p::id< Block * > ENCLOSING_LOOP_HEADER ("otawa::ENCLOSING_LOOP_HEADER", 0)
 Defined for any BasicBlock that is part of a loop. More...
 
const AbstractIdentifier END ("end")
 This identifier is used for marking the end of property list definition in variable arguments "...". More...
 
p::id< ContextualStepENTER ("otawa::ENTER")
 Note the entry into a particular context provided by the property. More...
 
p::id< CFG * > ENTRY_CFG ("otawa::entry_cfg", 0)
 This property is used to get the entry CFG of the currently processed task. More...
 
p::id< char ** > ENVP ("otawa::ENVP", 0)
 Argument values as passed to the program (char **). More...
 
Identifier< AddressENVP_ADDRESS ("otawa::ENVP_ADDRESS", Address::null)
 This feature is put on the process object whose image supports Unix-like argument passing. More...
 
string escape (const string &s)
 Escape special characters in the given string. More...
 
p::id< Event * > EVENT ("otawa::EVENT", 0)
 Allows to hook an event to a basic block or to an edge. More...
 
Identifier< boolEXIST_PROVIDED_STATE ("otawa::EXISTPROVIDED_STATE", false)
 
p::id< elm::Vector< Edge * > * > EXIT_LIST ("otawa::EXIT_LIST", 0)
 Defined for any BasicBlock that is a loop header. More...
 
p::interfaced_feature< LoopManager * > EXTENDED_LOOP_FEATURE ("otawa::EXTENDED_LOOP_FEATURE", p::make< ExtendedLoopBuilder >())
 This feature build Loop objects representing the hierarchy of loops and attach it to the CFG and its blocks. More...
 
Identifier< fmlevel_tFIRSTMISS_LEVEL ("otawa::FIRSTMISS_LEVEL", FML_MULTI)
 Specify the loop-level-precision of the First Miss computation (inner, outer, multi-level) More...
 
p::feature FLOAT_MEMORY_ACCESS_FEATURE ("otawa::FLOAT_MEMORY_ACCES_FEATURE", new Maker< NoProcessor >())
 This feature is usually asserted by processes that provides access to the memory segment of the program with float values. More...
 
p::feature FLOW_FACTS_FEATURE ("otawa::FLOW_FACTS_FEATURE", new Maker< FlowFactLoader >())
 This feature ensures that the flow facts has been loaded. More...
 
Identifier< boolFLOW_FACTS_MANDATORY ("otawa::FLOW_FACTS_MANDATORY", false)
 In configuration of the FlowFactLoader, makes it fail if no flow fact fail is available. More...
 
Identifier< xom::Element * > FLOW_FACTS_NODES ("otawa::FLOW_FACTS_NODES")
 This property may be used in the configuration of a code processor to directly pass an xml element containing flow facts in Flow Fact XML format format. More...
 
Identifier< PathFLOW_FACTS_PATH ("otawa::FLOW_FACTS_PATH", "")
 This property may be used in the configuration of a code processor to pass the path of an flow fact file containing flow facts. More...
 
template<class T >
void from_string (const string &s, T &v)
 
template<>
void from_string (const string &str, Address &v)
 
template<class T >
void from_string (const string &str, Bag< T > &bag)
 
template<>
void from_string (const string &str, bool &v)
 
template<>
void from_string (const string &str, double &v)
 
template<>
void from_string (const string &str, int &v)
 
template<>
void from_string (const string &str, long &v)
 
template<>
void from_string (const string &str, long long &v)
 
template<>
void from_string (const string &str, string &v)
 
template<>
void from_string (const string &str, SymAddress *&v)
 
template<>
void from_string (const string &str, sys::Path &v)
 
template<>
void from_string (const string &str, unsigned int &v)
 
template<>
void from_string (const string &str, unsigned long &v)
 
template<>
void from_string (const string &str, unsigned long long &v)
 
void from_string_split (const string &str, Vector< string > &items)
 
Identifier< StringFUNCTION_LABEL ("otawa::FUNCTION_LABEL", "")
 This property is put on instruction. More...
 
Identifier< StringGRAPHS_OUTPUT_DIRECTORY ("otawa::GRAPHS_OUTPUT_DIRECTORY","")
 
p::feature ICACHE_ACS_FEATURE ("otawa::ICACHE_ACS_FEATURE", new Maker< ACSBuilder >())
 This feature represents the availability of Abstract Cache State informations. More...
 
p::feature ICACHE_ACS_MAY_FEATURE ("otawa::ICACHE_ACS_MAY_FEATURE", new Maker< ACSMayBuilder >())
 This feature represents the availability of MAY Abstract Cache State informations. More...
 
p::feature ICACHE_CATEGORY2_FEATURE ("otawa::ICACHE_CATEGORY2_FEATURE", new Maker< CAT2Builder >())
 This feature ensures that the categories for instruction cache according to the following method has been computed: More...
 
p::feature ICACHE_CONSTRAINT2_FEATURE ("otawa::ICACHE_CONSTRAINT2_FEATURE", new Maker< CAT2ConstraintBuilder >())
 Ensures that the constraints for cache analysis by categories 2 has been built and that the term of instruction cache has been added to the objective function. More...
 
Feature< EdgeACSBuilderICACHE_EDGE_ACS_FEATURE ("otawa::ICACHE_EDGE_ACS_FEATURE")
 This feature represents the availability of Abstract Cache State informations. More...
 
Feature< EdgeCAT2BuilderICACHE_EDGE_CATEGORY2_FEATURE ("otawa::ICACHE_EDGE_CATEGORY2_FEATURE")
 
Feature< FirstLastBuilderICACHE_FIRSTLAST_FEATURE ("otawa::ICACHE_FIRSTLAST_FEATURE")
 This feature represents the availability of the LAST_LBLOCK and LBLOCK_ISFIRST properties. More...
 
p::feature ICACHE_ONLY_CONSTRAINT2_FEATURE ("otawa::ICACHE_ONLY_CONSTRAINT2_FEATURE", new Maker< CAT2OnlyConstraintBuilder >())
 Ensures that the constraints for cache analysis by categories 2 has been built. More...
 
Identifier< CachePenalty * > ICACHE_PENALTY ("otawa::CACHE_PENALTY", NULL)
 
PropertyidDesc (cstring desc)
 
Identifier< cstringIDENTIFIER_DESC ("otawa::IDENTIFIER_DESC", "")
 Property of this identifier is put on identifier to give a more precise description of the identifier. More...
 
template<>
Identifier< cstringIDENTIFIER_ID ("otawa::IDENTIFIER_ID", "")
 Configuration identifier for objects inheriting from AbstractIdentifier to customize the name and make the object reachable by this name. More...
 
Identifier< cstringIDENTIFIER_LABEL ("otawa::IDENTIFIER_LABEL", "")
 Property of this identifier is put on identifier to give a more human-readable name to the identifier. More...
 
PropertyidLabel (cstring label)
 
Identifier< boolIGNORE_CONTROL ("otawa::IGNORE_CONTROL", false)
 Put on a control instruction to prevent it to be interpreted as is. More...
 
Identifier< boolIGNORE_ENTRY ("otawa::IGNORE_ENTRY", false)
 Put on function symbol that must be ignored as function entry. More...
 
Identifier< boolIGNORE_SEQ ("otawa::IGNORE_SEQ", false)
 Put on a control instruction to prevent to pass in sequence. More...
 
Block::EdgeCollection IN_EDGES (const Block *b)
 
Identifier< LockPtr< ConflictOfPath > > INFEASABLE_PATH ("otawa::INFEASABLE_PATH", NULL)
 Put on an infeasable path begining and end mark. More...
 
Identifier< LockPtr< ListOfEndConflict > > INFEASABLE_PATH_END ("otawa::INFEASABLE_PATH_END", NULL)
 
Identifier< boolINLINING_POLICY ("otawa::INLINING_POLICY")
 Put on the first instruction of a function to set default inlining behavior during its virtualization. More...
 
p::id< const CFGCollection * > INVOLVED_CFGS ("otawa::INVOLVED_CFGS", 0)
 This property is used to link the current computation involved CFG on the framework. More...
 
Identifier< boolIS_RETURN ("otawa::IS_RETURN", false)
 Put on a control flow instruction, this shows that this instruction is equivalent to a function return. More...
 
const Level L1 (1)
 
const Level L2 (2)
 
const Level L3 (3)
 
const Level L4 (4)
 
const Level L5 (5)
 
const Level L6 (6)
 
const Level L7 (7)
 
const Level L8 (8)
 
const Level L9 (9)
 
Identifier< StringLABEL ("otawa::LABEL", "")
 Property with this identifier is put on instructions or basic blocks which a symbol is known for. More...
 
p::feature LABEL_FEATURE ("otawa::LABEL_FEATURE", new Maker< LabelSetter >())
 This feature ensures that label or symbol information has been linked to the concerned instruction. More...
 
Identifier< LBlock ** > LAST_LBLOCK ("otawa::LAST_LBLOCK", NULL)
 This property gives the ID of the last lblock of a BasicBlock, for each line. More...
 
Identifier< boolLBLOCK_ISFIRST ("otawa::LBLOCK_ISFIRST", false)
 This property tells if the lblock is the first of its BasicBlock (for its cache line) This information is useful, because if it's false, then, the lblock is always a miss. More...
 
ot::size leastGreaterLog2 (ot::size x)
 Compute the least greater logarithm of 2 for the given value. More...
 
p::id< int > LEAVE ("otawa::LEAVE", 0)
 Leave the number of context provided by the number of argument. More...
 
Identifier< Vector< LBlock * > * > LINKED_BLOCKS ("otawa::LINKED_BLOCKS", NULL)
 !!TODO!! More...
 
p::id< stringLOAD_PARAM ("otawa::LOAD_PARAM", "")
 Identifier used for Manager::load() configuration. More...
 
p::id< Loader * > LOADER ("otawa::LOADER", 0)
 Identifier of the property indicating the loader to use. More...
 
p::id< stringLOADER_NAME ("otawa::LOADER_NAME", "")
 Identifier of the property indicating a name (CString) of the loader to use. More...
 
p::id< location_tLOCATION_START ("otawa::LOCATION_START", location_t(nullptr, nullptr))
 Provide the start location of a sub-CFG to extract (inclusive). More...
 
p::id< location_tLOCATION_STOP ("otawa::LOCATION_STOP", location_t(nullptr, nullptr))
 Provide the stop location of a sub-CFG to extract (inclusive). More...
 
p::id< elm::io::OutStream * > LOG ("otawa::LOG", &cerr.stream())
 This property identifier is used for setting the log stream used by the processor to write messages (information, warning, error). More...
 
p::id< stringLOG_FOR ("otawa::LOG_FOR")
 Display logs only for the named processor. More...
 
p::id< Monitor::log_level_tLOG_LEVEL ("otawa::LOG_LEVEL", Monitor::LOG_NONE)
 Property passed in the configuration property list of a processor to select the log level between LOG_PROC, LOG_CFG or LOG_BB. More...
 
p::id< Block * > LOOP_ENTRY ("otawa::LOOP_ENTRY", nullptr)
 Is defined for an Edge if this Edge is the entry-edge of any loop. More...
 
p::id< Block * > LOOP_EXIT ("otawa::LOOP_EXIT", nullptr)
 Is defined for an Edge if this Edge is the exit-edge of any loop. More...
 
Identifier< boolLOOP_HEADER ("otawa::LOOP_HEADER", false)
 Identifier for marking basic blocks that are entries of loops. More...
 
p::feature LOOP_HEADERS_FEATURE ("otawa::LOOP_HEADERS_FEATURE", new Maker< Dominance >())
 This feature ensures that all loop header are marked with a LOOP_HEADER property, and the backedges are marked with a BACK_EDGE property. More...
 
p::feature LOOP_INFO_FEATURE ("otawa::LOOP_INFO_FEATURE", new Maker< LoopInfoBuilder >())
 This feature asserts that the loop info of the task is available in the framework. More...
 
Identifier< LockPtr< ListOfLoopConflict > > LOOP_OF_INFEASABLE_PATH_I ("otawa::LOOP_OF_INFEASABLE_PATH_I", NULL)
 Put on an infeasable path loop Mark a loop that contains or is into an path constrain. More...
 
Propertymake (const Identifier< cstring > &id, const char *v)
 
Propertymake (const Identifier< string > &id, const char *v)
 
template<class T >
Propertymake (const Identifier< T > &id, const T &v)
 
Identifier< int > MAX_ITERATION ("otawa::MAX_ITERATION", -1)
 Put on the first instruction of a loop, it gives the maximum number of iteration of this loop. More...
 
p::feature MEMORY_ACCESS_FEATURE ("otawa::MEMORY_ACCESS_FEATURE", new Maker< NoProcessor >())
 This feature is usually asserted by processes that provides access to the memory segment of the program. More...
 
p::feature MEMORY_ACCESSES ("otawa::MEMORY_ACCESSES", new Maker< NoProcessor >())
 This feature, put on a process, informs that the functional simulator provides the ability to give information about memory accesses. More...
 
p::id< elm::xom::Element * > MEMORY_ELEMENT ("otawa::MEMORY_ELEMENT", 0)
 Passed to manager::load() to give the XML element describing the memory configuration. More...
 
p::id< hard::Memory * > MEMORY_OBJECT ("otawa::MEMORY_OBJECT", 0)
 Passed to manager::load() to set the memory configuration. More...
 
p::id< elm::sys::PathMEMORY_PATH ("otawa::MEMORY_PATH", "")
 Passed to Manager::load() to give the path of the file describing the memory. More...
 
Identifier< int > MIN_ITERATION ("otawa::MIN_ITERATION", -1)
 Put on the first instruction of a loop, it gives the minimal number of iterations. More...
 
Identifier< ilp::Var * > MISS_VAR ("otawa::MISS_VAR", 0)
 Property giving the variable counting the number of misses. More...
 
p::feature MKFF_PRESERVATION_FEATURE ("otawa::MKFF_PRESERVATION_FEATURE", new Maker< FlowFactLoader >())
 This feature ensures that preservation information used by mkff is put on instruction. More...
 
template<class T >
Bag< T > move (int c, T *t)
 
template<class T >
Bag< T > move (Vector< T > &v)
 
Identifier< boolNEVER_TAKEN ("otawa::NEVER_TAKEN")
 
Identifier< boolNO_CALL ("otawa::NO_CALL", false)
 Put on the first instruction of a function that must be no called. More...
 
Identifier< boolNO_INLINE ("otawa::NO_INLINE")
 Put on the first instruction of a function to indicate whether it should be inlined or not during virtualization. More...
 
Identifier< boolNO_RETURN ("otawa::NO_RETURN", false)
 This annotation is put on the first instruction of functions that does not never return. More...
 
p::id< stringNO_RETURN_FUNCTION ("otawa::NO_RETURN_FUNCTION", "")
 this property may be used to pass information about the non-returning behaviour of some functions. More...
 
p::id< boolNO_STACK ("otawa::NO_STACK", false)
 This property shows that no stack need to be allocated. More...
 
p::id< boolNO_SYSTEM ("otawa::NO_SYSTEM", false)
 This property shows that the system does not need to by simulated when the binary image is built. More...
 
p::feature NORMALIZED_CFGS_FEATURE ("otawa::NORMALIZED_CFGS_FEATURE", new Maker< CFGNormalizer >())
 This feature ensures that the CFG are in a normalized form: fully resolved branches, no entering or exiting edges to or from external CFGs. More...
 
elm::io::Outputoperator<< (elm::io::Output &out, Address addr)
 
elm::io::Outputoperator<< (elm::io::Output &out, const AbstractIdentifier &id)
 
elm::io::Outputoperator<< (elm::io::Output &out, const AbstractIdentifier *id)
 
elm::io::Outputoperator<< (elm::io::Output &out, const Property *prop)
 
elm::io::Outputoperator<< (elm::io::Output &out, const PropList &props)
 
elm::io::Outputoperator<< (elm::io::Output &out, const PropList *props)
 
io::Outputoperator<< (elm::io::Output &out, Inst *inst)
 
elm::io::Outputoperator<< (elm::io::Output &out, Process *proc)
 
elm::io::Outputoperator<< (elm::io::Output &output, const MAYProblem::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const MUSTPERS::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const MUSTProblem::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const PERSBranch::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const PERSProblem::Domain &dom)
 
io::Outputoperator<< (io::Output &o, const hard::Bank::type_t &t)
 
io::Outputoperator<< (io::Output &out, AccessedAddresses *aa)
 
io::Outputoperator<< (io::Output &out, address_stat_t *s)
 
io::Outputoperator<< (io::Output &out, BasicBlock *block)
 
io::Outputoperator<< (io::Output &out, Block *block)
 
io::Outputoperator<< (io::Output &out, CFG *cfg)
 Address CFG::address(void); Get the address of the first instruction of the CFG. More...
 
io::Outputoperator<< (io::Output &out, const AccessedAddress *addr)
 
io::Outputoperator<< (io::Output &out, const AccessedAddresses *aa)
 
io::Outputoperator<< (io::Output &out, const CFG::BlockIter &i)
 
io::Outputoperator<< (io::Output &out, const Condition &c)
 
io::Outputoperator<< (io::Output &out, const ContextualPath &path)
 
template<class T >
io::Outputoperator<< (io::Output &out, const ContextualPath::Ref< T > &r)
 
io::Outputoperator<< (io::Output &out, const ContextualStep &path)
 
template<class T , class I >
io::Outputoperator<< (io::Output &out, const ImmutableRef< T, I > &ref)
 
io::Outputoperator<< (io::Output &out, const location_t &loc)
 
io::Outputoperator<< (io::Output &out, const Loop *l)
 
io::Outputoperator<< (io::Output &out, const MemArea &a)
 
template<class T , class I >
io::Outputoperator<< (io::Output &out, const Ref< T, I > &ref)
 
io::Outputoperator<< (io::Output &out, const Type &type)
 
io::Outputoperator<< (io::Output &out, Edge *edge)
 
io::Outputoperator<< (io::Output &out, Event *event)
 
io::Outputoperator<< (io::Output &out, Event::occurrence_t occ)
 
io::Outputoperator<< (io::Output &out, Inst::Kind kind)
 
io::Outputoperator<< (io::Output &out, PCGBlock *b)
 
io::Outputoperator<< (io::Output &out, PCGEdge *b)
 
io::Outputoperator<< (io::Output &out, SymAddress *addr)
 
io::Outputoperator<< (io::Output &out, Symbol *sym)
 
io::Outputoperator<< (io::Output &out, Symbol::kind_t k)
 
io::Outputoperator<< (io::Output &out, SynthBlock *block)
 
otawa::Outputoperator<< (otawa::Output &out, const fmlevel_t &fml)
 
Outputoperator<< (Output &out, ContextTree *ct)
 
Traceoperator<< (Trace &trace, const Level &level)
 
Event::occurrence_t operator| (Event::occurrence_t x, Event::occurrence_t y)
 Combines two event occcurrences according to the partial order (getting the maximu of x and y). More...
 
Block::EdgeCollection OUT_EDGES (const Block *b)
 
p::id< elm::io::OutStream * > OUTPUT ("otawa::OUTPUT", &cout.stream())
 This property identifier is used for setting the output stream used by the processor to write results. More...
 
Identifier< ContextTree * > OWNER_CONTEXT_TREE ("otawa::OWNER_CONTEXT_TREE", 0)
 Annotations with this identifier are hooked to basic blocks and gives the owner context tree (ContextTree * data). More...
 
p::feature PCG_FEATURE ("otawa::PCG_FEATURE", p::make< PCGBuilder >())
 This feature ensure that a PCG is provided. More...
 
p::id< int > PIPELINE_DEPTH ("otawa::PIPELINE_DEPTH", -1)
 This property is a hint to have an estimation of the pipeline depth. More...
 
p::id< hard::Platform * > PLATFORM ("otawa::PLATFORM", 0)
 Identifier of the property indicating a platform (Platform *) to use. More...
 
p::id< stringPLATFORM_NAME ("otawa::PLATFORM_NAME", "")
 Identifier of the property indicating the name (CString) of the platform to use. More...
 
p::interfaced_feature< PostDomInfoPOSTDOMINANCE_FEATURE ("otawa::POSTDOMINANCE_FEATURE", new Maker< PostDominance >())
 This feature ensures that information about postdomination between nodes of a CFG is vailable. More...
 
Block::PredCollection PREDS (const Block *b)
 
p::id< Event * > PREFIX_EVENT ("otawa::PREFIX_EVENT", 0)
 Allows to hook an event to an edge and consider it as part of the prefix of the edge time. More...
 
Identifier< boolPRESERVED ("otawa::PRESERVED", false)
 Put on instruction that must preserved from the mkff special flow-fact detection. More...
 
Identifier< int > PROCESSED_CFG ("otawa::processed_cfg", 0)
 This property is used to store statistics about the count of processed CFG. More...
 
p::id< hard::Processor * > PROCESSOR ("otawa::PROCESSOR", 0)
 Gives the processor to use in the current computation. More...
 
p::id< elm::xom::Element * > PROCESSOR_ELEMENT ("otawa::PROCESSOR_ELEMENT", 0)
 XML element containing the configuration of the processor. More...
 
p::id< elm::sys::PathPROCESSOR_PATH ("otawa::PROCESSOR_PATH", "")
 Path to the XML configuration file of the processor. More...
 
p::id< PCG * > PROGRAM_CALL_GRAPH ("otawa::PROGRAM_CALL_GRAPH", 0)
 Property providing the PCG (Program Call Graph). More...
 
Identifier< dfa::State * > PROVIDED_STATE ("otawa::PROVIDED_STATE", 0)
 Associate a program point with a provided dfa::State. More...
 
Identifier< boolPSEUDO_UNROLLING ("otawa::PSEUDO_UNROLLING", false)
 This property represents the "persistence" Abstract Cache State of a basic block. More...
 
p::id< boolRECURSE_BACK ("otawa::RECURSE_BACK")
 This property marks PCG edges and synthetic block corresponding to calls backing inside a recursivity nest. More...
 
p::id< boolRECURSE_ENTRY ("otawa::RECURSE_ENTRY")
 This property marks PCG edges and synthetic block corresponding to calls entering a recursivity nest. More...
 
p::id< PCGBlock * > RECURSE_HEAD ("RECURSE_HEAD", nullptr)
 This properties marks CFG and PCGNode corresponding to head of recursivity nests. More...
 
p::id< boolRECURSIVE ("otawa::recursive", true)
 Activate the recucursive feature of BBProcessors : each time a basic block contains a function call, the CFG of this function is recorded to be processed later after the current CFG. More...
 
p::feature RECURSIVITY_ANALYSIS ("otawa::RECURSIVITY_ANALYSIS", p::make< ResursivityAnalysis >())
 This features ensures that recursive function calls has been identified in the PCG. More...
 
p::feature REDUCED_LOOPS_FEATURE ("otawa::REDUCED_LOOPS_FEATURE", p::make< LoopReductor >())
 Ensure that no more irregular loop remains in the program representation. More...
 
p::feature REGISTER_USAGE_FEATURE ("otawa::REGISTER_USAGE_FEATURE", new Maker< NoProcessor >())
 This feature is usually asserted by processes that provides access to the register usage information. More...
 
template<class T >
const AbstractRegistrationregistration (void)
 
Identifier< const BitSet * > REVERSE_DOM ("otawa::REVERSE_DOM", 0)
 Identifier of annotation containing reverse-dominance information. More...
 
p::feature SEMANTICS_INFO ("otawa::SEMANTICS_INFO", new Maker< NoProcessor >())
 This feature is present when the loader provides implementation of semantics information. More...
 
p::feature SEMANTICS_INFO_EXTENDED ("otawa::SEMANTICS_INFO_EXTENDED", new Maker< NoProcessor >())
 This feature is present when the loader provides implementation of extended semantics information. More...
 
p::feature SEMANTICS_INFO_FLOAT ("otawa::SEMANTICS_INFO_FLOAT", new Maker< NoProcessor >())
 This feature is present when the loader provides implementation of floating-point semantic instructions. More...
 
char sign (t::int32 v)
 
p::id< sim::Simulator * > SIMULATOR ("otawa::SIMULATOR", 0)
 This property defines the used the used simulator when a simulator is needed to perform simulation. More...
 
p::id< stringSIMULATOR_NAME ("otawa::SIMULATOR_NAME", "")
 Name of the simulator to use. More...
 
p::feature SOURCE_LINE_FEATURE ("otawa::SOURCE_LINE_FEATURE", new Maker< NoProcessor >())
 This feature asserts that a table matching program address and source (file, lines) is available. More...
 
Identifier< AddressSP_ADDRESS ("otawa::SP_ADDRESS", Address::null)
 This feature is put on the process to get information about the built image. More...
 
p::feature SPLIT_CFG ("otawa::SPLIT_CFG", p::make< SubCFGBuilder >())
 This feature ensure that a part of the current has been extracted as a sub-CFG based on address provided by two properties: More...
 
p::feature STACK_ANALYSIS_FEATURE ("otawa::STACK_ANALYSIS_FEATURE", new Maker< StackAnalysis >())
 This features ensure that the stack analysis has been identified. More...
 
Block::SuccCollection SUCCS (const Block *b)
 
Identifier< Symbol * > SYMBOL ("otawa::SYMBOL", 0)
 This property carries the symbol attached to an instruction. More...
 
p::id< AddressTASK_ADDRESS ("otawa::TASK_ADDRESS", Address::null)
 This property, passed to the load configuration, select the task entry by its address. More...
 
p::id< stringTASK_ENTRY ("otawa::TASK_ENTRY", "main")
 This property, passed to the load configuration, gives the name of the entry function of the current task. More...
 
Identifier< int > TOTAL_ITERATION ("otawa::TOTAL_ITERATION", -1)
 Put on the first instruction of a loop, it gives the total number of iterations during the whole execution of the program. More...
 
template<class T >
const Typetype (void)
 
p::id< boolUNROLL_THIS ("otawa::UNROLL_THIS", true)
 This property is used by UNROLLED_LOOPS_FEATURE and has to be put on header blocks of loops to select if the corresponding loop has to be unrolled or not. More...
 
Identifier< Block * > UNROLLED_FROM ("otawa::UNROLLED_FROM", 0)
 Put on the header ex-header of a loop, this property gives the BB of the unrolled loop. More...
 
p::feature UNROLLED_LOOPS_FEATURE ("otawa::UNROLLED_LOOPS_FEATURE", new Maker< LoopUnroller >())
 This feature that the loops have been unrolled at least once. More...
 
p::id< boolVERBOSE ("otawa::VERBOSE", false)
 This property activates the verbose mode of the processor: information about the processor work will be displayed. More...
 
Identifier< boolVIRTUAL_DEFAULT ("otawa::VIRTUAL_DEFAULT", true)
 Configuration property of Virtualizer: it set the default behavior for inlining of function call during virtualization (default to true). More...
 
p::feature VIRTUAL_INST_FEATURE ("otawa::VIRTUAL_INST_FEATURE", p::make< VirtualInstBuilder >())
 Ensure that a virtual instruction manager is available to create virtual instructions. More...
 
p::id< VirtualInstManager * > VIRTUAL_INST_MANAGER ("otawa::VIRTUAL_INST_MANAGER", 0)
 Get the current virtual instruction manager. More...
 
p::feature VIRTUALIZED_CFG_FEATURE ("otawa::VIRTUALIZED_CFG_FEATURE", new Maker< Virtualizer >())
 This features only show that the CFG has been virtualized. More...
 
p::feature VLIW_SUPPORTED ("otawa::VLIW_SUPPORTED", new Maker< NoProcessor >())
 This feature is provided on Process objects by architecture implementing VLIW facilities. More...
 
Identifier< int > WEIGHT ("otawa::WEIGHT", 0)
 Get the maximum weight for the basic block it is hooked to. More...
 
p::feature WEIGHT_FEATURE ("otawa::WEIGHT_FEATURE", new Maker< Weighter >())
 This feature ensures that weight information has been hooked to any BB of the CFG. More...
 

Variables

elm::CString _base_displays []
 
Identifier< Pair< Address, Address > > ACCESS_RANGE
 Put on a memory access instruction, provides a range of possible accesses. More...
 
p::id< AddressADDED_CFG
 This configuration property allows to add unlinked CFG to the used CFG collection. More...
 
p::id< CStringADDED_FUNCTION
 This configuration property allows to add unlinked functions to the used CFG collection. More...
 
p::feature ADDRESS_ANALYSIS_FEATURE
 This feature ensures that accessed memory information (class AccessedAddress) is provided for each basic block. More...
 
Identifier< address_stat_t * > ADDRESS_STATS
 This property provides statistics about ADDRESS_ANALYSIS_FEATURE. More...
 
Identifier< AccessedAddresses * > ADDRESSES
 Provide the set of accesses to the memory for the current basic block. More...
 
Identifier< Inst::kind_tALT_KIND
 Provide an alternative kind for an instruction, superseding the current kind of the instruction. More...
 
const category_t ALWAYS_HIT = otawa::cache::ALWAYS_HIT
 
const category_t ALWAYS_MISS = otawa::cache::ALWAYS_MISS
 
p::id< int > ARGC
 Argument count as passed to the program (int). More...
 
p::id< char ** > ARGV
 Argument values as passed to the program (char **). More...
 
Identifier< AddressARGV_ADDRESS
 This feature is put on the process object whose image supports Unix-like argument passing. More...
 
view::ViewASSEMBLY_VIEW
 
Identifier< AddressAUXV_ADDRESS
 This feature is put on the process object whose image supports Unix-like argument passing. More...
 
Identifier< boolBACK_EDGE
 Identifier for marking back edges. More...
 
p::id< Bag< Address > > BB_BOUNDS
 Configuration identifier, provides a list of BB start point (whatever the control flow of the executable). More...
 
Identifier< AddressBRANCH_TARGET
 Put on instruction that may branch to several targets or whose target computation cannot computed. More...
 
Identifier< Vector< MAYProblem::Domain * > * > CACHE_ACS_MAY
 This property represents the "may" Abstract Cache State of a basic block. More...
 
Identifier< Vector< MAYProblem::Domain * > * > CACHE_ACS_MAY_ENTRY
 This property allows us to set an entry may ACS. More...
 
Identifier< Vector< MUSTProblem::Domain * > * > CACHE_ACS_MUST
 This property represents the MUST Abstract Cache State of a basic block. More...
 
Identifier< Vector< MUSTProblem::Domain * > * > CACHE_ACS_MUST_ENTRY
 This property allows to set an entry MUST ACS. More...
 
Identifier< Vector< PERSProblem::Domain * > * > CACHE_ACS_PERS
 This property represents the "persistence" Abstract Cache State of a basic block. More...
 
Identifier< Vector< PERSProblem::Domain * > * > CACHE_ACS_PERS_ENTRY
 This property allows to set an entry PERS ACS. More...
 
p::id< hard::CacheConfiguration * > CACHE_CONFIG
 This property is used to pass the cache configuration directly to the platform. More...
 
p::id< elm::xom::Element * > CACHE_CONFIG_ELEMENT
 Gives an XML element containing the cache configuration. More...
 
p::id< elm::sys::PathCACHE_CONFIG_PATH
 Gives the path of file containing the cache configuration. More...
 
Identifier< Vector< MUSTProblem::Domain * > * > CACHE_EDGE_ACS_MUST
 This property represents the "must" Abstract Cache State of a basic block. More...
 
Identifier< Vector< PERSProblem::Domain * > * > CACHE_EDGE_ACS_PERS
 This property represents the "persistence" Abstract Cache State of a basic block. More...
 
Identifier< AddressCALL_TARGET
 Put on instruction that may call to several targets or whose target computation cannot computed. More...
 
p::id< Edge * > CALLED_BY
 This properties are put on a CFG to get the list of edges calling it. More...
 
Identifier< category_t > & CATEGORY = cache::CATEGORY
 Branch prediction category: it is put on the BB containing the branch instruction. More...
 
Identifier< Vector< category_t > * > CATEGORY_EDGE
 
Identifier< Vector< BasicBlock * > * > CATEGORY_EDGE_HEADER
 
Identifier< Block * > & CATEGORY_HEADER = cache::CATEGORY_HEADER
 
Identifier< CategoryStats * > & CATEGORY_STATS = cache::CATEGORY_STATS
 
p::feature CFG_CHECKSUM_FEATURE
 This feature ensures that each CFG has hooked a checksum allowing to check binary modifications between launch of an OTAWA application. More...
 
Identifier< const CFGInfo * > CFG_INFO
 Get the collection of CFG found in the program. More...
 
p::feature CFG_INFO_FEATURE
 Feature asserting that the CFG has been scanned in the program. More...
 
Identifier< sys::PathCFG_IO_PATH
 
p::id< AddressCFG_START
 Provide the start address of a sub-CFG to extract (inclusive). More...
 
p::id< AddressCFG_STOP
 Provide the stop address of a sub-CFG to extract (exclusive). More...
 
p::feature CHECKED_CFG_FEATURE
 This feature ensures that. More...
 
Identifier< unsigned long > CHECKSUM
 This property hooked on a CFG provides a checksum build on the instruction of the CFG. More...
 
p::interfaced_feature< const CFGCollectionCOLLECTED_CFG_FEATURE
 This feature asserts that all CFG involved in the current computation has been collected and accessible thanks to INVOLVED_CFGS property. More...
 
p::feature CONDITIONAL_INSTRUCTIONS_FEATURE
 This feature is provided by Process which architecture provides conditional instructions. More...
 
p::feature CONDITIONAL_RESTRUCTURED_FEATURE
 This feature ensures that the CFG is transformed to reflect the effects of conditional instructions. More...
 
p::id< elm::xom::Element * > CONFIG_ELEMENT
 XML element containing the configuration of the current computation. More...
 
p::id< elm::sys::PathCONFIG_PATH
 Path to the XML configuration file used in this computation. More...
 
p::id< ContextualPathCONTEXT
 Provide context for the referred object. More...
 
Identifier< ContextTree * > CONTEXT_TREE
 This property identifier provides a context tree hooked to a framework. More...
 
Feature< ContextTreeByCFGBuilderCONTEXT_TREE_BY_CFG_FEATURE
 Assert that a context tree has been built for each CFG involved in the current computation. More...
 
Feature< ContextTreeBuilderCONTEXT_TREE_FEATURE
 This feature asserts that a context tree of the task is available in the framework. More...
 
Identifier< ContextualLoopBound * > CONTEXTUAL_LOOP_BOUND
 This property provides context-dependent loop bounds. More...
 
p::feature CONTROL_DECODING_FEATURE
 This feature is usually provided by the loader providing decoding facility for control instructions. More...
 
Feature< DeadCodeAnalysisDEAD_CODE_ANALYSIS_FEATURE
 
Feature< TextDecoderDECODED_TEXT
 This feature ensures that text segment of the process has been decoded and, consequently, that instructions are available. More...
 
Identifier< const AbstractFeature * > DEF_BY
 Identifier for identifier property providing ownerness of an identifier. More...
 
Identifier< int > DEFAULT_BRANCH_PENALTY
 
Identifier< delayed_tDELAYED
 This kind of property is put on control branch to know if the following instruction is executed as part of a delayed branch. More...
 
p::feature DELAYED2_FEATURE
 This Process feature informs that the actual architecture supports delayed branch. More...
 
p::feature DELAYED_CFG_FEATURE
 This feature informs that the current microprocessor supports delayed branches and that the CFG has been changed to reflect effect of delay branches. More...
 
p::feature DELAYED_FEATURE
 This feature is put on processes by the loader to inform that the control instruction of the current instruction contains delayed branches. More...
 
Identifier< DelayedInfo * > DELAYED_INFO
 This property provides access to delayed branch information of the current program. More...
 
Identifier< boolDELAYED_INST
 This property is set on instruction of a delayed branch. More...
 
Identifier< boolDELAYED_NOP
 This property is true on NOP instructions insserted due to branch delay. More...
 
p::interfaced_feature< DomInfoDOMINANCE_FEATURE
 This feature ensures that information about domination between nodes of a CFG is available. More...
 
p::id< boolDUMP
 Dump the results of all analyzes. More...
 
p::id< stringDUMP_FOR
 Dump the result of the analysis which name is passed as argument. More...
 
p::id< elm::io::OutStream * > DUMP_STREAM
 Dump the results to the given stream. More...
 
p::id< stringDUMP_TO
 Dump the result to the given file path. More...
 
Identifier< LockPtr< ListOfEdgeConflict > > EDGE_OF_INFEASABLE_PATH_I
 Put on an infeasable path edge Mark a edge that is into an path constrain
More...
 
p::id< Block * > ENCLOSING_LOOP_HEADER
 Defined for any BasicBlock that is part of a loop. More...
 
const AbstractIdentifier END
 This identifier is used for marking the end of property list definition in variable arguments "...". More...
 
p::id< ContextualStepENTER
 Note the entry into a particular context provided by the property. More...
 
p::id< CFG * > ENTRY_CFG
 This property is used to get the entry CFG of the currently processed task. More...
 
p::id< char ** > ENVP
 Argument values as passed to the program (char **). More...
 
Identifier< AddressENVP_ADDRESS
 This feature is put on the process object whose image supports Unix-like argument passing. More...
 
p::id< Event * > EVENT
 Allows to hook an event to a basic block or to an edge. More...
 
Identifier< boolEXIST_PROVIDED_STATE
 
p::id< elm::Vector< Edge * > * > EXIT_LIST
 Defined for any BasicBlock that is a loop header. More...
 
p::interfaced_feature< LoopManager * > EXTENDED_LOOP_FEATURE
 This feature build Loop objects representing the hierarchy of loops and attach it to the CFG and its blocks. More...
 
int fft_line = 0
 
const category_t FIRST_HIT = otawa::cache::FIRST_HIT
 
const category_t FIRST_MISS = otawa::cache::FIRST_MISS
 
Identifier< fmlevel_tFIRSTMISS_LEVEL
 Specify the loop-level-precision of the First Miss computation (inner, outer, multi-level) More...
 
p::feature FLOAT_MEMORY_ACCESS_FEATURE
 This feature is usually asserted by processes that provides access to the memory segment of the program with float values. More...
 
p::feature FLOW_FACTS_FEATURE
 This feature ensures that the flow facts has been loaded. More...
 
Identifier< boolFLOW_FACTS_MANDATORY
 In configuration of the FlowFactLoader, makes it fail if no flow fact fail is available. More...
 
Identifier< xom::Element * > FLOW_FACTS_NODES
 This property may be used in the configuration of a code processor to directly pass an xml element containing flow facts in Flow Fact XML format format. More...
 
Identifier< PathFLOW_FACTS_PATH
 This property may be used in the configuration of a code processor to pass the path of an flow fact file containing flow facts. More...
 
Identifier< BasicBlock * > FROM_BB ("otawa::FROM_BB", 0)
 When we get the VirtualCFG associated with a SESE region, this property, hooked on a BB from the Virtual CFG, gives the corresponding BB on the original (physical) CFG. More...
 
Identifier< Edge * > FROM_EDGE ("otawa::FROM_EDGE", 0)
 This property is like. More...
 
Identifier< stringFUNCTION_LABEL
 This property is put on instruction. More...
 
Identifier< StringGRAPHS_OUTPUT_DIRECTORY
 
p::feature ICACHE_ACS_FEATURE
 This feature represents the availability of Abstract Cache State informations. More...
 
p::feature ICACHE_ACS_MAY_FEATURE
 This feature represents the availability of MAY Abstract Cache State informations. More...
 
p::feature ICACHE_CATEGORY2_FEATURE
 This feature ensures that the categories for instruction cache according to the following method has been computed: More...
 
p::feature ICACHE_CONSTRAINT2_FEATURE
 Ensures that the constraints for cache analysis by categories 2 has been built and that the term of instruction cache has been added to the objective function. More...
 
Feature< EdgeACSBuilderICACHE_EDGE_ACS_FEATURE
 This feature represents the availability of Abstract Cache State informations. More...
 
Feature< EdgeCAT2BuilderICACHE_EDGE_CATEGORY2_FEATURE
 
Feature< FirstLastBuilderICACHE_FIRSTLAST_FEATURE
 This feature represents the availability of the LAST_LBLOCK and LBLOCK_ISFIRST properties. More...
 
p::feature ICACHE_ONLY_CONSTRAINT2_FEATURE
 Ensures that the constraints for cache analysis by categories 2 has been built. More...
 
Identifier< CachePenalty * > ICACHE_PENALTY
 
Identifier< cstringIDENTIFIER_DESC
 Property of this identifier is put on identifier to give a more precise description of the identifier. More...
 
Identifier< cstringIDENTIFIER_ID
 Configuration identifier for objects inheriting from AbstractIdentifier to customize the name and make the object reachable by this name. More...
 
Identifier< cstringIDENTIFIER_LABEL
 Property of this identifier is put on identifier to give a more human-readable name to the identifier. More...
 
Identifier< boolIGNORE_CONTROL
 Put on a control instruction to prevent it to be interpreted as is. More...
 
Identifier< boolIGNORE_ENTRY
 Put on function symbol that must be ignored as function entry. More...
 
Identifier< boolIGNORE_SEQ
 Put on a control instruction to prevent to pass in sequence. More...
 
Identifier< LockPtr< ConflictOfPath > > INFEASABLE_PATH
 Put on an infeasable path begining and end mark. More...
 
Identifier< LockPtr< ListOfEndConflict > > INFEASABLE_PATH_END
 
Identifier< boolINLINING_POLICY
 Put on the first instruction of a function to set default inlining behavior during its virtualization. More...
 
const category_t INVALID_CATEGORY = otawa::cache::INVALID_CATEGORY
 
p::id< const CFGCollection * > INVOLVED_CFGS
 This property is used to link the current computation involved CFG on the framework. More...
 
Identifier< boolIS_FEATURE ("otawa::IS_FEATURE", false)
 
Identifier< boolIS_RETURN
 Put on a control flow instruction, this shows that this instruction is equivalent to a function return. More...
 
const Level L1
 
const Level L2
 
const Level L3
 
const Level L4
 
const Level L5
 
const Level L6
 
const Level L7
 
const Level L8
 
const Level L9
 
Identifier< stringLABEL
 Property with this identifier is put on instructions or basic blocks which a symbol is known for. More...
 
p::feature LABEL_FEATURE
 This feature ensures that label or symbol information has been linked to the concerned instruction. More...
 
Identifier< LBlock ** > LAST_LBLOCK
 This property gives the ID of the last lblock of a BasicBlock, for each line. More...
 
Identifier< boolLBLOCK_ISFIRST
 This property tells if the lblock is the first of its BasicBlock (for its cache line) This information is useful, because if it's false, then, the lblock is always a miss. More...
 
p::id< int > LEAVE
 Leave the number of context provided by the number of argument. More...
 
Identifier< Vector< LBlock * > * > LINKED_BLOCKS
 !!TODO!! More...
 
p::id< stringLOAD_PARAM
 Identifier used for Manager::load() configuration. More...
 
p::id< Loader * > LOADER
 Identifier of the property indicating the loader to use. More...
 
p::id< stringLOADER_NAME
 Identifier of the property indicating a name (CString) of the loader to use. More...
 
p::id< location_tLOCATION_START
 Provide the start location of a sub-CFG to extract (inclusive). More...
 
p::id< location_tLOCATION_STOP
 Provide the stop location of a sub-CFG to extract (inclusive). More...
 
p::id< elm::io::OutStream * > LOG
 This property identifier is used for setting the log stream used by the processor to write messages (information, warning, error). More...
 
p::id< stringLOG_FOR
 Display logs only for the named processor. More...
 
p::id< Monitor::log_level_tLOG_LEVEL
 Property passed in the configuration property list of a processor to select the log level between LOG_PROC, LOG_CFG or LOG_BB. More...
 
p::id< Block * > LOOP_ENTRY
 Is defined for an Edge if this Edge is the entry-edge of any loop. More...
 
p::id< Block * > LOOP_EXIT
 Is defined for an Edge if this Edge is the exit-edge of any loop. More...
 
p::id< Block * > & LOOP_EXIT_EDGE = LOOP_EXIT
 
Identifier< boolLOOP_HEADER
 Identifier for marking basic blocks that are entries of loops. More...
 
p::feature LOOP_HEADERS_FEATURE
 This feature ensures that all loop header are marked with a LOOP_HEADER property, and the backedges are marked with a BACK_EDGE property. More...
 
p::feature LOOP_INFO_FEATURE
 This feature asserts that the loop info of the task is available in the framework. More...
 
Identifier< LockPtr< ListOfLoopConflict > > LOOP_OF_INFEASABLE_PATH_I
 Put on an infeasable path loop Mark a loop that contains or is into an path constrain. More...
 
ManagerMANAGER = *Manager::def()
 Default manager. More...
 
Identifier< int > MAX_ITERATION
 Put on the first instruction of a loop, it gives the maximum number of iteration of this loop. More...
 
p::feature MEMORY_ACCESS_FEATURE
 This feature is usually asserted by processes that provides access to the memory segment of the program. More...
 
p::feature MEMORY_ACCESSES
 This feature, put on a process, informs that the functional simulator provides the ability to give information about memory accesses. More...
 
p::id< elm::xom::Element * > MEMORY_ELEMENT
 Passed to manager::load() to give the XML element describing the memory configuration. More...
 
p::id< hard::Memory * > MEMORY_OBJECT
 Passed to manager::load() to set the memory configuration. More...
 
p::id< elm::sys::PathMEMORY_PATH
 Passed to Manager::load() to give the path of the file describing the memory. More...
 
Identifier< int > MIN_ITERATION
 Put on the first instruction of a loop, it gives the minimal number of iterations. More...
 
Identifier< ilp::Var * > MISS_VAR
 Property giving the variable counting the number of misses. More...
 
p::feature MKFF_PRESERVATION_FEATURE
 This feature ensures that preservation information used by mkff is put on instruction. More...
 
Identifier< boolNEVER_TAKEN
 
Identifier< boolNO_CALL
 Put on the first instruction of a function that must be no called. More...
 
Identifier< boolNO_INLINE
 Put on the first instruction of a function to indicate whether it should be inlined or not during virtualization. More...
 
AbstractMakerno_maker = &no_inst
 Special maker for "no processor available". More...
 
Identifier< boolNO_RETURN
 This annotation is put on the first instruction of functions that does not never return. More...
 
p::id< stringNO_RETURN_FUNCTION
 this property may be used to pass information about the non-returning behaviour of some functions. More...
 
p::id< boolNO_STACK
 This property shows that no stack need to be allocated. More...
 
p::id< boolNO_SYSTEM
 This property shows that the system does not need to by simulated when the binary image is built. More...
 
p::feature NORMALIZED_CFGS_FEATURE
 This feature ensures that the CFG are in a normalized form: fully resolved branches, no entering or exiting edges to or from external CFGs. More...
 
const category_t NOT_CLASSIFIED = otawa::cache::NOT_CLASSIFIED
 
Feature< NoProcessorNULL_FEATURE ("otawa::NULL")
 Not a real feature, just a marker. More...
 
AbstractMakernull_maker = &null_inst
 Special maker for a null processor. More...
 
NullStream null_stream
 
p::id< elm::io::OutStream * > OUTPUT
 This property identifier is used for setting the output stream used by the processor to write results. More...
 
Identifier< ContextTree * > OWNER_CONTEXT_TREE
 Annotations with this identifier are hooked to basic blocks and gives the owner context tree (ContextTree * data). More...
 
p::feature PCG_FEATURE
 This feature ensure that a PCG is provided. More...
 
Identifier< PostDomInfo * > PDOM_INFO ("otawa::PDOM_INFO", 0)
 Provide post-domination information. More...
 
p::id< int > PIPELINE_DEPTH
 This property is a hint to have an estimation of the pipeline depth. More...
 
p::id< hard::Platform * > PLATFORM
 Identifier of the property indicating a platform (Platform *) to use. More...
 
p::id< hard::Platform::Identification * > PLATFORM_IDENTFIER ("otawa::PLATFORM_IDENTFIER", 0)
 Identifier of the property indicating the identifier (PlatformId) of the loader to use. More...
 
p::id< stringPLATFORM_NAME
 Identifier of the property indicating the name (CString) of the platform to use. More...
 
p::interfaced_feature< PostDomInfoPOSTDOMINANCE_FEATURE
 This feature ensures that information about postdomination between nodes of a CFG is vailable. More...
 
p::id< Event * > PREFIX_EVENT
 Allows to hook an event to an edge and consider it as part of the prefix of the edge time. More...
 
Identifier< boolPRESERVED
 Put on instruction that must preserved from the mkff special flow-fact detection. More...
 
Identifier< int > PROCESSED_CFG
 This property is used to store statistics about the count of processed CFG. More...
 
p::id< hard::Processor * > PROCESSOR
 Gives the processor to use in the current computation. More...
 
p::id< elm::xom::Element * > PROCESSOR_ELEMENT
 XML element containing the configuration of the processor. More...
 
p::id< elm::sys::PathPROCESSOR_PATH
 Path to the XML configuration file of the processor. More...
 
p::id< PCG * > PROGRAM_CALL_GRAPH
 Property providing the PCG (Program Call Graph). More...
 
Identifier< PSTree * > PROGRAM_STRUCTURE_TREE ("otawa::PROGRAM_STRUCTURE_TREE", 0)
 This property points to the Program Structure Tree of the CFG. More...
 
Identifier< dfa::State * > PROVIDED_STATE
 Associate a program point with a provided dfa::State. More...
 
Identifier< boolPSEUDO_UNROLLING
 This property represents the "persistence" Abstract Cache State of a basic block. More...
 
p::feature PST_FEATURE ("otawa::PST_FEATURE", new Maker< PSTBuilder >())
 This feature represents the availability of the Program Structure Tree. More...
 
p::id< boolRECURSE_BACK
 This property marks PCG edges and synthetic block corresponding to calls backing inside a recursivity nest. More...
 
p::id< boolRECURSE_ENTRY
 This property marks PCG edges and synthetic block corresponding to calls entering a recursivity nest. More...
 
p::id< PCGBlock * > RECURSE_HEAD
 This properties marks CFG and PCGNode corresponding to head of recursivity nests. More...
 
p::id< boolRECURSIVE
 Activate the recucursive feature of BBProcessors : each time a basic block contains a function call, the CFG of this function is recorded to be processed later after the current CFG. More...
 
Identifier< boolRECURSIVE_LOOP ("otawa::RECURSIVE_LOOP", false)
 A property with this identifier is hooked to edge performing a recursive call when inlining is used. More...
 
p::feature RECURSIVITY_ANALYSIS
 This features ensures that recursive function calls has been identified in the PCG. More...
 
p::feature REDUCED_LOOPS_FEATURE
 Ensure that no more irregular loop remains in the program representation. More...
 
p::feature REGISTER_USAGE_FEATURE
 This feature is usually asserted by processes that provides access to the register usage information. More...
 
view::PropertyTypeREGISTERS_PROPERTY
 
Identifier< const dfa::BitSet * > REVERSE_DOM
 Identifier of annotation containing reverse-dominance information. More...
 
Identifier< BitSet * > REVERSE_POSTDOM ("otawa::REVERSE_POSTDOM", 0)
 Identifier of annotation containing reverse-post-dominance information. More...
 
p::feature SEMANTICS_INFO
 This feature is present when the loader provides implementation of semantics information. More...
 
p::feature SEMANTICS_INFO_EXTENDED
 This feature is present when the loader provides implementation of extended semantics information. More...
 
p::feature SEMANTICS_INFO_FLOAT
 This feature is present when the loader provides implementation of floating-point semantic instructions. More...
 
p::id< sim::Simulator * > SIMULATOR
 This property defines the used the used simulator when a simulator is needed to perform simulation. More...
 
p::id< elm::stringSIMULATOR_NAME
 Name of the simulator to use. More...
 
p::feature SOURCE_LINE_FEATURE
 This feature asserts that a table matching program address and source (file, lines) is available. More...
 
Identifier< AddressSP_ADDRESS
 This feature is put on the process to get information about the built image. More...
 
p::feature SPLIT_CFG
 This feature ensure that a part of the current has been extracted as a sub-CFG based on address provided by two properties: More...
 
p::feature STACK_ANALYSIS_FEATURE
 This features ensure that the stack analysis has been identified. More...
 
p::feature STANDARD_EVENT_FEATURE
 
otawa::NullInst static_null
 
Identifier< Symbol * > SYMBOL
 This property carries the symbol attached to an instruction. More...
 
p::id< AddressTASK_ADDRESS
 This property, passed to the load configuration, select the task entry by its address. More...
 
p::id< stringTASK_ENTRY
 This property, passed to the load configuration, gives the name of the entry function of the current task. More...
 
Identifier< int > TIME
 This identifier is used for storing the time of execution in cycles (int) of the program area it applies to. More...
 
Identifier< int > TO_DELAY ("", 0)
 
Identifier< int > TOTAL_ITERATION
 Put on the first instruction of a loop, it gives the total number of iterations during the whole execution of the program. More...
 
p::id< boolUNROLL_THIS
 This property is used by UNROLLED_LOOPS_FEATURE and has to be put on header blocks of loops to select if the corresponding loop has to be unrolled or not. More...
 
Identifier< Block * > UNROLLED_FROM
 Put on the header ex-header of a loop, this property gives the BB of the unrolled loop. More...
 
p::feature UNROLLED_LOOPS_FEATURE
 This feature that the loops have been unrolled at least once. More...
 
p::id< boolVERBOSE
 This property activates the verbose mode of the processor: information about the processor work will be displayed. More...
 
cstring VERBOSE_ENV = "OTAWA_VERBOSE"
 
Identifier< boolVIRTUAL_DEFAULT
 Configuration property of Virtualizer: it set the default behavior for inlining of function call during virtualization (default to true). More...
 
p::feature VIRTUAL_INST_FEATURE
 Ensure that a virtual instruction manager is available to create virtual instructions. More...
 
p::id< VirtualInstManager * > VIRTUAL_INST_MANAGER
 Get the current virtual instruction manager. More...
 
p::feature VIRTUALIZED_CFG_FEATURE
 This features only show that the CFG has been virtualized. More...
 
p::feature VLIW_SUPPORTED
 This feature is provided on Process objects by architecture implementing VLIW facilities. More...
 
Identifier< int > WEIGHT
 Get the maximum weight for the basic block it is hooked to. More...
 
p::feature WEIGHT_FEATURE
 This feature ensures that weight information has been hooked to any BB of the CFG. More...
 

Detailed Description

Development Note Letting the ToDo / ToDoList class visible in the header is clumsy.

$Id$ Copyright (c) 2007, IRIT - UPS casse.nosp@m.@iri.nosp@m.t.fr

We should a find a way to remove it from header as it is mainly a linked list of ToDo objects.

Star12X class declarations This file is part of OTAWA

OTAWA is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

OTAWA is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Foobar; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Typedef Documentation

◆ action_t

◆ address_stat_t

◆ address_t

◆ call_t

typedef struct otawa::call_t otawa::call_t

◆ category_t

◆ CategoryStats

◆ code_part_t

◆ default_handler_t

◆ delayed_t

◆ fmlevel_t

◆ LinkedBlockList

typedef SortedList<LBlock*, NumberOrder> otawa::LinkedBlockList

◆ location_t

◆ PSTree

◆ RegSet

◆ stack_t

Enumeration Type Documentation

◆ action_t

Enumerator
DO_NOTHING 
DO_SWALLOW 
DO_INSERT 

◆ code_part

Enumerator
PROLOGUE 
BLOCK 
EPILOGUE 
CODE_PARTS_NUMBER 

◆ fmlevel

Enumerator
FML_INNER 
FML_OUTER 
FML_MULTI 
FML_NONE 

Function Documentation

◆ ADDRESS_ANALYSIS_FEATURE()

p::feature otawa::ADDRESS_ANALYSIS_FEATURE ( "otawa::ADDRESS_ANALYSIS_FEATURE"  ,
new Maker< NoProcessor () 
)

This feature ensures that accessed memory information (class AccessedAddress) is provided for each basic block.

This feature is useful for any static analysis concerning the memory hierarchy (caches, flash memories with prefetch, etc).

Properties

Statistics

Processors

◆ ADDRESS_STATS()

Identifier<address_stat_t *> otawa::ADDRESS_STATS ( "otawa::ADDRESS_STATS"  ,
 
)

This property provides statistics about ADDRESS_ANALYSIS_FEATURE.

◆ ADDRESSES()

Identifier<AccessedAddresses *> otawa::ADDRESSES ( "otawa::ADDRESSES"  ,
 
)

Provide the set of accesses to the memory for the current basic block.

Hooks

Features

◆ CACHE_ACS_MAY()

Identifier<Vector<MAYProblem::Domain*>* > otawa::CACHE_ACS_MAY ( "otawa::CACHE_ACS_MAY"  ,
NULL   
)

This property represents the "may" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_ACS_MAY_ENTRY()

Identifier<Vector<MAYProblem::Domain*>* > otawa::CACHE_ACS_MAY_ENTRY ( "otawa::CACHE_ACS_MAY_ENTRY"  ,
NULL   
)

This property allows us to set an entry may ACS.

Hooks

◆ CACHE_ACS_MUST()

Identifier<Vector<MUSTProblem::Domain*>* > otawa::CACHE_ACS_MUST ( "otawa::CACHE_ACS_MUST"  ,
 
)

This property represents the MUST Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_ACS_MUST_ENTRY()

Identifier<Vector<MUSTProblem::Domain*>* > otawa::CACHE_ACS_MUST_ENTRY ( "otawa::CACHE_ACS_MUST_ENTRY"  ,
 
)

This property allows to set an entry MUST ACS.

It must be set in the property list passed to the invocation of a code processor.

Hooks
  • PropList (code processor configuration)

◆ CACHE_ACS_PERS()

Identifier<Vector<PERSProblem::Domain*>* > otawa::CACHE_ACS_PERS ( "otawa::CACHE_ACS_PERS"  ,
 
)

This property represents the "persistence" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_ACS_PERS_ENTRY()

Identifier<Vector<PERSProblem::Domain*>* > otawa::CACHE_ACS_PERS_ENTRY ( "otawa::CACHE_ACS_PERS_ENTRY"  ,
 
)

This property allows to set an entry PERS ACS.

It must be set in the property list passed to the invocation of a code processor.

Hooks
  • PropList (code processor configuration)

◆ CACHE_EDGE_ACS_MUST()

Identifier<Vector<MUSTProblem::Domain*> *> otawa::CACHE_EDGE_ACS_MUST ( "otawa::cache_edge_acs_must"  ,
NULL   
)

This property represents the "must" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_EDGE_ACS_PERS()

Identifier<Vector<PERSProblem::Domain*> *> otawa::CACHE_EDGE_ACS_PERS ( "otawa::cache_edge_acs_pers"  ,
NULL   
)

This property represents the "persistence" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CATEGORY_EDGE()

Identifier<Vector<category_t> *> otawa::CATEGORY_EDGE ( "otawa::cactegory_edge"  ,
NULL   
)

◆ CATEGORY_EDGE_HEADER()

Identifier<Vector<BasicBlock*> *> otawa::CATEGORY_EDGE_HEADER ( "otawa::category_edge_header"  ,
NULL   
)

◆ CONDITIONAL_RESTRUCTURED_FEATURE()

p::feature otawa::CONDITIONAL_RESTRUCTURED_FEATURE ( "otawa::CONDITIONAL_RESTRUCTURED_FEATURE"  ,
p::make< ConditionalRestructurer () 
)

This feature ensures that the CFG is transformed to reflect the effects of conditional instructions.

Default implementation:

◆ CONTEXT()

p::id<ContextualPath> otawa::CONTEXT ( "otawa::CONTEXT"  )

Provide context for the referred object.

Hooks

◆ CONTEXT_TREE()

Identifier<ContextTree *> otawa::CONTEXT_TREE ( "otawa::CONTEXT_TREE"  ,
 
)

This property identifier provides a context tree hooked to a framework.

A null pointer is retrieved if the context tree is not computed.

Hooks
  • FrameWork

◆ CONTEXT_TREE_BY_CFG_FEATURE()

Feature<ContextTreeByCFGBuilder> otawa::CONTEXT_TREE_BY_CFG_FEATURE ( "otawa::CONTEXT_TREE_BY_CFG_FEATURE"  )

Assert that a context tree has been built for each CFG involved in the current computation.

Properties

◆ CONTEXT_TREE_FEATURE()

Feature<ContextTreeBuilder> otawa::CONTEXT_TREE_FEATURE ( "otawa::CONTEXT_TREE_FEATURE"  )

This feature asserts that a context tree of the task is available in the framework.

Properties

◆ CONTEXTUAL_LOOP_BOUND()

Identifier<ContextualLoopBound *> otawa::CONTEXTUAL_LOOP_BOUND ( "otawa::CONTEXTUAL_LOOP_BOUND"  ,
 
)

This property provides context-dependent loop bounds.

It is part of information given by FLOW_FACT_FEATURE.

Hooks

◆ DEAD_CODE_ANALYSIS_FEATURE()

Feature<DeadCodeAnalysis> otawa::DEAD_CODE_ANALYSIS_FEATURE ( "otawa::DEAD_CODE_ANALYSIS_FEATURE"  )

◆ DECODED_TEXT()

Feature<TextDecoder> otawa::DECODED_TEXT ( "otawa::DECODED_TEXT"  )

This feature ensures that text segment of the process has been decoded and, consequently, that instructions are available.

Provided properties

◆ DEF_BY()

Identifier<const AbstractFeature *> otawa::DEF_BY ( "otawa::DEF_BY"  ,
 
)

Identifier for identifier property providing ownerness of an identifier.

The arguments describes the feature owning the current

◆ DEFAULT_BRANCH_PENALTY()

Identifier<int> otawa::DEFAULT_BRANCH_PENALTY ( "otawa::DEFAULT_BRANCH_PENALTY"  ,
 
)

◆ defBy()

Property* otawa::defBy ( const AbstractFeature feature)
inline

References DEF_BY, and make().

◆ ENCLOSING_LOOP_HEADER()

p::id<Block*> otawa::ENCLOSING_LOOP_HEADER ( "otawa::ENCLOSING_LOOP_HEADER"  ,
 
)

Defined for any BasicBlock that is part of a loop.

Contains the header of the loop immediately containing the block If the block is a loop header, then, the property contains the header of the parent loop.

Hooks

◆ ENTER()

p::id<ContextualStep> otawa::ENTER ( "otawa::ENTER"  )

Note the entry into a particular context provided by the property.

To put a context entry s onto an edge e, just do: ENTER(e).add(s);

Hooks

◆ escape()

string otawa::escape ( const string s)

Escape special characters in the given string.

Parameters
sString to escape characters for.
Returns
Escaped string.

References buf, elm::String::length(), and elm::StringBuffer::toString().

Referenced by otawa::Identifier< otawa::arm::Info * >::printFormatted().

◆ EXIST_PROVIDED_STATE()

Identifier<bool> otawa::EXIST_PROVIDED_STATE ( "otawa::EXISTPROVIDED_STATE"  ,
false   
)

◆ EXTENDED_LOOP_FEATURE()

p::interfaced_feature<LoopManager *> otawa::EXTENDED_LOOP_FEATURE ( "otawa::EXTENDED_LOOP_FEATURE"  ,
p::make< ExtendedLoopBuilder >  () 
)

This feature build Loop objects representing the hierarchy of loops and attach it to the CFG and its blocks.

The loop can be accessing using properties (described below) but an easier access is provided by Loop::of(), Loop::top() or by using LoopManager feature interface.

Properties
Provided by:
  • ExtendedLoopBuilder (default)

◆ FIRSTMISS_LEVEL()

Identifier<fmlevel_t> otawa::FIRSTMISS_LEVEL ( "otawa::FIRSTMISS_LEVEL"  ,
FML_MULTI   
)

Specify the loop-level-precision of the First Miss computation (inner, outer, multi-level)

◆ from_string() [1/14]

template<class T >
void otawa::from_string ( const string s,
T &  v 
)

◆ from_string() [2/14]

template<>
void otawa::from_string ( const string str,
Address v 
)

References buf, and elm::str().

◆ from_string() [3/14]

template<class T >
void otawa::from_string ( const string str,
Bag< T > &  bag 
)

◆ from_string() [4/14]

template<>
void otawa::from_string ( const string str,
bool v 
)

References elm::str().

◆ from_string() [5/14]

template<>
void otawa::from_string ( const string str,
double &  v 
)

References elm::str().

◆ from_string() [6/14]

template<>
void otawa::from_string ( const string str,
int &  v 
)

References elm::str().

◆ from_string() [7/14]

template<>
void otawa::from_string ( const string str,
long &  v 
)

References elm::str().

◆ from_string() [8/14]

template<>
void otawa::from_string ( const string str,
long long &  v 
)

References elm::str().

◆ from_string() [9/14]

template<>
void otawa::from_string ( const string str,
string v 
)

References elm::str().

◆ from_string() [10/14]

template<>
void otawa::from_string ( const string str,
SymAddress *&  v 
)

◆ from_string() [11/14]

template<>
void otawa::from_string ( const string str,
sys::Path v 
)

References elm::str().

◆ from_string() [12/14]

template<>
void otawa::from_string ( const string str,
unsigned int &  v 
)

References elm::str().

◆ from_string() [13/14]

template<>
void otawa::from_string ( const string str,
unsigned long &  v 
)

References elm::str().

◆ from_string() [14/14]

template<>
void otawa::from_string ( const string str,
unsigned long long &  v 
)

References elm::str().

◆ from_string_split()

void otawa::from_string_split ( const string str,
Vector< string > &  items 
)

◆ GRAPHS_OUTPUT_DIRECTORY()

Identifier<String> otawa::GRAPHS_OUTPUT_DIRECTORY ( "otawa::GRAPHS_OUTPUT_DIRECTORY"  ,
""   
)

◆ ICACHE_ACS_FEATURE()

p::feature otawa::ICACHE_ACS_FEATURE ( "otawa::ICACHE_ACS_FEATURE"  ,
new Maker< ACSBuilder () 
)

This feature represents the availability of Abstract Cache State informations.

Configuration
Properties
Processors

◆ ICACHE_ACS_MAY_FEATURE()

p::feature otawa::ICACHE_ACS_MAY_FEATURE ( "otawa::ICACHE_ACS_MAY_FEATURE"  ,
new Maker< ACSMayBuilder () 
)

This feature represents the availability of MAY Abstract Cache State informations.

Properties
  • CACHE_ACS
Processors

◆ ICACHE_CATEGORY2_FEATURE()

p::feature otawa::ICACHE_CATEGORY2_FEATURE ( "otawa::ICACHE_CATEGORY2_FEATURE"  ,
new Maker< CAT2Builder () 
)

This feature ensures that the categories for instruction cache according to the following method has been computed:

C. Ballabriga, H. Cassé. Improving the First-Miss Computation in Set-Associative Instruction Caches. Euromicro Conference on Real-Time Systems (ECRTS 2008), IEEE, p. 341-350, 2008.

Properties
Processors

◆ ICACHE_CONSTRAINT2_FEATURE()

p::feature otawa::ICACHE_CONSTRAINT2_FEATURE ( "otawa::ICACHE_CONSTRAINT2_FEATURE"  ,
new Maker< CAT2ConstraintBuilder () 
)

Ensures that the constraints for cache analysis by categories 2 has been built and that the term of instruction cache has been added to the objective function.

Properties
Configuration
  • ICACHE_NO_OBJECTIVE
Processors

◆ ICACHE_EDGE_ACS_FEATURE()

Feature<EdgeACSBuilder> otawa::ICACHE_EDGE_ACS_FEATURE ( "otawa::ICACHE_EDGE_ACS_FEATURE"  )

This feature represents the availability of Abstract Cache State informations.

Properties
  • CACHE_ACS

◆ ICACHE_EDGE_CATEGORY2_FEATURE()

Feature<EdgeCAT2Builder> otawa::ICACHE_EDGE_CATEGORY2_FEATURE ( "otawa::ICACHE_EDGE_CATEGORY2_FEATURE"  )

◆ ICACHE_FIRSTLAST_FEATURE()

Feature<FirstLastBuilder> otawa::ICACHE_FIRSTLAST_FEATURE ( "otawa::ICACHE_FIRSTLAST_FEATURE"  )

This feature represents the availability of the LAST_LBLOCK and LBLOCK_ISFIRST properties.

Properties

◆ ICACHE_ONLY_CONSTRAINT2_FEATURE()

p::feature otawa::ICACHE_ONLY_CONSTRAINT2_FEATURE ( "otawa::ICACHE_ONLY_CONSTRAINT2_FEATURE"  ,
new Maker< CAT2OnlyConstraintBuilder () 
)

Ensures that the constraints for cache analysis by categories 2 has been built.

Properties
Configuration
  • ICACHE_NO_OBJECTIVE
Processors

◆ ICACHE_PENALTY()

Identifier<CachePenalty*> otawa::ICACHE_PENALTY ( "otawa::CACHE_PENALTY"  ,
NULL   
)

◆ idDesc()

Property* otawa::idDesc ( cstring  desc)
inline

References IDENTIFIER_DESC, and make().

◆ idLabel()

Property* otawa::idLabel ( cstring  label)
inline

References IDENTIFIER_LABEL, and make().

◆ IN_EDGES()

Block::EdgeCollection otawa::IN_EDGES ( const Block b)
inline

◆ INFEASABLE_PATH_END()

Identifier< LockPtr<ListOfEndConflict> > otawa::INFEASABLE_PATH_END ( "otawa::INFEASABLE_PATH_END"  ,
NULL   
)

◆ L1()

const Level otawa::L1 ( )

◆ L2()

const Level otawa::L2 ( )

◆ L3()

const Level otawa::L3 ( )

◆ L4()

const Level otawa::L4 ( )

◆ L5()

const Level otawa::L5 ( )

◆ L6()

const Level otawa::L6 ( )

◆ L7()

const Level otawa::L7 ( )

◆ L8()

const Level otawa::L8 ( )

◆ L9()

const Level otawa::L9 ( )

◆ LABEL_FEATURE()

p::feature otawa::LABEL_FEATURE ( "otawa::LABEL_FEATURE"  ,
new Maker< LabelSetter >  () 
)

This feature ensures that label or symbol information has been linked to the concerned instruction.

It is not mandatory for OTAWA work but improve the readability of error message or logs.

Properties

◆ LAST_LBLOCK()

Identifier<LBlock**> otawa::LAST_LBLOCK ( "otawa::LAST_LBLOCK"  ,
NULL   
)

This property gives the ID of the last lblock of a BasicBlock, for each line.

Hooks

◆ LBLOCK_ISFIRST()

Identifier<bool> otawa::LBLOCK_ISFIRST ( "otawa::LBLOCK_ISFIRST"  ,
false   
)

This property tells if the lblock is the first of its BasicBlock (for its cache line) This information is useful, because if it's false, then, the lblock is always a miss.

Hooks
  • LBlock

◆ leastGreaterLog2()

ot::size otawa::leastGreaterLog2 ( ot::size  x)

Compute the least greater logarithm of 2 for the given value.

Parameters
xValue to get LGL2.
Returns
LGL2 of x.

References otawa::ilp::x().

◆ LEAVE()

p::id<int> otawa::LEAVE ( "otawa::LEAVE"  ,
 
)

Leave the number of context provided by the number of argument.

To mark the edge e as leaving a context, do: LEAVE(e)++;

Hooks

◆ LINKED_BLOCKS()

Identifier<Vector<LBlock*> *> otawa::LINKED_BLOCKS ( "otawa::LINKED_BLOCKS"  ,
NULL   
)

!!TODO!!

◆ LOOP_HEADERS_FEATURE()

p::feature otawa::LOOP_HEADERS_FEATURE ( "otawa::LOOP_HEADERS_FEATURE"  ,
new Maker< Dominance () 
)

This feature ensures that all loop header are marked with a LOOP_HEADER property, and the backedges are marked with a BACK_EDGE property.

Include
<otawa/cfg/features.h>

@Properties

◆ LOOP_INFO_FEATURE()

p::feature otawa::LOOP_INFO_FEATURE ( "otawa::LOOP_INFO_FEATURE"  ,
new Maker< LoopInfoBuilder >  () 
)

This feature asserts that the loop info of the task is available in the framework.

Properties

◆ make() [1/3]

Property* otawa::make ( const Identifier< cstring > &  id,
const char *  v 
)
inline

References make().

◆ make() [2/3]

Property* otawa::make ( const Identifier< string > &  id,
const char *  v 
)
inline

References make().

◆ make() [3/3]

◆ MISS_VAR()

Identifier<ilp::Var *> otawa::MISS_VAR ( "otawa::MISS_VAR"  ,
 
)

Property giving the variable counting the number of misses.

Hook
  • LBlock
Feature

◆ MKFF_PRESERVATION_FEATURE()

p::feature otawa::MKFF_PRESERVATION_FEATURE ( "otawa::MKFF_PRESERVATION_FEATURE"  ,
new Maker< FlowFactLoader () 
)

This feature ensures that preservation information used by mkff is put on instruction.

Hooked Properties

◆ move() [1/2]

template<class T >
Bag< T > otawa::move ( int  c,
T *  t 
)

Move the given array content to a bag. After this call, the builder of the array is no more in charge of freeing the corresponding memory. t must have allocated using a new!

Parameters
cCount of items in t.
tArray to put in the bag.
Returns
Built bag.

◆ move() [2/2]

template<class T >
Bag< T > otawa::move ( Vector< T > &  v)

Move the given vector content to a bag, letting home empty.

Parameters
vVector to move.
Returns
Built bag.

◆ NEVER_TAKEN()

Identifier<bool> otawa::NEVER_TAKEN ( "otawa::NEVER_TAKEN"  )

◆ NORMALIZED_CFGS_FEATURE()

p::feature otawa::NORMALIZED_CFGS_FEATURE ( "otawa::NORMALIZED_CFGS_FEATURE"  ,
new Maker< CFGNormalizer () 
)

This feature ensures that the CFG are in a normalized form: fully resolved branches, no entering or exiting edges to or from external CFGs.

◆ operator<<() [1/45]

◆ operator<<() [2/45]

elm::io::Output& otawa::operator<< ( elm::io::Output out,
const AbstractIdentifier id 
)
inline

◆ operator<<() [3/45]

elm::io::Output& otawa::operator<< ( elm::io::Output out,
const AbstractIdentifier id 
)
inline

◆ operator<<() [4/45]

elm::io::Output& otawa::operator<< ( elm::io::Output out,
const Property prop 
)
inline

◆ operator<<() [5/45]

elm::io::Output& otawa::operator<< ( elm::io::Output out,
const PropList props 
)
inline

◆ operator<<() [6/45]

elm::io::Output& otawa::operator<< ( elm::io::Output out,
const PropList props 
)
inline

◆ operator<<() [7/45]

io::Output & otawa::operator<< ( elm::io::Output out,
Inst inst 
)

◆ operator<<() [8/45]

elm::io::Output & otawa::operator<< ( elm::io::Output out,
Process proc 
)

◆ operator<<() [9/45]

elm::io::Output & otawa::operator<< ( elm::io::Output output,
const MAYProblem::Domain dom 
)

◆ operator<<() [10/45]

elm::io::Output & otawa::operator<< ( elm::io::Output output,
const MUSTPERS::Domain dom 
)

◆ operator<<() [11/45]

elm::io::Output & otawa::operator<< ( elm::io::Output output,
const MUSTProblem::Domain dom 
)

◆ operator<<() [12/45]

elm::io::Output& otawa::operator<< ( elm::io::Output output,
const PERSBranch::Domain dom 
)

◆ operator<<() [13/45]

elm::io::Output & otawa::operator<< ( elm::io::Output output,
const PERSProblem::Domain dom 
)

◆ operator<<() [14/45]

io::Output & otawa::operator<< ( io::Output o,
const hard::Bank::type_t t 
)

◆ operator<<() [15/45]

io::Output& otawa::operator<< ( io::Output out,
AccessedAddresses aa 
)
inline

◆ operator<<() [16/45]

◆ operator<<() [17/45]

io::Output& otawa::operator<< ( io::Output out,
BasicBlock block 
)
inline

◆ operator<<() [18/45]

◆ operator<<() [19/45]

io::Output & otawa::operator<< ( io::Output out,
CFG cfg 
)

Address CFG::address(void); Get the address of the first instruction of the CFG.

Returns
Return address of the first instruction.

◆ operator<<() [20/45]

io::Output& otawa::operator<< ( io::Output out,
const AccessedAddress addr 
)
inline

◆ operator<<() [21/45]

io::Output& otawa::operator<< ( io::Output out,
const AccessedAddresses aa 
)
inline

◆ operator<<() [22/45]

io::Output& otawa::operator<< ( io::Output out,
const CFG::BlockIter i 
)
inline

◆ operator<<() [23/45]

◆ operator<<() [24/45]

io::Output& otawa::operator<< ( io::Output out,
const ContextualPath path 
)
inline

◆ operator<<() [25/45]

template<class T >
io::Output& otawa::operator<< ( io::Output out,
const ContextualPath::Ref< T > &  r 
)
inline

◆ operator<<() [26/45]

io::Output& otawa::operator<< ( io::Output out,
const ContextualStep path 
)
inline

◆ operator<<() [27/45]

template<class T , class I >
io::Output& otawa::operator<< ( io::Output out,
const ImmutableRef< T, I > &  ref 
)

References ref().

◆ operator<<() [28/45]

io::Output & otawa::operator<< ( io::Output out,
const location_t loc 
)

◆ operator<<() [29/45]

io::Output & otawa::operator<< ( io::Output out,
const Loop l 
)

References otawa::Loop::header().

◆ operator<<() [30/45]

io::Output & otawa::operator<< ( io::Output out,
const MemArea a 
)

◆ operator<<() [31/45]

template<class T , class I >
io::Output& otawa::operator<< ( io::Output out,
const Ref< T, I > &  ref 
)

References ref().

◆ operator<<() [32/45]

io::Output& otawa::operator<< ( io::Output out,
const Type type 
)
inline

References otawa::Type::print(), and type().

◆ operator<<() [33/45]

io::Output & otawa::operator<< ( io::Output out,
Edge edge 
)

◆ operator<<() [34/45]

io::Output & otawa::operator<< ( io::Output out,
Event event 
)

◆ operator<<() [35/45]

io::Output & otawa::operator<< ( io::Output out,
Event::occurrence_t  occ 
)

◆ operator<<() [36/45]

io::Output & otawa::operator<< ( io::Output out,
Inst::Kind  kind 
)

References kind.

◆ operator<<() [37/45]

io::Output & otawa::operator<< ( io::Output out,
PCGBlock b 
)

◆ operator<<() [38/45]

io::Output & otawa::operator<< ( io::Output out,
PCGEdge b 
)

◆ operator<<() [39/45]

io::Output& otawa::operator<< ( io::Output out,
SymAddress addr 
)
inline

◆ operator<<() [40/45]

io::Output& otawa::operator<< ( io::Output out,
Symbol sym 
)
inline

◆ operator<<() [41/45]

io::Output & otawa::operator<< ( io::Output out,
Symbol::kind_t  k 
)

References k().

◆ operator<<() [42/45]

io::Output& otawa::operator<< ( io::Output out,
SynthBlock block 
)
inline

◆ operator<<() [43/45]

otawa::Output & otawa::operator<< ( otawa::Output out,
const fmlevel_t fml 
)

References FML_INNER, FML_MULTI, FML_NONE, and FML_OUTER.

◆ operator<<() [44/45]

Output& otawa::operator<< ( Output out,
ContextTree ct 
)
inline

◆ operator<<() [45/45]

Trace& otawa::operator<< ( Trace trace,
const Level level 
)
inline

◆ OUT_EDGES()

Block::EdgeCollection otawa::OUT_EDGES ( const Block b)
inline

◆ OWNER_CONTEXT_TREE()

Identifier<ContextTree *> otawa::OWNER_CONTEXT_TREE ( "otawa::OWNER_CONTEXT_TREE"  ,
 
)

Annotations with this identifier are hooked to basic blocks and gives the owner context tree (ContextTree * data).

Hooks
Deprecated:
Not working without inlining.

◆ PIPELINE_DEPTH()

p::id<int> otawa::PIPELINE_DEPTH ( "otawa::PIPELINE_DEPTH"  ,
1 
)

This property is a hint to have an estimation of the pipeline depth.

It is better to look to the processor configuration in the patform.

◆ PREDS()

Block::PredCollection otawa::PREDS ( const Block b)
inline

◆ PROCESSED_CFG()

Identifier<int> otawa::PROCESSED_CFG ( "otawa::processed_cfg"  ,
 
)

This property is used to store statistics about the count of processed CFG.

◆ PSEUDO_UNROLLING()

Identifier<bool> otawa::PSEUDO_UNROLLING ( "otawa::PSEUDO_UNROLLING"  ,
false   
)

This property represents the "persistence" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ RECURSIVE()

p::id<bool> otawa::RECURSIVE ( "otawa::recursive"  ,
true   
)

Activate the recucursive feature of BBProcessors : each time a basic block contains a function call, the CFG of this function is recorded to be processed later after the current CFG.

Note that each function is only processed once !

◆ REDUCED_LOOPS_FEATURE()

p::feature otawa::REDUCED_LOOPS_FEATURE ( "otawa::REDUCED_LOOPS_FEATURE"  ,
p::make< LoopReductor () 
)

Ensure that no more irregular loop remains in the program representation.

◆ registration()

template<class T >
const AbstractRegistration& otawa::registration ( void  )
inline

◆ REVERSE_DOM()

Identifier<const BitSet *> otawa::REVERSE_DOM ( "otawa::REVERSE_DOM"  ,
 
)

Identifier of annotation containing reverse-dominance information.

Hooks

◆ sign()

char otawa::sign ( t::int32  v)
inline

◆ SUCCS()

Block::SuccCollection otawa::SUCCS ( const Block b)
inline

◆ type()

◆ UNROLL_THIS()

p::id<bool> otawa::UNROLL_THIS ( "otawa::UNROLL_THIS"  ,
true   
)

This property is used by UNROLLED_LOOPS_FEATURE and has to be put on header blocks of loops to select if the corresponding loop has to be unrolled or not.

Its default value is true to unroll all loops.

Feature

◆ VIRTUAL_DEFAULT()

Identifier<bool> otawa::VIRTUAL_DEFAULT ( "otawa::VIRTUAL_DEFAULT"  ,
true   
)

Configuration property of Virtualizer: it set the default behavior for inlining of function call during virtualization (default to true).

The default behavior can be overridden by NO_INLINE

Hooks

◆ VIRTUAL_INST_FEATURE()

p::feature otawa::VIRTUAL_INST_FEATURE ( "otawa::VIRTUAL_INST_FEATURE"  ,
p::make< VirtualInstBuilder >  () 
)

Ensure that a virtual instruction manager is available to create virtual instructions.

See also
VirtualInst, VirtualInstManager
Properties

◆ VIRTUAL_INST_MANAGER()

p::id<VirtualInstManager *> otawa::VIRTUAL_INST_MANAGER ( "otawa::VIRTUAL_INST_MANAGER"  ,
 
)

Get the current virtual instruction manager.

Provided by:

Hooked to:

◆ VIRTUALIZED_CFG_FEATURE()

p::feature otawa::VIRTUALIZED_CFG_FEATURE ( "otawa::VIRTUALIZED_CFG_FEATURE"  ,
new Maker< Virtualizer () 
)

This features only show that the CFG has been virtualized.

This may implies a lot of transformation like function call inlining or loop unrolling.

Header
<otawa/cfg/features.h>
Configuration
Properties

◆ WEIGHT()

Identifier<int> otawa::WEIGHT ( "otawa::WEIGHT"  ,
 
)

Get the maximum weight for the basic block it is hooked to.

Feature
Hooks

◆ WEIGHT_FEATURE()

p::feature otawa::WEIGHT_FEATURE ( "otawa::WEIGHT_FEATURE"  ,
new Maker< Weighter >  () 
)

This feature ensures that weight information has been hooked to any BB of the CFG.

Weight information is coarse-grain estimation of the number of execution of a basic block. It is simply derived from the maximum and total number of iterations of each loop.

Header
#include <otawa/cfg/features.h>
Properties

Variable Documentation

◆ _base_displays

elm::CString otawa::_base_displays[]
Initial value:
= {
"void",
"block",
"bool",
"char",
"int8",
"uint8",
"int16",
"uint16",
"int32",
"uint32",
"int64",
"uint64",
"float32",
"float64",
"float128",
"addr32",
"cstring",
"string"
}

Referenced by otawa::BaseType::print().

◆ ADDRESS_ANALYSIS_FEATURE

p::feature otawa::ADDRESS_ANALYSIS_FEATURE("otawa::ADDRESS_ANALYSIS_FEATURE", new Maker< NoProcessor >())

This feature ensures that accessed memory information (class AccessedAddress) is provided for each basic block.

This feature is useful for any static analysis concerning the memory hierarchy (caches, flash memories with prefetch, etc).

Properties

Statistics

Processors

◆ ADDRESS_STATS

Identifier<address_stat_t *> otawa::ADDRESS_STATS("otawa::ADDRESS_STATS", 0)

This property provides statistics about ADDRESS_ANALYSIS_FEATURE.

◆ ADDRESSES

Identifier<AccessedAddresses *> otawa::ADDRESSES("otawa::ADDRESSES", 0)

Provide the set of accesses to the memory for the current basic block.

Hooks

Features

◆ ALWAYS_HIT

const category_t otawa::ALWAYS_HIT = otawa::cache::ALWAYS_HIT

◆ ALWAYS_MISS

◆ ASSEMBLY_VIEW

view::View& otawa::ASSEMBLY_VIEW

◆ CACHE_ACS_MAY

Identifier<Vector<MAYProblem::Domain*>* > otawa::CACHE_ACS_MAY("otawa::CACHE_ACS_MAY", NULL)

This property represents the "may" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_ACS_MAY_ENTRY

Identifier<Vector<MAYProblem::Domain*>* > otawa::CACHE_ACS_MAY_ENTRY("otawa::CACHE_ACS_MAY_ENTRY", NULL)

This property allows us to set an entry may ACS.

Hooks

Referenced by otawa::ACSMayBuilder::configure().

◆ CACHE_ACS_MUST

Identifier<Vector<MUSTProblem::Domain*>* > otawa::CACHE_ACS_MUST("otawa::CACHE_ACS_MUST", 0)

This property represents the MUST Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_ACS_MUST_ENTRY

Identifier< Vector< MUSTProblem::Domain * > * > otawa::CACHE_ACS_MUST_ENTRY

This property allows to set an entry MUST ACS.

It must be set in the property list passed to the invocation of a code processor.

Hooks
  • PropList (code processor configuration)

Referenced by otawa::ACSBuilder::configure(), and otawa::EdgeACSBuilder::configure().

◆ CACHE_ACS_PERS

Identifier<Vector<PERSProblem::Domain*>* > otawa::CACHE_ACS_PERS("otawa::CACHE_ACS_PERS", 0)

This property represents the "persistence" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

Referenced by otawa::ACSBuilder::configure().

◆ CACHE_ACS_PERS_ENTRY

Identifier<Vector<PERSProblem::Domain*>* > otawa::CACHE_ACS_PERS_ENTRY("otawa::CACHE_ACS_PERS_ENTRY", 0)

This property allows to set an entry PERS ACS.

It must be set in the property list passed to the invocation of a code processor.

Hooks
  • PropList (code processor configuration)

◆ CACHE_EDGE_ACS_MUST

Identifier<Vector<MUSTProblem::Domain*> *> otawa::CACHE_EDGE_ACS_MUST("otawa::cache_edge_acs_must", NULL)

This property represents the "must" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CACHE_EDGE_ACS_PERS

Identifier<Vector<PERSProblem::Domain*> *> otawa::CACHE_EDGE_ACS_PERS("otawa::cache_edge_acs_pers", NULL)

This property represents the "persistence" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

◆ CATEGORY_EDGE

Identifier<Vector<category_t> *> otawa::CATEGORY_EDGE("otawa::cactegory_edge", NULL)

◆ CATEGORY_EDGE_HEADER

Identifier<Vector<BasicBlock*> *> otawa::CATEGORY_EDGE_HEADER("otawa::category_edge_header", NULL)

◆ CATEGORY_HEADER

Identifier< Block * > & otawa::CATEGORY_HEADER = cache::CATEGORY_HEADER

◆ CATEGORY_STATS

Identifier< cache::CategoryStats * > & otawa::CATEGORY_STATS = cache::CATEGORY_STATS

◆ CFG_IO_PATH

Identifier<sys::Path> otawa::CFG_IO_PATH

◆ CONDITIONAL_RESTRUCTURED_FEATURE

p::feature otawa::CONDITIONAL_RESTRUCTURED_FEATURE("otawa::CONDITIONAL_RESTRUCTURED_FEATURE", p::make< ConditionalRestructurer >())

This feature ensures that the CFG is transformed to reflect the effects of conditional instructions.

Default implementation:

◆ CONTEXT

p::id<ContextualPath> otawa::CONTEXT("otawa::CONTEXT")

Provide context for the referred object.

Hooks

Referenced by otawa::CFGTransformer::transform().

◆ CONTEXT_TREE

Identifier<ContextTree *> otawa::CONTEXT_TREE("otawa::CONTEXT_TREE", 0)

This property identifier provides a context tree hooked to a framework.

A null pointer is retrieved if the context tree is not computed.

Hooks
  • FrameWork

Referenced by otawa::cat::CATConstraintBuilder::processLBlockSet(), and otawa::ContextTreeBuilder::processWorkSpace().

◆ CONTEXT_TREE_BY_CFG_FEATURE

Feature<ContextTreeByCFGBuilder> otawa::CONTEXT_TREE_BY_CFG_FEATURE("otawa::CONTEXT_TREE_BY_CFG_FEATURE")

Assert that a context tree has been built for each CFG involved in the current computation.

Properties

Referenced by otawa::ContextTreeByCFGBuilder::ContextTreeByCFGBuilder().

◆ CONTEXT_TREE_FEATURE

Feature<ContextTreeBuilder> otawa::CONTEXT_TREE_FEATURE("otawa::CONTEXT_TREE_FEATURE")

This feature asserts that a context tree of the task is available in the framework.

Properties

Referenced by otawa::ContextTreeBuilder::ContextTreeBuilder(), and otawa::ContextTreeBuilder::processWorkSpace().

◆ CONTEXTUAL_LOOP_BOUND

Identifier<ContextualLoopBound *> otawa::CONTEXTUAL_LOOP_BOUND("otawa::CONTEXTUAL_LOOP_BOUND", 0)

This property provides context-dependent loop bounds.

It is part of information given by FLOW_FACT_FEATURE.

Hooks

◆ DEAD_CODE_ANALYSIS_FEATURE

Feature<DeadCodeAnalysis> otawa::DEAD_CODE_ANALYSIS_FEATURE("otawa::DEAD_CODE_ANALYSIS_FEATURE")

◆ DECODED_TEXT

Feature<TextDecoder> otawa::DECODED_TEXT("otawa::DECODED_TEXT")

This feature ensures that text segment of the process has been decoded and, consequently, that instructions are available.

Provided properties

Referenced by otawa::TextDecoder::TextDecoder(), and otawa::VarTextDecoder::VarTextDecoder().

◆ DEF_BY

Identifier<const AbstractFeature *> otawa::DEF_BY("otawa::DEF_BY", 0)

Identifier for identifier property providing ownerness of an identifier.

The arguments describes the feature owning the current

Referenced by defBy().

◆ DEFAULT_BRANCH_PENALTY

Identifier<int> otawa::DEFAULT_BRANCH_PENALTY("otawa::DEFAULT_BRANCH_PENALTY", 2)

◆ ENCLOSING_LOOP_HEADER

p::id<Block*> otawa::ENCLOSING_LOOP_HEADER("otawa::ENCLOSING_LOOP_HEADER", 0)

Defined for any BasicBlock that is part of a loop.

Contains the header of the loop immediately containing the block If the block is a loop header, then, the property contains the header of the parent loop.

Hooks

Referenced by otawa::ai::PseudoTopoOrder::_topoNodeHelper(), otawa::ipet::EdgeInfoConflict::getLoopHeaderList(), otawa::Loop::Loop(), otawa::LoopIter::next(), and otawa::Loop::of().

◆ ENTER

p::id<ContextualStep> otawa::ENTER("otawa::ENTER")

Note the entry into a particular context provided by the property.

To put a context entry s onto an edge e, just do: ENTER(e).add(s);

Hooks

◆ EXIST_PROVIDED_STATE

Identifier<bool> otawa::EXIST_PROVIDED_STATE("otawa::EXISTPROVIDED_STATE", false)

◆ EXTENDED_LOOP_FEATURE

p::interfaced_feature<LoopManager *> otawa::EXTENDED_LOOP_FEATURE("otawa::EXTENDED_LOOP_FEATURE", p::make< ExtendedLoopBuilder >())

This feature build Loop objects representing the hierarchy of loops and attach it to the CFG and its blocks.

The loop can be accessing using properties (described below) but an easier access is provided by Loop::of(), Loop::top() or by using LoopManager feature interface.

Properties
Provided by:
  • ExtendedLoopBuilder (default)

◆ fft_line

int otawa::fft_line = 0

◆ FIRST_HIT

const category_t otawa::FIRST_HIT = otawa::cache::FIRST_HIT

◆ FIRST_MISS

◆ FIRSTMISS_LEVEL

◆ FROM_BB

Identifier<BasicBlock*> otawa::FROM_BB("otawa::FROM_BB", 0)

When we get the VirtualCFG associated with a SESE region, this property, hooked on a BB from the Virtual CFG, gives the corresponding BB on the original (physical) CFG.

Hooks

◆ FROM_EDGE

Identifier<Edge*> otawa::FROM_EDGE("otawa::FROM_EDGE", 0)

This property is like.

◆ GRAPHS_OUTPUT_DIRECTORY

◆ ICACHE_ACS_FEATURE

p::feature otawa::ICACHE_ACS_FEATURE("otawa::ICACHE_ACS_FEATURE", new Maker< ACSBuilder >())

This feature represents the availability of Abstract Cache State informations.

Configuration
Properties
Processors

◆ ICACHE_ACS_MAY_FEATURE

p::feature otawa::ICACHE_ACS_MAY_FEATURE("otawa::ICACHE_ACS_MAY_FEATURE", new Maker< ACSMayBuilder >())

This feature represents the availability of MAY Abstract Cache State informations.

Properties
  • CACHE_ACS
Processors

◆ ICACHE_CATEGORY2_FEATURE

p::feature otawa::ICACHE_CATEGORY2_FEATURE("otawa::ICACHE_CATEGORY2_FEATURE", new Maker< CAT2Builder >())

This feature ensures that the categories for instruction cache according to the following method has been computed:

C. Ballabriga, H. Cassé. Improving the First-Miss Computation in Set-Associative Instruction Caches. Euromicro Conference on Real-Time Systems (ECRTS 2008), IEEE, p. 341-350, 2008.

Properties
Processors

Referenced by otawa::LinkedBlocksDetector::LinkedBlocksDetector().

◆ ICACHE_CONSTRAINT2_FEATURE

p::feature otawa::ICACHE_CONSTRAINT2_FEATURE("otawa::ICACHE_CONSTRAINT2_FEATURE", new Maker< CAT2ConstraintBuilder >())

Ensures that the constraints for cache analysis by categories 2 has been built and that the term of instruction cache has been added to the objective function.

Properties
Configuration
  • ICACHE_NO_OBJECTIVE
Processors

◆ ICACHE_EDGE_ACS_FEATURE

Feature<EdgeACSBuilder> otawa::ICACHE_EDGE_ACS_FEATURE("otawa::ICACHE_EDGE_ACS_FEATURE")

This feature represents the availability of Abstract Cache State informations.

Properties
  • CACHE_ACS

Referenced by otawa::EdgeACSBuilder::EdgeACSBuilder(), and otawa::EdgeCAT2Builder::EdgeCAT2Builder().

◆ ICACHE_EDGE_CATEGORY2_FEATURE

Feature<EdgeCAT2Builder> otawa::ICACHE_EDGE_CATEGORY2_FEATURE("otawa::ICACHE_EDGE_CATEGORY2_FEATURE")

◆ ICACHE_FIRSTLAST_FEATURE

Feature<FirstLastBuilder> otawa::ICACHE_FIRSTLAST_FEATURE("otawa::ICACHE_FIRSTLAST_FEATURE")

This feature represents the availability of the LAST_LBLOCK and LBLOCK_ISFIRST properties.

Properties

Referenced by otawa::EdgeACSBuilder::EdgeACSBuilder(), otawa::EdgeCAT2Builder::EdgeCAT2Builder(), and otawa::FirstLastBuilder::FirstLastBuilder().

◆ ICACHE_ONLY_CONSTRAINT2_FEATURE

p::feature otawa::ICACHE_ONLY_CONSTRAINT2_FEATURE("otawa::ICACHE_ONLY_CONSTRAINT2_FEATURE", new Maker< CAT2OnlyConstraintBuilder >())

Ensures that the constraints for cache analysis by categories 2 has been built.

Properties
Configuration
  • ICACHE_NO_OBJECTIVE
Processors

Referenced by otawa::etime::StandardEventBuilder::setup().

◆ ICACHE_PENALTY

Identifier<CachePenalty*> otawa::ICACHE_PENALTY("otawa::CACHE_PENALTY", NULL)

◆ INFEASABLE_PATH_END

Identifier< LockPtr<ListOfEndConflict> > otawa::INFEASABLE_PATH_END("otawa::INFEASABLE_PATH_END", NULL)

◆ INVALID_CATEGORY

◆ IS_FEATURE

◆ L1

const Level otawa::L1(1)

◆ L2

const Level otawa::L2(2)

◆ L3

const Level otawa::L3(3)

◆ L4

const Level otawa::L4(4)

◆ L5

const Level otawa::L5(5)

◆ L6

const Level otawa::L6(6)

◆ L7

const Level otawa::L7(7)

◆ L8

const Level otawa::L8(8)

◆ L9

const Level otawa::L9(9)

◆ LABEL_FEATURE

p::feature otawa::LABEL_FEATURE("otawa::LABEL_FEATURE", new Maker< LabelSetter >())

This feature ensures that label or symbol information has been linked to the concerned instruction.

It is not mandatory for OTAWA work but improve the readability of error message or logs.

Properties

◆ LAST_LBLOCK

Identifier<LBlock**> otawa::LAST_LBLOCK("otawa::LAST_LBLOCK", NULL)

This property gives the ID of the last lblock of a BasicBlock, for each line.

Hooks

◆ LBLOCK_ISFIRST

Identifier<bool> otawa::LBLOCK_ISFIRST("otawa::LBLOCK_ISFIRST", false)

This property tells if the lblock is the first of its BasicBlock (for its cache line) This information is useful, because if it's false, then, the lblock is always a miss.

Hooks
  • LBlock

◆ LEAVE

p::id<int> otawa::LEAVE("otawa::LEAVE", 0)

Leave the number of context provided by the number of argument.

To mark the edge e as leaving a context, do: LEAVE(e)++;

Hooks

◆ LINKED_BLOCKS

Identifier<Vector<LBlock*> *> otawa::LINKED_BLOCKS("otawa::LINKED_BLOCKS", NULL)

◆ LOOP_HEADERS_FEATURE

p::feature otawa::LOOP_HEADERS_FEATURE("otawa::LOOP_HEADERS_FEATURE", new Maker< Dominance >())

◆ LOOP_INFO_FEATURE

◆ MANAGER

Manager & otawa::MANAGER = *Manager::def()

Default manager.

Avoid to declare one in the main.

Referenced by otawa::script::Script::declareGlobals(), otawa::ProcessorPlugin::init(), and otawa::Application::run().

◆ MISS_VAR

Identifier<ilp::Var *> otawa::MISS_VAR("otawa::MISS_VAR", 0)

◆ MKFF_PRESERVATION_FEATURE

p::feature otawa::MKFF_PRESERVATION_FEATURE("otawa::MKFF_PRESERVATION_FEATURE", new Maker< FlowFactLoader >())

This feature ensures that preservation information used by mkff is put on instruction.

Hooked Properties

◆ NEVER_TAKEN

Identifier<bool> otawa::NEVER_TAKEN("otawa::NEVER_TAKEN")

◆ NORMALIZED_CFGS_FEATURE

p::feature otawa::NORMALIZED_CFGS_FEATURE

This feature ensures that the CFG are in a normalized form: fully resolved branches, no entering or exiting edges to or from external CFGs.

◆ NOT_CLASSIFIED

const category_t otawa::NOT_CLASSIFIED = otawa::cache::NOT_CLASSIFIED

◆ NULL_FEATURE

Feature<NoProcessor> otawa::NULL_FEATURE("otawa::NULL")

Not a real feature, just a marker.

◆ null_stream

NullStream otawa::null_stream

◆ OWNER_CONTEXT_TREE

Identifier<ContextTree *> otawa::OWNER_CONTEXT_TREE("otawa::OWNER_CONTEXT_TREE", 0)

Annotations with this identifier are hooked to basic blocks and gives the owner context tree (ContextTree * data).

Hooks
Deprecated:
Not working without inlining.

◆ PDOM_INFO

Identifier<PostDomInfo *> otawa::PDOM_INFO("otawa::PDOM_INFO", 0)

Provide post-domination information.

Hooks
Providing Features

◆ PIPELINE_DEPTH

p::id<int> otawa::PIPELINE_DEPTH("otawa::PIPELINE_DEPTH", -1)

This property is a hint to have an estimation of the pipeline depth.

It is better to look to the processor configuration in the patform.

◆ PROCESSED_CFG

Identifier<int> otawa::PROCESSED_CFG("otawa::processed_cfg", 0)

This property is used to store statistics about the count of processed CFG.

Referenced by otawa::CFGProcessor::processWorkSpace().

◆ PROGRAM_STRUCTURE_TREE

Identifier<PSTree *> otawa::PROGRAM_STRUCTURE_TREE("otawa::PROGRAM_STRUCTURE_TREE", 0)

This property points to the Program Structure Tree of the CFG.

Hooks

◆ PSEUDO_UNROLLING

Identifier< bool > otawa::PSEUDO_UNROLLING

This property represents the "persistence" Abstract Cache State of a basic block.

The vector stores the abstract cache states corresponding to all cache lines.

Hooks

Referenced by otawa::ACSMayBuilder::configure(), otawa::ACSBuilder::configure(), and otawa::EdgeACSBuilder::configure().

◆ PST_FEATURE

p::feature otawa::PST_FEATURE("otawa::PST_FEATURE", new Maker< PSTBuilder >())

This feature represents the availability of the Program Structure Tree.

Properties

Referenced by otawa::PSTBuilder::PSTBuilder().

◆ RECURSIVE

p::id<bool> otawa::RECURSIVE("otawa::recursive", true)

Activate the recucursive feature of BBProcessors : each time a basic block contains a function call, the CFG of this function is recorded to be processed later after the current CFG.

Note that each function is only processed once !

Referenced by otawa::ipet::VarAssignment::configure().

◆ RECURSIVE_LOOP

Identifier<bool> otawa::RECURSIVE_LOOP("otawa::RECURSIVE_LOOP", false)

A property with this identifier is hooked to edge performing a recursive call when inlining is used.

Hooks
Features

◆ REDUCED_LOOPS_FEATURE

p::feature otawa::REDUCED_LOOPS_FEATURE("otawa::REDUCED_LOOPS_FEATURE", p::make< LoopReductor >())

Ensure that no more irregular loop remains in the program representation.

◆ REGISTERS_PROPERTY

view::PropertyType& otawa::REGISTERS_PROPERTY

◆ REVERSE_DOM

Identifier<const BitSet *> otawa::REVERSE_DOM("otawa::REVERSE_DOM", 0)

Identifier of annotation containing reverse-dominance information.

Hooks

Referenced by otawa::Dominance::dom(), and otawa::Dominance::dominates().

◆ REVERSE_POSTDOM

Identifier<BitSet *> otawa::REVERSE_POSTDOM("otawa::REVERSE_POSTDOM", 0)

Identifier of annotation containing reverse-post-dominance information.

Hooks

Referenced by otawa::PostDominance::destroyCFG(), and otawa::PostDominance::pdom().

◆ STANDARD_EVENT_FEATURE

p::feature otawa::STANDARD_EVENT_FEATURE

◆ static_null

otawa::NullInst otawa::static_null

◆ TO_DELAY

Identifier<int> otawa::TO_DELAY("", 0)

◆ UNROLL_THIS

p::id<bool> otawa::UNROLL_THIS("otawa::UNROLL_THIS", true)

This property is used by UNROLLED_LOOPS_FEATURE and has to be put on header blocks of loops to select if the corresponding loop has to be unrolled or not.

Its default value is true to unroll all loops.

Feature

Referenced by otawa::LoopUnroller::unrolls().

◆ VERBOSE_ENV

cstring otawa::VERBOSE_ENV = "OTAWA_VERBOSE"

◆ VIRTUAL_DEFAULT

Identifier<bool> otawa::VIRTUAL_DEFAULT("otawa::VIRTUAL_DEFAULT", true)

Configuration property of Virtualizer: it set the default behavior for inlining of function call during virtualization (default to true).

The default behavior can be overridden by NO_INLINE

Hooks

Referenced by otawa::Virtualizer::configure().

◆ VIRTUAL_INST_FEATURE

p::feature otawa::VIRTUAL_INST_FEATURE("otawa::VIRTUAL_INST_FEATURE", p::make< VirtualInstBuilder >())

Ensure that a virtual instruction manager is available to create virtual instructions.

See also
VirtualInst, VirtualInstManager
Properties

◆ VIRTUAL_INST_MANAGER

p::id<VirtualInstManager *> otawa::VIRTUAL_INST_MANAGER("otawa::VIRTUAL_INST_MANAGER", 0)

Get the current virtual instruction manager.

Provided by:

Hooked to:

Referenced by otawa::VirtualInst::VirtualInst().

◆ VIRTUALIZED_CFG_FEATURE

p::feature otawa::VIRTUALIZED_CFG_FEATURE("otawa::VIRTUALIZED_CFG_FEATURE", new Maker< Virtualizer >())

This features only show that the CFG has been virtualized.

This may implies a lot of transformation like function call inlining or loop unrolling.

Header
<otawa/cfg/features.h>
Configuration
Properties

◆ WEIGHT

Identifier<int> otawa::WEIGHT("otawa::WEIGHT", 0)

Get the maximum weight for the basic block it is hooked to.

Feature
Hooks

Referenced by otawa::etime::EdgeTimeBuilder::applyWeightedSplit().

◆ WEIGHT_FEATURE

p::feature otawa::WEIGHT_FEATURE("otawa::WEIGHT_FEATURE", new Maker< Weighter >())

This feature ensures that weight information has been hooked to any BB of the CFG.

Weight information is coarse-grain estimation of the number of execution of a basic block. It is simply derived from the maximum and total number of iterations of each loop.

Header
#include <otawa/cfg/features.h>
Properties