[Bug c++/82325] worse code generated compared to clang when using a constexpr array
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 26 07:58:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82325
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
To unroll the loop completely with gcc, one needs to use --param
max-completely-peel-times=32 because the loop has more than 16 iterations,
which is the default limit for the complete unrolling.
That said, neither of the compilers figures out that after unrolling the
intervals are really adjacent, but disjoint, it would be much better to build a
binary decision tree rather than a loop from smallest to largest.
But you can handle that at the source level by doing a binary search in the
array (and you could as well ignore bits there too, just look at the base
values).
More information about the Gcc-bugs
mailing list