Loop of the following form int check(int a,int b, char *c) { for(;a<b;a+=4) if(c[a]==1) return a; return a; }
(with step being power of two and > 1, and bounds variable) does not get unrolled. It may happen that this loop is infinite, but this should not prevent unrolling. -- Summary: Loops with power of two step and variable bounds not unrolled Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P2 Component: rtl-optimization AssignedTo: rakdver at gcc dot gnu dot org ReportedBy: rakdver at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19001