Repository : http://darcs.haskell.org/ghc.git/
On branch : master https://github.com/ghc/ghc/commit/5734f7afcc2b9acf857f8e0f745185bf01b91148 >--------------------------------------------------------------- commit 5734f7afcc2b9acf857f8e0f745185bf01b91148 Author: Ian Lynagh <[email protected]> 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 _______________________________________________ ghc-commits mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-commits
