> On 31 Oct 2019, at 00:28, David Blaikie <dblai...@gmail.com> wrote:
> 
> 
> 
> On Wed, Oct 30, 2019 at 4:25 PM Hans Åberg <haber...@telia.com> wrote:
> 
>> I believe that GMP is just using integer types, and then uses that to make 
>> multiprecision integers, rational numbers, and floating point numbers. At 
>> least MPFR uses only the integer and rational number part of GMP, and builds 
>> multiprecision floating point numbers on top of that, which is necessary 
>> because of special requirements of the standards they adhere to.
> 
> Ah, fair enough - that narrows down the points of failure a little.
In addition, they use assembly code, but that can be turned off with configure 
--disable-assembly, though I did not 'make check' with that.

>> GMP has been used in three years in a sequenced operation that must be exact 
>> and without errors to solve the problem [1], and I would think it used GCC 
>> with optimizations. So that puts Clang in a tough spot. :-)
> 
> Not as much as it would seem - again, the spec allows for a fair bit of 
> flexibility in a bunch of ways. (admittedly, within integer arithmetic 
> without invoking UB (but, again, that's not proven - UBSan isn't guaranteed 
> to catch everything)) Different compilers optimize code in different ways - 
> that the code "works"/produces the desired behavior on one compiler/under 
> some optimizations and not others doesn't give us much idea about whether the 
> code or the compiler is correct. Different behavior is acceptable in C++ in a 
> bunch of ways & compilers rely on that flexibility.

Yes, but assuming that the GMP adheres to the C standard, there should be no 
difference in the arithmetical values produced.


_______________________________________________
cfe-users mailing list
cfe-users@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users

Reply via email to