Floating Point Errors with Linaro GCC 4.7.3
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro GCC |
Won't Fix
|
Undecided
|
Michael Collison |
Bug Description
Greetings,
We have several ARM platforms that run with the Freescale i.MX6 CPU with NEON. We have encountered some floating point errors with the Linaro 4.7.3 compiler. The values computed are incorrect. However, when running individual tests, the errors don’t happen. They manifest in some strange, and often unpredictable, sequences of individual tests. The tests are written in Java and they run on Oracle CVM. CVM source code is compiled with Linaro GCC. These errors did not happen with the Linaro 4.5.4 compiler.
We use –O4 optimization. With the 4.7.3 compiler the tests pass when we change optimization to –O1. They fail with –O4. To reiterate, 4.5.4 with -O4 passes the tests.
Our attempts at creating smaller test cases have not been successful so far.
Several floating point changes went in between 4.5.4 and 4.7.3 releases. Can you provide a list of changes that might be related to this issue? Any suggestions to avoid the error? The -O1 is unacceptable for performance reasons.
Thanks,
Somnath.
PS:
Compiler that successfully passes the tests:
COLLECT_
Target: arm-linux-gnueabi
Configured with: ../../src/
Thread model: posix
gcc version 4.5.4 20110505 (prerelease) (Linaro GCC 4.5-2011.05-0)
Compiler that fails:
COLLECT_
Target: arm-linux-gnueabi
Configured with: ../../src/
Thread model: posix
gcc version 4.7.3 20130226 (prerelease) (Linaro GCC 4.7-2013.03)
description: | updated |
information type: | Public → Private |
description: | updated |
information type: | Private → Public |
This issue was resolved by using -mfpu=vfpv3.