diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/vm.nim | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim index ac2feac26..761186dc3 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -994,8 +994,10 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = let nb = regs[rb].node let nc = regs[rc].node if nb.kind != nc.kind: discard - elif (nb == nc) or (nb.kind == nkNilLit): ret = true - elif nb.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit + elif (nb == nc) or (nb.kind == nkNilLit): ret = true # intentional + elif sameConstant(nb, nc): ret = true + # this also takes care of procvar's, represented as nkTupleConstr, eg (nil, nil) + elif nb.kind == nkIntLit and nc.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit let tb = nb.getTyp let tc = nc.getTyp ret = tb.kind in PtrLikeKinds and tc.kind == tb.kind |