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.