[commit: ghc] master: Fix -dynamic-too on Windows (5734f7a)
Ian Lynagh
igloo at earth.li
Mon May 20 19:00:06 CEST 2013
Repository : http://darcs.haskell.org/ghc.git/
On branch : master
https://github.com/ghc/ghc/commit/5734f7afcc2b9acf857f8e0f745185bf01b91148
>---------------------------------------------------------------
commit 5734f7afcc2b9acf857f8e0f745185bf01b91148
Author: Ian Lynagh <ian at well-typed.com>
Date: Mon May 20 17:06:01 2013 +0100
Fix -dynamic-too on Windows
If we're building the dynamic way too, then hasCafRefs needs to check
whether the dynamic way would use a dynamic name.
>---------------------------------------------------------------
compiler/main/TidyPgm.lhs | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/compiler/main/TidyPgm.lhs b/compiler/main/TidyPgm.lhs
index 1c6bb39..6213663 100644
--- a/compiler/main/TidyPgm.lhs
+++ b/compiler/main/TidyPgm.lhs
@@ -1180,7 +1180,20 @@ hasCafRefs dflags this_pkg this_mod p arity expr
| otherwise = NoCafRefs
where
mentions_cafs = isFastTrue (cafRefsE dflags p expr)
- is_dynamic_name = isDllName dflags this_pkg this_mod
+ is_dynamic_name n = if gopt Opt_BuildDynamicToo dflags
+ then -- If we're building the dynamic way too,
+ -- then we need to check whether it's a
+ -- dynamic name there too. Note that this
+ -- means that the vanila code is more
+ -- pessimistic on Windows when -dynamic-too
+ -- is used, but the alternative is that
+ -- -dynamic-too is unusable on Windows
+ -- as even the interfaces in the integer
+ -- package don't match.
+ is_dynamic_name' dflags n ||
+ is_dynamic_name' (doDynamicToo dflags) n
+ else is_dynamic_name' dflags n
+ is_dynamic_name' dflags' = isDllName dflags' this_pkg this_mod
is_caf = not (arity > 0 || rhsIsStatic (targetPlatform dflags) is_dynamic_name expr)
-- NB. we pass in the arity of the expression, which is expected
More information about the ghc-commits
mailing list