[Bug target/67603] New: [aarch64] constant folded of floating-point expression at compile-time value does not match run-time value
david.abdurachmanov at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Sep 16 20:05:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67603
Bug ID: 67603
Summary: [aarch64] constant folded of floating-point expression
at compile-time value does not match run-time value
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: david.abdurachmanov at gmail dot com
Target Milestone: ---
Created attachment 36344
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36344&action=edit
standalone testcase
This was noticed in Fedora 23 AArch64, HepMC package was failing test --
testSimpleVector
Simplified testSimpleVector version is attached.
Compile: g++ -ansi -pedantic -Wall -g -O2 -o testSimpleVector
testSimpleVector.cc
Seems to fail on GCC 4.9.3, 5.2.0, trunk (r227832).
According to documentation -frounding-math disables const folding for floating
expression and it does resolve the issue, i.e. test is no more failing.
72 namas::FourVector vector;
73 namas::FourVector v4(1.1,2.2,3.3,4.4);
74
75 vector = v4;
76 double masssq1 = v4.m2();
77 double eta1 = v4.eta();
78 double masssq2 = vector.m2();
v4.m2() get const folded at compile-time, but vector.m2() is computed at
run-time. The test fails because compile-time and run-time values are
"significantly" different, i.e. the difference is above 1.e-15.
vector.m2(): 2.4200000000000017
v4.m2(): 2.4200000000000053 (from literal pool)
Why is that compiler cannot achieve the same result as at run-time?
More information about the Gcc-bugs
mailing list