We need to setModLocation in the HscOut phase, not the Hsc phase
authorIan Lynagh <ian@well-typed.com>
Fri, 26 Apr 2013 18:11:43 +0000 (19:11 +0100)
committerIan Lynagh <ian@well-typed.com>
Fri, 26 Apr 2013 18:12:50 +0000 (19:12 +0100)
The output location needs to be different for the vanilla and dynamic
ways when doing -dynamic-too. Fixes dynamicToo003.

compiler/main/DriverPipeline.hs

index bdc2e8e..57b0432 100644 (file)
@@ -960,8 +960,6 @@ runPhase (RealPhase (Hsc src_flavour)) input_fn dflags0
 
         let o_file = ml_obj_file location -- The real object file
 
-        setModLocation location
-
   -- Figure out if the source has changed, for recompilation avoidance.
   --
   -- Setting source_unchanged to True means that M.o seems
@@ -1016,6 +1014,8 @@ runPhase (RealPhase (Hsc src_flavour)) input_fn dflags0
 
 runPhase (HscOut src_flavour mod_name result) _ dflags = do
         location <- getLocation src_flavour mod_name
+        setModLocation location
+
         let o_file = ml_obj_file location -- The real object file
             hsc_lang = hscTarget dflags
             next_phase = hscPostBackendPhase dflags src_flavour hsc_lang