https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111808
Bug ID: 111808 Summary: [C23] constexpr Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: muecker at gwdg dot de Target Milestone: --- GCC implements constraint 6.7.1p5 for constexpr initialized with a float pointer value as an error. For example, the following fails to compile on i386: int func(void) { constexpr double f2 = 1. / 3.; return 3. * f2 == 3. * (1. / 3.); } with <source>: In function 'func': <source>:7:25: error: 'constexpr' initializer not representable in type of object 7 | constexpr double f2 = 1. / 3.; while it compiles on x64-86. This seems problematic because this it will cause a lot surprising failures when compiling code written for x64-86 on i386. We should either have a warning that such code is non-portable (but this seems difficult) or downgrade this to a warning and accept the code as an extension on architectures which compute with excess precision. https://godbolt.org/z/7vsWhvKjd