summaryrefslogtreecommitdiff
path: root/compiler/main/Packages.lhs
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2010-09-22 13:37:41 +0000
committersimonpj@microsoft.com <unknown>2010-09-22 13:37:41 +0000
commit9e6ca39b5e90b7a4acc755e3e95cc3ef60940070 (patch)
tree44eac4d23601a32cca0855477fd96041be26b19a /compiler/main/Packages.lhs
parent2d874edca55c4f1761a111dc068d17b319cf707e (diff)
downloadhaskell-9e6ca39b5e90b7a4acc755e3e95cc3ef60940070.tar.gz
Fix an ASSERT failure with profiling
The problem arose with this kind of thing x = (,) (scc "blah" Nothing) Then 'x' is marked NoCafRefs by CoreTidy, becuase it has arity 1, and doesn't mention any caffy things. That in turns means that CorePrep must not float out the sat binding to give sat = scc "blah" Nothing x = (,) sat Rather we must generate x = \eta. let sat = scc "blah" Nothing in (,) sat eta URGH! This Caf stuff is such a mess.
Diffstat (limited to 'compiler/main/Packages.lhs')
-rw-r--r--compiler/main/Packages.lhs3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/main/Packages.lhs b/compiler/main/Packages.lhs
index a940f99121..b080b95b1a 100644
--- a/compiler/main/Packages.lhs
+++ b/compiler/main/Packages.lhs
@@ -947,6 +947,9 @@ missingDependencyMsg (Just parent)
-- | Will the 'Name' come from a dynamically linked library?
isDllName :: PackageId -> Name -> Bool
+-- Despite the "dll", I think this function just means that
+-- the synbol comes from another dynamically-linked package,
+-- and applies on all platforms, not just Windows
isDllName this_pkg name
| opt_Static = False
| Just mod <- nameModule_maybe name = modulePackageId mod /= this_pkg