scale.clef.decl
Class RenamedVariableDecl

java.lang.Object
  extended by scale.common.Root
      extended by scale.clef.Node
          extended by scale.clef.decl.Declaration
              extended by scale.clef.decl.ValueDecl
                  extended by scale.clef.decl.VariableDecl
                      extended by scale.clef.decl.RenamedVariableDecl
All Implemented Interfaces:
java.lang.Comparable, AnnotationInterface, DisplayNode

public final class RenamedVariableDecl
extends VariableDecl

This class declares a variable that was renamed from another variable.

$Id: RenamedVariableDecl.java,v 1.28 2007-08-28 13:34:32 burrill Exp $

Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.

see scale.score.SSA


Field Summary
 
Fields inherited from class scale.clef.decl.VariableDecl
ignoreAddressTaken
 
Constructor Summary
RenamedVariableDecl(VariableDecl original)
           
 
Method Summary
 boolean addressTaken()
          Return true if the address of this Declaration has been taken.
 Declaration copy(java.lang.String name)
          Return a copy of this Declaration but with a different name.
 Node getChild(int i)
          Return the specified AST child of this node.
 VariableDecl getOriginal()
          Return the variable that this variable was renamed from.
 boolean isRenamed()
          Return true if the declaration is a renamed variable.
 boolean isRenamedVariableDecl()
          Return true if RenamedVariableDecl instance.
 boolean isVirtual()
          Return true if the declaration is a virtual variable.
 int numChildren()
          Return the number of AST children of this node.
 RenamedVariableDecl returnRenamedVariableDecl()
          Return a Re a RenamedVariableDecl instance or null.
 void setOriginal(VariableDecl original)
          Set the variable that this variable was renamed from.
 void visit(Predicate p)
          Process a node by calling its associated routine.
 
Methods inherited from class scale.clef.decl.VariableDecl
computeAttributes, declareFtnResultVar, getAddressRegister, getConstantValue, getDisplacement, getInitialValue, getStorageLoc, getValueRegister, hasHiddenAliases, hasHiddenPtrAliases, hasInvalidArrayReferences, inMemory, isCommonBaseVar, isCommonBaseVariable, isConst, isFtnResultVar, isNotAliasCandidate, isNotSSACandidate, isReferenced, isRestricted, isStatic, isStorageLocSet, isTemporary, isVariableDecl, isVolatile, optimizationCandidate, residency, returnVariableDecl, setAddressRegister, setAddressTaken, setDisplacement, setHiddenAliases, setHiddenPtrAliases, setInitialValue, setInvalidArrayReferences, setReferenced, setResidency, setStorageLoc, setTemporary, setType, setValue, setValueRegister, setVisibility, shouldBeInRegister, specifyCommonBaseVariable, toStringSpecial, valueRegMode
 
Methods inherited from class scale.clef.decl.ValueDecl
getValue, isValueDecl, returnValueDecl
 
Methods inherited from class scale.clef.decl.Declaration
accessibility, compareTo, getActualType, getAlias, getCoreType, getDecl, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getMode, getName, getPointedToCore, getTag, getType, hashCode, isCaseLabelDecl, isEnumElementDecl, isEquivalenceDecl, isExceptionDecl, isFieldDecl, isFileDecl, isFormalDecl, isForwardProcedureDecl, isGlobal, isLabelDecl, isProcedureDecl, isPure, isRoutineDecl, isStmtFtnDecl, isTypeDecl, isTypeName, isUnknownFormals, isWeak, returnCaseLabelDecl, returnEnumElementDecl, returnEquivalenceDecl, returnExceptionDecl, returnFieldDecl, returnFileDecl, returnFormalDecl, returnForwardProcedureDecl, returnLabelDecl, returnProcedureDecl, returnRoutineDecl, returnStmtFtnDecl, returnTypeDecl, returnTypeName, returnUnknownFormals, setAccessibility, setAlias, setName, setTag, setWeak, visibility
 
Methods inherited from class scale.clef.Node
getSourceLineNumber, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toString, toStringChildren
 
Methods inherited from class scale.common.Root
addAnnotation, allAnnotations, allMatchingAnnotations, getAnnotation, getDisplayName, getDisplayString, getNodeCount, getNodeID, hasAnnotation, hasEqualAnnotation, removeAnnotation, removeAnnotations, toStringAnnotations, toStringClass, trace, trace, trace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RenamedVariableDecl

public RenamedVariableDecl(VariableDecl original)
Parameters:
original - is the variable that this variable was renamed from
See Also:
SSA
Method Detail

visit

public void visit(Predicate p)
Description copied from class: Node
Process a node by calling its associated routine. See the "visitor" design pattern in Design Patterns: Elements of Reusable Object-Oriented Software by E. Gamma, et al, Addison Wesley, ISBN 0-201-63361-2.

Each class has a visit(Predicate p) method. For example, in class ABC:

   public void visit(Predicate p)
   {
     p.visitABC(this);
   }
 
and the class that implements Predicate has a method
   public void visitABC(Node n)
   {
     ABC a = (ABC) n;
     ...
   }
 
Thus, the class that implements Predicate can call
   n.visit(this);
 
where n is a Node sub-class without determining which specific sub-class n is. The visit pattern basically avoids implementing a large switch statement or defining different methods in each class for some purpose.

Overrides:
visit in class VariableDecl
See Also:
Predicate

getOriginal

public VariableDecl getOriginal()
Return the variable that this variable was renamed from.

Overrides:
getOriginal in class VariableDecl

setOriginal

public void setOriginal(VariableDecl original)
Set the variable that this variable was renamed from.


addressTaken

public boolean addressTaken()
Return true if the address of this Declaration has been taken.

Overrides:
addressTaken in class VariableDecl

isVirtual

public boolean isVirtual()
Return true if the declaration is a virtual variable.

Overrides:
isVirtual in class Declaration

isRenamed

public boolean isRenamed()
Return true if the declaration is a renamed variable.

Overrides:
isRenamed in class Declaration

getChild

public Node getChild(int i)
Return the specified AST child of this node.

Overrides:
getChild in class ValueDecl

numChildren

public int numChildren()
Return the number of AST children of this node.

Overrides:
numChildren in class ValueDecl

copy

public Declaration copy(java.lang.String name)
Return a copy of this Declaration but with a different name. The name is ignored.

Overrides:
copy in class VariableDecl

isRenamedVariableDecl

public final boolean isRenamedVariableDecl()
Description copied from class: Declaration
Return true if RenamedVariableDecl instance.

Overrides:
isRenamedVariableDecl in class Declaration

returnRenamedVariableDecl

public final RenamedVariableDecl returnRenamedVariableDecl()
Description copied from class: Declaration
Return a Re a RenamedVariableDecl instance or null.

Overrides:
returnRenamedVariableDecl in class Declaration