fix arc global variable issues (#20759)

* temp

* unsure
This commit is contained in:
Bung 2022-11-05 19:22:16 +08:00 • committed by GitHub
commit a3d32a4176
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 3 deletions

View file

@ -490,8 +490,11 @@ proc pVarTopLevel(v: PNode; c: var Con; s: var Scope; res: PNode) =
res.add newTree(nkFastAsgn, v, genDefaultCall(v.typ, c, v.info)) res.add newTree(nkFastAsgn, v, genDefaultCall(v.typ, c, v.info))
elif sfThread notin v.sym.flags and sfCursor notin v.sym.flags: elif sfThread notin v.sym.flags and sfCursor notin v.sym.flags:
# do not destroy thread vars for now at all for consistency. # do not destroy thread vars for now at all for consistency.
if sfGlobal in v.sym.flags and s.parent == nil: #XXX: Rethink this logic (see tarcmisc.test2) if sfGlobal in v.sym.flags: #XXX: Rethink this logic (see tarcmisc.test2)
c.graph.globalDestructors.add c.genDestroy(v) if c.inLoop > 0:
s.final.add c.genDestroy(v)
else:
c.graph.globalDestructors.add c.genDestroy(v)
else: else:
s.final.add c.genDestroy(v) s.final.add c.genDestroy(v)

View file

@ -124,7 +124,7 @@ proc test(count: int) =
test(3) test(3)
proc test2(count: int) = proc test2(count: int) =
#block: #XXX: Fails with block currently block: #XXX: Fails with block currently
var v {.global.} = newVariable(20) var v {.global.} = newVariable(20)
var count = count - 1 var count = count - 1