[Bug target/109085] New: [13 Regression] Maybe a wrong code in fmt package since r13-6361-g8020c9c42349f51f
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 9 23:22:58 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109085
Bug ID: 109085
Summary: [13 Regression] Maybe a wrong code in fmt package
since r13-6361-g8020c9c42349f51f
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
CC: uros at gcc dot gnu.org
Target Milestone: ---
Noticed in the fmt package:
[ 134s] Expected equality of these values:
[ 134s] "44.000000000000"
[ 134s] fmt::format("{:%S}", std::chrono::duration<float, std::pico>(
1.54213895E+26))
[ 134s] Which is: "16.430007934570"
which I was able to reduce into:
$ cat fmt3.C
static float
__attribute__((noinline, noipa))
foo(float val)
{
return __builtin_fmodf(val / 1000000000000L, 60);
}
int main()
{
float rem = foo (1.54213895E+26);
__builtin_printf ("rem=%f\n", rem);
if (rem != 44.0)
__builtin_abort ();
return 0;
}
$ g++ fmt3.C -O2 -m32 && ./a.out
rem=16.430008
Aborted (core dumped)
while:
$ g++ fmt3.C -m32 && ./a.out
rem=44.000000
More information about the Gcc-bugs
mailing list