diff options
author | Araq <rumpf_a@web.de> | 2015-04-24 12:27:39 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-04-24 12:35:13 +0200 |
commit | c1730e1eadb4ad0090a901d578840db281cb4715 (patch) | |
tree | f5a2433a4d826b941c684bd63046aebf18ff35a7 /compiler | |
parent | 3317faf80da14463fd75e9b7543d957782f73581 (diff) | |
download | Nim-c1730e1eadb4ad0090a901d578840db281cb4715.tar.gz |
fixes #2335
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/ccgstmts.nim | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index c1e6b01ae..b6572d960 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -1001,12 +1001,19 @@ proc genAsmStmt(p: BProc, t: PNode) = else: lineF(p, cpsStmts, CC[cCompiler].asmStmtFrmt, [s]) +proc determineSection(n: PNode): TCFileSection = + result = cfsProcHeaders + if n.len >= 1 and n.sons[0].kind in {nkStrLit..nkTripleStrLit}: + if n.sons[0].strVal.startsWith("/*TYPESECTION*/"): result = cfsTypes + elif n.sons[0].strVal.startsWith("/*VARSECTION*/"): result = cfsVars + proc genEmit(p: BProc, t: PNode) = var s = genAsmOrEmitStmt(p, t.sons[1]) if p.prc == nil: # top level emit pragma? - genCLineDir(p.module.s[cfsProcHeaders], t.info) - add(p.module.s[cfsProcHeaders], s) + let section = determineSection(t[1]) + genCLineDir(p.module.s[section], t.info) + add(p.module.s[section], s) else: genLineDir(p, t) line(p, cpsStmts, s) |