|
Forward Store
Stores to global variables in loops can be moved out of the loop to reduce memory bandwidth requirements. Example:In the code fragment below, the load and store to the global variable sum can be moved out of the loop by computing the summation in a register and then storing the result to sum outside the loop.
int sum;
void f (void)
{
int i;
sum = 0;
for (i = 0; i < 100; i++)
sum += a[i];
}
Below is the code fragment after forward store optimization (we assume that t is a compiler generated temporary that is kept in a register).
int sum;
void f (void)
{
int i;
register int t;
t = 0;
for (i = 0; i < 100; i++)
t += a[i];
sum = t;
}
© 1990-2012 Nullstone Corporation. All Rights Reserved. |