https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99301
Bug ID: 99301 Summary: [11 Regression]: cast conversions in chrono require uint32_t to be unsigned int Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: hp at gcc dot gnu.org CC: redi at gcc dot gnu.org Target Milestone: --- Host: x86_64-linux Target: cris-elf Since 97d6161f6a7fa712 / r11-7370 "libstdc++: More efficient days from date" I see an additional 81 testsuite-errors for cris-elf, with this in g++.log for one randomly picked regressing test: FAIL: g++.dg/cpp1y/pr57640.C -std=c++2a (test for excess errors) Excess errors: /x/gccobj/cris-elf/libstdc++-v3/include/chrono:2483:25: error: invalid 'static_cast' from type 'const std::chrono::month' to type 'uint32_t' {aka 'long unsigned int'} /x/gccobj/cris-elf/libstdc++-v3/include/chrono:2484:25: error: invalid 'static_cast' from type 'const std::chrono::day' to type 'uint32_t' {aka 'long unsigned int'} /x/gccobj/cris-elf/libstdc++-v3/include/chrono:2496:69: error: no matching function for call to 'std::chrono::duration<long long int, std::ratio<86400> >::duration(<brace-enclosed initializer list>)' The commit shows conversions to uint32_t, which for e.g. x86_64-linux is "unsigned int", and there are explicit conversions to unsigned int for month and day (see patch context). But, "newlib ILP32 targets" have an uint32_t that is effectively typedef'd "long unsigned int" (see newlib-stdint.h UINT32_TYPE).