libstdc++: Work around modules ICE in <charconv> [PR105297]
authorPatrick Palka <ppalka@redhat.com>
Thu, 21 Apr 2022 12:34:59 +0000 (08:34 -0400)
committerPatrick Palka <ppalka@redhat.com>
Thu, 21 Apr 2022 12:34:59 +0000 (08:34 -0400)
commit1e6c0e69af8da436e1d1d2d23d8c38410d78ecf2
tree02a4d4890159f5f24f1f3d1c9eb57efdba81d4b0
parentcf37107522f465d9e12af01ba68d2d1df0f18d46
libstdc++: Work around modules ICE in <charconv> [PR105297]

This makes the initializer for __table in __from_chars_alnum_to_val
dependent in an artificial way, which works around the reported modules
testsuite ICE by preventing the compiler from evaluating the initializer
parse time.

Compared to the alternative workaround of using a non-local class type
for __table, this workaround has the advantage of slightly speeding up
compilation of <charconv>, since now the table won't get built (via
constexpr evaluation) until the integer std::from_chars overload is
instantiated.

PR c++/105297
PR c++/105322

libstdc++-v3/ChangeLog:

* include/std/charconv (__from_chars_alnum_to_val): Make
initializer for __table dependent in an artificial way.
libstdc++-v3/include/std/charconv