Fixed handling swap in vmgen

This commit is contained in:
Felix Krause 2014-06-25 17:01:22 +02:00
commit b090b7ea4d

View file

@ -787,10 +787,12 @@ proc genMagic(c: PCtx; n: PNode; dest: var TDest) =
c.freeTemp(tmp) c.freeTemp(tmp)
of mSwap: of mSwap:
unused(n, dest) unused(n, dest)
var d = c.genx(n.sons[1]) var
var tmp = c.genx(n.sons[2]) d1 = c.genx(n.sons[1])
c.gABC(n, opcSwap, d, tmp) d2 = c.genx(n.sons[2])
c.freeTemp(tmp) c.gABC(n, opcSwap, d1, d2)
c.genAsgnPatch(n.sons[1], d1)
c.genAsgnPatch(n.sons[2], d2)
of mIsNil: genUnaryABC(c, n, dest, opcIsNil) of mIsNil: genUnaryABC(c, n, dest, opcIsNil)
of mCopyStr: of mCopyStr:
if dest < 0: dest = c.getTemp(n.typ) if dest < 0: dest = c.getTemp(n.typ)