diff --git a/ghc/compiler/codeGen/CodeGen.lhs b/ghc/compiler/codeGen/CodeGen.lhs index 1f1d0f8e34e5f669ff743314ebb4ee77ffe1f0da..584d48e9b2dbd46dd5173587801224b516bd56e8 100644 --- a/ghc/compiler/codeGen/CodeGen.lhs +++ b/ghc/compiler/codeGen/CodeGen.lhs @@ -72,7 +72,8 @@ codeGen mod_name imported_modules cost_centre_info fe_binders init_stuff = mkModuleInit fe_binders mod_name imported_modules cost_centre_info - abstractC = mkAbstractCs [ init_stuff, + abstractC = mkAbstractCs [ maybe_split, + init_stuff, code_stuff, datatype_stuff] -- Put datatype_stuff after code_stuff, because the diff --git a/ghc/driver/ghc-asm.lprl b/ghc/driver/ghc-asm.lprl index 20d9043ca64766a5d93c22b5484dc7dad1aa0198..d15003b72a8d27700c772311edda282be381a9c0 100644 --- a/ghc/driver/ghc-asm.lprl +++ b/ghc/driver/ghc-asm.lprl @@ -435,7 +435,7 @@ sub mangle_asm { $chkcat[$i] = 'literal'; $chksymb[$i] = $1; - } elsif ( /^$TUS[@]?__stg_split_marker(\d+)$TPOSTLBL[@]?$/o ) { + } elsif ( /^$TUS[@]?__stg_split_marker(\d*)$TPOSTLBL[@]?$/o ) { $chk[++$i] = $_; $chkcat[$i] = 'splitmarker'; $chksymb[$i] = $1; @@ -734,7 +734,7 @@ sub mangle_asm { # HWL HACK: dont die, just print a warning #print stderr "HWL: this should die! Epilogue junk?: $e\n" if $e =~ /^\t[^\.]/ # && $TargetPlatform !~ /^powerpc-/; #ToDo: remove test - die "Epilogue junk?: $e\n" if $e =~ /^\t[^\.]/ + die "Epilogue junk?: $e\n" if $e =~ /^\t[^\.\n]/ && $TargetPlatform !~ /^powerpc-/; #ToDo: remove test # glue together what's left diff --git a/ghc/driver/ghc-split.lprl b/ghc/driver/ghc-split.lprl index 91a34d256e6af497f2e5dc682d4af67f841be764..5e4d0bc988c90a9c88d1d503447edfbedbea8884 100644 --- a/ghc/driver/ghc-split.lprl +++ b/ghc/driver/ghc-split.lprl @@ -4,46 +4,6 @@ %* * %************************************************************************ -\begin{code} -sub inject_split_markers { - local($hc_file) = @_; - - unlink("$Tmp_prefix.unmkd"); - local($to_do) = "$Cp $hc_file $Tmp_prefix.unmkd"; - &run_something($to_do, 'Prepare to number split markers'); - - open(TMPI, "< $Tmp_prefix.unmkd") || &tidy_up_and_die(1,"$Pgm: failed to open `$Tmp_prefix.unmkd' (to read)\n"); - open(TMPO, "> $hc_file") || &tidy_up_and_die(1,"$Pgm: failed to open `$hc_file' (to write)\n"); - - local($marker_no) = 1; - - # make sure there is a split marker before any "real" code - $_ = <TMPI>; - while ( $_ ne '' && ( /^$/ || /^#/ ) ) { - print TMPO $_; - $_ = <TMPI>; - } - print TMPO "__STG_SPLIT_MARKER(1)\n"; - print TMPO $_ if ! /^\s*\/\* SPLIT \*\/\s*$/; - - # Have to be a bit careful detecting /* SPLIT */ comments - # since a progam may use a string containing "/* SPLIT */" - # We check that there is nothing else on the line - - while (<TMPI>) { - if (/^\s*\/\* SPLIT \*\/\s*$/) { - $marker_no++; - print TMPO "__STG_SPLIT_MARKER($marker_no)\n"; - next; - } - print TMPO $_; - } - - close(TMPI) || &tidy_up_and_die(1,"Failed reading $Tmp_prefix.unmkd\n"); - close(TMPO) || &tidy_up_and_die(1,"Failed writing $hc_file\n"); -} -\end{code} - \begin{code} sub split_asm_file { local($asm_file) = @_; diff --git a/ghc/driver/ghc.lprl b/ghc/driver/ghc.lprl index 7badbc483bbf9d63efb857b5ae920cd6d555a876..0568a0d0615490a57e937f0c911094b3cf230f18 100644 --- a/ghc/driver/ghc.lprl +++ b/ghc/driver/ghc.lprl @@ -233,7 +233,6 @@ These are the default values, which may be changed by user flags. \begin{code} sub setupOptFlags { $Oopt_MaxSimplifierIterations = '-fmax-simplifier-iterations4'; - $Oopt_PedanticBottoms = '-fpedantic-bottoms'; # ON by default $Oopt_FinalStgProfilingMassage = ''; $Oopt_StgStats = ''; $Oopt_DoSpecialise = '-fspecialise'; @@ -719,7 +718,6 @@ sub setupOptimiseFlags { '-fcase-of-case', '-fcase-merge', '-flet-to-case', - $Oopt_PedanticBottoms, # initial simplify: mk specialiser happy: minimum effort please @@ -820,7 +818,7 @@ sub setupOptimiseFlags { # ( ($OptLevel != 2) # ? '' -# : "-fliberate-case -fsimplify [ $Oopt_FB_Support -ffloat-lets-exposing-whnf -ffloat-primops-ok -fcase-of-case -fdo-case-elim -fcase-merge -fdo-lambda-eta-expansion -freuse-con -flet-to-case $Oopt_PedanticBottoms $Oopt_MaxSimplifierIterations $Oopt_ShowSimplifierProgress ]" ), +# : "-fliberate-case -fsimplify [ $Oopt_FB_Support -ffloat-lets-exposing-whnf -ffloat-primops-ok -fcase-of-case -fdo-case-elim -fcase-merge -fdo-lambda-eta-expansion -freuse-con -flet-to-case $Oopt_MaxSimplifierIterations $Oopt_ShowSimplifierProgress ]" ), # '-fliberate-case', @@ -1732,12 +1730,6 @@ sub runHscAndProcessInterfaces { } - # if we're going to split up object files, - # we inject split markers into the .hc file now - if ( $HscLang eq 'C' && $SplitObjFiles ) { - &inject_split_markers ( $hsc_out ); - } - # save a copy of the .hc file, even if we are carrying on... if ($HscLang eq 'C' && $do_cc && $Keep_hc_file_too) { &saveIntermediate($ifile_root , "hc" , $hsc_out); @@ -3292,9 +3284,6 @@ arg: while($_ = $Args[0]) { && do { $Oopt_MaxSimplifierIterations = $1 . &grab_arg_arg(*Args,$1, $2); next arg; }; - /^-fno-pedantic-bottoms$/ - && do { $Oopt_PedanticBottoms = ''; next arg; }; - /^-fno-pre-inlining$/ && do { push(@HsC_flags, $_); next arg }; diff --git a/ghc/includes/StgMacros.h b/ghc/includes/StgMacros.h index b58ff2b86f453aed5a9cf43c7268485ea2fc23af..1cd755959ac4923eb5aa3254db5c2f82e1895e06 100644 --- a/ghc/includes/StgMacros.h +++ b/ghc/includes/StgMacros.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: StgMacros.h,v 1.25 2000/05/08 15:05:36 simonmar Exp $ + * $Id: StgMacros.h,v 1.26 2000/06/08 12:54:29 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -645,9 +645,9 @@ extern DLL_IMPORT_DATA const StgPolyInfoTable seq_frame_info; -------------------------------------------------------------------------- */ #if defined(USE_SPLIT_MARKERS) -#define __STG_SPLIT_MARKER(n) FN_(__stg_split_marker##n) { } +#define __STG_SPLIT_MARKER __asm__("\n__stg_split_marker:"); #else -#define __STG_SPLIT_MARKER(n) /* nothing */ +#define __STG_SPLIT_MARKER /* nothing */ #endif /* -----------------------------------------------------------------------------