comparison cpu_dsl.py @ 1699:93103ad9d7f7

Fix constant propagation to a non-ephemeral destination in CPU DSL
author Michael Pavone <pavone@retrodev.com>
date Fri, 25 Jan 2019 14:13:46 -0800
parents 90272218469c
children e4b4e21a37fa
comparison
equal deleted inserted replaced
1698:90272218469c 1699:93103ad9d7f7
473 maybeLocal = parent.resolveLocal(dst) 473 maybeLocal = parent.resolveLocal(dst)
474 if maybeLocal: 474 if maybeLocal:
475 dst = maybeLocal 475 dst = maybeLocal
476 parent.regValues[dst] = result 476 parent.regValues[dst] = result
477 if prog.isReg(dst): 477 if prog.isReg(dst):
478 output.append(_opMap['mov'].generate(otype, prog, procParams, self.params)) 478 shortProc = (procParams[0], procParams[-1])
479 shortParams = (self.params[0], self.params[-1])
480 output.append(_opMap['mov'].generate(otype, prog, shortProc, shortParams))
479 else: 481 else:
480 output.append(opDef.generate(otype, prog, procParams, self.params)) 482 output.append(opDef.generate(otype, prog, procParams, self.params))
481 elif self.op in prog.subroutines: 483 elif self.op in prog.subroutines:
482 prog.subroutines[self.op].inline(prog, procParams, output, otype, parent) 484 prog.subroutines[self.op].inline(prog, procParams, output, otype, parent)
483 else: 485 else: