Manifest expression
Encyclopedia
A manifest expression is a programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 construct that a compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 can analyse to deduce which values it can take without having to execute the program. This information can enable compiler optimizations, in particular loop nest optimization
Loop nest optimization
Loop nest optimization applies a set of loop transformations for the purpose of locality optimization or parallelization or other loop overhead reduction of the loop nests...

, and parallelization through data dependency
Data dependency
A data dependency in computer science is a situation in which a program statement refers to the data of a preceding statement. In compiler theory, the technique used to discover data dependencies among statements is called dependence analysis.There are three types of dependencies: data, name, and...

 analysis. An expression is called manifest if it is computed only from outer loop counter
Loop counter
In software engineering, a loop counter is the term often used to refer to the variable that controls the iterations of a loop...

s and constants (a more formal definition is given below).

When all control flow
Control flow
In computer science, control flow refers to the order in which the individual statements, instructions, or function calls of an imperative or a declarative program are executed or evaluated....

 for a loop or condition is regulated by manifest expressions, it is called a manifest loop resp. condition.

Most practical applications of manifest expressions also require the expression to be integral
Integer
The integers are formed by the natural numbers together with the negatives of the non-zero natural numbers .They are known as Positive and Negative Integers respectively...

 and affine
Affine transformation
In geometry, an affine transformation or affine map or an affinity is a transformation which preserves straight lines. It is the most general class of transformations with this property...

 (or stepwise affine) in its variables
Variable (programming)
In computer programming, a variable is a symbolic name given to some known or unknown quantity or information, for the purpose of allowing the name to be used independently of the information it represents...

.

Definition

A manifest expression is a compile time
Compile time
In computer science, compile time refers to either the operations performed by a compiler , programming language requirements that must be met by source code for it to be successfully compiled , or properties of the program that can be reasoned about at compile time.The operations performed at...

 computable function which depends only on
  • compile-time constants,
  • manifest variable
    Variable (programming)
    In computer programming, a variable is a symbolic name given to some known or unknown quantity or information, for the purpose of allowing the name to be used independently of the information it represents...

     references, and
  • loop counter
    Loop counter
    In software engineering, a loop counter is the term often used to refer to the variable that controls the iterations of a loop...

    s of loops surrounding the expression.

A manifest variable reference is itself defined as a variable reference with
  • a single, unambiguous definition of its value,
  • which is itself a manifest expression.


The single, unambiguous definition is particularly relevant in procedural languages, where pointer analysis
Pointer analysis
In computer science pointer analysis, or points-to analysis, is a static code analysis technique that establishes which pointers, or heap references, can point to which variables or storage locations. It is often a component of more complex analyses such as escape analysis...

 and/or data flow analysis is required to find the expression that defines the variable
Variable (programming)
In computer programming, a variable is a symbolic name given to some known or unknown quantity or information, for the purpose of allowing the name to be used independently of the information it represents...

 value. If several defining expressions are possible (e.g. because the variable is assigned
Assignment (computer science)
In computer programming, an assignment statement sets or re-sets the value stored in the storage location denoted by a variable name. In most imperative computer programming languages, assignment statements are one of the basic statements...

 in a condition), the variable reference is not manifest.

See also

  • Polytope model
    Polytope model
    The polyhedral model is a mathematical framework for loop nest optimization in program optimization. The polytope method treats each loop iteration within nested loops as lattice points inside mathematical objects called polytopes, performs affine transformations or more general non-affine...

     which requires manifest loops and conditions
  • Loop nest optimization
    Loop nest optimization
    Loop nest optimization applies a set of loop transformations for the purpose of locality optimization or parallelization or other loop overhead reduction of the loop nests...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK