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
 
 /* -----------------------------------------------------------------------------