From 7303c3292f42be78555f7a7241f0c46634557d37 Mon Sep 17 00:00:00 2001 From: Araq Date: Mon, 2 Jun 2014 19:03:21 +0200 Subject: [PATCH] fixed codegen for barriers --- compiler/lowerings.nim | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/lowerings.nim b/compiler/lowerings.nim index 2fff4a6f1c..af4daf7857 100644 --- a/compiler/lowerings.nim +++ b/compiler/lowerings.nim @@ -211,8 +211,13 @@ proc createWrapperProc(f: PNode; threadParam, argsParam: PSym; varSection, call, barrier, prom: PNode; spawnKind: TSpawnResult): PSym = var body = newNodeI(nkStmtList, f.info) + var threadLocalBarrier: PSym if barrier != nil: - body.add callCodeGenProc("barrierEnter", barrier) + var varSection = newNodeI(nkVarSection, barrier.info) + threadLocalBarrier = addLocalVar(varSection, argsParam.owner, + barrier.typ, barrier) + body.add varSection + body.add callCodeGenProc("barrierEnter", threadLocalBarrier.newSymNode) var threadLocalProm: PSym if spawnKind == srByVar: threadLocalProm = addLocalVar(varSection, argsParam.owner, prom.typ, prom) @@ -244,7 +249,7 @@ proc createWrapperProc(f: PNode; threadParam, argsParam: PSym; else: body.add call if barrier != nil: - body.add callCodeGenProc("barrierLeave", barrier) + body.add callCodeGenProc("barrierLeave", threadLocalBarrier.newSymNode) var params = newNodeI(nkFormalParams, f.info) params.add emptyNode