summaryrefslogtreecommitdiff
path: root/ghc/compiler/absCSyn/PprAbsC.lhs
diff options
context:
space:
mode:
authorsof <unknown>2002-02-02 06:47:38 +0000
committersof <unknown>2002-02-02 06:47:38 +0000
commit8f9254738df67b6bca4c7588eadde902956890ce (patch)
treef9608426ef7c426e434908daaed2040487c286dd /ghc/compiler/absCSyn/PprAbsC.lhs
parent773fe27f9c8873a8ea51c04b380088acb6f8fe02 (diff)
downloadhaskell-8f9254738df67b6bca4c7588eadde902956890ce.tar.gz
[project @ 2002-02-02 06:47:38 by sof]
pprFCall: avoid/reduce name-capture problem (as was, safe calling the C function id() would break.)
Diffstat (limited to 'ghc/compiler/absCSyn/PprAbsC.lhs')
-rw-r--r--ghc/compiler/absCSyn/PprAbsC.lhs6
1 files changed, 4 insertions, 2 deletions
diff --git a/ghc/compiler/absCSyn/PprAbsC.lhs b/ghc/compiler/absCSyn/PprAbsC.lhs
index 6ac1449673..3d322db749 100644
--- a/ghc/compiler/absCSyn/PprAbsC.lhs
+++ b/ghc/compiler/absCSyn/PprAbsC.lhs
@@ -982,9 +982,11 @@ pprFCall call@(CCall (CCallSpec target cconv safety)) uniq args results vol_regs
]
where
(pp_saves, pp_restores) = ppr_vol_regs vol_regs
+ ppr_uniq_token = text "tok_" <> ppr uniq
(pp_save_context, pp_restore_context)
- | playSafe safety = ( text "{ I_ id; SUSPEND_THREAD(id);"
- , text "RESUME_THREAD(id);}"
+ | playSafe safety = ( text "{ I_" <+> ppr_uniq_token <>
+ text "; SUSPEND_THREAD" <> parens ppr_uniq_token <> semi
+ , text "RESUME_THREAD" <> parens ppr_uniq_token <> text ";}"
)
| otherwise = ( pp_basic_saves $$ pp_saves,
pp_basic_restores $$ pp_restores)