Skip to content

Commit b725592

Browse files
authored
more global cgstate to parameter cg (dlang#23012)
1 parent e8e25c0 commit b725592

11 files changed

Lines changed: 184 additions & 184 deletions

File tree

compiler/src/dmd/backend/arm/cod1.d

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ void getlvalue(ref CGstate cg,ref CodeBuilder cdb,ref code pcs,elem* e,regm_t ke
678678

679679
void Lptr(){
680680
if (config.flags3 & CFG3ptrchk)
681-
cod3_ptrchk(cdb, pcs, keepmsk); // validate pointer code
681+
cod3_ptrchk(cg, cdb, pcs, keepmsk); // validate pointer code
682682
}
683683

684684
//printf("fl: %s\n", fl_str(fl));
@@ -2246,7 +2246,7 @@ private void funccall(ref CGstate cg, ref CodeBuilder cdb, elem* e, uint numpara
22462246
if (s != tls_get_addr_sym)
22472247
{
22482248
//printf("call %s\n", s.Sident.ptr);
2249-
load_localgot(cdb);
2249+
load_localgot(cg,cdb);
22502250
cdbe.gencs1(INSTR.branch_imm(1, 0), 0, fl, s); // CALL extern
22512251
}
22522252
else
@@ -2272,7 +2272,7 @@ private void funccall(ref CGstate cg, ref CodeBuilder cdb, elem* e, uint numpara
22722272
assert(e1.Eoper == OPind);
22732273
elem* e11 = e1.E1;
22742274
tym_t e11ty = tybasic(e11.Ety);
2275-
load_localgot(cdb);
2275+
load_localgot(cg,cdb);
22762276

22772277
/* Mask of registers destroyed by the function call
22782278
*/
@@ -2642,14 +2642,14 @@ void loaddata(ref CGstate cg, ref CodeBuilder cdb, elem* e, ref regm_t outretreg
26422642
}
26432643
else
26442644
{
2645-
movregconst(cdb, reg, value, flags);
2645+
movregconst(cg, cdb, reg, value, flags);
26462646
flags = 0; // flags are already set
26472647
}
26482648
}
26492649
else if (sz == 16)
26502650
{
2651-
movregconst(cdb, findreg(forregs & INSTR.LSW), cast(targ_size_t)e.Vcent.lo, 64);
2652-
movregconst(cdb, findreg(forregs & INSTR.MSW), cast(targ_size_t)e.Vcent.hi, 64);
2651+
movregconst(cg, cdb, findreg(forregs & INSTR.LSW), cast(targ_size_t)e.Vcent.lo, 64);
2652+
movregconst(cg, cdb, findreg(forregs & INSTR.MSW), cast(targ_size_t)e.Vcent.hi, 64);
26532653
}
26542654
else
26552655
assert(0);

compiler/src/dmd/backend/arm/cod3.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1224,7 +1224,7 @@ void cod3_thunk(Symbol* sthunk,Symbol* sfunc,uint p,tym_t thisty,
12241224
{
12251225
localgot = null; // no local variables
12261226
CodeBuilder cdbgot; cdbgot.ctor();
1227-
load_localgot(cdbgot); // load GOT in EBX
1227+
load_localgot(cgstate,cdbgot); // load GOT in EBX
12281228
code* c1 = cdbgot.finish();
12291229
if (c1)
12301230
{

compiler/src/dmd/backend/arm/cod4.d

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ void cdeq(ref CGstate cg, ref CodeBuilder cdb,elem* e,ref regm_t pretregs)
136136
{
137137
getregs(cdb, cs.reg);
138138
const p = cast(targ_size_t*) &(e2.EV);
139-
movregconst(cdb,cs.reg,*p,sz == 8);
139+
movregconst(cg,cdb,cs.reg,*p,sz == 8);
140140
}
141141
else
142142
{
@@ -150,7 +150,7 @@ void cdeq(ref CGstate cg, ref CodeBuilder cdb,elem* e,ref regm_t pretregs)
150150
if (r >= 32)
151151
loadFloatRegConst(cdb,r,e2.EV.Vdouble,sz);
152152
else
153-
movregconst(cdb,r,*p,(sz == 8) ? 64 : 0);
153+
movregconst(cg,cdb,r,*p,(sz == 8) ? 64 : 0);
154154
storeToEA(cs,r,sz);
155155
cdb.gen(&cs);
156156
}
@@ -1501,21 +1501,21 @@ L3:
15011501
else if (I64 && sz == 8)
15021502
{
15031503
assert(!flag);
1504-
movregconst(cdb,reg,1,64|8); // MOV reg,1
1504+
movregconst(cg,cdb,reg,1,64|8); // MOV reg,1
15051505
nop = gennop(nop);
15061506
genjmp(cdb,jop,FL.code,cast(block*) nop); // Jtrue nop
15071507
// MOV reg,0
1508-
movregconst(cdb,reg,0,(pretregs & mPSW) ? 64|8 : 64);
1508+
movregconst(cg,cdb,reg,0,(pretregs & mPSW) ? 64|8 : 64);
15091509
cg.regcon.immed.mval &= ~mask(reg);
15101510
}
15111511
else
15121512
{
15131513
assert(!flag);
1514-
movregconst(cdb,reg,1,8); // MOV reg,1
1514+
movregconst(cg,cdb,reg,1,8); // MOV reg,1
15151515
nop = gennop(nop);
15161516
genjmp(cdb,jop,FL.code,cast(block*) nop); // Jtrue nop
15171517
// MOV reg,0
1518-
movregconst(cdb,reg,0,(pretregs & mPSW) ? 8 : 0);
1518+
movregconst(cg,cdb,reg,0,(pretregs & mPSW) ? 8 : 0);
15191519
cg.regcon.immed.mval &= ~mask(reg);
15201520
}
15211521
pretregs = retregs;

compiler/src/dmd/backend/cgen.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ reg_t regwithvalue(ref CodeBuilder cdb,regm_t regm,targ_size_t value, regm_t fla
241241
regm_t save = cgstate.regcon.immed.mval;
242242
const reg = allocreg(cdb,regm,TYint); // allocate register
243243
cgstate.regcon.immed.mval = save;
244-
movregconst(cdb,reg,value,flags); // store value into reg
244+
movregconst(cgstate,cdb,reg,value,flags); // store value into reg
245245
return reg;
246246
}
247247

compiler/src/dmd/backend/x86/cg87.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2994,7 +2994,7 @@ private void cdd_u64_I32(ref CGstate cg,ref CodeBuilder cdb, elem* e, ref regm_t
29942994
allocreg(cdb,retregs,tym);
29952995
const reg = findreglsw(retregs);
29962996
reg_t reg2 = findregmsw(retregs);
2997-
movregconst(cdb,reg2,0x80000000,0);
2997+
movregconst(cg,cdb,reg2,0x80000000,0);
29982998
getregs(cdb,mask(reg2) | mAX);
29992999

30003000
cdb.genfltreg(0xC7,0,0);
@@ -3078,7 +3078,7 @@ private void cdd_u64_I64(ref CGstate cg,ref CodeBuilder cdb, elem* e, ref regm_t
30783078
const reg = allocreg(cdb,retregs,tym);
30793079
regm_t regm2 = ALLREGS & ~retregs & ~mAX;
30803080
const reg2 = allocreg(cdb,regm2,tym);
3081-
movregconst(cdb,reg2,0x80000000,0);
3081+
movregconst(cg,cdb,reg2,0x80000000,0);
30823082
getregs(cdb,mask(reg2) | mAX);
30833083

30843084
cdb.genfltreg(0xC7,0,0);

compiler/src/dmd/backend/x86/cgcod.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ void codgen(Symbol* sfunc)
230230
}
231231

232232
// See which variables we can put into registers
233-
cg.allregs |= cod3_useBP(); // use EBP as general purpose register
233+
cg.allregs |= cod3_useBP(cgstate); // use EBP as general purpose register
234234

235235
// If pic code, but EBX was never needed
236236
if (!(cg.allregs & mask(PICREG)) && !cg.gotref)
@@ -1458,7 +1458,7 @@ private void blcodgen(ref CGstate cg, block* bl)
14581458
cg.refparam = 0;
14591459
assert((cg.regcon.cse.mops & cg.regcon.cse.mval) == cg.regcon.cse.mops);
14601460

1461-
outblkexitcode(cdb, bl, anyspill, sflsave, &cg.retsym, mfuncregsave);
1461+
outblkexitcode(cg, cdb, bl, anyspill, sflsave, &cg.retsym, mfuncregsave);
14621462
bl.Bcode = cdb.finish();
14631463

14641464
for (int i = 0; i < anyspill; i++)

compiler/src/dmd/backend/x86/cgxmm.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ void movxmmconst(ref CodeBuilder cdb, reg_t xreg, tym_t ty, Vconst* pev, regm_t
123123
u.l[1] = 0;
124124
u.s = value;
125125
targ_long* p = &u.l[0];
126-
movregconst(cdb,r,p[0],0);
126+
movregconst(cgstate,cdb,r,p[0],0);
127127
cdb.genfltreg(STO,r,0); // MOV floatreg,r
128-
movregconst(cdb,r,p[1],0);
128+
movregconst(cgstate,cdb,r,p[1],0);
129129
cdb.genfltreg(STO,r,4); // MOV floatreg+4,r
130130

131131
const op = xmmload(TYdouble, true);

compiler/src/dmd/backend/x86/cod1.d

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,7 @@ void getlvalue(ref CGstate cg,ref CodeBuilder cdb,ref code pcs,elem* e,regm_t ke
936936

937937
void Lptr(){
938938
if (config.flags3 & CFG3ptrchk)
939-
cod3_ptrchk(cdb, pcs, keepmsk); // validate pointer code
939+
cod3_ptrchk(cg, cdb, pcs, keepmsk); // validate pointer code
940940
}
941941

942942

@@ -2931,7 +2931,7 @@ void callclib(ref CGstate cg, ref CodeBuilder cdb, elem* e, uint clib, ref regm_
29312931
*/
29322932
if (config.flags3 & CFG3pic)
29332933
{
2934-
load_localgot(cdb); // EBX gets set to this value
2934+
load_localgot(cg,cdb); // EBX gets set to this value
29352935
}
29362936
}
29372937

@@ -3833,7 +3833,7 @@ void cdfunc(ref CGstate cg, ref CodeBuilder cdb, elem* e, ref regm_t pretregs)
38333833
if (I64 && config.exe != EX_WIN64 && e.Eflags & EFLAGS_variadic)
38343834
{
38353835
getregs(cdb,mAX);
3836-
movregconst(cdb,AX,xmmcnt,1);
3836+
movregconst(cg,cdb,AX,xmmcnt,1);
38373837
keepmsk |= mAX;
38383838
}
38393839

@@ -3995,7 +3995,7 @@ private void funccall(ref CGstate cg, ref CodeBuilder cdb, elem* e, uint numpara
39953995
if (s != tls_get_addr_sym)
39963996
{
39973997
//printf("call %s\n", s.Sident.ptr);
3998-
load_localgot(cdb);
3998+
load_localgot(cg,cdb);
39993999
cdbe.gencs(0xE8, 0, fl, s); // CALL extern
40004000
}
40014001
else if (I64)
@@ -4026,7 +4026,7 @@ private void funccall(ref CGstate cg, ref CodeBuilder cdb, elem* e, uint numpara
40264026
elem* e11 = e1.E1;
40274027
tym_t e11ty = tybasic(e11.Ety);
40284028
assert(!I16 || (e11ty == (farfunc ? TYfptr : TYnptr)));
4029-
load_localgot(cdb);
4029+
load_localgot(cg,cdb);
40304030
if (config.exe & (EX_LINUX | EX_FREEBSD | EX_OPENBSD | EX_SOLARIS)) // 32 bit only
40314031
{
40324032
if (config.flags3 & CFG3pic)
@@ -4697,7 +4697,7 @@ void pushParams(ref CGstate cg, ref CodeBuilder cdb, elem* e, uint stackalign, t
46974697
{
46984698
getregs_imm(cdb, mCX | retregs);
46994699
// MOV CX,sz/2
4700-
movregconst(cdb, CX, npushes, 0);
4700+
movregconst(cg,cdb, CX, npushes, 0);
47014701
if (!doneoff)
47024702
{ // This should be done when
47034703
// reg is loaded. Fix later
@@ -5445,7 +5445,7 @@ void loaddata(ref CGstate cg, ref CodeBuilder cdb, elem* e, ref regm_t outretreg
54455445
}
54465446
else
54475447
{
5448-
movregconst(cdb, reg, value, flags);
5448+
movregconst(cg, cdb, reg, value, flags);
54495449
flags = 0; // flags are already set
54505450
}
54515451
}
@@ -5457,22 +5457,22 @@ void loaddata(ref CGstate cg, ref CodeBuilder cdb, elem* e, ref regm_t outretreg
54575457
regm_t mswflags = 0;
54585458
if (forregs & mES)
54595459
{
5460-
movregconst(cdb, reg, msw, 0); // MOV reg,segment
5460+
movregconst(cg, cdb, reg, msw, 0); // MOV reg,segment
54615461
genregs(cdb, 0x8E, 0, reg); // MOV ES,reg
54625462
msw = lsw; // MOV reg,offset
54635463
}
54645464
else
54655465
{
54665466
sreg = findreglsw(forregs);
5467-
movregconst(cdb, sreg, lsw, 0);
5467+
movregconst(cg, cdb, sreg, lsw, 0);
54685468
reg = findregmsw(forregs);
54695469
/* Decide if we need to set flags when we load msw */
54705470
if (flags && (msw && msw|lsw || !(msw|lsw)))
54715471
{ mswflags = mPSW;
54725472
flags = 0;
54735473
}
54745474
}
5475-
movregconst(cdb, reg, msw, mswflags);
5475+
movregconst(cg, cdb, reg, msw, mswflags);
54765476
}
54775477
else if (sz == 8)
54785478
{
@@ -5486,34 +5486,34 @@ void loaddata(ref CGstate cg, ref CodeBuilder cdb, elem* e, ref regm_t outretreg
54865486
*/
54875487
regm_t rm = ALLREGS;
54885488
const r = allocreg(cdb, rm, TYint); // allocate scratch register
5489-
movregconst(cdb, r, p[0], 0);
5489+
movregconst(cg, cdb, r, p[0], 0);
54905490
cdb.genfltreg(0x89, r, 0); // MOV floatreg,r
5491-
movregconst(cdb, r, p[1], 0);
5491+
movregconst(cg, cdb, r, p[1], 0);
54925492
cdb.genfltreg(0x89, r, 4); // MOV floatreg+4,r
54935493

54945494
const opmv = xmmload(tym);
54955495
cdb.genxmmreg(opmv, reg, 0, tym); // MOVSS/MOVSD XMMreg,floatreg
54965496
}
54975497
else
54985498
{
5499-
movregconst(cdb, findreglsw(forregs) ,p[0], 0);
5500-
movregconst(cdb, findregmsw(forregs) ,p[1], 0);
5499+
movregconst(cg, cdb, findreglsw(forregs) ,p[0], 0);
5500+
movregconst(cg, cdb, findregmsw(forregs) ,p[1], 0);
55015501
}
55025502
}
55035503
else
55045504
{ targ_short* p = &e.Vshort; // point to start of Vdouble
55055505

55065506
assert(reg == AX);
5507-
movregconst(cdb, AX, p[3], 0); // MOV AX,p[3]
5508-
movregconst(cdb, DX, p[0], 0);
5509-
movregconst(cdb, CX, p[1], 0);
5510-
movregconst(cdb, BX, p[2], 0);
5507+
movregconst(cg, cdb, AX, p[3], 0); // MOV AX,p[3]
5508+
movregconst(cg, cdb, DX, p[0], 0);
5509+
movregconst(cg, cdb, CX, p[1], 0);
5510+
movregconst(cg, cdb, BX, p[2], 0);
55115511
}
55125512
}
55135513
else if (I64 && sz == 16)
55145514
{
5515-
movregconst(cdb, findreglsw(forregs), cast(targ_size_t)e.Vcent.lo, 64);
5516-
movregconst(cdb, findregmsw(forregs), cast(targ_size_t)e.Vcent.hi, 64);
5515+
movregconst(cg, cdb, findreglsw(forregs), cast(targ_size_t)e.Vcent.lo, 64);
5516+
movregconst(cg, cdb, findregmsw(forregs), cast(targ_size_t)e.Vcent.hi, 64);
55175517
}
55185518
else
55195519
assert(0);

0 commit comments

Comments
 (0)