--- src/aridecl.d.orig 2017-02-24 10:37:24.000000000 -0700 +++ src/aridecl.d 2017-02-24 10:43:07.072929454 -0700 @@ -163,9 +163,9 @@ /* Creates a single float from sign (0 or -1), exponent and mantissa: */ #define make_FF(sign,exp,mant) \ type_data_object(FF_type | (bit(vorz_bit_t) & (sign)), \ - (ffloat)((sign) << (FF_exp_len+FF_mant_len) \ - | (((exp) & (bit(FF_exp_len)-1)) << FF_mant_len) \ - | ((mant) & (bit(FF_mant_len)-1)))) + (ffloat)(((unsigned int)(sign)) << (FF_exp_len+FF_mant_len) \ + | ((((unsigned int)exp) & (bit(FF_exp_len)-1)) << FF_mant_len) \ + | (((unsigned int)mant) & (bit(FF_mant_len)-1)))) /* Single Float 0.0 : */ #define FF_0 make_FF(0,0,0) /* Single Float 1.0 : */ --- src/lispbibl.d.orig 2017-02-24 10:42:57.481011497 -0700 +++ src/lispbibl.d 2017-02-24 10:43:07.078929402 -0700 @@ -1203,9 +1203,9 @@ typedef signed int signean; #endif #endif /* Minus bit number n (0<=n<32) */ -#define minus_bit(n) (-1L<<(n)) +#define minus_bit(n) ((long)(((unsigned long)-1L)<<(n))) /* Minus bit number n (0 delta: a constant < result: incremented fixnum */ #define fixnum_inc(obj,delta) \ - objectplus(obj, (soint)(delta) << oint_data_shift) + objectplus(obj, (oint)(delta) << oint_data_shift) %% export_def(fixnum_inc(obj,delta)); /* posfixnum(x) is a fixnum with value x>=0. */ --- src/spvw_gcmark.d.orig 2017-02-24 10:37:24.000000000 -0700 +++ src/spvw_gcmark.d 2017-02-24 10:43:07.078929402 -0700 @@ -43,7 +43,7 @@ local void gc_mark (object obj) goto down; /* and descent */ \ } #define up_varobject(first_offset) \ - { curr = objectplus(pred,-(soint)(first_offset)<<(oint_addr_shift-addr_shift)); /* becomes current object */ \ + { curr = objectplus(pred,((oint)-(soint)(first_offset))<<(oint_addr_shift-addr_shift)); /* becomes current object */ \ pred = prepred; goto up; /* go further up */ \ } #define down_nopointers(The) \ @@ -68,7 +68,7 @@ local void gc_mark (object obj) goto down; /* and descent */ \ } #define up_iarray() \ - { curr = objectplus(pred,-(soint)iarray_data_offset<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \ + { curr = objectplus(pred,((oint)-(soint)iarray_data_offset)<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \ pred = prepred; goto up; /* go further up */ \ } #define down_sistring() \ @@ -88,7 +88,7 @@ local void gc_mark (object obj) goto down; /* and descent */ \ } #define up_sistring() \ - { curr = objectplus(pred,-(soint)sistring_data_offset<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \ + { curr = objectplus(pred,((oint)-(soint)sistring_data_offset)<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \ pred = prepred; goto up; /* go further up */ \ } #define down_svector() \ @@ -114,7 +114,7 @@ local void gc_mark (object obj) goto down; /* and descent */ \ }} #define up_svector() \ - { curr = objectplus(pred,-(soint)offsetofa(svector_,data)<<(oint_addr_shift-addr_shift)); /* Svector becomes current object */ \ + { curr = objectplus(pred,((oint)-(soint)offsetofa(svector_,data))<<(oint_addr_shift-addr_shift)); /* Svector becomes current object */ \ pred = prepred; goto up; /* go further up */ \ } #define down_lrecord() \ @@ -140,7 +140,7 @@ local void gc_mark (object obj) goto down; /* and descent */ \ }} #define up_lrecord() \ - { curr = objectplus(pred,-(soint)offsetofa(record_,recdata)<<(oint_addr_shift-addr_shift)); /* Lrecord becomes current object */ \ + { curr = objectplus(pred,((oint)-(soint)offsetofa(record_,recdata))<<(oint_addr_shift-addr_shift)); /* Lrecord becomes current object */ \ pred = prepred; goto up; /* go further up */ \ } #define down_sxrecord() \ @@ -177,7 +177,7 @@ local void gc_mark (object obj) #define down_cclosure() #endif #define up_sxrecord() \ - { curr = objectplus(pred,-(soint)offsetofa(record_,recdata)<<(oint_addr_shift-addr_shift)); /* record becomes current object */ \ + { curr = objectplus(pred,((oint)-(soint)offsetofa(record_,recdata))<<(oint_addr_shift-addr_shift)); /* record becomes current object */ \ pred = prepred; goto up; /* go further up */ \ } #ifdef STANDARD_HEAPCODES @@ -348,7 +348,7 @@ local void gc_mark (object obj) curr = currently marked object, store in *pred */ var object prepred = *(gcv_object_t*)ThePointer(pred); /* old predecessor */ *(gcv_object_t*)ThePointer(pred) = curr; /* write back component */ - pred = objectplus(pred,-(soint)(sizeof(gcv_object_t))<<(oint_addr_shift-addr_shift)); /* go to next component */ + pred = objectplus(pred,((oint)-(soint)sizeof(gcv_object_t))<<(oint_addr_shift-addr_shift)); /* go to next component */ if (marked(ThePointer(pred))) { /* already marked? */ curr = /* next component, without mark */ without_mark_bit(*(gcv_object_t*)ThePointer(pred)); @@ -383,7 +383,7 @@ local void gc_mark (object obj) case_subr: /* SUBR */ up_sxrecord(); case_sstring: /* simple-string */ - { var object pred_ = objectplus(pred,-(soint)sistring_data_offset<<(oint_addr_shift-addr_shift)); + { var object pred_ = objectplus(pred,((oint)-(soint)sistring_data_offset)<<(oint_addr_shift-addr_shift)); if (sstring_reallocatedp(TheSstring(pred_))) up_sistring(); }