r253269 - Make FP_CONTRACT ON the default.

Stephen Canon via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 17 04:36:55 PST 2015


> On Nov 17, 2015, at 4:51 AM, Renato Golin <renato.golin at linaro.org> wrote:
> 
> On 16 November 2015 at 23:09, Stephen Canon via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
>> Author: scanon
>> Date: Mon Nov 16 17:09:11 2015
>> New Revision: 253269
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=253269&view=rev
>> Log:
>> Make FP_CONTRACT ON the default.
>> 
>> Differential Revision: D14200
> 
> Hi Stephen,
> 
> It seems your commit in the blame list is the only one that affects
> AArch64 directly:
> 
> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick/builds/2388
> 
> I haven't bisected yet, but would be good if you could try those tests
> locally, just to make sure it wasn't your commit, and revert if it
> was, to fix offline.

From a quick glance at the log, most of these appear to be cases where the test is incorrectly comparing floating-point results without any tolerance*.  That’s a bug in the tests, because the standard allows the expressions to be contracted or not by default, which will necessarily cause (usually small, but sometimes not) perturbations in the results.

These checks should either have a tolerance or the sources should specify #pragma STDC FP_CONTRACT OFF or they should be compiled with -ffp-contract=off.

If we just want things to be green, then I would recommend that these tests use -ffp-contract=off until someone has time and inclination to fix them.

– Steve

*linpack-pc has a tolerance, but fpcmp blindly applies it to everything in the output file; the error occurs in norm resid which is a normalized error term already scaled to the magnitude of the expected error, so the apparently large change from 1.6 to 2 is actually utterly inconsequential.



More information about the cfe-commits mailing list