PATCH: Bad signed int to long long conversion
Torbjorn Granlund
tg at gmplib.org
Thu Feb 9 17:01:45 CET 2012
Marc Glisse <marc.glisse at inria.fr> writes:
On Thu, 1 Dec 2011, Torbjorn Granlund wrote:
> I don't mind that somebody patches up all occurences of signed negation
> where the smallest negative value could hypothetically appear.
I don't know about "all occurences", but if there aren't any
objections I plan to commit the patch attached.
(I checked and gcc produces the same code for -1-(long)l as for
(long)~l, even at -O0)
Strictly speaking, I don't think things like (unsigned long)(MIN_LONG)
is well-defined C. This might happen in your macro:
+#define ABS_CAST(T,x) ((x) >= 0 ? (T)(x) : -(T)(x))
Perhaps the : part ought to be written -(T)((x) + 1) - 1 to really solve
the problem.
--
Torbjörn
More information about the gmp-bugs
mailing list