coins.ir.hir
Interface IndexedLoopStmt

All Superinterfaces:
java.lang.Cloneable, HIR, HIR0, IR, IR0, LoopStmt, Stmt
All Known Implementing Classes:
IndexedLoopStmtImpl

public interface IndexedLoopStmt
extends LoopStmt

  IndexedLoop-statement interface.
  IndexedLoopStmt is created as a general loop where contents of
    ConditionalInitPart_, EndCondition_, LoopEndPart_
  are null at first (but they may become not null
  by some optimizing transformation).
  IndexedLoopStmt represents a Fortran type loop where
  value of loop index is incremented or decremented by loop
  step value starting from loop start value and stops
  to loop before crossing the barrier of loop end value.

  The loop index is a simple variable.
  It may be integer variable (short int, int, long int, long long int)
  or floating variable (float, double).
  The values of loop start value, loop end value, and
  loop step value are fixed at entry to the loop
  and do not change until terminating the loop.
  If upward parameter is true, then the loop index is incremented
  up to but not exceeding the loop end value.
  If upward parameter is false, then the loop index is decremented
  down to but not crossing the loop end value.
  The loop start value, loop end value, loop step value are
  converted to the type of loop index if their type differ
  from the type of the loop index.
  If the index variable is a floating variable, then repetition
  count is computed at the entry to the loop by the formula
    MAX( INT( ( - 
               + ) / ), 0)
  if upward parameter is true, or by the formula
    MAX( INT( ( - 
               + ) / ), 0)
  if upward parameter is false.
  The loop step value should be positive.


Field Summary
 
Fields inherited from interface coins.ir.hir.HIR
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
Fields inherited from interface coins.ir.IR
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
Fields inherited from interface coins.ir.hir.HIR0
FLAG_C_PTR, FLAG_CONST_EXP, FLAG_INIT_BLOCK, FLAG_LOOP_WITH_CONDITIONAL_INIT, FLAG_NOCHANGE, FLAG_NONTERMINAL, OP_ADD, OP_ADD_ASSIGN, OP_ADDR, OP_AND, OP_AND_ASSIGN, OP_ARROW, OP_ASM, OP_ASSIGN, OP_BLOCK, OP_CALL, OP_CMP_EQ, OP_CMP_GE, OP_CMP_GT, OP_CMP_LE, OP_CMP_LT, OP_CMP_NE, OP_COMMA, OP_CONST, OP_CONTENTS, OP_CONV, OP_DECAY, OP_DIV, OP_DIV_ASSIGN, OP_ELEM, OP_ENCLOSE, OP_EQ_ZERO, OP_EXP_STMT, OP_EXPLIST, OP_EXPREPEAT, OP_FOR, OP_IF, OP_INDEX, OP_INDEXED_LOOP, OP_JUMP, OP_LABEL, OP_LABEL_DEF, OP_LABELED_STMT, OP_LG_AND, OP_LG_OR, OP_MOD, OP_MOD_ASSIGN, OP_MULT, OP_MULT_ASSIGN, OP_NEG, OP_NOT, OP_NULL, OP_OFFSET, OP_OR, OP_OR_ASSIGN, OP_PARAM, OP_PHI, OP_POST_DECR, OP_POST_INCR, OP_PRE_DECR, OP_PRE_INCR, OP_QUAL, OP_REPEAT, OP_RETURN, OP_SELECT, OP_SEQ, OP_SETDATA, OP_SHIFT_L_ASSIGN, OP_SHIFT_LL, OP_SHIFT_R, OP_SHIFT_R_ASSIGN, OP_SHIFT_RL, OP_SIZEOF, OP_STMT, OP_STMT_UPPER, OP_SUB, OP_SUB_ASSIGN, OP_SUBP, OP_SUBS, OP_SWITCH, OP_SYM, OP_TYPE, OP_UNDECAY, OP_UNTIL, OP_VAR, OP_WHILE, OP_XOR, OP_XOR_ASSIGN
 
Method Summary
 Exp getEndValue()
          getEndValue Get the end value of the loop index.
 Var getLoopIndex()
          getLoopIndex Get the loop index variable of this loop.
 Exp getStartValue()
          getStartValue Get the start value of the loop index.
 Exp getStepValue()
          getStepValue Get the step value of this loop.
 boolean isUpward()
          isUpward See whether upward or downword.
 
Methods inherited from interface coins.ir.hir.LoopStmt
addToConditionalInitPart, addToLoopBodyPart, addToLoopEndPart, addToLoopInitPart, addToLoopStepPart, getConditionalInitPart, getLoopBackLabel, getLoopBackPoint, getLoopBodyLabel, getLoopBodyPart, getLoopEndCondition, getLoopEndLabel, getLoopEndPart, getLoopInf, getLoopInitPart, getLoopStartCondition, getLoopStepLabel, getLoopStepPart, isSimpleForLoop, isSimpleIndexedLoop, isSimpleRepeatLoop, isSimpleWhileLoop, replaceBodyPart, setLoopEndCondition, setLoopInf, setLoopStartCondition
 
Methods inherited from interface coins.ir.hir.Stmt
addNextStmt, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getPreviousStmt, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isMultiBlock, isolateThisStmt, replaceThisStmtWith, setFileName, setLineNumber
 
Methods inherited from interface coins.ir.hir.HIR
addrExp, asmStmt, checkLinkage, conditionalExp, contains, copyInfListFrom, cutParentLink, exp, expList, expRepeat, forStmt, getExpId, getFlowAnalSym, getIndentSpace, getInfString, getIrName, getSourceNode, getSourceNode1, getSourceNode2, getSymOrExpId, getWork, hirNodeClone, hirSeq, hirSeq, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, irList, isEmpty, isStmt, isTree, nullNode, nullStmt, offsetConstNode, phiExp, repeatStmt, replaceSource, replaceSource1, replaceSource2, returnStmt, setChild1, setChild2, setChildren, setChildren, setDataStmt, setIndex, setIndexNumberToAllNodes, setParent, setType, setWork, subpDefinition, subpIterator, subscriptedExp, toString, toStringDetail, toStringShort, toStringWithChildren, undecayExp, undecayExp, undecayExp, whileStmt
 
Methods inherited from interface coins.ir.IR
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
Methods inherited from interface coins.ir.IR0
getChild, getChildCount, getIndex, getOperator, setChild
 
Methods inherited from interface coins.ir.hir.HIR0
accept, assignStmt, blockStmt, callStmt, constNode, contentsExp, convExp, copyWithOperands, copyWithOperandsChangingLabels, decayExp, elemNode, exp, exp, expStmt, falseNode, finishHir, forStmt, functionExp, getChildNumber, getFlag, getFlagBox, getNextStmt, getStmtContainingThisNode, getType, hirClone, hirIterator, hirList, hirSeq, ifStmt, intConstNode, irList, isSameAs, jumpStmt, labelDef, labeledStmt, labelNode, pointedExp, print, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 

Method Detail

getLoopIndex

public Var getLoopIndex()
getLoopIndex Get the loop index variable of this loop.

Returns:
loop index variable.

getStartValue

public Exp getStartValue()
getStartValue Get the start value of the loop index.

Returns:
loop start value.

getEndValue

public Exp getEndValue()
getEndValue Get the end value of the loop index.

Returns:
loop end value.

getStepValue

public Exp getStepValue()
getStepValue Get the step value of this loop.

Returns:
loop step value.

isUpward

public boolean isUpward()
isUpward See whether upward or downword.

Returns:
true if upward, else return false.