diff --git a/compiler/dump.lisp b/compiler/dump.lisp
index 562550ebe77b1b39348283a77219a95a0407341f..024ebd1c415bb4ee0c754050d27bfdcb99532456 100644
--- a/compiler/dump.lisp
+++ b/compiler/dump.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/dump.lisp,v 1.60 1993/09/01 14:15:29 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/dump.lisp,v 1.61 1993/09/04 23:24:51 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -424,6 +424,7 @@
 (defun dump-segment (segment code-length file)
   (declare (type new-assem:segment segment)
 	   (type fasl-file file))
+  (flush-fasl-file-buffer file)
   (let* ((stream (fasl-file-stream file))
 	 (posn (file-position stream)))
     (new-assem:segment-map-output
@@ -433,6 +434,10 @@
     (unless (= (- (file-position stream) posn) code-length)
       (error "Tried to output ~D bytes, but only ~D made it."
 	     code-length (- (file-position stream) posn))))
+  (when (backend-featurep :gengc)
+    (unless (zerop (logand code-length 3))
+      (dotimes (i (- 4 (logand code-length 3)))
+	(dump-byte 0 file))))
   (undefined-value))
 
 ;;; Dump-Code-Object  --  Internal
@@ -527,7 +532,6 @@
 	       (dump-unsigned-32 num-consts file)
 	       (dump-unsigned-32 total-length file))))
 
-      (flush-fasl-file-buffer file)
       (dump-segment code-segment code-length file)
       (dump-i-vector trace-table file t)
       (dump-fixups fixups file)
@@ -759,9 +763,7 @@
 	       (dump-unsigned-32 num-consts file)
 	       (dump-unsigned-32 length file))))
 
-      (flush-fasl-file-buffer file)
       (dump-segment segment length file)
-      
       (let ((code-handle (dump-pop file))
 	    (patch-table (fasl-file-patch-table file)))
 	(dolist (patch (entry-patches))