[PATCH] D68570: Unify the two CRC implementations
Reid Kleckner via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 8 10:57:33 PDT 2019
rnk added a comment.
Maybe a dumb idea: can we compute the table with constexpr evaluation? You could set up a constexpr function that returns a struct that wraps the array, and then the body of the function would construct the array imperatively as the old initialization code did. Set up a constexpr global with an initializer that calls the function.
If not all compilers support this, we could instead use static_assert to check that the table is correct under an `#ifdef __clang__`, or whatever conditions apply.
One possible drawback of this approach is compile time. If that ends up mattering, it could be ifdef EXPENSIVE_CHECKS or something awful like that.
Another drawback is that I have seen MSVC accept globals marked constexpr, but then sometimes they get dynamic initializers anyway. The static_assert approach might be safer.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68570/new/
https://reviews.llvm.org/D68570
More information about the llvm-commits
mailing list