diff options
author | simonpj@microsoft.com <unknown> | 2010-09-22 13:37:41 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2010-09-22 13:37:41 +0000 |
commit | 9e6ca39b5e90b7a4acc755e3e95cc3ef60940070 (patch) | |
tree | 44eac4d23601a32cca0855477fd96041be26b19a /compiler/main/Packages.lhs | |
parent | 2d874edca55c4f1761a111dc068d17b319cf707e (diff) | |
download | haskell-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.lhs | 3 |
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 |