Skip to content

Commit 9415cd2

Browse files
committed
make targ_size_t 64 bits for SCPP
1 parent 0d57172 commit 9415cd2

File tree

16 files changed

+69
-72
lines changed

16 files changed

+69
-72
lines changed

dm/src/dmc/cdef.d

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,9 @@ enum REGMASK = 0xFFFF;
288288
// targ_llong is also used to store host pointers, so it should have at least their size
289289
version (SCPP)
290290
{
291-
// No 64 bit support yet
292-
alias targ_ptrdiff_t = targ_int; // ptrdiff_t for target machine
293-
alias targ_size_t = targ_uns; // size_t for the target machine
291+
// 64 bit support
292+
alias targ_ptrdiff_t = int64_t; // ptrdiff_t for target machine
293+
alias targ_size_t = uint64_t; // size_t for the target machine
294294
}
295295
else version (SPP)
296296
{

dm/src/dmc/cod1.d

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4157,9 +4157,9 @@ void pushParams(ref CodeBuilder cdb, elem* e, uint stackalign, tym_t tyf)
41574157
elem* e1 = e.EV.E1;
41584158
docommas(cdb,&e1); // skip over any comma expressions
41594159

4160-
cod3_stackadj(cdb, sz);
4160+
cod3_stackadj(cdb, cast(uint)sz);
41614161
stackpush += sz;
4162-
cdb.genadjesp(sz);
4162+
cdb.genadjesp(cast(uint)sz);
41634163

41644164
// Find OPstrthis and set it to stackpush
41654165
exp2_setstrthis(e1, null, stackpush, null);
@@ -4191,7 +4191,7 @@ void pushParams(ref CodeBuilder cdb, elem* e, uint stackalign, tym_t tyf)
41914191
if (reg & 8)
41924192
code_orrex(cdb.last(), REX_B);
41934193
stackpush += REGSIZE;
4194-
cdb.genadjesp(sz);
4194+
cdb.genadjesp(cast(uint)sz);
41954195
freenode(e);
41964196
return;
41974197
}

dm/src/dmc/dcgcv.d

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,15 +1168,15 @@ version (SCPP)
11681168
continue;
11691169
nfields++;
11701170
fnamelen += ((config.fulltypes == CV4) ? 6 : 8) +
1171-
cv4_numericbytes(b.BCoffset);
1171+
cv4_numericbytes(cast(uint)b.BCoffset);
11721172
}
11731173

11741174
// Now virtual base classes (direct and indirect)
11751175
for (b = st.Svirtbase; b; b = b.BCnext)
11761176
{
11771177
nfields++;
11781178
fnamelen += ((config.fulltypes == CV4) ? 8 : 12) +
1179-
cv4_numericbytes(st.Svbptr_off) +
1179+
cv4_numericbytes(cast(uint)st.Svbptr_off) +
11801180
cv4_numericbytes(b.BCvbtbloff / _tysize[TYint]);
11811181
}
11821182

@@ -1324,8 +1324,8 @@ version (SCPP)
13241324
p += 8;
13251325
}
13261326

1327-
cv4_storenumeric(p,offset);
1328-
p += cv4_numericbytes(offset);
1327+
cv4_storenumeric(p, cast(uint)offset);
1328+
p += cv4_numericbytes(cast(uint)offset);
13291329
}
13301330

13311331
// Now direct followed by indirect virtual base classes
@@ -1379,10 +1379,10 @@ version (SCPP)
13791379
p += 12;
13801380
}
13811381

1382-
cv4_storenumeric(p,vbpoff);
1383-
p += cv4_numericbytes(vbpoff);
1384-
cv4_storenumeric(p,vboff);
1385-
p += cv4_numericbytes(vboff);
1382+
cv4_storenumeric(p,cast(uint)vbpoff);
1383+
p += cv4_numericbytes(cast(uint)vbpoff);
1384+
cv4_storenumeric(p,cast(uint)vboff);
1385+
p += cv4_numericbytes(cast(uint)vboff);
13861386
}
13871387
i ^= LF_VBCLASS ^ LF_IVBCLASS; // toggle between them
13881388
} while (i != LF_VBCLASS);

dm/src/dmc/dcpp.d

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3642,7 +3642,6 @@ L2:
36423642
for (b = st.Smptrbase; b; b = b.BCnext)
36433643
{ baseclass_t *vb;
36443644
Classsym *sbase;
3645-
targ_int vptroffset;
36463645

36473646
if (!(b.BCflags & BCFnewvtbl))
36483647
{
@@ -3672,7 +3671,7 @@ L2:
36723671
}
36733672

36743673
t = type_allocn(tym,svptr.Stype);
3675-
vptroffset = svptr.Smemoff;
3674+
const vptroffset = svptr.Smemoff;
36763675

36773676
if (b.BCflags & BCFvirtual) /* if base class is virtual */
36783677
{
@@ -3775,7 +3774,6 @@ private elem * cpp_assignvbptr(Symbol *s_this)
37753774
for (b = st.Svbptrbase; b; b = b.BCnext)
37763775
{ baseclass_t *vb;
37773776
Classsym *sbase;
3778-
targ_int vptroffset;
37793777

37803778
sbase = b.BCbase;
37813779
symbol_debug(sbase);
@@ -3785,7 +3783,7 @@ private elem * cpp_assignvbptr(Symbol *s_this)
37853783

37863784
t = type_allocn(tym,svptr.Stype);
37873785
//dbg_printf("b.BCoffset = x%lx, sbase('%s').Svbptr_off = x%lx\n",b.BCoffset,sbase.Sident,sbase.Sstruct.Svbptr_off);
3788-
vptroffset = b.BCoffset + sbase.Sstruct.Svbptr_off;
3786+
const vptroffset = b.BCoffset + sbase.Sstruct.Svbptr_off;
37893787
e = el_var(s_this);
37903788
emos = el_longt(tstypes[TYint],vptroffset);
37913789
e = el_bint(OPadd,t,e,emos);
@@ -3810,16 +3808,15 @@ private elem * cpp_assignvbptr(Symbol *s_this)
38103808
*/
38113809

38123810
int cpp_vtbloffset(Classsym *sclass,Symbol *sfunc)
3813-
{ int i;
3814-
int mptrsize;
3811+
{
38153812
list_t vl;
38163813

38173814
symbol_debug(sclass);
38183815
symbol_debug(sfunc);
38193816

38203817
//dbg_printf("cpp_vtbloffset('%s','%s')\n",sclass.Sident,cpp_prettyident(sfunc));
38213818
cpp_getpredefined(); /* define s_mptr */
3822-
mptrsize = type_size(s_mptr.Stype);
3819+
const mptrsize = cast(int)type_size(s_mptr.Stype);
38233820

38243821
assert(isclassmember(sfunc));
38253822
if (sfunc.Sscope.Sstruct.Sscaldeldtor == sfunc)
@@ -3828,7 +3825,7 @@ int cpp_vtbloffset(Classsym *sclass,Symbol *sfunc)
38283825
}
38293826

38303827
/* Compute offset from start of virtual table for function sfunc */
3831-
i = -mptrsize; // no null at start of vtbl[]
3828+
int i = -mptrsize; // no null at start of vtbl[]
38323829
for (vl = sclass.Sstruct.Svirtual; ; vl = list_next(vl))
38333830
{ mptr_t *m;
38343831

dm/src/dmc/diasm.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3329,7 +3329,7 @@ private void asm_db_parse( OP *pop )
33293329
usBytes += usSize;
33303330
}
33313331
else if (e.Eoper == OPstring)
3332-
{ size_t len = e.EV.Vstrlen;
3332+
{ size_t len = cast(size_t)e.EV.Vstrlen;
33333333

33343334
if (len)
33353335
{ len--; // leave off terminating 0

dm/src/dmc/dinit.d

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ private void initializer(Symbol *s)
344344
}
345345
{
346346
auto dtb = DtBuilder(0);
347-
dtb.nzeros(type_size(t));
347+
dtb.nzeros(cast(uint)type_size(t));
348348
dsout += type_size(t);
349349
assert(!s.Sdt);
350350
s.Sdt = dtb.finish();
@@ -443,7 +443,7 @@ private void initializer(Symbol *s)
443443
if (sclass == SCstatic || sclass == SCglobal)
444444
{
445445
auto dtb = DtBuilder(0);
446-
dtb.nzeros(type_size(t));
446+
dtb.nzeros(cast(uint)type_size(t));
447447
dsout += type_size(t);
448448
s.Sdt = dtb.finish();
449449
if (!localstatic)
@@ -495,7 +495,7 @@ private void initializer(Symbol *s)
495495
type_setdim(&s.Stype,e.EV.Vstrlen / type_size(s.Stype.Tnext)); /* we have determined its size */
496496
assert(s.Sdt == null);
497497
auto dtb = DtBuilder(0);
498-
dtb.nbytes(e.EV.Vstrlen, e.EV.Vstring);
498+
dtb.nbytes(cast(uint)e.EV.Vstrlen, e.EV.Vstring);
499499
s.Sdt = dtb.finish();
500500
el_free(e);
501501
t = s.Stype;
@@ -549,7 +549,7 @@ private void initializer(Symbol *s)
549549
dim = i;
550550
} while (!endofarray());
551551
auto dtb = DtBuilder(0);
552-
dta.join(dtb, elemsize, 0, 1);
552+
dta.join(dtb, cast(uint)elemsize, 0, 1);
553553
s.Sdt = dtb.finish();
554554
t = type_setdim(&s.Stype,dim); // we have determined its size
555555
chktok(TKrcur,EM_rcur); // end with a right curly
@@ -1066,7 +1066,7 @@ private size_t getArrayIndex(size_t i, size_t dim, char unknown)
10661066
index = dim - 1;
10671067
}
10681068
chktok(TKrbra, EM_rbra); // closing ']'
1069-
i = index;
1069+
i = cast(size_t)index;
10701070
if (tok.TKval == TKeq)
10711071
{ stoken();
10721072
if (tok.TKval == TKdot || tok.TKval == TKlbra)
@@ -1405,7 +1405,7 @@ private elem* initstruct(type *t, ref DtBuilder dtb, Symbol *ss,targ_size_t offs
14051405
case SCfield:
14061406
if (e && s.Smemoff != soffset)
14071407
{
1408-
uint n = soffset - (dsout - dsstart);
1408+
const n = cast(uint)(soffset - (dsout - dsstart));
14091409
dtb.nzeros(n);
14101410
dsout += n;
14111411
e = poptelem(e);
@@ -1455,7 +1455,7 @@ private elem* initstruct(type *t, ref DtBuilder dtb, Symbol *ss,targ_size_t offs
14551455
case SCmember:
14561456
if (e) // if bit field
14571457
{
1458-
uint n = soffset - (dsout - dsstart);
1458+
const n = cast(uint)(soffset - (dsout - dsstart));
14591459
dtb.nzeros(n);
14601460
dsout += n;
14611461
e = poptelem(e);
@@ -1467,7 +1467,7 @@ private elem* initstruct(type *t, ref DtBuilder dtb, Symbol *ss,targ_size_t offs
14671467
if (sd[i].dt)
14681468
{
14691469
soffset = s.Smemoff;
1470-
uint n = soffset - (dsout - dsstart);
1470+
const n = cast(uint)(soffset - (dsout - dsstart));
14711471
dtb.nzeros(n);
14721472
dsout += n;
14731473
dtb.cat(sd[i].dt);
@@ -1495,7 +1495,7 @@ Ldone:
14951495
tsize = type_size(t);
14961496
if (tsize > (dsout - dsstart))
14971497
{
1498-
uint n = tsize - (dsout - dsstart);
1498+
const n = cast(uint)(tsize - (dsout - dsstart));
14991499
dtb.nzeros(n);
15001500
dsout += n;
15011501
}
@@ -1559,9 +1559,9 @@ private elem* initarray(type *t, ref DtBuilder dtb,Symbol *s,targ_size_t offset)
15591559
{ synerr(EM_2manyinits); // string is too long
15601560
len = tsize;
15611561
}
1562-
dtb.nbytes(len,mstring);
1562+
dtb.nbytes(cast(uint)len, mstring);
15631563
dsout += len;
1564-
dtb.nzeros(tsize - len);
1564+
dtb.nzeros(cast(uint)(tsize - len));
15651565
dsout += tsize - len;
15661566
mem_free(mstring); // MEM_PH_FREE()
15671567
goto Ldone;
@@ -1586,7 +1586,7 @@ private elem* initarray(type *t, ref DtBuilder dtb,Symbol *s,targ_size_t offset)
15861586
}
15871587
do
15881588
{
1589-
i = getArrayIndex(i, dim, unknown);
1589+
i = getArrayIndex(i, cast(uint)dim, unknown);
15901590

15911591
// Ensure dtarray[] is big enough
15921592
dta.ensureSize(i);
@@ -1605,7 +1605,7 @@ private elem* initarray(type *t, ref DtBuilder dtb,Symbol *s,targ_size_t offset)
16051605
break;
16061606
} while (!endofarray());
16071607

1608-
dta.join(dtb, elemsize, dim, unknown);
1608+
dta.join(dtb, cast(uint)elemsize, cast(uint)dim, unknown);
16091609
dta.dtor();
16101610
}
16111611

@@ -1675,13 +1675,13 @@ Lagain:
16751675
assert(0);
16761676
}
16771677
ty = tym_conv(e.ET);
1678-
dtb.xoff(sa,e.EV.Voffset,ty);
1678+
dtb.xoff(sa, cast(uint)e.EV.Voffset, ty);
16791679
dsout += tysize(ty);
16801680
break;
16811681

16821682
case OPstring:
16831683
size = e.EV.Vstrlen;
1684-
dtb.abytes(e.ET.Tty, e.EV.Voffset, size, e.EV.Vstring, 0, 0);
1684+
dtb.abytes(e.ET.Tty, cast(uint)e.EV.Voffset, cast(uint)size, e.EV.Vstring, 0, 0);
16851685
dsout += tysize(e.ET.Tty);
16861686
break;
16871687

@@ -1718,7 +1718,7 @@ Lagain:
17181718
break;
17191719
}
17201720
dsout += size;
1721-
dtb.nbytes(size,p);
1721+
dtb.nbytes(cast(uint)size, p);
17221722
break;
17231723
}
17241724

@@ -1757,7 +1757,7 @@ Lagain:
17571757
list_append(&constructor_list,e);
17581758
e = null;
17591759
}
1760-
dtb.nzeros(type_size(t)); // leave a hole for it
1760+
dtb.nzeros(cast(uint)type_size(t)); // leave a hole for it
17611761
dsout += type_size(t);
17621762
goto ret2;
17631763
}
@@ -2499,7 +2499,7 @@ private int init_arraywithctor(Symbol *s)
24992499
if (/*sclass == SClocstat ||*/ sclass == SCstatic || sclass == SCglobal)
25002500
{
25012501
auto dtb = DtBuilder(0);
2502-
dtb.nzeros(elemsize * t.Tdim);
2502+
dtb.nzeros(cast(uint)(elemsize * t.Tdim));
25032503
dsout += elemsize * t.Tdim;
25042504
assert(!s.Sdt);
25052505
s.Sdt = dtb.finish();

dm/src/dmc/dnwc.d

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ private void nwc_outstatics()
819819
if (!s.Sdt)
820820
{
821821
auto dtb = DtBuilder(0);
822-
dtb.nzeros(type_size(s.Stype));
822+
dtb.nzeros(cast(uint)type_size(s.Stype));
823823
s.Sdt = dtb.finish();
824824
}
825825
outdata(s);
@@ -3120,7 +3120,7 @@ ret:
31203120
e = poptelem(e);
31213121
if (e.Eoper == OPsizeof)
31223122
{ e.Eoper = OPconst;
3123-
e.EV.Vlong = type_size(e.EV.Vsym.Stype);
3123+
e.EV.Vpointer = type_size(e.EV.Vsym.Stype);
31243124
}
31253125
if (e.Eoper == OPconst) // if fixed dimension
31263126
{
@@ -4036,7 +4036,7 @@ void fixdeclar(type *t)
40364036
size = 0; // defer any error message
40374037
else
40384038
size = type_size(tn);
4039-
if (type_chksize(t.Tdim * cast(uint) size))
4039+
if (type_chksize(cast(uint) t.Tdim * cast(uint) size))
40404040
t.Tdim = 1;
40414041
}
40424042
t.Tty = newtym |

0 commit comments

Comments
 (0)