summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2023-07-02 20:57:10 +0200
committerGitHub <noreply@github.com>2023-07-02 20:57:10 +0200
commit83a5865024cf391137fcbd4e5ed195cda969ed88 (patch)
tree20f325252487aa62f54b24cb2eaf0493807c06c1
parentaedb4c26deb91b1f9e3839475386c8e173e3598e (diff)
downloadNim-83a5865024cf391137fcbd4e5ed195cda969ed88.tar.gz
fixes #22200 (#22206)
* fixes #22200

* typo
-rw-r--r--compiler/varpartitions.nim4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/varpartitions.nim b/compiler/varpartitions.nim
index ad8dd245c..6598ef508 100644
--- a/compiler/varpartitions.nim
+++ b/compiler/varpartitions.nim
@@ -824,6 +824,10 @@ proc computeLiveRanges(c: var Partitions; n: PNode) =
       if vid >= 0:
         if n[1].kind == nkSym and (c.s[vid].reassignedTo == 0 or c.s[vid].reassignedTo == n[1].sym.id):
           c.s[vid].reassignedTo = n[1].sym.id
+          if c.inConditional > 0 and c.inLoop > 0:
+            # bug #22200: live ranges with loops and conditionals are too
+            # complex for our current analysis, so we prevent the cursorfication.
+            c.s[vid].flags.incl isConditionallyReassigned
         else:
           markAsReassigned(c, vid)