diff --git a/ghc/driver/Main.hs b/ghc/driver/Main.hs index ac1e36cb1cdf7529958246b638e7ec7c5a47ecd3..69165219112944d958ebf9dab4279a6e642978f3 100644 --- a/ghc/driver/Main.hs +++ b/ghc/driver/Main.hs @@ -161,9 +161,13 @@ instance Typeable BarfKind where -- Temporary files GLOBAL_VAR(files_to_clean, [], [String]) +GLOBAL_VAR(keep_tmp_files, False, Bool) cleanTempFiles :: IO () cleanTempFiles = do + forget_it <- readIORef keep_tmp_files + if forget_it then return () else do + fs <- readIORef files_to_clean verb <- readIORef verbose @@ -1763,6 +1767,7 @@ opts = , ( "keep-hc-file" , AnySuffix (\_ -> writeIORef keep_hc_files True) ) , ( "keep-s-file" , AnySuffix (\_ -> writeIORef keep_s_files True) ) , ( "keep-raw-s-file", AnySuffix (\_ -> writeIORef keep_raw_s_files True) ) + , ( "keep-tmp-files" , AnySuffix (\_ -> writeIORef keep_tmp_files True) ) , ( "split-objs" , NoArg (if can_split then do writeIORef split_object_files True