Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : master
http://hackage.haskell.org/trac/ghc/changeset/d82da293078b00d0f2d85c947e70382d398aab64 >--------------------------------------------------------------- commit d82da293078b00d0f2d85c947e70382d398aab64 Author: Simon Marlow <marlo...@gmail.com> Date: Tue May 22 11:51:46 2012 +0100 Read the source file timestamp *before* preprocessing (#6106) >--------------------------------------------------------------- compiler/main/GhcMake.hs | 23 +++++++++++------------ 1 files changed, 11 insertions(+), 12 deletions(-) diff --git a/compiler/main/GhcMake.hs b/compiler/main/GhcMake.hs index f0662ab..910e1f6 100644 --- a/compiler/main/GhcMake.hs +++ b/compiler/main/GhcMake.hs @@ -1190,15 +1190,13 @@ summariseFile hsc_env old_summaries file mb_phase obj_allowed maybe_buf = do let location = ms_location old_summary - -- return the cached summary if the source didn't change - src_timestamp <- case maybe_buf of - Just (_,t) -> return t - Nothing -> liftIO $ getModificationUTCTime file + src_timestamp <- get_src_timestamp -- The file exists; we checked in getRootSummary above. -- If it gets removed subsequently, then this -- getModificationUTCTime may fail, but that's the right -- behaviour. + -- return the cached summary if the source didn't change if ms_hs_date old_summary == src_timestamp then do -- update the object-file timestamp obj_timestamp <- @@ -1208,12 +1206,18 @@ summariseFile hsc_env old_summaries file mb_phase obj_allowed maybe_buf else return Nothing return old_summary{ ms_obj_date = obj_timestamp } else - new_summary + new_summary src_timestamp | otherwise - = new_summary + = do src_timestamp <- get_src_timestamp + new_summary src_timestamp where - new_summary = do + get_src_timestamp = case maybe_buf of + Just (_,t) -> return t + Nothing -> liftIO $ getModificationUTCTime file + -- getMofificationUTCTime may fail + + new_summary src_timestamp = do let dflags = hsc_dflags hsc_env (dflags', hspp_fn, buf) @@ -1228,11 +1232,6 @@ summariseFile hsc_env old_summaries file mb_phase obj_allowed maybe_buf -- to findModule will find it, even if it's not on any search path mod <- liftIO $ addHomeModuleToFinder hsc_env mod_name location - src_timestamp <- case maybe_buf of - Just (_,t) -> return t - Nothing -> liftIO $ getModificationUTCTime file - -- getMofificationTime may fail - -- when the user asks to load a source file by name, we only -- use an object file if -fobject-code is on. See #1205. obj_timestamp <- _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc