.. java:import:: fr.inria.tapenade.representation Block .. java:import:: fr.inria.tapenade.representation BlockStorage .. java:import:: fr.inria.tapenade.representation CallArrow .. java:import:: fr.inria.tapenade.representation CallGraph .. java:import:: fr.inria.tapenade.representation FGArrow .. java:import:: fr.inria.tapenade.representation HeaderBlock .. java:import:: fr.inria.tapenade.representation ILUtils .. java:import:: fr.inria.tapenade.representation Instruction .. java:import:: fr.inria.tapenade.representation SymbolTable .. java:import:: fr.inria.tapenade.representation SymbolTableConstants .. java:import:: fr.inria.tapenade.representation TapEnv .. java:import:: fr.inria.tapenade.representation TapList .. java:import:: fr.inria.tapenade.representation Unit .. java:import:: fr.inria.tapenade.representation ZoneInfo .. java:import:: fr.inria.tapenade.utils BoolMatrix .. java:import:: fr.inria.tapenade.utils BoolVector .. java:import:: fr.inria.tapenade.utils ILLang .. java:import:: fr.inria.tapenade.utils TapIntList .. java:import:: fr.inria.tapenade.utils ToBool .. java:import:: fr.inria.tapenade.utils Tree DepsAnalyzer ============ .. java:package:: fr.inria.tapenade.analysis :noindex: .. java:type:: public final class DepsAnalyzer extends DataFlowAnalyzer Analyzer in charge of the plain dependency analysis, from every input to every output whose value may change if the input's value changes. .. parsed-literal:: Feature: derives from DataFlowAnalyzer : OK Feature: able to analyze recursive code: OK Feature: distinguishes structure elemts: OK Feature: takes care of pointer dests: OK Feature: refine on loop-local variables: no Feature: std method for call arguments : OK Feature: able to analyze sub-flow-graph: OK Methods ------- accumulateValuesFromUpstream ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean accumulateValuesFromUpstream() :outertype: DepsAnalyzer Collects the data-flow information from the incoming flow arrows. buildDefaultIntrinsicDependencies ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected static BoolMatrix buildDefaultIntrinsicDependencies(Unit calledUnit) :outertype: DepsAnalyzer compareChannelZoneDataDownstream ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean compareChannelZoneDataDownstream(int mpZone, Block refBlock) :outertype: DepsAnalyzer compareDownstreamValues ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean compareDownstreamValues() :outertype: DepsAnalyzer Compares the downstream data-flow info with the collected values of previous sweep. :return: true when something has changed and therefore another Flow Graph sweep is probably necessary. compareUpstreamValues ^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean compareUpstreamValues() :outertype: DepsAnalyzer Compares data-flow info with the collected values of previous sweep. returns true when something has changed and therefore another Flow Graph sweep is probably necessary. initializeCGForUnit ^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected Object initializeCGForUnit() :outertype: DepsAnalyzer During initialization for plain dependency analysis on the whole CallGraph, do whatever initialization is needed for "unit". initializeFGForBlock ^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected void initializeFGForBlock() :outertype: DepsAnalyzer Initializes dependency info before propagation. Mostly, this fills the depsThrough "BlockStorage", which is the BoolMatrix plain dependence matrix just after each Block, wrt the values of the zones at the beginning of the Block. initializeInitBlock ^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected void initializeInitBlock() :outertype: DepsAnalyzer initializeUnit ^^^^^^^^^^^^^^ .. java:method:: @Override protected void initializeUnit() :outertype: DepsAnalyzer Initialize just before plain dependency analysis on "curUnit". propagateValuesForwardThroughBlock ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: @Override protected boolean propagateValuesForwardThroughBlock() :outertype: DepsAnalyzer Propagates the data-flow information forwards through "curBlock". runAnalysis ^^^^^^^^^^^ .. java:method:: public static void runAnalysis(CallGraph callGraph, TapList rootUnits) :outertype: DepsAnalyzer Main entry point. Builds a Dependencies Analyzer, stores it and runs it. setCurBlockEtc ^^^^^^^^^^^^^^ .. java:method:: @Override protected void setCurBlockEtc(Block block) :outertype: DepsAnalyzer setCurUnitEtc ^^^^^^^^^^^^^ .. java:method:: @Override public void setCurUnitEtc(Unit unit) :outertype: DepsAnalyzer terminateUnit ^^^^^^^^^^^^^ .. java:method:: @Override protected boolean terminateUnit() :outertype: DepsAnalyzer