I built GCC toolchain for my custom CPU. My custom CPU have 32-bits floating point unit so I set DOUBLE_TYPE_SIZE 32, to prevent convertion from float to double. Additionally in newlib I define _DOUBLE_IS_32BITS. When I ran the GCC test, buildin-math-4.c fails and exactly: if (sizeof(int)*__CHAR_BIT__ <= __DBL_MANT_DIG__) { MAXIT(remquo, __INT_MAX__-1.0, __INT_MAX__-1); The IF condition is met, software use built-in function with params showed below: do { q = 12345; if (__builtin_remquof((0x7fffffff -1.0F), 1, &q) != 0 || q != (0x7fffffff -1)) link_error (252); } while (0); When I tried to resolve the problem, I discovered, that inputs params are converted to float type, and the (__INT_MAX__-1.0) is not converted corectly, because float type is too small to hold (0x7fffffff -1) value. But when built-in function is used, all params should be double. So my question is: how to resolve this problem, how to configure GCC to use double type in internal calculation and use float type in newlib? I use GCC version 5.2.0 and newlib version 2.0.0 -- View this message in context: http://gcc.1065356.n5.nabble.com/double-and-float-in-GCC-tp1275275.html Sent from the gcc - Help mailing list archive at Nabble.com.