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; };