Skip to content

Commit 4ad88c4

Browse files
authored
successfully run exe1.c elemi() test (dlang#20969)
1 parent d1f5972 commit 4ad88c4

File tree

1 file changed

+6
-5
lines changed
  • compiler/src/dmd/backend/arm

1 file changed

+6
-5
lines changed

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1714,15 +1714,19 @@ void cdbyteint(ref CGstate cg, ref CodeBuilder cdb,elem* e,ref regm_t pretregs)
17141714
}
17151715

17161716
//printf("cdbyteint(e = %p, pretregs = %s\n", e, regm_str(pretregs));
1717-
char op = e.Eoper;
1717+
const op = e.Eoper;
17181718
elem* e1 = e.E1;
17191719
if (e1.Eoper == OPcomma)
17201720
docommas(cdb,e1);
17211721

1722+
retregs = pretregs & cg.allregs;
1723+
if (retregs == 0)
1724+
retregs = cg.allregs;
1725+
17221726
if (e1.Eoper == OPvar || (e1.Eoper == OPind && !e1.Ecount))
17231727
{
17241728
code cs;
1725-
getlvalue(cdb,cs,e,0,RM.load);
1729+
getlvalue(cdb,cs,e1,0,RM.load);
17261730
Extend extend = OPu8_16 ? Extend.UXTB : Extend.SXTB;
17271731
cs.Sextend = cast(ubyte)((cs.Sextend & 0x100) | extend);
17281732
reg_t reg = allocreg(cdb,retregs,TYint);
@@ -1734,9 +1738,6 @@ void cdbyteint(ref CGstate cg, ref CodeBuilder cdb,elem* e,ref regm_t pretregs)
17341738
}
17351739

17361740
size = tysize(e.Ety);
1737-
retregs = pretregs & cg.allregs;
1738-
if (retregs == 0)
1739-
retregs = cg.allregs;
17401741
retregs |= pretregs & mPSW;
17411742
pretregs &= ~mPSW;
17421743

0 commit comments

Comments
 (0)