diff --git a/compiler/GHC/Driver/Main.hs b/compiler/GHC/Driver/Main.hs
index 08e2aafb436415d82de4cd6b375340fb346dd2e0..72c8a6faf193602f3d4ad2ef3d8fb9e8367610fa 100644
--- a/compiler/GHC/Driver/Main.hs
+++ b/compiler/GHC/Driver/Main.hs
@@ -2092,10 +2092,15 @@ hscCompileCmmFile hsc_env original_filename filename output_filename = runHsc hs
           putDumpFileMaybe logger Opt_D_dump_cmm "Output Cmm"
             FormatCMM (pdoc platform cmmgroup)
 
-        rawCmms <- case cmmToRawCmmHook hooks of
+        rawCmms0 <- case cmmToRawCmmHook hooks of
           Nothing -> cmmToRawCmm logger profile (Stream.yield cmmgroup)
           Just h  -> h           dflags Nothing (Stream.yield cmmgroup)
 
+        let dump a = do
+              unless (null a) $ putDumpFileMaybe logger Opt_D_dump_cmm_raw "Raw Cmm" FormatCMM (pdoc platform a)
+              return a
+            rawCmms = Stream.mapM dump rawCmms0
+
         let foreign_stubs _
               | not $ null ipe_ents =
                   let ip_init = ipInitCode do_info_table platform cmm_mod