When the if condition is invariant in a loop, the
if statement can be floated out of the assignment loop,
as shown in the following example:
for ( i=0; IPA; i++ ) {
a[i] = b[i] + c[i];
if ( x > 0.0 )
a[i] *= x;
}
Becomes:
if (x > 0.0) {
for ( i = 0; i<n; i++ ) {
a[i] = b[i] + c[i];
a[i] *= x;
}
} else {
for ( i = 0; i<n; i++ ) {
a[i] = b[i] + c[i];
}
}
See Chapter 4, the /eiifg and
/miifg qualifiers, for information about controlling
this transformation.