\begin{code}
@StandardWarnings = ('-fwarn-overlapping-patterns',
'-fwarn-missing-methods',
- '-fwarn-unused-binds',
- '-fwarn-unused-matches',
'-fwarn-duplicate-exports');
@MinusWOpts = (@StandardWarnings,
+ '-fwarn-unused-binds',
+ '-fwarn-unused-matches',
'-fwarn-incomplete-patterns',
'-fwarn-unused-imports');
@MinusWallOpts = (@MinusWOpts,
'-fcse', # CSE must immediately follow a simplification pass, because it relies
# on the no-shadowing invariant. See comments at the top of CSE.lhs
+ '-ffull-laziness', # nofib/spectral/hartel/wang doubles in speed if you
+ # do full laziness late in the day. It only happens
+ # after fusion and other stuff, so the early pass doesn't
+ # catch it. For the record, the redex is
+ # f_el22 (f_el21 r_midblock)
'-ffloat-inwards',
# Case-liberation for -O2. This should be after
,'-u', "${uscore}PrelPack_unpackCString_closure"
,'-u', "${uscore}PrelException_stackOverflow_closure"
,'-u', "${uscore}PrelException_heapOverflow_closure"
+ ,'-u', "${uscore}PrelException_NonTermination_static_closure"
));
if (!$NoHaskellMain) {
unshift (@Ld_flags,'-u', "${uscore}PrelMain_mainIO_closure");
}
if (-f $hsc_out_c_stub) {
- &run_something("cp $hsc_out_c_stub $ofile_c_stub_target", 'Copy foreign export C stubs');
+ &run_something("rm -f $ofile_c_stub_target && echo '#include \"${ofile_h_stub_target}\"' > $ofile_c_stub_target && cat $hsc_out_c_stub >> $ofile_c_stub_target", 'Copy foreign export C stubs');
local ($hsc_out_s_stub);
local ($hsc_out_o_stub);
($ofile_s_stub_target = $ofile_c_stub_target) =~ s/\.(.*)$/\.s/;