Report: gmp-6.1.2 on MacOS 10.15 using GCC and two Clang

Hans Åberg haberg-1 at telia.com
Sun Oct 20 12:59:55 UTC 2019


> On 20 Oct 2019, at 13:24, Torbjörn Granlund <tg at gmplib.org> wrote:
> 
> Hans Åberg <haberg-1 at telia.com> writes:
> 
>  I have compiled gmp-6.1.2 on MacOS 10.15 using the inhouse Apple clang
>  and the MacPorts gcc9 and clang9, with ‘make check’. All tests passed
>  on gcc9, but the two clang had one error each.
> 
> Several people seem to have trouble with using clang.  When clang first
> appeared, I isolated several of the GMP failures only to determine that
> they were clang codegen bugs.  I don't have time to debug clang for
> Apple or the other clang devs, and this new GMP failure is with very
> high probability yet another clang codegen bug.

Then I will have to do it for you: :-)

It is an optimization issue. When turning it off, both clang pass.

A common programming error is assuming that signed integer types are two’s complement, because even though all current CPUs are that, overflows are undefined in C/C++, and an optimizer can take advantage of that. One example from [1]: checking overflows with x > x + 1 may work as intended with optimization turned off, but when on, the optimizer can assume that it is always false since x + 1 is undefined when overflowed.

I do not know if anything like that is done in GMP.


1. http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html




More information about the gmp-bugs mailing list