From 32feee45a384fcaad4093c71dea64d23000541e6 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 4 Nov 2011 09:08:18 +0000 Subject: drop SCC on a variable when it has a non-function type --- compiler/coreSyn/CoreUtils.lhs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/compiler/coreSyn/CoreUtils.lhs b/compiler/coreSyn/CoreUtils.lhs index 601165e0f3..6bcf3fbde4 100644 --- a/compiler/coreSyn/CoreUtils.lhs +++ b/compiler/coreSyn/CoreUtils.lhs @@ -211,6 +211,15 @@ mkCoerce co expr -- annotation if possible. mkTick :: Tickish Id -> CoreExpr -> CoreExpr +mkTick t (Var x) + | isFunTy (idType x) = Tick t (Var x) + | otherwise + = if tickishCounts t + then if tickishScoped t && tickishCanSplit t + then Tick (mkNoScope t) (Var x) + else Tick t (Var x) + else Var x + mkTick t (Cast e co) = Cast (mkTick t e) co -- Move tick inside cast -- cgit v1.2.1