com.arm.carp.pencil

Checks

trait Checks extends Walker

Provides compile time consistency checks for internal PENCIL representation.

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Checks
  2. Walker
  3. ExpressionWalker
  4. CommonOps
  5. Assertable
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. type Annotated[T] = (T, Option[Operation])

    Definition Classes
    ExpressionWalker
  2. type AnnotatedArrayExpression = (ArrayExpression, Option[Operation])

    Definition Classes
    ExpressionWalker
  3. type AnnotatedScalarExpression = (ScalarExpression, Option[Operation])

    Definition Classes
    ExpressionWalker

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def assert(cond: Boolean, data: Any, message: String): Unit

    Check the condition and calls Assertable.ice if condition is false.

    Check the condition and calls Assertable.ice if condition is false.

    cond

    condition to check

    data

    additional data to include in error message

    message

    error message

    Definition Classes
    Assertable
  8. val calls: CallGraph

  9. def checkForProperties(in: Seq[ForProperties], op: ForOperation): Unit

    Check for loop annotations.

    Check for loop annotations.

    All labels in independent property must be unique.

  10. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  11. val config: WalkerConfigStorage

    Definition Classes
    ChecksWalker
  12. var current_function: Option[Function]

  13. def doNothing(): Unit

    Default action for leaf processing.

    Default action for leaf processing. Can be overridden to call ICE (to ensure that all processing is implemented by pass).

    Definition Classes
    Walker
  14. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  15. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  16. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  17. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  18. def getCleanBody(in: Option[BlockOperation]): BlockOperation

    Definition Classes
    Walker
  19. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  20. def ice(data: Any, message: String): Nothing

    Report internal compilation error and throw RuntimeException.

    Report internal compilation error and throw RuntimeException.

    data

    additional data to include in error message

    message

    error message

    Definition Classes
    Assertable
  21. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  22. val loops: Stack[Operation]

  23. def make(init: Option[Operation]*): Option[Operation]

    Definition Classes
    CommonOps
  24. def makeBlock(init: Option[Operation]*): Option[BlockOperation]

    Definition Classes
    CommonOps
  25. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  26. final def notify(): Unit

    Definition Classes
    AnyRef
  27. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  28. val ops: HashSet[Operation]

  29. val refs: HashSet[VariableRef]

  30. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  31. def toString(): String

    Definition Classes
    AnyRef → Any
  32. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  33. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  34. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  35. def walkAccessFunction(in: Option[Function]): Unit

    Definition Classes
    Walker
  36. def walkArrayConstant(in: ArrayConstant): (ArrayExpression, Option[Operation])

    Check array constant.

    Check array constant.

    The type of the elements must be compatible with the base type of the constant type.

    Definition Classes
    ChecksExpressionWalker
  37. def walkArrayDeclOperation(in: ArrayDeclOperation): Option[Operation]

    Definition Classes
    Walker
  38. def walkArrayExpression(in: ArrayExpression): (ArrayExpression, Option[Operation])

    Definition Classes
    ExpressionWalker
  39. def walkArrayIdxExpression(in: ArrayIdxExpression): (ArrayExpression, Option[Operation])

    Check array indexing expression.

    Check array indexing expression.

    Index expression must have integer type.

    Definition Classes
    ChecksExpressionWalker
  40. def walkArrayStructSubscription(in: ArrayStructSubscription): (ArrayExpression, Option[Operation])

    Definition Classes
    ExpressionWalker
  41. def walkArrayType(in: ArrayType): Option[Operation]

    Definition Classes
    Walker
  42. def walkArrayVariable(in: ArrayVariableRef): (ArrayExpression, Option[Operation])

    Check array variable reference.

    Check array variable reference.

    Same variable reference cannot be used twice. If variable has initializer, its type must be compatible with type of the variable.

    Definition Classes
    ChecksExpressionWalker
  43. def walkArrayVariableInt(in: ArrayVariable): (ArrayExpression, Option[Operation])

    All raw variables must be eliminated before leaving the front-end.

    All raw variables must be eliminated before leaving the front-end.

    Definition Classes
    ExpressionWalker
  44. def walkAssignment(in: AssignmentOperation): Option[Operation]

    Check assignment statement.

    Check assignment statement.

    The following properties must be satisfied: - lvalue must not be constant - type of the rvalue expression must be compatible with type of the type lvalue expression.

    Definition Classes
    ChecksWalker
  45. def walkBlock(in: BlockOperation): Option[BlockOperation]

    Definition Classes
    Walker
  46. def walkBlock(in: Option[BlockOperation]): Option[BlockOperation]

    Definition Classes
    Walker
  47. def walkBreak(in: BreakOperation): Option[Operation]

    Check break statement.

    Check break statement.

    Break statement must have at least one surrounding loop.

    Definition Classes
    ChecksWalker
  48. def walkCallExpression(in: CallExpression): (ScalarExpression, Option[Operation])

    Check call expression.

    Check call expression.

    Arguments supplied must be compatable with corresponding functions parameters. No recursion is allowed.

    Definition Classes
    ChecksExpressionWalker
  49. def walkCallOp(in: CallOperation): Option[Operation]

    Definition Classes
    Walker
  50. def walkContinue(in: ContinueOperation): Option[Operation]

    Check continue statement.

    Check continue statement.

    Continue statement must have at least one surrounding loop.

    Definition Classes
    ChecksWalker
  51. def walkConvertExpression(in: ConvertExpression): (ScalarExpression, Option[Operation])

    Check convert expression.

    Check convert expression.

    Operand of the convert expression must have type, convertible to the target type.

    Definition Classes
    ChecksExpressionWalker
  52. def walkExpression(in: Expression): (Expression, Option[Operation])

    Definition Classes
    ExpressionWalker
  53. def walkExpressionProxy(in: Expression): (Expression, Option[Operation])

    Definition Classes
    Walker
  54. def walkFor(in: ForOperation): Option[Operation]

    Check for loop.

    Check for loop.

    Definition Classes
    ChecksWalker
  55. def walkFunction(in: Function): Option[Function]

    Definition Classes
    ChecksWalker
  56. def walkFunctionArgument(in: Variable): Variable

    Definition Classes
    Walker
  57. def walkFunctionArguments(in: Seq[Variable]): Seq[Variable]

    Definition Classes
    Walker
  58. def walkFunctionBody(in: Option[BlockOperation]): Option[BlockOperation]

    Definition Classes
    Walker
  59. def walkFunctions(in: Traversable[Function]): Traversable[Function]

    Definition Classes
    Walker
  60. def walkGlobalConst(c: Variable): Some[Variable]

    Definition Classes
    Walker
  61. def walkGlobalConsts(in: Seq[Variable]): Seq[Variable]

    Definition Classes
    Walker
  62. def walkGlobalType(t: StructType): Some[StructType]

    Definition Classes
    Walker
  63. def walkGlobalTypes(in: Seq[StructType]): Seq[StructType]

    Definition Classes
    Walker
  64. def walkGuardExpression(in: ScalarExpression): (ScalarExpression, Option[Operation])

    Check the if/while guard expression.

    Check the if/while guard expression.

    Guard expression must have boolean type.

    Definition Classes
    ChecksWalker
  65. def walkIf(in: IfOperation): Option[Operation]

    Definition Classes
    Walker
  66. def walkIntrinsicCallExpression(in: IntrinsicCallExpression): (ScalarExpression, Option[Operation])

    Check intrinsic call expression.

    Check intrinsic call expression.

    Intrinsic function must be known to the compiler (see BuiltIn.function). The number and type of the arguments must correspond to the declaration, known by the compiler.

    Definition Classes
    ChecksExpressionWalker
  67. def walkIterationVariable(in: ScalarVariableRef): (ScalarVariableRef, Option[Operation])

    Definition Classes
    ExpressionWalker
  68. def walkLValueExpression(in: ScalarExpression with LValue): (ScalarExpression with LValue, Option[Operation])

    Definition Classes
    Walker
  69. def walkOperation(in: Operation): Option[Operation]

    Same operation object can not be used twice.

    Same operation object can not be used twice.

    Definition Classes
    ChecksWalker
  70. def walkPENCILOperation(in: Operation with PENCILOperation): Option[Operation]

    Definition Classes
    Walker
  71. def walkProgram(in: Program): Program

    Definition Classes
    ChecksWalker
  72. def walkRange(in: Range): (Range, Option[Operation])

    Check for loop iteration range.

    Check for loop iteration range.

    Iteration variable and lower and upper bound must have integer type. Iteration variable must not be constant.

    Definition Classes
    ChecksWalker
  73. def walkReturn(in: ReturnOperation): Option[Operation]

    Check return statement.

    Check return statement.

    Type of the return statement operand must be compatible with the return type of the function.

    Definition Classes
    ChecksWalker
  74. def walkScalarBinaryExpression(in: ScalarBinaryExpression): (ScalarExpression, Option[Operation])

    Check general scalar binary expression.

    Check general scalar binary expression.

    For ModExpression (%) both operands must have integer type. For Boolean expressions both operands must have boolean type. For comparison expressions (==, !=) both operands must have numeric or boolean types. For comparison expressions (except == and !=) both operands must have numeric types.

    Definition Classes
    ChecksExpressionWalker
  75. def walkScalarConstant(in: Constant with ScalarExpression): (ScalarExpression, Option[Operation])

    Definition Classes
    ExpressionWalker
  76. def walkScalarExpression(in: ScalarExpression): (ScalarExpression, Option[Operation])

    Definition Classes
    ExpressionWalker
  77. def walkScalarExpressionProxy(in: ScalarExpression): (ScalarExpression, Option[Operation])

    Definition Classes
    Walker
  78. def walkScalarIdxExpression(in: ScalarIdxExpression): (ScalarExpression, Option[Operation])

    Check array indexing expression.

    Check array indexing expression.

    Index expression must have integer type.

    Definition Classes
    ChecksExpressionWalker
  79. def walkScalarStructSubscription(in: ScalarStructSubscription): (ScalarExpression, Option[Operation])

    Definition Classes
    ExpressionWalker
  80. def walkScalarTernaryExpression(in: TernaryExpression): (ScalarExpression, Option[Operation])

    Check ternary expression.

    Check ternary expression.

    The guard expression must have boolean type. Both alternatives must have compatible types.

    Definition Classes
    ChecksExpressionWalker
  81. def walkScalarUnaryExpression(in: ScalarUnaryExpression): (ScalarExpression, Option[Operation])

    Check scalar unary expression.

    Check scalar unary expression.

    For unary minus expression the operand must have numeric type. For boolen not expression the operand type must have boolean type. For bit reverse (~) expression the operand must have integer type.

    Definition Classes
    ChecksExpressionWalker
  82. def walkScalarVariable(in: ScalarVariableRef): (ScalarExpression, Option[Operation])

    Check scalar variable reference.

    Check scalar variable reference.

    Definition Classes
    ChecksExpressionWalker
  83. def walkScalarVariableInt(in: ScalarVariable): (ScalarExpression, Option[Operation])

    All raw variables must be eliminated before leaving the front-end.

    All raw variables must be eliminated before leaving the front-end.

    Definition Classes
    ExpressionWalker
  84. def walkSizeofExpression(in: SizeofExpression): (ScalarExpression, Option[Operation])

    Sizeof expression cannot be applied to void type.

    Sizeof expression cannot be applied to void type.

    Definition Classes
    ChecksExpressionWalker
  85. def walkWhile(in: WhileOperation): Option[Operation]

    Check while loop.

    Check while loop.

    Definition Classes
    ChecksWalker

Inherited from Walker

Inherited from ExpressionWalker

Inherited from CommonOps

Inherited from Assertable

Inherited from AnyRef

Inherited from Any

Ungrouped