alignment constraint |
The proper boundary of the stack where data must be stored. |
alternate loop transformation |
An optimization in which the compiler generates a copy
of a loop and executes the new loop depending on the boundary size. |
branch count profiler |
A tool that counts the number of times a program executes
each branch statement. The utility also generates a database that shows
how the program executed. |
branch probability database |
The database generated by the branch count profiler. The
database contains the number of times each branch is executed. |
cache hit |
The situation when the information the processor wants
is in the cache. |
call site |
A call site consists of the instructions immediately preceding
a call instruction and the call instruction itself. |
common subexpression elimination |
An optimization in which the compiler detects and combines
redundant computations. |
conditionals |
Any operation that takes place depending on whether or
not a certain condition is true. |
constant argument propagation |
An optimization in which the compiler replaces the formal
arguments of a routine with actual constant values. The compiler then
propagates constant variables used as actual arguments. |
constant branches |
Conditionals that always take the same branch. |
constant folding |
An optimization in which the compiler, instead of storing
the numbers and operators for computation when the program executes, evaluates
the constant expression and uses the result. |
copy propagation |
An optimization in which the compiler eliminates unnecessary
assignments by using the value assigned to a variable instead of using
the variable itself. |
dataflow |
The movement of data through a system, from entry to destination. |
dead-code elimination |
An optimization in which the compiler eliminates any code
that generates unused values or any code that will never be executed in
the program. |
dynamic linking |
The process in which a shared object is mapped into the
virtual address space of your program at run time. |
empty declaration |
A semicolon and nothing before it. |
frame pointer |
A pointer that holds a base address for the current stack
and is used to access the stack frame. |
in-line function expansion |
An optimization in which the compiler replaces each function
call with the function body expanded in place. |
induction variable simplification |
An optimization in which the compiler reduces the complexity
of an array index calculation by using only additions. |
instruction scheduling |
An optimization in which the compiler reorders the generated
machine instructions so that more than one can execute in parallel. |
instruction sequencing |
An optimization in which the compiler eliminates less efficient
instructions and replaces them with instruction sequences that take advantage
of a particular processor's features. |
interprocedural optimization |
An optimization that applies to the entire program except
for library routines. |
loop blocking |
An optimization in which the compiler reorders the execution
sequence of instructions so that the compiler can execute iterations from
outer loops before completing all the iterations of the inner loop. |
loop unrolling |
An optimization in which the compiler duplicates the executed
statements inside a loop to reduce the number of loop iterations. |
loop-invariant code movement |
An optimization in which the compiler detects multiple
instances of a computation that does not change within a loop. |
padding |
The addition of bytes or words at the end of each data
type in order to meet size and alignment constraints. |
preloading |
An optimization in which the compiler loads the vectors,
one cache at a time, so that during the loop computation the number of
external bus turnarounds is reduced. |
profiling |
A process in which detailed information is produced about
the program's execution. |
register variable detection |
An optimization in which the compiler detects the variables
that never need to be stored in memory and places them in register variables. |
side effects |
Results of the optimization process that might increase
the code size and/or processing time. |
static linking |
The process in which a copy of the object file that contains
a function used in your program is incorporated in your executable file
at link time. |
strength reduction |
An optimization in which the compiler reduces the complexity
of an array index calculation by using only additions. |
strip mining |
An optimization in which the compiler creates an additional
level of nesting to enable inner loop computations on vectors that can
be held in the cache. This optimization reduces the size of inner loops
so that the amount of data required for the inner loop can fit the cache
size. |
token pasting |
The process in which the compiler treats two tokens separated
by a comment as one (for example, a/**/b become ab). |
transformation |
A rearrangement of code. In contrast, an optimization is
a rearrangement of code where improved run-time performance is guaranteed. |
unreachable code |
Instructions that are never executed by the compiler. |
unused code |
Instructions that produce results that are not used in
the program. |
variable renaming |
An optimization in which the compiler renames instances
of a variable that refer to distinct entities. |