diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 5425ace05bacf98579622091876d7474b65d358f..dbf5ff9f362fa8a10810555f929cfd3573a392c4 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -152,6 +152,7 @@ data DynFlag | Opt_D_dump_view_pattern_commoning | Opt_D_faststring_stats | Opt_DumpToFile -- ^ Append dump output to files instead of stdout. + | Opt_D_no_debug_output | Opt_DoCoreLinting | Opt_DoStgLinting | Opt_DoCmmLinting diff --git a/compiler/main/StaticFlags.hs b/compiler/main/StaticFlags.hs index 538fe33a98769f4eb470d2b4409376e8bbbcad2d..6fa6032bb05be8cc949038a50b88f9b9561f098e 100644 --- a/compiler/main/StaticFlags.hs +++ b/compiler/main/StaticFlags.hs @@ -21,6 +21,7 @@ module StaticFlags ( opt_PprUserLength, opt_SuppressUniques, opt_PprStyle_Debug, + opt_NoDebugOutput, -- profiling opts opt_AutoSccsOnAllToplevs, @@ -166,6 +167,7 @@ static_flags = [ , ( "dsuppress-uniques", PassFlag addOpt ) , ( "dppr-user-length", AnySuffix addOpt ) , ( "dopt-fuel", AnySuffix addOpt ) + , ( "dno-debug-output", PassFlag addOpt ) -- rest of the debugging flags are dynamic --------- Profiling -------------------------------------------------- @@ -289,6 +291,9 @@ opt_PprUserLength :: Int opt_PprUserLength = lookup_def_int "-dppr-user-length" 5 --ToDo: give this a name opt_Fuel :: Int opt_Fuel = lookup_def_int "-dopt-fuel" maxBound +opt_NoDebugOutput :: Bool +opt_NoDebugOutput = lookUp (fsLit "-dno-debug-output") + -- profiling opts opt_AutoSccsOnAllToplevs :: Bool diff --git a/compiler/utils/Outputable.lhs b/compiler/utils/Outputable.lhs index b5d451ad642320aa94e6100e8733bb029ee925f1..61ad4ddd22216a6465956639cb539d2f66480260 100644 --- a/compiler/utils/Outputable.lhs +++ b/compiler/utils/Outputable.lhs @@ -53,7 +53,7 @@ module Outputable ( import {-# SOURCE #-} Module( Module, ModuleName, moduleName ) import {-# SOURCE #-} OccName( OccName ) -import StaticFlags ( opt_PprStyle_Debug, opt_PprUserLength ) +import StaticFlags import FastString import FastTypes import qualified Pretty @@ -622,7 +622,9 @@ pprPanic = pprAndThen panic -- Throw an exn saying "bug in GHC" pprPgmError = pprAndThen pgmError -- Throw an exn saying "bug in pgm being compiled" -- (used for unusual pgm errors) -pprTrace = pprAndThen trace +pprTrace str doc x + | opt_NoDebugOutput = x + | otherwise = pprAndThen trace str doc x pprPanicFastInt :: String -> SDoc -> FastInt pprPanicFastInt heading pretty_msg = panicFastInt (show (doc PprDebug)) @@ -644,6 +646,7 @@ assertPprPanic file line msg msg] warnPprTrace :: Bool -> String -> Int -> SDoc -> a -> a +warnPprTrace _ _file _line _msg x | opt_NoDebugOutput = x warnPprTrace False _file _line _msg x = x warnPprTrace True file line msg x = trace (show (doc PprDebug)) x diff --git a/docs/users_guide/debugging.xml b/docs/users_guide/debugging.xml index 638ab7a4b50d732352fa82a0db4caefe7100a8d1..e00cd8fa4e028e5bd24860cabbd764a5205fe2e3 100644 --- a/docs/users_guide/debugging.xml +++ b/docs/users_guide/debugging.xml @@ -435,14 +435,18 @@ - - - + + + - - Have the renamer report what imports does not - contribute. - + + Suppress any unsolicited debugging output. When GHC + has been built with the DEBUG option it + occasionally emits debug output of interest to developers. + The extra output can confuse the testing framework and + cause bogus test failures, so this flag is provided to + turn it off. + diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml index 7de1ae8e86a3d822bf980af182eacfcf50fe0239..9b1e272d9b257a8543539fce5356b67ae4b6e971 100644 --- a/docs/users_guide/flags.xml +++ b/docs/users_guide/flags.xml @@ -2213,6 +2213,12 @@ dynamic - + + + Suppress unsolicited debugging output + static + - + Turn on debug printing (more verbose)