diff options
-rw-r--r-- | compiler/GHC/Driver/CodeOutput.hs | 8 | ||||
-rw-r--r-- | compiler/GHC/Driver/Flags.hs | 1 | ||||
-rw-r--r-- | compiler/GHC/Driver/Session.hs | 2 | ||||
-rw-r--r-- | docs/users_guide/debugging.rst | 9 |
4 files changed, 19 insertions, 1 deletions
diff --git a/compiler/GHC/Driver/CodeOutput.hs b/compiler/GHC/Driver/CodeOutput.hs index 4886d5a2ee..2bb30656dd 100644 --- a/compiler/GHC/Driver/CodeOutput.hs +++ b/compiler/GHC/Driver/CodeOutput.hs @@ -138,7 +138,13 @@ outputC dflags filenm cmm_stream packages = hPutStr h ("/* GHC_PACKAGES " ++ unwords pkg_names ++ "\n*/\n") hPutStr h "#include \"Stg.h\"\n" let platform = targetPlatform dflags - writeC = printForC dflags h . cmmToC platform + writeC cmm = do + let doc = cmmToC platform cmm + dumpIfSet_dyn dflags Opt_D_dump_c_backend + "C backend output" + FormatC + doc + printForC dflags h doc Stream.consume cmm_stream writeC {- diff --git a/compiler/GHC/Driver/Flags.hs b/compiler/GHC/Driver/Flags.hs index b7d3d4d459..25acaab359 100644 --- a/compiler/GHC/Driver/Flags.hs +++ b/compiler/GHC/Driver/Flags.hs @@ -49,6 +49,7 @@ data DumpFlag | Opt_D_dump_asm_conflicts | Opt_D_dump_asm_stats | Opt_D_dump_asm_expanded + | Opt_D_dump_c_backend | Opt_D_dump_llvm | Opt_D_dump_core_stats | Opt_D_dump_deriv diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index 082cdf95a8..7be2da383c 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -2539,6 +2539,8 @@ dynamic_flags_deps = [ (setDumpFlag Opt_D_dump_asm_expanded) , make_ord_flag defGhcFlag "ddump-llvm" (NoArg $ setObjBackend LLVM >> setDumpFlag' Opt_D_dump_llvm) + , make_ord_flag defGhcFlag "ddump-c-backend" + (NoArg $ setDumpFlag' Opt_D_dump_c_backend) , make_ord_flag defGhcFlag "ddump-deriv" (setDumpFlag Opt_D_dump_deriv) , make_ord_flag defGhcFlag "ddump-ds" diff --git a/docs/users_guide/debugging.rst b/docs/users_guide/debugging.rst index 836be3a9ea..fdcf51c601 100644 --- a/docs/users_guide/debugging.rst +++ b/docs/users_guide/debugging.rst @@ -552,6 +552,15 @@ LLVM code generator LLVM code from the :ref:`LLVM code generator <llvm-code-gen>` +C code generator +~~~~~~~~~~~~~~~~ + +.. ghc-flag:: -ddump-c-backend + :shortdesc: Dump C code produced by the C (unregisterised) backend. + :type: dynamic + + :shortdesc: Dump C code produced by the C (unregisterised) backend. + Native code generator ~~~~~~~~~~~~~~~~~~~~~ |