Mercurial > repos > blastem
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: |