Induction Variable Elimination

Some loops contain two or more induction variables that can be combined into one induction variable.

Example:

The code fragment below has three induction variables (i1, i2, and i3) that can be replaced with one induction variable, thus eliminating two induction variables.

int a[SIZE];
int b[SIZE];

void f (void)
{
  int i1, i2, i3;

  for (i1 = 0, i2 = 0, i3 = 0; i1 < SIZE; i1++)
    a[i2++] = b[i3++];
  return;
}
  

The code fragment below shows the loop after induction variable elimination.

int a[SIZE];
int b[SIZE];

void f (void)
{
  int i1;

  for (i1 = 0; i1 < SIZE; i1++)
    a[i1] = b[i1];
  return;
}
  

Notes:

Induction variable elimination can reduce the number of additions (or subtractions) in a loop, and improve both run-time performance and code space.

Some architectures have auto-increment and auto-decrement instructions that can sometimes be used instead of induction variable elimination.