summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeo Camarasu <teofilcamarasu@gmail.com>2022-05-18 20:08:40 +0100
committerZubin Duggal <zubin.duggal@gmail.com>2022-07-14 14:39:38 +0530
commit2d31de9675bb54946135744022b3bbd1dacad147 (patch)
tree12035e6d3a3bda8e3cb29cb1ecebe80f525db9dc
parent45177166ea0a88b11dcdc4ec76849a7b9a00ec12 (diff)
downloadhaskell-2d31de9675bb54946135744022b3bbd1dacad147.tar.gz
Allow passing -po outside profiling way
Resolves #21455 (cherry picked from commit 3e1e5ee3307fe7ea47e70a07a385b56536413f64) (cherry picked from commit babfd40ded288d4758ca9ac505385b1ac6cb1187)
-rw-r--r--rts/RtsFlags.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c
index 51a40010b1..4e62861bb8 100644
--- a/rts/RtsFlags.c
+++ b/rts/RtsFlags.c
@@ -397,6 +397,7 @@ usage_text[] = {
#else /* PROFILING */
" -h Heap residency profile (output file <program>.hp)",
" -hT Produce a heap profile grouped by closure type",
+" -po<file> Override profiling output file name prefix (program name by default)",
#endif /* PROFILING */
" -i<sec> Time between heap profile samples (seconds, default: 0.1)",
@@ -1371,6 +1372,21 @@ error = true;
case 'P': /* detailed cost centre profiling (time/alloc) */
case 'p': /* cost centre profiling (time/alloc) */
OPTION_SAFE;
+#if !defined(PROFILING)
+ switch (rts_argv[arg][2]) {
+ case 'o':
+ if (rts_argv[arg][3] == '\0') {
+ errorBelch("flag -po expects an argument");
+ error = true;
+ break;
+ }
+ RtsFlags.CcFlags.outputFileNameStem = rts_argv[arg]+3;
+ break;
+ default:
+ PROFILING_BUILD_ONLY();
+
+ } break;
+#else
PROFILING_BUILD_ONLY(
switch (rts_argv[arg][2]) {
case 'a':
@@ -1405,6 +1421,7 @@ error = true;
goto check_rest;
}
) break;
+#endif /* PROFILING */
case 'R':
OPTION_SAFE;