diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2024-02-06 13:24:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-06 06:24:02 +0100 |
commit | 4b67cccf5097cc5d2a592bf78ae2746cc3ee8959 (patch) | |
tree | f3c2f1fb8c0ee725ffe411535c63d9ec1bf326e5 /compiler | |
parent | 3550c907decd206d74c8b5fc3008a8b731491bbe (diff) | |
download | Nim-4b67cccf5097cc5d2a592bf78ae2746cc3ee8959.tar.gz |
fixes regression #23280; Operations on inline toOpenArray len return a wrong result (#23285)
fixes #23280
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/ccgexprs.nim | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 66a4d9a93..704ca82e2 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -611,7 +611,7 @@ proc binaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) = if t.kind == tyInt64: prc64[m] else: prc[m]) putIntoDest(p, d, e, "($#)($#)" % [getTypeDesc(p.module, e.typ), res]) else: - let res = "($1)($2 $3 $4)" % [getTypeDesc(p.module, e.typ), rdLoc(a), rope(opr[m]), rdLoc(b)] + let res = "($1)(($2) $3 ($4))" % [getTypeDesc(p.module, e.typ), rdLoc(a), rope(opr[m]), rdLoc(b)] putIntoDest(p, d, e, res) proc unaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) = @@ -1857,9 +1857,9 @@ proc genArrayLen(p: BProc, e: PNode, d: var TLoc, op: TMagic) = if optBoundsCheck in p.options: genBoundsCheck(p, m, b, c) if op == mHigh: - putIntoDest(p, d, e, ropecg(p.module, "($2)-($1)", [rdLoc(b), rdLoc(c)])) + putIntoDest(p, d, e, ropecg(p.module, "(($2)-($1))", [rdLoc(b), rdLoc(c)])) else: - putIntoDest(p, d, e, ropecg(p.module, "($2)-($1)+1", [rdLoc(b), rdLoc(c)])) + putIntoDest(p, d, e, ropecg(p.module, "(($2)-($1)+1)", [rdLoc(b), rdLoc(c)])) else: if not reifiedOpenArray(a): if op == mHigh: unaryExpr(p, e, d, "($1Len_0-1)") |