summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonpj <unknown>2001-11-22 12:22:42 +0000
committersimonpj <unknown>2001-11-22 12:22:42 +0000
commita88cde3915095d33b283cbbf7fd83cd08558d609 (patch)
tree7cc03b511e26370ef1fdaba923c8c6cffafa1e7e
parent8f877d355000d6a3304722cb49ec2c21e73e3a0e (diff)
downloadhaskell-a88cde3915095d33b283cbbf7fd83cd08558d609.tar.gz
[project @ 2001-11-22 12:22:42 by simonpj]
Inlining pragma buglet
-rw-r--r--ghc/compiler/simplCore/SimplMonad.lhs6
1 files changed, 4 insertions, 2 deletions
diff --git a/ghc/compiler/simplCore/SimplMonad.lhs b/ghc/compiler/simplCore/SimplMonad.lhs
index cfd606dce1..deae4778ea 100644
--- a/ghc/compiler/simplCore/SimplMonad.lhs
+++ b/ghc/compiler/simplCore/SimplMonad.lhs
@@ -868,7 +868,7 @@ gentle we are being.
activeInline :: SimplEnv -> OutId -> OccInfo -> Bool
activeInline env id occ
= case getMode env of
- SimplGently -> isOneOcc occ
+ SimplGently -> isAlwaysActive prag && isOneOcc occ
-- No inlining at all when doing gentle stuff,
-- except for things that occur once
-- The reason is that too little clean-up happens if you
@@ -884,7 +884,9 @@ activeInline env id occ
-- and they are now constructed as Compulsory unfoldings (in MkId)
-- so they'll happen anyway.
- SimplPhase n -> isActive n (idInlinePragma id)
+ SimplPhase n -> isActive n prag
+ where
+ prag = idInlinePragma id
-- Belongs in BasicTypes; this frag occurs in OccurAnal too
isOneOcc (OneOcc _ _) = True