diff --git a/ghc/compiler/basicTypes/Module.lhs b/ghc/compiler/basicTypes/Module.lhs
index 1d6100a80fa01a0ddb63cfd02626facc190c0846..ead105af48e81805b883ea4a7eb170b1710b43af 100644
--- a/ghc/compiler/basicTypes/Module.lhs
+++ b/ghc/compiler/basicTypes/Module.lhs
@@ -21,7 +21,7 @@ module Module
     , mkVanillaModule	    -- :: ModuleName -> Module
     , mkThisModule	    -- :: ModuleName -> Module
     , mkPrelModule          -- :: UserString -> Module
-
+    
     , isDynamicModule       -- :: Module -> Bool
     , isLibModule
 
@@ -192,10 +192,16 @@ pprModule (Module mod _ _) = pprEncodedFS mod
 mkModule = Module
 
 mkVanillaModule :: ModuleName -> Module
-mkVanillaModule name = Module name UserMod NotDll
+mkVanillaModule name = Module name UserMod dell
+ where
+  dell | opt_Static || opt_CompilingPrelude = NotDll
+       | otherwise		 	    = Dll
+
 
 mkThisModule :: ModuleName -> Module	-- The module being comiled
-mkThisModule name = Module name UserMod NotDll	-- ToDo: correct Dll flag?
+mkThisModule name = 
+  Module name UserMod NotDll -- This is fine, a Dll flag is only
+  			     -- pinned on imported modules.
 
 mkPrelModule :: ModuleName -> Module
 mkPrelModule name = Module name sys dll