Hi!

When I set too big heapsize values with option '-H', hsc complains about
something like "-H<size> bigger than -M<size>". Since ghc won't compile (*)
with lower -H values (yes, -dcore-lint also applied), I added "-M<size>" to
the command line... AND: it doesn't work!

  (*) this happened when compiling ghc-cvs with ghc-4.02 on Linux/x86.

ghc complains about not knowing this switch and "ghc --help" says, "-M" does
something different...

In fact, there is IMHO no way to hand over "-M<size>" to hsc...

I patched ghc.lprl, which now has a parameter "-MM<size>", yielding an
additional "-M<size>" to hsc...

patch is attached...


Cheers,
Michael
-- 
No sig is good sig...
--- ghc/driver/ghc.lprl.orig    Thu Jun 17 11:03:18 1999
+++ ghc/driver/ghc.lprl Thu Jun 24 15:32:55 1999
@@ -212,6 +212,7 @@
 #   terrible things to cache behavior.
 #
 $Specific_heap_size = 6 * 1000 * 1000;
+$Specific_mem_size  = 70 * 1000 * 1000;
 $Specific_stk_size  = 1000 * 1000;
 $Scale_sizes_by     = 1.0;
 
@@ -1198,6 +1199,8 @@
 sub setupHeapStackSize {
    $Specific_heap_size = $Specific_heap_size * $Scale_sizes_by;
    push(@HsC_rts_flags, '-H'.$Specific_heap_size);
+   $Specific_mem_size = $Specific_mem_size * $Scale_sizes_by;
+   push(@HsC_rts_flags, "-M$Specific_mem_size");
    $Specific_stk_size = $Specific_stk_size * $Scale_sizes_by;
    push(@HsC_rts_flags, "-K$Specific_stk_size");
 }
@@ -3205,6 +3208,27 @@
            $Specific_heap_size = $heap_size;
        } else {
            print STDERR "$Pgm: ignoring heap-size-setting option ($_)...not the 
largest seen\n";
+       }
+       next arg; };
+
+    /^(-MM|-Rmax-memsize)(.*)/ && do {
+       local($mem_size) = &grab_arg_arg(*Args,$1, $2);
+       if ($mem_size =~ /(\d+)[Kk]$/) {
+           $mem_size = $1 * 1000;
+       } elsif ($mem_size =~ /(\d+)[Mm]$/) {
+           $mem_size = $1 * 1000 * 1000;
+       } elsif ($mem_size =~ /(\d+)[Gg]$/) {
+           $mem_size = $1 * 1000 * 1000 * 1000;
+       }
+       if ($mem_size <= 0) {
+           print STDERR "$Pgm: resetting mem-size to zero!!! $mem_size\n";
+           $Specific_mem_size = 0;
+       
+       # if several heap sizes given, take the largest...
+       } elsif ($mem_size >= $Specific_mem_size) {
+           $Specific_mem_size = $mem_size;
+       } else {
+           print STDERR "$Pgm: ignoring mem-size-setting option ($_)...not the 
+largest seen\n";
        }
        next arg; };
 

Reply via email to