diff --git a/compiler/GHC/Driver/Main.hs b/compiler/GHC/Driver/Main.hs
index 651f9bf8a2d8158dcbaead7a1f1b9c2fa8358f34..ffd51384bb3f25fbe2d66d2cbc223aeb5224a357 100644
--- a/compiler/GHC/Driver/Main.hs
+++ b/compiler/GHC/Driver/Main.hs
@@ -2038,10 +2038,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