+RTS -N also sets +RTS -g
[ghc-hetmet.git] / rts / RtsFlags.c
index 439dfd7..81bac4e 100644 (file)
@@ -317,6 +317,7 @@ void initRtsFlagsDefaults(void)
 
     RtsFlags.TraceFlags.timestamp      = rtsFalse;
     RtsFlags.TraceFlags.sched          = rtsFalse;
+    RtsFlags.TraceFlags.gc             = rtsFalse;
 
 #ifdef USE_PAPI
     /* By default no special measurements taken */
@@ -446,7 +447,7 @@ usage_text[] = {
 "",
 #endif /* DEBUG */
 #if defined(THREADED_RTS) && !defined(NOSMP)
-"  -N<n>     Use <n> OS threads (default: 1)",
+"  -N<n>     Use <n> OS threads (default: 1) (also sets -g)",
 "  -g<n>     Use <n> OS threads for GC (default: 1)",
 "  -qm       Don't automatically migrate threads between CPUs",
 "  -qw       Migrate a thread to the current CPU when it is woken up",
@@ -870,10 +871,6 @@ error = rtsTrue;
              case 'H':
                RtsFlags.GcFlags.heapSizeSuggestion = 
                  decode(rts_argv[arg]+2) / BLOCK_SIZE;
-
-               if (RtsFlags.GcFlags.heapSizeSuggestion <= 0) {
-                 bad_option(rts_argv[arg]);
-               }
                break;
 
 #ifdef RTS_GTK_FRONTPANEL
@@ -1124,10 +1121,18 @@ error = rtsTrue;
                if (rts_argv[arg][2] != '\0') {
                    RtsFlags.ParFlags.nNodes
                      = strtol(rts_argv[arg]+2, (char **) NULL, 10);
+                    // set -g at the same time as -N by default
+                   RtsFlags.ParFlags.gcThreads = RtsFlags.ParFlags.nNodes;
                    if (RtsFlags.ParFlags.nNodes <= 0) {
                      errorBelch("bad value for -N");
                      error = rtsTrue;
                    }
+#if defined(PROFILING)
+                    if (RtsFlags.ParFlags.nNodes > 1) {
+                        errorBelch("bad option %s: only -N1 is supported with profiling", rts_argv[arg]);
+                     error = rtsTrue;
+                    }
+#endif
                }
                ) break;
 
@@ -1140,12 +1145,6 @@ error = rtsTrue;
                      errorBelch("bad value for -g");
                      error = rtsTrue;
                    }
-#if defined(PROFILING)
-                    if (RtsFlags.ParFlags.nNodes > 1) {
-                        errorBelch("bad option %s: only -N1 is supported with profiling", rts_argv[arg]);
-                     error = rtsTrue;
-                    }
-#endif
                }
                ) break;
 
@@ -1225,6 +1224,9 @@ error = rtsTrue;
                case 's':
                    RtsFlags.TraceFlags.sched = rtsTrue;
                    break;
+               case 'g':
+                   RtsFlags.TraceFlags.gc = rtsTrue;
+                   break;
                default:
                    errorBelch("unknown RTS option: %s",rts_argv[arg]);
                    error = rtsTrue;
@@ -2335,7 +2337,7 @@ open_stats_file (
 {
     FILE *f = NULL;
 
-    if (strequal(rts_argv[arg]+2, "stderr")) { /* use debugBelch */
+    if (strequal(rts_argv[arg]+2, "stderr") || strequal(rts_argv[arg]+2, "-")) {
         f = NULL; /* NULL means use debugBelch */
     } else {
        if (rts_argv[arg][2] != '\0') {  /* stats file specified */