https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110477
Bug ID: 110477
Summary: -fexcess-precision=standard not applied consistently
Product: gcc
Version: 13.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pdimov at gmail dot com
Target Milestone: ---
The following program
float f( float x, int y )
{
return x + y;
}
int main()
{
return f( 3.14f, 1 ) == 3.14f + 1;
}
returns different values with -std=c++XX (https://godbolt.org/z/8dK98ondM) and
-std=gnu++XX (https://godbolt.org/z/4Y4qfsKzM) under GCC 13/14 -m32, because
-fexcess-precision=standard is not consistently applied to both sides of the
comparison. Under -fexcess-precision=fast (and hence under previous GCC
versions), the comparison always succeeds because both sides use excess
precision (https://godbolt.org/z/dzdoxdnM9).
This is the runtime equivalent of
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110476.