[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

m68k OCaml porting issue



Hello,

While debugging OCaml 4.13.1's testsuite on m68k, I've noticed that the
following:

-----8<-----
#include <stdio.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>

int main(int argc, char** argv) {
  int i = atoi(argv[1]);
  union { double d; int64_t i; } u[2];
  u[0].i = 0x7FF0000000000001L;
  u[1].d = -u[0].d;
  printf("%Lx, %F\n", u[i].i, u[i].d);
}
-----8<-----

when compiled with "gcc -O0" and run with argument "1", returns:

  fff0000000000000, -INF

which seems to be incorrect.

For reference, on amd64 (and seemingly on arm64, armhf, i386, ppc64el,
s390x as well), it returns:

  fff0000000000001, -NAN

which seems to be the correct behaviour.


Does anybody here have an explanation?


Cheers,

-- 
Stéphane


Reply to: