[Bug c++/62266] New: Loop unrolling with template metaprogramming not aggressive enough
cand at gmx dot com
gcc-bugzilla@gcc.gnu.org
Tue Aug 26 11:17:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62266
Bug ID: 62266
Summary: Loop unrolling with template metaprogramming not
aggressive enough
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: cand at gmx dot com
The following code fails to compile with all GCC versions I have, up to g++
(GCC) 5.0.0 20140817 (experimental). It also fails with clang, but it would be
nice for this to work, as it would save some writing.
The index i is in constant bounds, and so the compiler should be able to fully
unroll this loop into "foo<0>(); foo<1>(); foo<2>();".
#include <stdio.h>
template <int T> void foo() {
printf("%u\n", T);
}
int main() {
int i;
for (i = 0; i < 3; i++) {
foo<i>();
}
return 0;
}
More information about the Gcc-bugs
mailing list