https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111343
Bug ID: 111343 Summary: [SH] Including <cmath> in C++23 causes an ICE with -m4-single-only Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gyrovorbis at gmail dot com Target Milestone: --- We recently updated from GCC12 to GCC13 in the Sega Dreamcast indie SDK, KallistiOS, and while pretty much everything has worked fantastically, we are encountering a pretty serious ICE when attempting to include the <cmath> header with the -m4-single-only SH-specific flag (which treats doubles as floats), when compiling as C++23. The minimal program to reproduce the issue is here: #include <cmath> int main(int argc, char* argv[]) { return 0; } We are building with: -std=c++23 -m4-single-only Note that without the -m4-single-only flag, the ICE disappears. Note also that without including <cmath>, with this flag, the following static assertion fails: static_assert(sizeof(__STDCPP_FLOAT64_T__) == 8, "Oh god, Dreamcast broke!"); Here is a link to a repro in Compiler Explorer: https://godbolt.org/z/MrE8a47oq I'm assuming the addition of the new C++23 <stdfloat> types is clashing with the `-m4-single-only` flag, as it doesn't seem as though when these types are created, there is any checking for sizeof(double) or anything target-specific: https://github.com/gcc-mirror/gcc/blob/a7d052b3200c7928d903a0242b8cfd75d131e374/gcc/c-family/c-cppbuiltin.cc#L1265