mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 14:00:35 +00:00
fixes #576
This commit is contained in:
@@ -231,7 +231,8 @@ type
|
||||
sfVolatile, # variable is volatile
|
||||
sfRegister, # variable should be placed in a register
|
||||
sfPure, # object is "pure" that means it has no type-information
|
||||
|
||||
# enum is "pure", its values need qualified access
|
||||
# variable is "pure"; it's an explicit "global"
|
||||
sfNoSideEffect, # proc has no side effects
|
||||
sfSideEffect, # proc may have side effects; cannot prove it has none
|
||||
sfMainModule, # module is the main module
|
||||
|
||||
@@ -151,8 +151,9 @@ proc genSingleVar(p: BProc, a: PNode) =
|
||||
var targetProc = p
|
||||
var immediateAsgn = a.sons[2].kind != nkEmpty
|
||||
if sfGlobal in v.flags:
|
||||
if v.owner.kind != skModule:
|
||||
targetProc = p.module.postInitProc
|
||||
if sfPure in v.flags:
|
||||
# v.owner.kind != skModule:
|
||||
targetProc = p.module.preInitProc
|
||||
assignGlobalVar(targetProc, v)
|
||||
# XXX: be careful here.
|
||||
# Global variables should not be zeromem-ed within loops
|
||||
|
||||
@@ -569,6 +569,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
||||
of wGlobal:
|
||||
noVal(it)
|
||||
incl(sym.flags, sfGlobal)
|
||||
incl(sym.flags, sfPure)
|
||||
of wMerge:
|
||||
noval(it)
|
||||
incl(sym.flags, sfMerge)
|
||||
|
||||
Reference in New Issue
Block a user