From: George Koehler Date: Sat, 28 Oct 2017 21:56:20 +0000 (-0400) Subject: Always use unsigned long. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=649410bb27db8f539815c5b8723de41f5863be81;p=ack.git Always use unsigned long. Traditional C compilers had long but not unsigned long. I now assume that everyone can compile unsigned long. Remove macro UNSIGNED_ARITH and act like it is always defined. The type `unsigned arith` works because arith is a macro for long. --- diff --git a/lang/m2/comp/BigPars b/lang/m2/comp/BigPars index 1f6785069..77fddbc3f 100644 --- a/lang/m2/comp/BigPars +++ b/lang/m2/comp/BigPars @@ -94,7 +94,3 @@ #define USE_INSERT 1 /* use C_insertpart mechanism */ -!File: uns_arith.h -/*#define UNSIGNED_ARITH unsigned arith /* when it is supported */ - - diff --git a/lang/m2/comp/SmallPars b/lang/m2/comp/SmallPars index b53f3c3a4..2625fa260 100644 --- a/lang/m2/comp/SmallPars +++ b/lang/m2/comp/SmallPars @@ -94,7 +94,3 @@ /*#define USE_INSERT 1 /* use C_insertpart mechanism */ -!File: uns_arith.h -/*#define UNSIGNED_ARITH unsigned arith /* when it is supported */ - - diff --git a/lang/m2/comp/cstoper.c b/lang/m2/comp/cstoper.c index b7b13f9a4..7629098c1 100644 --- a/lang/m2/comp/cstoper.c +++ b/lang/m2/comp/cstoper.c @@ -117,49 +117,8 @@ divide(pdiv, prem) register arith o1 = *pdiv; register arith o2 = *prem; -#ifndef UNSIGNED_ARITH - /* this is more of a problem than you might - think on C compilers which do not have - unsigned long. - */ - if (o2 & arith_sign) {/* o2 > max_arith */ - if (! (o1 >= 0 || o1 < o2)) { - /* this is the unsigned test - o1 < o2 for o2 > max_arith - */ - *prem = o2 - o1; - *pdiv = 1; - } - else { - *pdiv = 0; - } - } - else { /* o2 <= max_arith */ - arith half, bit, hdiv, hrem, rem; - - half = (o1 >> 1) & ~arith_sign; - bit = o1 & 01; - /* now o1 == 2 * half + bit - and half <= max_arith - and bit <= max_arith - */ - hdiv = half / o2; - hrem = half % o2; - rem = 2 * hrem + bit; - *pdiv = 2*hdiv; - *prem = rem; - if (rem < 0 || rem >= o2) { - /* that is the unsigned compare - rem >= o2 for o2 <= max_arith - */ - *pdiv += 1; - *prem -= o2; - } - } -#else - *pdiv = (UNSIGNED_ARITH) o1 / (UNSIGNED_ARITH) o2; - *prem = (UNSIGNED_ARITH) o1 % (UNSIGNED_ARITH) o2; -#endif + *pdiv = (unsigned arith) o1 / (unsigned arith) o2; + *prem = (unsigned arith) o1 % (unsigned arith) o2; } void diff --git a/lang/m2/comp/type.c b/lang/m2/comp/type.c index b70f2b4b1..bbf4841b4 100644 --- a/lang/m2/comp/type.c +++ b/lang/m2/comp/type.c @@ -306,14 +306,7 @@ chk_bounds(l1, l2, fund) if (fund == T_INTEGER) { return l2 >= l1; } -#ifdef UNSIGNED_ARITH - return (UNSIGNED_ARITH) l2 >= (UNSIGNED_ARITH) l1; -#else - return (l2 & arith_sign ? - (l1 & arith_sign ? l2 >= l1 : 1) : - (l1 & arith_sign ? 0 : l2 >= l1) - ); -#endif + return (unsigned arith) l2 >= (unsigned arith) l1; } int