coins.ir.hir
Class StmtImpl

java.lang.Object
  extended bycoins.ir.hir.HIR_Impl
      extended bycoins.ir.hir.StmtImpl
All Implemented Interfaces:
java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, Stmt
Direct Known Subclasses:
AsmStmtImpl, AssignStmtImpl, BlockStmtImpl, ExpStmtImpl, IfStmtImpl, InfStmtImpl, JumpStmtImpl, LabeledStmtImpl, LoopStmtImpl, ReturnStmtImpl, SetDataStmtImpl, SwitchStmtImpl

public class StmtImpl
extends HIR_Impl
implements Stmt

Statement


Field Summary
protected  boolean fMultiBlock
           
protected  Stmt fNextStmt
           
protected  Stmt fPrevStmt
           
 
Fields inherited from class coins.ir.hir.HIR_Impl
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage
 
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
 
Constructor Summary
  StmtImpl()
          Default constructor for subclasses.
  StmtImpl(HirRoot pHirRoot)
           
protected StmtImpl(HirRoot pHirRoot, int pOperator)
           
 
Method Summary
 Stmt addNextStmt(Stmt pStatement)
          addNextStmt Add a statement as the one next to this statement.
 Stmt addNextStmt(Stmt pStatement, BlockStmt pBlock)
           
 void adjustMultiBlockFlag()
           
 void adjustMultiBlockFlag(Stmt pStmt)
           
 Stmt ancestorControlStmtOfConditionalExp(HIR pHir)
          Get the ancestor control statement (IfStmt, LoopStmt, SwitchStmt) containing pHir as conditional Exp or ExpStmt.
 LabeledStmt attachLabel(Label pLabel)
          attachLabel Attach the definition of a label (pLabel) to this statement.
 LabeledStmt attachLabelAsFirstOne(Label pLabel)
          attachLabelAsFirstOne Attach pLabel as the first label of this statement.
 LabeledStmt backTraceLabeledStmt()
           
 java.lang.Object clone()
          clone Override Object.clone in HIR.
 Stmt combineStmt(Stmt pStmt, boolean pBeforeBranch)
          combineStmt
 void combineWithConditionalExp(Stmt pStmt, HIR pCond)
          Combine pStmt with conditional expression part pCond of control statement so that pStmt should be executed before pCond.
 void copyPosition(Stmt pStmt)
          Copy the file name and line number of pStatement to this statement.
 void cutLabelLinkOfStmt(Stmt pStmt)
          cutLabelLinkOfStmt
 Stmt deleteNextStmt()
          deleteNextStmt Delete the statement next to this statement and return the statement next ot the next statement, which may be null.
 Stmt deletePreviousStmt()
          deletePreviousStmt Delete the statement that preceeds this statement and return a statement previous to the previous one.
 Stmt deleteThisStmt()
          deleteThisStmt Delete this statement and return the next statement.
 BlockStmt getBlockStmt()
          getBlockStmt Get the block statement containing this statement.
 java.lang.String getFileName()
          Get the absolute path of the file containing this statement (see setFileName method).
 Label getLabel()
          getLabel Get the label attached to this statement.
 IrList getLabelDefList()
           
 LabeledStmt getLabeledStmt()
          getLabeledStmt
 int getLineNumber()
          Get the line number of this statement.
 Stmt getNextStmt()
          getNextStmt Get the statement next to "this" one.
 Stmt getPreviousStmt()
          getPreviousStmt Get the statement previous to this one.
 Stmt getStmtWithLabel(Label pLabel)
           
 Stmt getUpperStmt()
          Get the statement that includes this statement.
 Stmt insertPreviousStmt(Stmt pStatement)
          insertPreviousStmt Insert a statement in front of "this" one.
 Stmt insertPreviousStmt(Stmt pStatement, BlockStmt pBlock)
          insertPreviousStmt
 boolean isBranchStmt()
          isBranch Return true if this statement is either //##60 IfStmt, JumpStmt, SwitchStmt, CallStmt, ReturnStmt, JumpStmt, ReturnStmt, //##60 or LabeledStmt with one of above statement body.
 boolean isLoopStmt()
           
 boolean isMultiBlock()
          isMultiBlock true if this statement is composed of multiple basic blocks or a jump statement.
 void isolateThisStmt()
          isolateThisStmt Cut previous/next link and parent link of this statement.
 void printLinkage(java.lang.String pHeader)
           
 Stmt replaceThisStmtWith(Stmt pStmt)
          replaceThisStmtWith
 void setFileName(java.lang.String pFileName)
           Set the absolute path of the source program file containing this statement.
 void setLineNumber(int pLineNumber)
          Set the line number of this statement within the file specified by setFileName.
 java.lang.String toStringDetail()
          toStringDetail Get text string of this node showing detail information.
 Stmt traceFirstStmt()
           
 Stmt traceLastStmt()
           
 
Methods inherited from class coins.ir.hir.HIR_Impl
accept, addInf, addrExp, asmStmt, assignStmt, blockStmt, callStmt, checkLinkage, conditionalExp, conditionalExp1, constNode, contains, contentsExp, convExp, copyInfListFrom, copyWithOperands, copyWithOperandsChangingLabels, cutParentLink, cutParentLink, decayExp, elemNode, exp, exp, exp, expList, expRepeat, expStmt, falseNode, fatalError, finishHir, flagsAreAllFalse, forStmt, forStmt, functionExp, getChild, getChild1, getChild2, getChildCount, getChildNumber, getClone, getExpId, getFlag, getFlagBox, getFlowAnalSym, getIndentSpace, getIndex, getInf, getInfList, getInfString, getIrName, getNextNode, getNextNodeSeeingAncestor, getOperator, getParent, getResultOperand, getResultVar, getSourceNode, getSourceNode1, getSourceNode2, getStmtContainingThisNode, getSym, getSymOrExpId, getType, getWork, hirClone, hirIterator, hirList, hirNodeClone, hirSeq, hirSeq, hirSeq, ifStmt, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, intConstNode, irList, irList, isEmpty, isHIR, isLIR, isSameAs, isStmt, isSym, isTerminal, isTree, isTree, jumpStmt, labelDef, labeledStmt, labelNode, nullNode, nullStmt, offsetConstNode, phiExp, pointedExp, print, print, program, qualifiedExp, removeInf, repeatStmt, repeatStmt, replaceOperator, replaceResultOperand, replaceResultVar, replaceSource, replaceSource1, replaceSource2, replaceThisNode, returnStmt, returnStmt, setChild, setChild1, setChild2, setChildren, setChildren, setChildren, setChildren, setDataStmt, setFlag, setIndex, setIndexNumberToAllNodes, setIndexNumberToAllNodes, setIndexNumberToAllNodes2, setParameters, setParent, setType, setWork, severeError, sizeofExp, sizeofExp, slightError, subpDefinition, subpDefinition, subpDefinition, subpIterator, subpNode, subscriptedExp, subscriptedExp, switchStmt, symNode, toString, toStringShort, toStringWithChildren, trueNode, typeNode, undecayExp, undecayExp, undecayExp, undecayExp, varNode, warinig, whileStmt, whileStmt, withInf
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
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, 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, 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
 

Field Detail

fNextStmt

protected Stmt fNextStmt

fPrevStmt

protected Stmt fPrevStmt

fMultiBlock

protected boolean fMultiBlock
Constructor Detail

StmtImpl

public StmtImpl()
Default constructor for subclasses.


StmtImpl

public StmtImpl(HirRoot pHirRoot)

StmtImpl

protected StmtImpl(HirRoot pHirRoot,
                   int pOperator)
Method Detail

addNextStmt

public Stmt addNextStmt(Stmt pStatement)
addNextStmt Add a statement as the one next to this statement. If "this" is the last statement, append one as the next statement. If "this" has already the next statement, insert in front of the next statement. "this" should be a statement node.

Specified by:
addNextStmt in interface Stmt
Parameters:
pStatement - statement subtree to be added.
Returns:
the added statement node.

addNextStmt

public Stmt addNextStmt(Stmt pStatement,
                        BlockStmt pBlock)

getNextStmt

public Stmt getNextStmt()
getNextStmt Get the statement next to "this" one. "this" should be a statement node.

Specified by:
getNextStmt in interface HIR0
Overrides:
getNextStmt in class HIR_Impl
Returns:
the statement next to "this" one. Return null if there is no next statement (if this is the last statement of a block).

getUpperStmt

public Stmt getUpperStmt()
Description copied from interface: Stmt
Get the statement that includes this statement. If there is not, return null.

Specified by:
getUpperStmt in interface Stmt
Returns:
the upper statement.

insertPreviousStmt

public Stmt insertPreviousStmt(Stmt pStatement)
insertPreviousStmt Insert a statement in front of "this" one.

Specified by:
insertPreviousStmt in interface Stmt
Parameters:
pStatement - statement subtree to be inserted.
Returns:
the inserted statement node (pStatement).

insertPreviousStmt

public Stmt insertPreviousStmt(Stmt pStatement,
                               BlockStmt pBlock)
Description copied from interface: Stmt
insertPreviousStmt
  Insert a statement in front of "this" one.
  It is not recommended to insert statement having non-null linkage
  (getNextStmt(), getPreviousStmt(), or getParent() are not null)
  because the addition will change these linkages. In such case,
  copy of the statement should be used (see copyWithOperands() of HIR).

Specified by:
insertPreviousStmt in interface Stmt
Parameters:
pStatement - statement subtree to be inserted.
pBlock - Block statement containing this statement. If it is unknown, give null.
Returns:
the inserted statement node (pStatement).

getPreviousStmt

public Stmt getPreviousStmt()
getPreviousStmt Get the statement previous to this one. "this" should be a statement node.

Specified by:
getPreviousStmt in interface Stmt
Returns:
the previous statement. If there is no previous one, return null.

combineStmt

public Stmt combineStmt(Stmt pStmt,
                        boolean pBeforeBranch)
Description copied from interface: Stmt
combineStmt
  Combine this statement and pStmt making them as one statement.
  If this statement is a block, pStmt is added as the last statement
  of the block.
  If this statement is a labeled statement, then pStmt
  is combined with its statement body
  (((LabeledStmt)this).getStmt().combineStmt(pStmt, pBeforeBranch). //##65
  In other case, a new block statement
  including this and pStmt is created and pStmt is made
  as the next one to this statement.
  If pBeforeBranch is true and this statement has branch
  as the last statement (if this is a block), then
  pStatement is inserted before the branch statement.
  If pStmt is null, do nothing.
  It is not recommended to combine statement having non-null linkage
  (getNextStmt(), getPreviousStmt(), or getParent() are not null)
  because the addition will change these linkages. In such case,
  copy of the statement should be used (see copyWithOperands() of HIR).
  This method (combineStmt) changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()) of this
  statement. If these linkages are used later, then make copy and
  use the copy in applying combineStmt.
  combineStmt makes neither a copy of pStmt nore a copy of this Stmt. //##60
  If copy is required, then make copy before calling combineStmt.
  If label is to be changed so as not to make duplicated label,
  it is necessary to change it before calling combineStmt (see
  copyWithOperandsChangingLabels). //##60
  The combined result replaces this statement and inherit its linkages.
  It may be the same to
     Stmt ltmt3 = lStmt1.combineStmt(
                   ((Stmt)lStmt2.copyWithOperands(), true);
     lStmt1.replaceThisStmtWith(lStmt3);

Specified by:
combineStmt in interface Stmt
Parameters:
pStmt - Statement to be combined as the next one to this statement.
pBeforeBranch - if true, insertion is done before the branch statement.
Returns:
the block statement containing pStmt.

traceLastStmt

public Stmt traceLastStmt()

traceFirstStmt

public Stmt traceFirstStmt()

deleteThisStmt

public Stmt deleteThisStmt()
deleteThisStmt Delete this statement and return the next statement. "this" should be a statement node. If this is the first statement of a block, then the next statement becomes the first statement of the block. If the block contains only one statement, then the block becomes an empty block. "this" statement is not erazed but bypassed in the chain of statements. See deleteThisStmt() of LabeledStmt.

Specified by:
deleteThisStmt in interface Stmt
Returns:
the statement next to this statement. If there is no next statement, return null.

cutLabelLinkOfStmt

public void cutLabelLinkOfStmt(Stmt pStmt)
Description copied from interface: Stmt
cutLabelLinkOfStmt
  For labels defined in pStmt, execute setHirPosition(null)
  to prepare for deletion of pStmt.
  If pStmt is a compound statement, then all statements in
  pStmt are searched for labels defined in pStmt.
  If no label is defined by pStmt, no effect remains.

Specified by:
cutLabelLinkOfStmt in interface Stmt
Parameters:
pStmt - Statement to be searched for label definition to cut definition point relation.

deleteNextStmt

public Stmt deleteNextStmt()
deleteNextStmt Delete the statement next to this statement and return the statement next ot the next statement, which may be null. "this" should be a statement node. The next statement is not erazed but bypassed in the chain of statements.

Returns:
the statement next to the next statement. If there is no next statement, return null without any deletion.

deletePreviousStmt

public Stmt deletePreviousStmt()
deletePreviousStmt Delete the statement that preceeds this statement and return a statement previous to the previous one. If there is no previous statement, do nothing. "this" should be a statement node. If the previous one is the first statement of a block, then this statement becomes the first statement of the block. The previous statement is not erazed but bypassed in the chain of statements.

Returns:
the statement previous to the previous statement. If there is no previous statement or no previous to the previous statement, return null.

isolateThisStmt

public void isolateThisStmt()
Description copied from interface: Stmt
isolateThisStmt Cut previous/next link and parent link of this statement.

Specified by:
isolateThisStmt in interface Stmt

replaceThisStmtWith

public Stmt replaceThisStmtWith(Stmt pStmt)
Description copied from interface: Stmt
replaceThisStmtWith
  Replace this statement with pStmt which is made
  to have the same linkage with other nodes as this statement
  and this statement is made isolated.
  pStmt should not be a statement contained in this statement
  as its subtree because this statement will be deleted in this
  method. If this statement is to be replaced with its subtree,
  then copy the subtree by copyWithOperandsChangingLabels(null)
  and replace by the copied subtree.

Specified by:
replaceThisStmtWith in interface Stmt
Parameters:
pStmt - statement used to replace this.
Returns:
pStmt //##81

attachLabel

public LabeledStmt attachLabel(Label pLabel)
attachLabel Attach the definition of a label (pLabel) to this statement. (##2) A statement may have multiple labels (set of labels). (##2) If this statement has already a label different from pLabel, then pLabel is added as the last label attached to the statement. (##2) If pLabel is already attached to this statement, then pLabel is not attached to avoid duplication. "this" should be a statement node.

Specified by:
attachLabel in interface Stmt
Parameters:
pLabel - label to be attached to this statement. Note: (##2) Let attach label L1 to statement S and denote the resultant statement as S1, and let attach label L2 to S1 and denote the resultant statement as S2, then we say that S is attached with labels L1 and L2, or S has set of labels L1 and L2. In this case, L2 is the heading label of S and the label next to L2 is L1. (In C notation, if "L2: L1: S", S has set of labels L1 and L2, and the label next to L2 is L1.)
Returns:
labeled statement to which the label is attached. (##5)

attachLabelAsFirstOne

public LabeledStmt attachLabelAsFirstOne(Label pLabel)
Description copied from interface: Stmt
attachLabelAsFirstOne Attach pLabel as the first label of this statement.

Specified by:
attachLabelAsFirstOne in interface Stmt

getLabelDefList

public IrList getLabelDefList()
Specified by:
getLabelDefList in interface Stmt

getLabel

public Label getLabel()
getLabel Get the label attached to this statement. "this" should be a statement node.

Specified by:
getLabel in interface Stmt
Returns:
the label attached to this statement, return null if no label is attached to this statement. If the statement has multiple labels, then the heading (##2) one of the labels is returned.

getStmtWithLabel

public Stmt getStmtWithLabel(Label pLabel)

getLabeledStmt

public LabeledStmt getLabeledStmt()
Description copied from interface: Stmt
getLabeledStmt

Specified by:
getLabeledStmt in interface Stmt
Returns:
thes statement if this is a LabeledStmt else if the parent is LabeledStmt then return the parent else return null.

backTraceLabeledStmt

public LabeledStmt backTraceLabeledStmt()

getBlockStmt

public BlockStmt getBlockStmt()
getBlockStmt Get the block statement containing this statement.

Specified by:
getBlockStmt in interface Stmt
Returns:
BlockStmt containing this statement. If this statement is not contained in BlockStmt, return null.

isMultiBlock

public boolean isMultiBlock()
Description copied from interface: Stmt
isMultiBlock true if this statement is composed of multiple basic blocks or a jump statement.

Specified by:
isMultiBlock in interface Stmt

adjustMultiBlockFlag

public void adjustMultiBlockFlag()

adjustMultiBlockFlag

public void adjustMultiBlockFlag(Stmt pStmt)

isLoopStmt

public boolean isLoopStmt()

isBranchStmt

public boolean isBranchStmt()
Description copied from interface: Stmt
isBranch Return true if this statement is either //##60 IfStmt, JumpStmt, SwitchStmt, CallStmt, ReturnStmt, JumpStmt, ReturnStmt, //##60 or LabeledStmt with one of above statement body.

Specified by:
isBranchStmt in interface Stmt
Returns:
true if this statement is a branch statement.

ancestorControlStmtOfConditionalExp

public Stmt ancestorControlStmtOfConditionalExp(HIR pHir)
Get the ancestor control statement (IfStmt, LoopStmt, SwitchStmt) containing pHir as conditional Exp or ExpStmt.

Specified by:
ancestorControlStmtOfConditionalExp in interface Stmt
Returns:
the ancestor control statement if found, or return null if pHir is not a conditional Exp of control Stmt.

combineWithConditionalExp

public void combineWithConditionalExp(Stmt pStmt,
                                      HIR pCond)
Combine pStmt with conditional expression part pCond of control statement so that pStmt should be executed before pCond. See IfStmt, LoopStmt, SwitchStmt where this method is actually defined.

Specified by:
combineWithConditionalExp in interface Stmt
Parameters:
pStmt - statement to be executed before pCond.
pCond - conditional expression to be combined with pStmt.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Description copied from class: HIR_Impl
clone Override Object.clone in HIR.

Overrides:
clone in class HIR_Impl
Returns:
cloned HIR object.
Throws:
java.lang.CloneNotSupportedException

setFileName

public final void setFileName(java.lang.String pFileName)
Description copied from interface: Stmt
 Set the absolute path of the source program file
 containing this statement.
 In C language, if this statement is included
 in a file specified by #include, then give the name
 of the file specified by #include (it may differ
 statement by statement within a subprogram).
 If setFileName is not called for this statement,
 then the name of compiler input file is taken as
 the default value by getFileName().

Specified by:
setFileName in interface Stmt
Parameters:
pFileName - name of the source program file containing this statement.

getFileName

public final java.lang.String getFileName()
Description copied from interface: Stmt
Get the absolute path of the file containing this statement (see setFileName method). If setFileName is not called for this statement, then the name of compiler input file is returned as the default value.

Specified by:
getFileName in interface Stmt
Returns:
the absolute path of the file containing this statement.

setLineNumber

public final void setLineNumber(int pLineNumber)
Description copied from interface: Stmt
Set the line number of this statement within the file specified by setFileName. The first line of the file is line number 1.

Specified by:
setLineNumber in interface Stmt
Parameters:
pLineNumber - the line number of this statement within the source file.

getLineNumber

public final int getLineNumber()
Description copied from interface: Stmt
Get the line number of this statement. The line number is set by setLineNumber method.

Specified by:
getLineNumber in interface Stmt
Returns:
the line number of this statement.

copyPosition

public final void copyPosition(Stmt pStmt)
Description copied from interface: Stmt
Copy the file name and line number of pStatement to this statement.

Specified by:
copyPosition in interface Stmt
Parameters:
pStmt - statement from which file name and line number are to be copied.

toStringDetail

public java.lang.String toStringDetail()
Description copied from interface: HIR
toStringDetail Get text string of this node showing detail information.

Specified by:
toStringDetail in interface HIR
Overrides:
toStringDetail in class HIR_Impl

printLinkage

public void printLinkage(java.lang.String pHeader)