Fix 6502 pointer-field augmented assignment clobbering scratch pointer

Fixes #245
This commit is contained in:
Irmen de Jong committed 2026-09-21 22:51:11 +02:00
1 parent 044a4a1789
commit 2d070aaec4
9 files changed
+598 -5

No files matched your search

@@ -222,7 +222,7 @@ internal class AssignmentGen(private val codeGen: IRCodeGen, private val exprGen
val (addressReg, fieldOffset) = codeGen.evaluatePointerAddressIntoReg(inplaceInstrs, pointerDeref)
val oldvalueReg = codeGen.registers.next(targetDt)
if((augAssign.operator=="+=" || augAssign.operator=="-=") && value.asConstInteger()==1 || value.asConstInteger()==2) {
if((augAssign.operator=="+=" || augAssign.operator=="-=") && (value.asConstInteger()==1 || value.asConstInteger()==2)) {
// INC/DEC optimization instead of ADD/SUB
loadfield(inplaceInstrs, addressReg, fieldOffset, targetDt, oldvalueReg)
@@ -819,7 +819,6 @@ internal class AssignmentGen(private val codeGen: IRCodeGen, private val exprGen
valueFpRegister: Int
) {
val fixedIndex = targetArray.index.asConstInteger()
val arrayLength = codeGen.symbolTable.getLength(variable)
if(zero) {
if(fixedIndex!=null) {
val chunk = IRCodeChunk(null, null).also {