[MLton-commit] r7555

Wesley Terpstra wesley at mlton.org
Tue Jul 19 05:02:06 PDT 2011


Refresh patches using quilt
Remove all non-bugfix changes in series 22 patch.


----------------------------------------------------------------------

U   mlton/trunk/package/debian/patches/11-fixes-20100608-to-20110319.patch
U   mlton/trunk/package/debian/patches/22-fixes-20110319-to-20110719.patch

----------------------------------------------------------------------

Modified: mlton/trunk/package/debian/patches/11-fixes-20100608-to-20110319.patch
===================================================================
--- mlton/trunk/package/debian/patches/11-fixes-20100608-to-20110319.patch	2011-07-19 11:23:18 UTC (rev 7554)
+++ mlton/trunk/package/debian/patches/11-fixes-20100608-to-20110319.patch	2011-07-19 12:02:04 UTC (rev 7555)
@@ -3,16 +3,16 @@
 Forwarded: no
 Last-Update: 2011-03-20
 
-Index: regression/common-subexp0.ok
+Index: mlton-20100608/regression/common-subexp0.ok
 ===================================================================
---- mlton.orig/regression/common-subexp0.ok	(.../tags/on-20100608-release)	(revision 0)
-+++ mlton/regression/common-subexp0.ok	(.../trunk)	(revision 7506)
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ mlton-20100608/regression/common-subexp0.ok	2011-07-19 11:34:28.000000000 +0000
 @@ -0,0 +1 @@
 +nan
-Index: regression/weak.3.sml
+Index: mlton-20100608/regression/weak.3.sml
 ===================================================================
---- mlton.orig/regression/weak.3.sml	(.../tags/on-20100608-release)	(revision 0)
-+++ mlton/regression/weak.3.sml	(.../trunk)	(revision 7506)
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ mlton-20100608/regression/weak.3.sml	2011-07-19 11:34:28.000000000 +0000
 @@ -0,0 +1,23 @@
 +fun find cache x =
 +   case (List.find (fn (y,_) => x = y) (!cache)) of
@@ -37,27 +37,27 @@
 +                 end
 +
 +val _ = List.app (fn x => print (concat [Int.toString (lookup x), "\n"])) [5,4,3,2,1]
-Index: regression/weak.3.ok
+Index: mlton-20100608/regression/weak.3.ok
 ===================================================================
---- mlton.orig/regression/weak.3.ok	(.../tags/on-20100608-release)	(revision 0)
-+++ mlton/regression/weak.3.ok	(.../trunk)	(revision 7506)
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ mlton-20100608/regression/weak.3.ok	2011-07-19 11:34:28.000000000 +0000
 @@ -0,0 +1,5 @@
 +6
 +5
 +4
 +3
 +2
-Index: regression/common-subexp0.sml
+Index: mlton-20100608/regression/common-subexp0.sml
 ===================================================================
---- mlton.orig/regression/common-subexp0.sml	(.../tags/on-20100608-release)	(revision 0)
-+++ mlton/regression/common-subexp0.sml	(.../trunk)	(revision 7506)
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ mlton-20100608/regression/common-subexp0.sml	2011-07-19 11:34:28.000000000 +0000
 @@ -0,0 +1,2 @@
 +val x = !(ref 0.0) / !(ref 0.0)
 +val _ = print (concat [Real.toString x, "\n"])
-Index: regression/real-basic.x86-mingw.ok
+Index: mlton-20100608/regression/real-basic.x86-mingw.ok
 ===================================================================
---- mlton.orig/regression/real-basic.x86-mingw.ok	(.../tags/on-20100608-release)	(revision 0)
-+++ mlton/regression/real-basic.x86-mingw.ok	(.../trunk)	(revision 7506)
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ mlton-20100608/regression/real-basic.x86-mingw.ok	2011-07-19 11:34:28.000000000 +0000
 @@ -0,0 +1,32 @@
 +Real32
 +  Reported
@@ -91,15 +91,27 @@
 +    max exponent: 1024
 +    min exponent: ~1074
 +    min denormal: ~1074
-Index: runtime/platform/mingw.c
+Index: mlton-20100608/runtime/platform/mingw.c
 ===================================================================
---- mlton.orig/runtime/platform/mingw.c	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/runtime/platform/mingw.c	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/runtime/platform/mingw.c	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/runtime/platform/mingw.c	2011-07-19 11:34:28.000000000 +0000
 @@ -1308,26 +1308,75 @@
          }
  }
  
 -/* The default strerror() does not know extended error codes. */
+-char *MLton_strerror(int code) {
+-        static char buffer[512];
+-        
+-        /* Windows specific strerror */
+-        if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 
+-                          0,      /* Not used for FROM_SYSTEM */
+-                          code,   /* The status code to look up */
+-                          0,      /* Use the default language */
+-                          buffer, /* Write the message to here */
+-                          sizeof(buffer)-1,
+-                          0) == 0) {
+-                strcpy(buffer, "Unknown error");
 +static const char *MLton_strerrorExtension(int code) {
 +        switch (code) {
 +        case EINTR:           return "Interrupted function call";
@@ -145,7 +157,7 @@
 +        case EUSERS:          return "Too many users";
 +        case ECANCELED:       return "Operation canceled";
 +        default:              return "Unknown error";
-+        }
+         }
 +}
 +
 +/* MinGW strerror works for all system-defined errno values.
@@ -161,21 +173,9 @@
 + * Thus, we just make a big English table to augment strerror.
 + * The descriptions are taken from man errno(3).
 + */
- char *MLton_strerror(int code) {
--        static char buffer[512];
++char *MLton_strerror(int code) {
 +        static char buffer[80];
          
--        /* Windows specific strerror */
--        if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 
--                          0,      /* Not used for FROM_SYSTEM */
--                          code,   /* The status code to look up */
--                          0,      /* Use the default language */
--                          buffer, /* Write the message to here */
--                          sizeof(buffer)-1,
--                          0) == 0) {
--                strcpy(buffer, "Unknown error");
--        }
--        
 -        /* Cut message at EOL */
 -        for (int i = 0; buffer[i]; ++i)
 -                if (buffer[i] == '\n' || buffer[i] == '\r')
@@ -189,10 +189,10 @@
          return buffer;
  }
  
-Index: mlton/atoms/real-x.fun
+Index: mlton-20100608/mlton/atoms/real-x.fun
 ===================================================================
---- mlton.orig/mlton/atoms/real-x.fun	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlton/atoms/real-x.fun	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlton/atoms/real-x.fun	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlton/atoms/real-x.fun	2011-07-19 11:34:28.000000000 +0000
 @@ -1,4 +1,4 @@
 -(* Copyright (C) 2009 Matthew Fluet.
 +(* Copyright (C) 2009,2011 Matthew Fluet.
@@ -233,10 +233,10 @@
           end
      | _ => false
  
-Index: mlton/main/main.fun
+Index: mlton-20100608/mlton/main/main.fun
 ===================================================================
---- mlton.orig/mlton/main/main.fun	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlton/main/main.fun	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlton/main/main.fun	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlton/main/main.fun	2011-07-19 11:34:28.000000000 +0000
 @@ -737,7 +737,7 @@
                     Result.Yes () => ()
                   | Result.No s' => usage (concat ["invalid -ssa2-passes arg: ", s']))
@@ -246,10 +246,10 @@
          SpaceString
          (fn s =>
           stop := (case s of
-Index: mlton/ssa/common-subexp.fun
+Index: mlton-20100608/mlton/ssa/common-subexp.fun
 ===================================================================
---- mlton.orig/mlton/ssa/common-subexp.fun	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlton/ssa/common-subexp.fun	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlton/ssa/common-subexp.fun	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlton/ssa/common-subexp.fun	2011-07-19 11:34:28.000000000 +0000
 @@ -1,4 +1,4 @@
 -(* Copyright (C) 2009 Matthew Fluet.
 +(* Copyright (C) 2009,2011 Matthew Fluet.
@@ -477,10 +477,10 @@
           Program.T {datatypes = datatypes,
                      globals = globals,
                      functions = functions,
-Index: mlton/backend/ssa-to-rssa.fun
+Index: mlton-20100608/mlton/backend/ssa-to-rssa.fun
 ===================================================================
---- mlton.orig/mlton/backend/ssa-to-rssa.fun	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlton/backend/ssa-to-rssa.fun	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlton/backend/ssa-to-rssa.fun	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlton/backend/ssa-to-rssa.fun	2011-07-19 11:34:28.000000000 +0000
 @@ -1,4 +1,4 @@
 -(* Copyright (C) 2009 Matthew Fluet.
 +(* Copyright (C) 2009,2011 Matthew Fluet.
@@ -498,10 +498,10 @@
                                 | Weak_new =>
                                      ifIsWeakPointer
                                      (ty,
-Index: mlton/elaborate/elaborate-core.fun
+Index: mlton-20100608/mlton/elaborate/elaborate-core.fun
 ===================================================================
---- mlton.orig/mlton/elaborate/elaborate-core.fun	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlton/elaborate/elaborate-core.fun	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlton/elaborate/elaborate-core.fun	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlton/elaborate/elaborate-core.fun	2011-07-19 11:34:28.000000000 +0000
 @@ -2097,31 +2097,32 @@
                                        pats = pats}
                                    end))
@@ -553,10 +553,10 @@
                                   in
                                      t
                                   end)
-Index: mlton/codegen/amd64-codegen/amd64-generate-transfers.fun
+Index: mlton-20100608/mlton/codegen/amd64-codegen/amd64-generate-transfers.fun
 ===================================================================
---- mlton.orig/mlton/codegen/amd64-codegen/amd64-generate-transfers.fun	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlton/codegen/amd64-codegen/amd64-generate-transfers.fun	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlton/codegen/amd64-codegen/amd64-generate-transfers.fun	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlton/codegen/amd64-codegen/amd64-generate-transfers.fun	2011-07-19 11:34:28.000000000 +0000
 @@ -1357,6 +1357,31 @@
                                      size = pointerSize})),
                                   size_stack_args + 32)
@@ -589,10 +589,10 @@
                       (*
                       val reserve_args =
                          AppendList.fromList
-Index: doc/changelog
+Index: mlton-20100608/doc/changelog
 ===================================================================
---- mlton.orig/doc/changelog	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/doc/changelog	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/doc/changelog	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/doc/changelog	2011-07-19 11:34:28.000000000 +0000
 @@ -1,3 +1,20 @@
 +Here are the changes from version 2010608 to version YYYYMMDD.
 +
@@ -614,10 +614,10 @@
  Here are the changes from version 20070826 to version 20100608.
  
  Summary:
-Index: lib/mlton/basic/real.sig
+Index: mlton-20100608/lib/mlton/basic/real.sig
 ===================================================================
---- mlton.orig/lib/mlton/basic/real.sig	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/lib/mlton/basic/real.sig	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/lib/mlton/basic/real.sig	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/lib/mlton/basic/real.sig	2011-07-19 11:34:28.000000000 +0000
 @@ -1,4 +1,4 @@
 -(* Copyright (C) 2009 Matthew Fluet.
 +(* Copyright (C) 2009,2011 Matthew Fluet.
@@ -632,10 +632,10 @@
        val layout: t -> Layout.t
        val ln: t -> t
        val log2: t -> t
-Index: mlyacc/src/yacc.lex
+Index: mlton-20100608/mlyacc/src/yacc.lex
 ===================================================================
---- mlton.orig/mlyacc/src/yacc.lex	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/mlyacc/src/yacc.lex	(.../trunk)	(revision 7506)
+--- mlton-20100608.orig/mlyacc/src/yacc.lex	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/mlyacc/src/yacc.lex	2011-07-19 11:34:28.000000000 +0000
 @@ -75,11 +75,11 @@
  qualid ={id}".";
  %%
@@ -651,11 +651,11 @@
  <INITIAL>"%%"    => (YYBEGIN A; HEADER (concat (rev (!text)),pos yypos,pos yypos));
  <INITIAL,CODE,COMMENT,F,EMPTYCOMMENT>{eol}  => (Add yytext; incLineNum yypos; continue());
  <INITIAL>.       => (Add yytext; continue());
-Index: bin/mlton-script
+Index: mlton-20100608/bin/mlton-script
 ===================================================================
---- mlton.orig/bin/mlton-script	(.../tags/on-20100608-release)	(revision 7506)
-+++ mlton/bin/mlton-script	(.../trunk)	(revision 7506)
-@@ -132,6 +132,7 @@
+--- mlton-20100608.orig/bin/mlton-script	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/bin/mlton-script	2011-07-19 11:34:28.000000000 +0000
+@@ -131,6 +131,7 @@
          -target-link-opt freebsd '-L/usr/local/lib/'             \
          -target-link-opt aix '-maix64'                           \
          -target-link-opt ia64 "$ia64hpux"                        \
@@ -663,10 +663,10 @@
          -target-link-opt mingw                                   \
                  '-lws2_32 -lkernel32 -lpsapi -lnetapi32 -lwinmm' \
          -target-link-opt mingw '-Wl,--enable-stdcall-fixup'      \
-Index: lib/mlton/basic/dir.sml
+Index: mlton-20100608/lib/mlton/basic/dir.sml
 ===================================================================
---- mlton.orig/lib/mlton/basic/dir.sml	(revision 7509)
-+++ mlton/lib/mlton/basic/dir.sml	(working copy)
+--- mlton-20100608.orig/lib/mlton/basic/dir.sml	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/lib/mlton/basic/dir.sml	2011-07-19 11:34:28.000000000 +0000
 @@ -56,6 +56,7 @@
     fold (d, ([], []), fn (x, (dirs, files)) =>
        let
@@ -675,10 +675,10 @@
        in
           if FS.isLink file
              then (dirs, files)
-Index: runtime/Makefile
+Index: mlton-20100608/runtime/Makefile
 ===================================================================
---- mlton.orig/runtime/Makefile	(revision 7509)
-+++ mlton/runtime/Makefile	(working copy)
+--- mlton-20100608.orig/runtime/Makefile	2011-07-19 11:34:22.000000000 +0000
++++ mlton-20100608/runtime/Makefile	2011-07-19 11:34:28.000000000 +0000
 @@ -179,7 +179,6 @@
  # WARNCFLAGS += -Wpadded
  WARNCFLAGS += -Wredundant-decls

Modified: mlton/trunk/package/debian/patches/22-fixes-20110319-to-20110719.patch
===================================================================
--- mlton/trunk/package/debian/patches/22-fixes-20110319-to-20110719.patch	2011-07-19 11:23:18 UTC (rev 7554)
+++ mlton/trunk/package/debian/patches/22-fixes-20110319-to-20110719.patch	2011-07-19 12:02:04 UTC (rev 7555)
@@ -1,96 +1,140 @@
-Index: regression/weird-word1.sml
-===================================================================
---- regression/weird-word1.sml	(revision 0)
-+++ regression/weird-word1.sml	(revision 7552)
-@@ -0,0 +1,26 @@
-+fun fib (w: Word5.word) : Word5.word =
-+   if w <= 0wx1
-+      then 0wx1
-+   else fib (w - 0wx1) + fib (w - 0wx2)
+--- a/doc/changelog
++++ b/doc/changelog
+@@ -1,5 +1,20 @@
+ Here are the changes from version 2010608 to version YYYYMMDD.
+ 
++* 2011-06-14
++   - Fixed bug in SSA/SSA2 shrinker that could erroneously turn a
++     non-tail function call with a Bug transfer as its continuation
++     into a tail function call.
 +
-+val s =
-+   case (fib 0wx5) of
-+      0wx0 => "0wx0"
-+    | 0wx1 => "0wx1"
-+    | 0wx2 => "0wx2"
-+    | 0wx3 => "0wx3"
-+    | 0wx4 => "0wx4"
-+    | 0wx5 => "0wx5"
-+    | 0wx6 => "0wx6"
-+    | 0wx7 => "0wx7"
-+    | 0wx8 => "0wx8"
-+    | 0wx9 => "0wx9"
-+    | 0wxA => "0wxA"
-+    | 0wxB => "0wxB"
-+    | 0wxC => "0wxC"
-+    | 0wxD => "0wxD"
-+    | 0wxE => "0wxE"
-+    | 0wxF => "0wxF"
-+    | _ => "zzz"
++* 2011-06-10
++   - Fixed bug in translation from SSA2 to RSSA with case expressions
++     over non-primitive-sized words.
++   - Fixed bug in SSA/SSA2 type checking of case expressions over
++     words.
 +
-+val _ = print (concat [s, "\n"])
-Index: regression/weird-word2.sml
-===================================================================
---- regression/weird-word2.sml	(revision 0)
-+++ regression/weird-word2.sml	(revision 7552)
-@@ -0,0 +1,41 @@
-+fun fib (w: Word5.word) : Word5.word =
-+   if w <= 0wx1
-+      then 0wx1
-+   else fib (w - 0wx1) + fib (w - 0wx2)
++* 2011-05-03
++   - Fixed a bug with the treatment of as-patterns, which should not
++     allow the redefinition of constructor status.
 +
-+val s =
-+   case (fib 0wx5) of
-+      0wx0 => "0wx0"
-+    | 0wx1 => "0wx1"
-+    | 0wx2 => "0wx2"
-+    | 0wx3 => "0wx3"
-+    | 0wx4 => "0wx4"
-+    | 0wx5 => "0wx5"
-+    | 0wx6 => "0wx6"
-+    | 0wx7 => "0wx7"
-+    | 0wx8 => "0wx8"
-+    | 0wx9 => "0wx9"
-+    | 0wxA => "0wxA"
-+    | 0wxB => "0wxB"
-+    | 0wxC => "0wxC"
-+    | 0wxD => "0wxD"
-+    | 0wxE => "0wxE"
-+    | 0wxF => "0wxF"
-+    | 0wx10 => "0wx10"
-+    | 0wx11 => "0wx11"
-+    | 0wx12 => "0wx12"
-+    | 0wx13 => "0wx13"
-+    | 0wx14 => "0wx14"
-+    | 0wx15 => "0wx15"
-+    | 0wx16 => "0wx16"
-+    | 0wx17 => "0wx17"
-+    | 0wx18 => "0wx18"
-+    | 0wx19 => "0wx19"
-+    | 0wx1A => "0wx1A"
-+    | 0wx1B => "0wx1B"
-+    | 0wx1C => "0wx1C"
-+    | 0wx1D => "0wx1D"
-+    | 0wx1E => "0wx1E"
-+    | 0wx1F => "0wx1F"
+ * 2011-02-18
+    - Fixed bug with treatment of nan in common subexpression
+      elimination SSA optimization.
+--- a/doc/examples/finalizable/finalizable.sml
++++ b/doc/examples/finalizable/finalizable.sml
+@@ -8,15 +8,16 @@
+    end
+ 
+ functor CList (structure F: MLTON_FINALIZABLE
++               structure P: MLTON_POINTER
+                structure Prim:
+                   sig
+-                     val cons: int * Word32.word -> Word32.word
+-                     val free: Word32.word -> unit
+-                     val sing: int -> Word32.word
+-                     val sum: Word32.word -> int
++                     val cons: int * P.t -> P.t
++                     val free: P.t -> unit
++                     val sing: int -> P.t
++                     val sum: P.t -> int
+                   end): CLIST =
+    struct
+-      type t = Word32.word F.t
++      type t = P.t F.t
+ 
+       fun cons (n: int, l: t) =
+          F.withValue
+@@ -77,12 +78,13 @@
+ 
+ structure CList =
+    CList (structure F = MLton.Finalizable
++          structure P = MLton.Pointer
+           structure Prim =
+              struct
+-                val cons = _import "listCons": int * Word32.word -> Word32.word;
+-                val free = _import "listFree": Word32.word -> unit;
+-                val sing = _import "listSing": int -> Word32.word;
+-                val sum = _import "listSum": Word32.word -> int;
++                val cons = _import "listCons": int * P.t -> P.t;
++                val free = _import "listFree": P.t -> unit;
++                val sing = _import "listSing": int -> P.t;
++                val sum = _import "listSum": P.t -> int;
+              end)
+ 
+ structure S = Test (structure CList = CList
+--- a/ide/enscript/sml_all.st
++++ b/ide/enscript/sml_all.st
+@@ -88,6 +88,11 @@
+  */
+ state sml_string
+ {
++  /\\\\(\s|\n)/ {
++    language_print ($0);
++    call (sml_string_gap);
++  }
 +
-+val _ = print (concat [s, "\n"])
-Index: regression/weird-word1.ok
-===================================================================
---- regression/weird-word1.ok	(revision 0)
-+++ regression/weird-word1.ok	(revision 7552)
-@@ -0,0 +1 @@
-+0wx8
-Index: regression/weird-word2.ok
-===================================================================
---- regression/weird-word2.ok	(revision 0)
-+++ regression/weird-word2.ok	(revision 7552)
-@@ -0,0 +1 @@
-+0wx8
-Index: mllex/lexgen.sml
-===================================================================
---- mllex/lexgen.sml	(revision 7524)
-+++ mllex/lexgen.sml	(revision 7552)
+   /\\\\./ {
+     language_print ($0);
+   }
+@@ -96,6 +101,22 @@
+     language_print ($0);
+     return;
+   }
++
++  LANGUAGE_SPECIALS {
++    language_print ($0);
++  }
++}
++
++state sml_string_gap
++{
++  /(\s|\n)/ {
++    language_print ($0);
++  }
++
++  /\\\\/ {
++    language_print ($0);
++    return;
++  }
+ 
+   LANGUAGE_SPECIALS {
+     language_print ($0);
+--- a/ide/enscript/sml_simple.st
++++ b/ide/enscript/sml_simple.st
+@@ -77,6 +77,11 @@
+  */
+ state sml_string extends Highlight
+ {
++  /\\\\(\s|\n)/ {
++    language_print ($0);
++    call (sml_string_gap);
++  }
++
+   /\\\\./ {
+     language_print ($0);
+   }
+@@ -85,6 +90,18 @@
+     language_print ($0);
+     return;
+   }
++}
++
++state sml_string_gap extends Highlight
++{
++  /(\s|\n)/ {
++    language_print ($0);
++  }
++
++  /\\\\/ {
++    language_print ($0);
++    return;
++  }
+ }
+ 
+ /*
+--- a/mllex/lexgen.sml
++++ b/mllex/lexgen.sml
 @@ -1,3 +1,6 @@
 +(* Modified by Matthew Fluet on 2011-06-17.
 + * Use simple file name (rather than absolute paths) in line directives in output.
@@ -116,3975 +160,62 @@
        fun PrintLexer (ends) =
      let val sayln = fn x => (say x; say "\n")
       in case !ArgCode
-Index: include/bytecode.h
-===================================================================
---- include/bytecode.h	(revision 7524)
-+++ include/bytecode.h	(revision 7552)
-@@ -1,12 +0,0 @@
--/* Copyright (C) 2004-2007 Henry Cejtin, Matthew Fluet, Suresh
-- *    Jagannathan, and Stephen Weeks.
-- *
-- * MLton is released under a BSD-style license.
-- * See the file MLton-LICENSE for details.
-- */
--
--#include <stdint.h>
--#include "ml-types.h"
--#include "c-types.h"
--#include "export.h"
--#include "interpret.h"
-Index: include/bytecode-main.h
-===================================================================
---- include/bytecode-main.h	(revision 7524)
-+++ include/bytecode-main.h	(revision 7552)
-@@ -1,87 +0,0 @@
--/* Copyright (C) 2004-2007 Henry Cejtin, Matthew Fluet, Suresh
-- *    Jagannathan, and Stephen Weeks.
-- *
-- * MLton is released under a BSD-style license.
-- * See the file MLton-LICENSE for details.
-- */
--
--#ifndef _BYTECODE_MAIN_H_
--#define _BYTECODE_MAIN_H_
--
--#include "common-main.h"
--#include "interpret.h"
--
--#ifndef DEBUG_CODEGEN
--#define DEBUG_CODEGEN FALSE
--#endif
--
--PRIVATE extern struct Bytecode MLton_bytecode;
--
--static GC_frameIndex returnAddressToFrameIndex (GC_returnAddress ra) {
--        return *((GC_frameIndex*)(MLton_bytecode.code + ra - sizeof(GC_frameIndex)));
--}
--
--#define MLtonCallFromC                                                  \
--static void MLton_callFromC () {                                        \
--        uintptr_t nextFun;                                              \
--        GC_state s;                                                     \
--                                                                        \
--        if (DEBUG_CODEGEN)                                              \
--                fprintf (stderr, "MLton_callFromC() starting\n");       \
--        s = &gcState;                                                   \
--        GC_setSavedThread (s, GC_getCurrentThread (s));                 \
--        s->atomicState += 3;                                            \
--        if (s->signalsInfo.signalIsPending)                             \
--                s->limit = s->limitPlusSlop - GC_HEAP_LIMIT_SLOP;       \
--        /* Switch to the C Handler thread. */                           \
--        GC_switchToThread (s, GC_getCallFromCHandlerThread (s), 0);     \
--        nextFun = *(uintptr_t*)(s->stackTop - GC_RETURNADDRESS_SIZE);   \
--        MLton_Bytecode_interpret (&MLton_bytecode, nextFun);            \
--        s->atomicState += 1;                                            \
--        GC_switchToThread (s, GC_getSavedThread (s), 0);                \
--        s->atomicState -= 1;                                            \
--        if (0 == s->atomicState                                         \
--            && s->signalsInfo.signalIsPending)                          \
--                s->limit = 0;                                           \
--        if (DEBUG_CODEGEN)                                              \
--                fprintf (stderr, "MLton_callFromC done\n");             \
--}                                                                       \
--
--#define MLtonMain(al, mg, mfs, mmc, pk, ps, ml)                         \
--MLtonCallFromC                                                          \
--PUBLIC int MLton_main (int argc, char* argv[]) {                        \
--        uintptr_t nextFun;                                              \
--        Initialize (al, mg, mfs, mmc, pk, ps);                          \
--        if (gcState.amOriginal) {                                       \
--                real_Init();                                            \
--                nextFun = ml;                                           \
--        } else {                                                        \
--                /* Return to the saved world */                         \
--                nextFun = *(uintptr_t*)(gcState.stackTop - GC_RETURNADDRESS_SIZE); \
--        }                                                               \
--        MLton_Bytecode_interpret (&MLton_bytecode, nextFun);            \
--        return 1;                                                       \
--}
--
--#define MLtonLibrary(al, mg, mfs, mmc, pk, ps, ml)                      \
--MLtonCallFromC                                                          \
--PUBLIC void LIB_OPEN(LIBNAME) (int argc, char* argv[]) {                \
--        uintptr_t nextFun;                                              \
--        Initialize (al, mg, mfs, mmc, pk, ps);                          \
--        if (gcState.amOriginal) {                                       \
--                real_Init();                                            \
--                nextFun = ml;                                           \
--        } else {                                                        \
--                /* Return to the saved world */                         \
--                nextFun = *(uintptr_t*)(gcState.stackTop - GC_RETURNADDRESS_SIZE); \
--        }                                                               \
--        MLton_Bytecode_interpret (&MLton_bytecode, nextFun);            \
--}                                                                       \
--PUBLIC void LIB_CLOSE(LIBNAME) () {                                     \
--        uintptr_t nextFun;                                              \
--        nextFun = *(uintptr_t*)(gcState.stackTop - GC_RETURNADDRESS_SIZE); \
--        MLton_Bytecode_interpret (&MLton_bytecode, nextFun);            \
--        GC_done(&gcState);                                              \
--}
--
--#endif /* #ifndef _BYTECODE_MAIN_H */
-Index: runtime/gdtoa-patch.mlton
-===================================================================
---- runtime/gdtoa-patch.mlton	(revision 7524)
-+++ runtime/gdtoa-patch.mlton	(revision 7552)
-@@ -1,98 +1,103 @@
----- gdtoa/gdtoa.h.orig	2008-07-31 18:07:23.128804424 +0200
--+++ gdtoa/gdtoa.h	2008-07-31 18:09:01.333773640 +0200
--@@ -39,6 +39,7 @@
-- #define GDTOA_H_INCLUDED
-- 
-- #include "arith.h"
--+#include "../export.h"
-- 
-- #ifndef Long
-- #define Long long
--@@ -108,42 +109,42 @@
-- extern "C" {
-- #endif
-- 
---extern char* gdtoa__dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
--+PRIVATE extern char* gdtoa__dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
-- 			int *sign, char **rve));
---extern char* gdtoa__gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
--+PRIVATE extern char* gdtoa__gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
-- 			int mode, int ndigits, int *decpt, char **rve));
---extern void gdtoa__freedtoa ANSI((char*));
---extern float  gdtoa__strtof ANSI((CONST char *, char **));
---extern double gdtoa__strtod ANSI((CONST char *, char **));
---extern int gdtoa__strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
---
---extern char*	gdtoa__g_ddfmt  ANSI((char*, double*, int, unsigned));
---extern char*	gdtoa__g_dfmt   ANSI((char*, double*, int, unsigned));
---extern char*	gdtoa__g_ffmt   ANSI((char*, float*,  int, unsigned));
---extern char*	gdtoa__g_Qfmt   ANSI((char*, void*,   int, unsigned));
---extern char*	gdtoa__g_xfmt   ANSI((char*, void*,   int, unsigned));
---extern char*	gdtoa__g_xLfmt  ANSI((char*, void*,   int, unsigned));
---
---extern int	gdtoa__strtoId  ANSI((CONST char*, char**, double*, double*));
---extern int	gdtoa__strtoIdd ANSI((CONST char*, char**, double*, double*));
---extern int	gdtoa__strtoIf  ANSI((CONST char*, char**, float*, float*));
---extern int	gdtoa__strtoIQ  ANSI((CONST char*, char**, void*, void*));
---extern int	gdtoa__strtoIx  ANSI((CONST char*, char**, void*, void*));
---extern int	gdtoa__strtoIxL ANSI((CONST char*, char**, void*, void*));
---extern int	gdtoa__strtord  ANSI((CONST char*, char**, int, double*));
---extern int	gdtoa__strtordd ANSI((CONST char*, char**, int, double*));
---extern int	gdtoa__strtorf  ANSI((CONST char*, char**, int, float*));
---extern int	gdtoa__strtorQ  ANSI((CONST char*, char**, int, void*));
---extern int	gdtoa__strtorx  ANSI((CONST char*, char**, int, void*));
---extern int	gdtoa__strtorxL ANSI((CONST char*, char**, int, void*));
--+PRIVATE extern void gdtoa__freedtoa ANSI((char*));
--+PRIVATE extern float  gdtoa__strtof ANSI((CONST char *, char **));
--+PRIVATE extern double gdtoa__strtod ANSI((CONST char *, char **));
--+PRIVATE extern int gdtoa__strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
--+
--+PRIVATE extern char*	gdtoa__g_ddfmt  ANSI((char*, double*, int, unsigned));
--+PRIVATE extern char*	gdtoa__g_dfmt   ANSI((char*, double*, int, unsigned));
--+PRIVATE extern char*	gdtoa__g_ffmt   ANSI((char*, float*,  int, unsigned));
--+PRIVATE extern char*	gdtoa__g_Qfmt   ANSI((char*, void*,   int, unsigned));
--+PRIVATE extern char*	gdtoa__g_xfmt   ANSI((char*, void*,   int, unsigned));
--+PRIVATE extern char*	gdtoa__g_xLfmt  ANSI((char*, void*,   int, unsigned));
--+
--+PRIVATE extern int	gdtoa__strtoId  ANSI((CONST char*, char**, double*, double*));
--+PRIVATE extern int	gdtoa__strtoIdd ANSI((CONST char*, char**, double*, double*));
--+PRIVATE extern int	gdtoa__strtoIf  ANSI((CONST char*, char**, float*, float*));
--+PRIVATE extern int	gdtoa__strtoIQ  ANSI((CONST char*, char**, void*, void*));
--+PRIVATE extern int	gdtoa__strtoIx  ANSI((CONST char*, char**, void*, void*));
--+PRIVATE extern int	gdtoa__strtoIxL ANSI((CONST char*, char**, void*, void*));
--+PRIVATE extern int	gdtoa__strtord  ANSI((CONST char*, char**, int, double*));
--+PRIVATE extern int	gdtoa__strtordd ANSI((CONST char*, char**, int, double*));
--+PRIVATE extern int	gdtoa__strtorf  ANSI((CONST char*, char**, int, float*));
--+PRIVATE extern int	gdtoa__strtorQ  ANSI((CONST char*, char**, int, void*));
--+PRIVATE extern int	gdtoa__strtorx  ANSI((CONST char*, char**, int, void*));
--+PRIVATE extern int	gdtoa__strtorxL ANSI((CONST char*, char**, int, void*));
-- #if 1
---extern int	gdtoa__strtodI  ANSI((CONST char*, char**, double*));
---extern int	gdtoa__strtopd  ANSI((CONST char*, char**, double*));
---extern int	gdtoa__strtopdd ANSI((CONST char*, char**, double*));
---extern int	gdtoa__strtopf  ANSI((CONST char*, char**, float*));
---extern int	gdtoa__strtopQ  ANSI((CONST char*, char**, void*));
---extern int	gdtoa__strtopx  ANSI((CONST char*, char**, void*));
---extern int	gdtoa__strtopxL ANSI((CONST char*, char**, void*));
--+PRIVATE extern int	gdtoa__strtodI  ANSI((CONST char*, char**, double*));
--+PRIVATE extern int	gdtoa__strtopd  ANSI((CONST char*, char**, double*));
--+PRIVATE extern int	gdtoa__strtopdd ANSI((CONST char*, char**, double*));
--+PRIVATE extern int	gdtoa__strtopf  ANSI((CONST char*, char**, float*));
--+PRIVATE extern int	gdtoa__strtopQ  ANSI((CONST char*, char**, void*));
--+PRIVATE extern int	gdtoa__strtopx  ANSI((CONST char*, char**, void*));
--+PRIVATE extern int	gdtoa__strtopxL ANSI((CONST char*, char**, void*));
-- #else
-- #define gdtoa__strtopd(s,se,x) gdtoa__strtord(s,se,1,x)
-- #define gdtoa__strtopdd(s,se,x) gdtoa__strtordd(s,se,1,x)
----- gdtoa/gdtoaimp.h.orig	2008-10-04 02:33:51 +0000
--+++ gdtoa/gdtoaimp.h	2008-10-04 02:34:41 +0000
--@@ -503,7 +503,8 @@
-- #define g__fmt g__fmt_D2A
-- #define gethex gethex_D2A
-- #define hexdig hexdig_D2A
---#define hexdig_init hexdig_init_D2A
--+/* work around MinGW bug */
--+#define hexdig_init hexdig_init_D3A
-- #define hexnan hexnan_D2A
-- #define hi0bits hi0bits_D2A
-- #define i2b i2b_D2A
-+diff -P -C 2 -r gdtoa/gdtoa.h gdtoa-new/gdtoa.h
-+*** gdtoa/gdtoa.h	2011-05-27 17:20:57.492026828 -0400
-+--- gdtoa-new/gdtoa.h	2011-05-27 17:21:21.004032383 -0400
-+***************
-+*** 105,144 ****
-+  #endif
-+  
-+! extern char* gdtoa__dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
-+  			int *sign, char **rve));
-+! extern char* gdtoa__gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
-+  			int mode, int ndigits, int *decpt, char **rve));
-+! extern void gdtoa__freedtoa ANSI((char*));
-+! extern float  gdtoa__strtof ANSI((CONST char *, char **));
-+! extern double gdtoa__strtod ANSI((CONST char *, char **));
-+! extern int gdtoa__strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
-+  
-+! extern char*	gdtoa__g_ddfmt  ANSI((char*, double*, int, size_t));
-+! extern char*	gdtoa__g_dfmt   ANSI((char*, double*, int, size_t));
-+! extern char*	gdtoa__g_ffmt   ANSI((char*, float*,  int, size_t));
-+! extern char*	gdtoa__g_Qfmt   ANSI((char*, void*,   int, size_t));
-+! extern char*	gdtoa__g_xfmt   ANSI((char*, void*,   int, size_t));
-+! extern char*	gdtoa__g_xLfmt  ANSI((char*, void*,   int, size_t));
-+  
-+! extern int	gdtoa__strtoId  ANSI((CONST char*, char**, double*, double*));
-+! extern int	gdtoa__strtoIdd ANSI((CONST char*, char**, double*, double*));
-+! extern int	gdtoa__strtoIf  ANSI((CONST char*, char**, float*, float*));
-+! extern int	gdtoa__strtoIQ  ANSI((CONST char*, char**, void*, void*));
-+! extern int	gdtoa__strtoIx  ANSI((CONST char*, char**, void*, void*));
-+! extern int	gdtoa__strtoIxL ANSI((CONST char*, char**, void*, void*));
-+! extern int	gdtoa__strtord  ANSI((CONST char*, char**, int, double*));
-+! extern int	gdtoa__strtordd ANSI((CONST char*, char**, int, double*));
-+! extern int	gdtoa__strtorf  ANSI((CONST char*, char**, int, float*));
-+! extern int	gdtoa__strtorQ  ANSI((CONST char*, char**, int, void*));
-+! extern int	gdtoa__strtorx  ANSI((CONST char*, char**, int, void*));
-+! extern int	gdtoa__strtorxL ANSI((CONST char*, char**, int, void*));
-+  #if 1
-+! extern int	gdtoa__strtodI  ANSI((CONST char*, char**, double*));
-+! extern int	gdtoa__strtopd  ANSI((CONST char*, char**, double*));
-+! extern int	gdtoa__strtopdd ANSI((CONST char*, char**, double*));
-+! extern int	gdtoa__strtopf  ANSI((CONST char*, char**, float*));
-+! extern int	gdtoa__strtopQ  ANSI((CONST char*, char**, void*));
-+! extern int	gdtoa__strtopx  ANSI((CONST char*, char**, void*));
-+! extern int	gdtoa__strtopxL ANSI((CONST char*, char**, void*));
-+  #else
-+  #define gdtoa__strtopd(s,se,x) gdtoa__strtord(s,se,1,x)
-+--- 105,144 ----
-+  #endif
-+  
-+! PRIVATE extern char* gdtoa__dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
-+  			int *sign, char **rve));
-+! PRIVATE extern char* gdtoa__gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
-+  			int mode, int ndigits, int *decpt, char **rve));
-+! PRIVATE extern void gdtoa__freedtoa ANSI((char*));
-+! PRIVATE extern float  gdtoa__strtof ANSI((CONST char *, char **));
-+! PRIVATE extern double gdtoa__strtod ANSI((CONST char *, char **));
-+! PRIVATE extern int gdtoa__strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
-+  
-+! PRIVATE extern char*	gdtoa__g_ddfmt  ANSI((char*, double*, int, size_t));
-+! PRIVATE extern char*	gdtoa__g_dfmt   ANSI((char*, double*, int, size_t));
-+! PRIVATE extern char*	gdtoa__g_ffmt   ANSI((char*, float*,  int, size_t));
-+! PRIVATE extern char*	gdtoa__g_Qfmt   ANSI((char*, void*,   int, size_t));
-+! PRIVATE extern char*	gdtoa__g_xfmt   ANSI((char*, void*,   int, size_t));
-+! PRIVATE extern char*	gdtoa__g_xLfmt  ANSI((char*, void*,   int, size_t));
-+  
-+! PRIVATE extern int	gdtoa__strtoId  ANSI((CONST char*, char**, double*, double*));
-+! PRIVATE extern int	gdtoa__strtoIdd ANSI((CONST char*, char**, double*, double*));
-+! PRIVATE extern int	gdtoa__strtoIf  ANSI((CONST char*, char**, float*, float*));
-+! PRIVATE extern int	gdtoa__strtoIQ  ANSI((CONST char*, char**, void*, void*));
-+! PRIVATE extern int	gdtoa__strtoIx  ANSI((CONST char*, char**, void*, void*));
-+! PRIVATE extern int	gdtoa__strtoIxL ANSI((CONST char*, char**, void*, void*));
-+! PRIVATE extern int	gdtoa__strtord  ANSI((CONST char*, char**, int, double*));
-+! PRIVATE extern int	gdtoa__strtordd ANSI((CONST char*, char**, int, double*));
-+! PRIVATE extern int	gdtoa__strtorf  ANSI((CONST char*, char**, int, float*));
-+! PRIVATE extern int	gdtoa__strtorQ  ANSI((CONST char*, char**, int, void*));
-+! PRIVATE extern int	gdtoa__strtorx  ANSI((CONST char*, char**, int, void*));
-+! PRIVATE extern int	gdtoa__strtorxL ANSI((CONST char*, char**, int, void*));
-+  #if 1
-+! PRIVATE extern int	gdtoa__strtodI  ANSI((CONST char*, char**, double*));
-+! PRIVATE extern int	gdtoa__strtopd  ANSI((CONST char*, char**, double*));
-+! PRIVATE extern int	gdtoa__strtopdd ANSI((CONST char*, char**, double*));
-+! PRIVATE extern int	gdtoa__strtopf  ANSI((CONST char*, char**, float*));
-+! PRIVATE extern int	gdtoa__strtopQ  ANSI((CONST char*, char**, void*));
-+! PRIVATE extern int	gdtoa__strtopx  ANSI((CONST char*, char**, void*));
-+! PRIVATE extern int	gdtoa__strtopxL ANSI((CONST char*, char**, void*));
-+  #else
-+  #define gdtoa__strtopd(s,se,x) gdtoa__strtord(s,se,1,x)
-+diff -P -C 2 -r gdtoa/gdtoaimp.h gdtoa-new/gdtoaimp.h
-+*** gdtoa/gdtoaimp.h	2011-05-27 17:20:57.493026911 -0400
-+--- gdtoa-new/gdtoaimp.h	2011-05-27 17:21:21.004032383 -0400
-+***************
-+*** 504,508 ****
-+  #define gethex gethex_D2A
-+  #define hexdig hexdig_D2A
-+! #define hexdig_init hexdig_init_D2A
-+  #define hexnan hexnan_D2A
-+  #define hi0bits(x) hi0bits_D2A((ULong)(x))
-+--- 504,509 ----
-+  #define gethex gethex_D2A
-+  #define hexdig hexdig_D2A
-+! /* work around MinGW bug */
-+! #define hexdig_init hexdig_init_D3A
-+  #define hexnan hexnan_D2A
-+  #define hi0bits(x) hi0bits_D2A((ULong)(x))
-Index: runtime/gc/copy-thread.c
-===================================================================
---- runtime/gc/copy-thread.c	(revision 7524)
-+++ runtime/gc/copy-thread.c	(revision 7552)
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
-+/* Copyright (C) 2011 Matthew Fluet.
-+ * Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
-  *    Jagannathan, and Stephen Weeks.
-  * Copyright (C) 1997-2000 NEC Research Institute.
-  *
-@@ -35,7 +36,7 @@
-   GC_thread fromThread;
-   GC_stack fromStack;
-   GC_thread toThread;
--  GC_stack toStack;
-+  GC_stack __attribute__ ((unused)) toStack;
+--- a/mlton/backend/ssa-to-rssa.fun
++++ b/mlton/backend/ssa-to-rssa.fun
+@@ -599,12 +599,18 @@
+              src = Operand.word (WordX.one cardElemSize)}]
+    end
  
-   if (DEBUG_THREADS)
-     fprintf (stderr, "GC_copyCurrentThread\n");
-@@ -57,7 +58,7 @@
-   GC_thread fromThread;
-   GC_stack fromStack;
-   GC_thread toThread;
--  GC_stack toStack;
-+  GC_stack __attribute__ ((unused)) toStack;
- 
-   if (DEBUG_THREADS)
-     fprintf (stderr, "GC_copyThread ("FMTPTR")\n", (uintptr_t)p);
-Index: runtime/gc/heap.c
-===================================================================
---- runtime/gc/heap.c	(revision 7524)
-+++ runtime/gc/heap.c	(revision 7552)
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2009-2010 Matthew Fluet.
-+/* Copyright (C) 2009-2011 Matthew Fluet.
-  * Copyright (C) 2005-2008 Henry Cejtin, Matthew Fluet, Suresh
-  *    Jagannathan, and Stephen Weeks.
-  *
-@@ -41,7 +41,7 @@
-   size_t liveMapsSize, liveWithMapsSize;
-   size_t currentMapsSize, currentWithMapsSize;
-   size_t resSize, resWithMapsSize;
--  size_t syslimSize, syslimMapsSize, syslimWithMapsSize;
-+  size_t syslimSize, __attribute__ ((unused)) syslimMapsSize, syslimWithMapsSize;
-   double ratio;
- 
-   syslimWithMapsSize = alignDown (SIZE_MAX, s->sysvals.pageSize);
-@@ -553,12 +553,11 @@
-  */
- void resizeHeapSecondary (GC_state s) {
-   size_t primarySize, primaryWithMapsSize;
--  size_t secondarySize, secondaryWithMapsSize;
-+  size_t secondarySize;
- 
-   primarySize = s->heap.size;
-   primaryWithMapsSize = s->heap.withMapsSize;
-   secondarySize = s->secondaryHeap.size;
--  secondaryWithMapsSize = s->secondaryHeap.withMapsSize;
-   if (DEBUG_RESIZING)
-     fprintf (stderr, "secondaryHeapResize\n");
-   if (0 == secondarySize)
-Index: runtime/gc/init-world.c
-===================================================================
---- runtime/gc/init-world.c	(revision 7524)
-+++ runtime/gc/init-world.c	(revision 7552)
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999-2008 Henry Cejtin, Matthew Fluet, Suresh
-+/* Copyright (C) 2011 Matthew Fluet.
-+ * Copyright (C) 1999-2008 Henry Cejtin, Matthew Fluet, Suresh
-  *    Jagannathan, and Stephen Weeks.
-  * Copyright (C) 1997-2000 NEC Research Institute.
-  *
-@@ -51,7 +52,7 @@
-   size_t bytes;
-   bool neg;
-   __mpz_struct resmpz;
--  int ans;
-+  __attribute__ ((unused)) int ans;
- 
-   assert (isFrontierAligned (s, s->frontier));
-   for (i = 0; i < s->intInfInitsLength; i++) {
-Index: runtime/gc/profiling.c
-===================================================================
---- runtime/gc/profiling.c	(revision 7524)
-+++ runtime/gc/profiling.c	(revision 7552)
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
-+/* Copyright (C) 2011 Matthew Fluet.
-+ * Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
-  *    Jagannathan, and Stephen Weeks.
-  * Copyright (C) 1997-2000 NEC Research Institute.
-  *
-@@ -76,7 +77,6 @@
- 
- void enterForProfiling (GC_state s, GC_sourceSeqIndex sourceSeqIndex) {
-   uint32_t i;
--  GC_profileData p;
-   GC_sourceIndex sourceIndex;
-   uint32_t *sourceSeq;
- 
-@@ -84,7 +84,6 @@
-     fprintf (stderr, "enterForProfiling ("FMTSSI")\n", sourceSeqIndex);
-   assert (s->profiling.stack);
-   assert (sourceSeqIndex < s->sourceMaps.sourceSeqsLength);
--  p = s->profiling.data;
-   sourceSeq = s->sourceMaps.sourceSeqs[sourceSeqIndex];
-   for (i = 1; i <= sourceSeq[0]; i++) {
-     sourceIndex = sourceSeq[i];
-@@ -123,10 +122,8 @@
- }
- 
- void leaveSourceForProfiling (GC_state s, GC_profileMasterIndex i) {
--  GC_profileData p;
-   GC_profileStack ps;
- 
--  p = s->profiling.data;
-   ps = getProfileStackInfo (s, i);
-   assert (ps->numOccurrences > 0);
-   ps->numOccurrences--;
-@@ -136,7 +133,6 @@
- 
- void leaveForProfiling (GC_state s, GC_sourceSeqIndex sourceSeqIndex) {
-   int32_t i;
--  GC_profileData p;
-   GC_sourceIndex sourceIndex;
-   uint32_t *sourceSeq;
- 
-@@ -144,7 +140,6 @@
-     fprintf (stderr, "leaveForProfiling ("FMTSSI")\n", sourceSeqIndex);
-   assert (s->profiling.stack);
-   assert (sourceSeqIndex < s->sourceMaps.sourceSeqsLength);
--  p = s->profiling.data;
-   sourceSeq = s->sourceMaps.sourceSeqs[sourceSeqIndex];
-   for (i = sourceSeq[0]; i > 0; i--) {
-     sourceIndex = sourceSeq[i];
-Index: runtime/gc/invariant.c
-===================================================================
---- runtime/gc/invariant.c	(revision 7524)
-+++ runtime/gc/invariant.c	(revision 7552)
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
-+/* Copyright (C) 2011 Matthew Fluet.
-+ * Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
-  *    Jagannathan, and Stephen Weeks.
-  * Copyright (C) 1997-2000 NEC Research Institute.
-  *
-@@ -42,6 +43,8 @@
- 
-       assert (layout->size <= s->maxFrameSize);
-       offsets = layout->offsets;
-+      for (unsigned int j = 0; j < offsets[0]; ++j)
-+        assert (offsets[j + 1] < layout->size);
-     }
-   }
-   /* Generational */
-Index: runtime/gdtoa-patch
-===================================================================
---- runtime/gdtoa-patch	(revision 7524)
-+++ runtime/gdtoa-patch	(revision 7552)
-@@ -1,918 +1,1119 @@
--diff -u gdtoa.orig/arithchk.c gdtoa/arithchk.c
----- gdtoa.orig/arithchk.c	1998-06-19 20:46:11 +0000
--+++ gdtoa/arithchk.c	2008-10-04 02:01:43 +0000
--@@ -136,7 +136,7 @@
-- 	return b == 0.;
-- 	}
-- 
---main()
--+int main()
-- {
-- 	Akind *a = 0;
-- 	int Ldef = 0;
--diff -u gdtoa.orig/dmisc.c gdtoa/dmisc.c
----- gdtoa.orig/dmisc.c	1998-11-02 19:34:31 +0000
--+++ gdtoa/dmisc.c	2008-10-04 02:01:43 +0000
--@@ -89,9 +89,9 @@
-- 
--  void
-- #ifdef KR_headers
---freedtoa(s) char *s;
--+gdtoa__freedtoa(s) char *s;
-- #else
---freedtoa(char *s)
--+gdtoa__freedtoa(char *s)
-- #endif
-- {
-- 	Bigint *b = (Bigint *)((int *)s - 1);
--diff -u gdtoa.orig/dtoa.c gdtoa/dtoa.c
----- gdtoa.orig/dtoa.c	2000-11-02 15:09:01 +0000
--+++ gdtoa/dtoa.c	2008-10-04 02:01:43 +0000
--@@ -80,7 +80,7 @@
-- #endif
-- 
--  char *
---dtoa
--+gdtoa__dtoa
-- #ifdef KR_headers
-- 	(d, mode, ndigits, decpt, sign, rve)
-- 	double d; int mode, ndigits, *decpt, *sign; char **rve;
--@@ -142,7 +142,7 @@
-- 
-- #ifndef MULTIPLE_THREADS
-- 	if (dtoa_result) {
---		freedtoa(dtoa_result);
--+		gdtoa__freedtoa(dtoa_result);
-- 		dtoa_result = 0;
-- 		}
-- #endif
--diff -u gdtoa.orig/g_Qfmt.c gdtoa/g_Qfmt.c
----- gdtoa.orig/g_Qfmt.c	2000-11-01 15:21:10 +0000
--+++ gdtoa/g_Qfmt.c	2008-10-04 02:01:43 +0000
--@@ -57,9 +57,9 @@
-- 
--  char*
-- #ifdef KR_headers
---g_Qfmt(buf, V, ndig, bufsize) char *buf; char *V; int ndig; unsigned bufsize;
--+gdtoa__g_Qfmt(buf, V, ndig, bufsize) char *buf; char *V; int ndig; unsigned bufsize;
-- #else
---g_Qfmt(char *buf, void *V, int ndig, unsigned bufsize)
--+gdtoa__g_Qfmt(char *buf, void *V, int ndig, unsigned bufsize)
-- #endif
-- {
-- 	static FPI fpi = { 113, 1-16383-113+1, 32766 - 16383 - 113 + 1, 1, 0 };
--@@ -115,6 +115,6 @@
-- 			return 0;
-- 		mode = 0;
-- 		}
---	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
--+	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-- 	return g__fmt(buf, s, se, decpt, sign);
-- 	}
--diff -u gdtoa.orig/g__fmt.c gdtoa/g__fmt.c
----- gdtoa.orig/g__fmt.c	2003-03-21 20:59:43 +0000
--+++ gdtoa/g__fmt.c	2008-10-04 02:01:43 +0000
--@@ -96,6 +96,6 @@
-- 			*b++ = '0';
-- 		*b = 0;
-- 		}
---	freedtoa(s0);
--+	gdtoa__freedtoa(s0);
-- 	return b;
-+diff -P -C 2 -r gdtoa/dmisc.c gdtoa-new/dmisc.c
-+*** gdtoa/dmisc.c	2004-04-11 23:39:50.000000000 -0400
-+--- gdtoa-new/dmisc.c	2011-05-27 17:09:13.940030010 -0400
-+***************
-+*** 84,90 ****
-+   void
-+  #ifdef KR_headers
-+! freedtoa(s) char *s;
-+  #else
-+! freedtoa(char *s)
-+  #endif
-+  {
-+--- 84,90 ----
-+   void
-+  #ifdef KR_headers
-+! gdtoa__freedtoa(s) char *s;
-+  #else
-+! gdtoa__freedtoa(char *s)
-+  #endif
-+  {
-+diff -P -C 2 -r gdtoa/dtoa.c gdtoa-new/dtoa.c
-+*** gdtoa/dtoa.c	2010-09-15 10:59:11.000000000 -0400
-+--- gdtoa-new/dtoa.c	2011-05-27 17:09:13.940030010 -0400
-+***************
-+*** 74,78 ****
-+  
-+   char *
-+! dtoa
-+  #ifdef KR_headers
-+  	(d0, mode, ndigits, decpt, sign, rve)
-+--- 74,78 ----
-+  
-+   char *
-+! gdtoa__dtoa
-+  #ifdef KR_headers
-+  	(d0, mode, ndigits, decpt, sign, rve)
-+***************
-+*** 147,151 ****
-+  #ifndef MULTIPLE_THREADS
-+  	if (dtoa_result) {
-+! 		freedtoa(dtoa_result);
-+  		dtoa_result = 0;
-+  		}
-+--- 147,151 ----
-+  #ifndef MULTIPLE_THREADS
-+  	if (dtoa_result) {
-+! 		gdtoa__freedtoa(dtoa_result);
-+  		dtoa_result = 0;
-+  		}
-+diff -P -C 2 -r gdtoa/g_ddfmt.c gdtoa-new/g_ddfmt.c
-+*** gdtoa/g_ddfmt.c	2009-04-11 23:11:05.000000000 -0400
-+--- gdtoa-new/g_ddfmt.c	2011-05-27 17:09:13.940030010 -0400
-+***************
-+*** 34,40 ****
-+   char *
-+  #ifdef KR_headers
-+! g_ddfmt(buf, dd0, ndig, bufsize) char *buf; double *dd0; int ndig; size_t bufsize;
-+  #else
-+! g_ddfmt(char *buf, double *dd0, int ndig, size_t bufsize)
-+  #endif
-+  {
-+--- 34,40 ----
-+   char *
-+  #ifdef KR_headers
-+! gdtoa__g_ddfmt(buf, dd0, ndig, bufsize) char *buf; double *dd0; int ndig; size_t bufsize;
-+  #else
-+! gdtoa__g_ddfmt(char *buf, double *dd0, int ndig, size_t bufsize)
-+  #endif
-+  {
-+***************
-+*** 164,168 ****
-+  	fpi.sudden_underflow = 0;
-+  	i = STRTOG_Normal;
-+! 	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-+  	b = g__fmt(buf, s, se, decpt, z->sign, bufsize);
-+  	Bfree(z);
-+--- 164,168 ----
-+  	fpi.sudden_underflow = 0;
-+  	i = STRTOG_Normal;
-+! 	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-+  	b = g__fmt(buf, s, se, decpt, z->sign, bufsize);
-+  	Bfree(z);
-+diff -P -C 2 -r gdtoa/g_dfmt.c gdtoa-new/g_dfmt.c
-+*** gdtoa/g_dfmt.c	2010-07-08 23:38:41.000000000 -0400
-+--- gdtoa-new/g_dfmt.c	2011-05-27 17:09:13.940030010 -0400
-+***************
-+*** 34,40 ****
-+   char*
-+  #ifdef KR_headers
-+! g_dfmt(buf, d, ndig, bufsize) char *buf; double *d; int ndig; size_t bufsize;
-+  #else
-+! g_dfmt(char *buf, double *d, int ndig, size_t bufsize)
-+  #endif
-+  {
-+--- 34,40 ----
-+   char*
-+  #ifdef KR_headers
-+! gdtoa__g_dfmt(buf, d, ndig, bufsize) char *buf; double *d; int ndig; size_t bufsize;
-+  #else
-+! gdtoa__g_dfmt(char *buf, double *d, int ndig, size_t bufsize)
-+  #endif
-+  {
-+***************
-+*** 91,95 ****
-+  	if (sign)
-+  		i = STRTOG_Normal | STRTOG_Neg;
-+! 	s = gdtoa(fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-+  	return g__fmt(buf, s, se, decpt, sign, bufsize);
-   	}
--diff -u gdtoa.orig/g_ddfmt.c gdtoa/g_ddfmt.c
----- gdtoa.orig/g_ddfmt.c	1998-09-09 12:09:31 +0000
--+++ gdtoa/g_ddfmt.c	2008-10-04 02:01:43 +0000
--@@ -40,9 +40,9 @@
-- 
--  char *
-- #ifdef KR_headers
---g_ddfmt(buf, dd, ndig, bufsize) char *buf; double *dd; int ndig; unsigned bufsize;
--+gdtoa__g_ddfmt(buf, dd, ndig, bufsize) char *buf; double *dd; int ndig; unsigned bufsize;
-- #else
---g_ddfmt(char *buf, double *dd, int ndig, unsigned bufsize)
--+gdtoa__g_ddfmt(char *buf, double *dd, int ndig, unsigned bufsize)
-- #endif
-- {
-- 	FPI fpi;
--@@ -154,7 +154,7 @@
-- 	fpi.rounding = FPI_Round_near;
-- 	fpi.sudden_underflow = 0;
-- 	i = STRTOG_Normal;
---	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
--+	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-- 	b = g__fmt(buf, s, se, decpt, z->sign);
-- 	Bfree(z);
-- 	return b;
--diff -u gdtoa.orig/g_dfmt.c gdtoa/g_dfmt.c
----- gdtoa.orig/g_dfmt.c	1998-09-09 14:18:15 +0000
--+++ gdtoa/g_dfmt.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  char*
-- #ifdef KR_headers
---g_dfmt(buf, d, ndig, bufsize) char *buf; double *d; int ndig; unsigned bufsize;
--+gdtoa__g_dfmt(buf, d, ndig, bufsize) char *buf; double *d; int ndig; unsigned bufsize;
-- #else
---g_dfmt(char *buf, double *d, int ndig, unsigned bufsize)
--+gdtoa__g_dfmt(char *buf, double *d, int ndig, unsigned bufsize)
-- #endif
-- {
-- 	static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, 0 };
--@@ -90,6 +90,6 @@
-- 		mode = 0;
-- 		}
-- 	i = STRTOG_Normal;
---	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
--+	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-- 	return g__fmt(buf, s, se, decpt, sign);
-- 	}
--diff -u gdtoa.orig/g_ffmt.c gdtoa/g_ffmt.c
----- gdtoa.orig/g_ffmt.c	1998-09-12 20:39:39 +0000
--+++ gdtoa/g_ffmt.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  char*
-- #ifdef KR_headers
---g_ffmt(buf, f, ndig, bufsize) char *buf; float *f; int ndig; unsigned bufsize;
--+gdtoa__g_ffmt(buf, f, ndig, bufsize) char *buf; float *f; int ndig; unsigned bufsize;
-- #else
---g_ffmt(char *buf, float *f, int ndig, unsigned bufsize)
--+gdtoa__g_ffmt(char *buf, float *f, int ndig, unsigned bufsize)
-- #endif
-- {
-- 	static FPI fpi = { 24, 1-127-24+1,  254-127-24+1, 1, 0 };
--@@ -89,6 +89,6 @@
-- 		mode = 0;
-- 		}
-- 	i = STRTOG_Normal;
---	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
--+	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-- 	return g__fmt(buf, s, se, decpt, sign);
-- 	}
--diff -u gdtoa.orig/g_xLfmt.c gdtoa/g_xLfmt.c
----- gdtoa.orig/g_xLfmt.c	1998-09-09 16:35:43 +0000
--+++ gdtoa/g_xLfmt.c	2008-10-04 02:01:43 +0000
--@@ -55,9 +55,9 @@
-- 
--  char*
-- #ifdef KR_headers
---g_xLfmt(buf, V, ndig, bufsize) char *buf; char *V; int ndig; unsigned bufsize;
--+gdtoa__g_xLfmt(buf, V, ndig, bufsize) char *buf; char *V; int ndig; unsigned bufsize;
-- #else
---g_xLfmt(char *buf, void *V, int ndig, unsigned bufsize)
--+gdtoa__g_xLfmt(char *buf, void *V, int ndig, unsigned bufsize)
-- #endif
-- {
-- 	static FPI fpi = { 64, 1-16383-64+1, 32766 - 16383 - 64 + 1, 1, 0 };
--@@ -109,6 +109,6 @@
-- 			return 0;
-- 		mode = 0;
-- 		}
---	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
--+	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-- 	return g__fmt(buf, s, se, decpt, sign);
-- 	}
--diff -u gdtoa.orig/g_xfmt.c gdtoa/g_xfmt.c
----- gdtoa.orig/g_xfmt.c	1998-09-09 13:59:17 +0000
--+++ gdtoa/g_xfmt.c	2008-10-04 02:01:43 +0000
--@@ -59,9 +59,9 @@
-- 
--  char*
-- #ifdef KR_headers
---g_xfmt(buf, V, ndig, bufsize) char *buf; char *V; int ndig; unsigned bufsize;
--+gdtoa__g_xfmt(buf, V, ndig, bufsize) char *buf; char *V; int ndig; unsigned bufsize;
-- #else
---g_xfmt(char *buf, void *V, int ndig, unsigned bufsize)
--+gdtoa__g_xfmt(char *buf, void *V, int ndig, unsigned bufsize)
-- #endif
-- {
-- 	static FPI fpi = { 64, 1-16383-64+1, 32766 - 16383 - 64 + 1, 1, 0 };
--@@ -114,6 +114,6 @@
-- 			return 0;
-- 		mode = 0;
-- 		}
---	s = gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
--+	s = gdtoa__gdtoa(&fpi, ex, bits, &i, mode, ndig, &decpt, &se);
-- 	return g__fmt(buf, s, se, decpt, sign);
-- 	}
--Only in gdtoa: gdtoa
--diff -u gdtoa.orig/gdtoa.c gdtoa/gdtoa.c
----- gdtoa.orig/gdtoa.c	1999-09-21 04:22:19 +0000
--+++ gdtoa/gdtoa.c	2008-10-04 02:01:43 +0000
--@@ -115,7 +115,7 @@
--  */
-- 
--  char *
---gdtoa
--+gdtoa__gdtoa
-- #ifdef KR_headers
-- 	(fpi, be, bits, kindp, mode, ndigits, decpt, rve)
-- 	FPI *fpi; int be; ULong *bits;
--@@ -168,7 +168,7 @@
-- 
-- #ifndef MULTIPLE_THREADS
-- 	if (dtoa_result) {
---		freedtoa(dtoa_result);
--+		gdtoa__freedtoa(dtoa_result);
-- 		dtoa_result = 0;
-- 		}
-- #endif
--diff -u gdtoa.orig/gdtoa.h gdtoa/gdtoa.h
----- gdtoa.orig/gdtoa.h	2000-11-01 15:01:39 +0000
--+++ gdtoa/gdtoa.h	2008-10-04 02:01:43 +0000
--@@ -108,49 +108,49 @@
-- extern "C" {
-- #endif
-- 
---extern char* dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
--+extern char* gdtoa__dtoa  ANSI((double d, int mode, int ndigits, int *decpt,
-- 			int *sign, char **rve));
---extern char* gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
--+extern char* gdtoa__gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp,
-- 			int mode, int ndigits, int *decpt, char **rve));
---extern void freedtoa ANSI((char*));
---extern float  strtof ANSI((CONST char *, char **));
---extern double strtod ANSI((CONST char *, char **));
---extern int strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
--+extern void gdtoa__freedtoa ANSI((char*));
--+extern float  gdtoa__strtof ANSI((CONST char *, char **));
--+extern double gdtoa__strtod ANSI((CONST char *, char **));
--+extern int gdtoa__strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*));
-- 
---extern char*	g_ddfmt  ANSI((char*, double*, int, unsigned));
---extern char*	g_dfmt   ANSI((char*, double*, int, unsigned));
---extern char*	g_ffmt   ANSI((char*, float*,  int, unsigned));
---extern char*	g_Qfmt   ANSI((char*, void*,   int, unsigned));
---extern char*	g_xfmt   ANSI((char*, void*,   int, unsigned));
---extern char*	g_xLfmt  ANSI((char*, void*,   int, unsigned));
--+extern char*	gdtoa__g_ddfmt  ANSI((char*, double*, int, unsigned));
--+extern char*	gdtoa__g_dfmt   ANSI((char*, double*, int, unsigned));
--+extern char*	gdtoa__g_ffmt   ANSI((char*, float*,  int, unsigned));
--+extern char*	gdtoa__g_Qfmt   ANSI((char*, void*,   int, unsigned));
--+extern char*	gdtoa__g_xfmt   ANSI((char*, void*,   int, unsigned));
--+extern char*	gdtoa__g_xLfmt  ANSI((char*, void*,   int, unsigned));
-- 
---extern int	strtoId  ANSI((CONST char*, char**, double*, double*));
---extern int	strtoIdd ANSI((CONST char*, char**, double*, double*));
---extern int	strtoIf  ANSI((CONST char*, char**, float*, float*));
---extern int	strtoIQ  ANSI((CONST char*, char**, void*, void*));
---extern int	strtoIx  ANSI((CONST char*, char**, void*, void*));
---extern int	strtoIxL ANSI((CONST char*, char**, void*, void*));
---extern int	strtord  ANSI((CONST char*, char**, int, double*));
---extern int	strtordd ANSI((CONST char*, char**, int, double*));
---extern int	strtorf  ANSI((CONST char*, char**, int, float*));
---extern int	strtorQ  ANSI((CONST char*, char**, int, void*));
---extern int	strtorx  ANSI((CONST char*, char**, int, void*));
---extern int	strtorxL ANSI((CONST char*, char**, int, void*));
--+extern int	gdtoa__strtoId  ANSI((CONST char*, char**, double*, double*));
--+extern int	gdtoa__strtoIdd ANSI((CONST char*, char**, double*, double*));
--+extern int	gdtoa__strtoIf  ANSI((CONST char*, char**, float*, float*));
--+extern int	gdtoa__strtoIQ  ANSI((CONST char*, char**, void*, void*));
--+extern int	gdtoa__strtoIx  ANSI((CONST char*, char**, void*, void*));
--+extern int	gdtoa__strtoIxL ANSI((CONST char*, char**, void*, void*));
--+extern int	gdtoa__strtord  ANSI((CONST char*, char**, int, double*));
--+extern int	gdtoa__strtordd ANSI((CONST char*, char**, int, double*));
--+extern int	gdtoa__strtorf  ANSI((CONST char*, char**, int, float*));
--+extern int	gdtoa__strtorQ  ANSI((CONST char*, char**, int, void*));
--+extern int	gdtoa__strtorx  ANSI((CONST char*, char**, int, void*));
--+extern int	gdtoa__strtorxL ANSI((CONST char*, char**, int, void*));
-- #if 1
---extern int	strtodI  ANSI((CONST char*, char**, double*));
---extern int	strtopd  ANSI((CONST char*, char**, double*));
---extern int	strtopdd ANSI((CONST char*, char**, double*));
---extern int	strtopf  ANSI((CONST char*, char**, float*));
---extern int	strtopQ  ANSI((CONST char*, char**, void*));
---extern int	strtopx  ANSI((CONST char*, char**, void*));
---extern int	strtopxL ANSI((CONST char*, char**, void*));
--+extern int	gdtoa__strtodI  ANSI((CONST char*, char**, double*));
--+extern int	gdtoa__strtopd  ANSI((CONST char*, char**, double*));
--+extern int	gdtoa__strtopdd ANSI((CONST char*, char**, double*));
--+extern int	gdtoa__strtopf  ANSI((CONST char*, char**, float*));
--+extern int	gdtoa__strtopQ  ANSI((CONST char*, char**, void*));
--+extern int	gdtoa__strtopx  ANSI((CONST char*, char**, void*));
--+extern int	gdtoa__strtopxL ANSI((CONST char*, char**, void*));
-- #else
---#define strtopd(s,se,x) strtord(s,se,1,x)
---#define strtopdd(s,se,x) strtordd(s,se,1,x)
---#define strtopf(s,se,x) strtorf(s,se,1,x)
---#define strtopQ(s,se,x) strtorQ(s,se,1,x)
---#define strtopx(s,se,x) strtorx(s,se,1,x)
---#define strtopxL(s,se,x) strtorxL(s,se,1,x)
--+#define gdtoa__strtopd(s,se,x) gdtoa__strtord(s,se,1,x)
--+#define gdtoa__strtopdd(s,se,x) gdtoa__strtordd(s,se,1,x)
--+#define gdtoa__strtopf(s,se,x) gdtoa__strtorf(s,se,1,x)
--+#define gdtoa__strtopQ(s,se,x) gdtoa__strtorQ(s,se,1,x)
--+#define gdtoa__strtopx(s,se,x) gdtoa__strtorx(s,se,1,x)
--+#define gdtoa__strtopxL(s,se,x) gdtoa__strtorxL(s,se,1,x)
-- #endif
-- 
-- #ifdef __cplusplus
--diff -u gdtoa.orig/gdtoaimp.h gdtoa/gdtoaimp.h
----- gdtoa.orig/gdtoaimp.h	2000-11-02 15:09:01 +0000
--+++ gdtoa/gdtoaimp.h	2008-10-04 02:24:16 +0000
--@@ -267,7 +267,7 @@
-- Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined.
-- #endif
-- 
---typedef union { double d; ULong L[2]; } U;
--+typedef union { double d; ULong L[2]; } __attribute__((__may_alias__)) U;
-- 
-- #ifdef YES_ALIAS
-- #define dval(x) x
--@@ -502,6 +502,7 @@
-- #define g__fmt g__fmt_D2A
-- #define gethex gethex_D2A
-- #define hexdig hexdig_D2A
--+#define hexdig_init hexdig_init_D2A
-- #define hexnan hexnan_D2A
-- #define hi0bits hi0bits_D2A
-- #define i2b i2b_D2A
--@@ -551,7 +552,7 @@
-- 			int *decpt, int *sign, char **rve));
--  extern char *g__fmt ANSI((char*, char*, char*, int, ULong));
--  extern int gethex ANSI((CONST char**, FPI*, Long*, Bigint**, int));
--- extern void hexdig_init_D2A(Void);
--+ extern void hexdig_init ANSI((Void));
--  extern int hexnan ANSI((CONST char**, FPI*, ULong*));
--  extern int hi0bits ANSI((ULong));
--  extern Bigint *i2b ANSI((int));
--@@ -570,8 +571,8 @@
--  extern Bigint *s2b ANSI((CONST char*, int, int, ULong));
--  extern Bigint *set_ones ANSI((Bigint*, int));
--  extern char *strcp ANSI((char*, const char*));
--- extern int strtoIg ANSI((CONST char*, char**, FPI*, Long*, Bigint**, int*));
--- extern double strtod ANSI((const char *s00, char **se));
--+ extern int gdtoa__strtoIg ANSI((CONST char*, char**, FPI*, Long*, Bigint**, int*));
--+ extern double gdtoa__strtod ANSI((const char *s00, char **se));
--  extern Bigint *sum ANSI((Bigint*, Bigint*));
--  extern int trailz ANSI((Bigint*));
--  extern double ulp ANSI((double));
--diff -u gdtoa.orig/gethex.c gdtoa/gethex.c
----- gdtoa.orig/gethex.c	2003-03-26 20:33:08 +0000
--+++ gdtoa/gethex.c	2008-10-04 02:24:16 +0000
--@@ -57,7 +57,7 @@
-- #endif
-- 
-- 	if (!hexdig['0'])
---		hexdig_init_D2A();
--+		hexdig_init();
-- 	havedig = 0;
-- 	s0 = *(CONST unsigned char **)sp + 2;
-- 	while(s0[havedig] == '0')
--diff -u gdtoa.orig/hd_init.c gdtoa/hd_init.c
----- gdtoa.orig/hd_init.c	2000-11-03 01:45:35 +0000
--+++ gdtoa/hd_init.c	2008-10-04 02:24:16 +0000
--@@ -52,7 +52,7 @@
-- 	}
-- 
--  void
---hexdig_init_D2A(Void)
--+hexdig_init(Void)
-- {
-- #define USC (unsigned char *)
-- 	htinit(hexdig, USC "0123456789", 0x10);
--diff -u gdtoa.orig/hexnan.c gdtoa/hexnan.c
----- gdtoa.orig/hexnan.c	2000-11-03 01:44:38 +0000
--+++ gdtoa/hexnan.c	2008-10-04 02:24:16 +0000
--@@ -68,7 +68,7 @@
-- 	int havedig, hd0, i, nbits;
-- 
-- 	if (!hexdig['0'])
---		hexdig_init_D2A();
--+		hexdig_init();
-- 	nbits = fpi->nbits;
-- 	x = x0 + (nbits >> kshift);
-- 	if (nbits & kmask)
--diff -u gdtoa.orig/strtoIQ.c gdtoa/strtoIQ.c
----- gdtoa.orig/strtoIQ.c	1998-06-22 18:49:25 +0000
--+++ gdtoa/strtoIQ.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  int
-- #ifdef KR_headers
---strtoIQ(s, sp, a, b) CONST char *s; char **sp; void *a; void *b;
--+gdtoa__strtoIQ(s, sp, a, b) CONST char *s; char **sp; void *a; void *b;
-- #else
---strtoIQ(CONST char *s, char **sp, void *a, void *b)
--+gdtoa__strtoIQ(CONST char *s, char **sp, void *a, void *b)
-- #endif
-- {
-- 	static FPI fpi = { 113, 1-16383-113+1, 32766-16383-113+1, 1, SI };
--@@ -52,7 +52,7 @@
-- 
-- 	B[0] = Balloc(2);
-- 	B[0]->wds = 4;
---	k = strtoIg(s, sp, &fpi, exp, B, rv);
--+	k = gdtoa__strtoIg(s, sp, &fpi, exp, B, rv);
-- 	ULtoQ(L, B[0]->x, exp[0], rv[0]);
-- 	Bfree(B[0]);
-- 	if (B[1]) {
--diff -u gdtoa.orig/strtoId.c gdtoa/strtoId.c
----- gdtoa.orig/strtoId.c	1998-09-09 13:59:17 +0000
--+++ gdtoa/strtoId.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  int
-- #ifdef KR_headers
---strtoId(s, sp, f0, f1) CONST char *s; char **sp; double *f0, *f1;
--+gdtoa__strtoId(s, sp, f0, f1) CONST char *s; char **sp; double *f0, *f1;
-- #else
---strtoId(CONST char *s, char **sp, double *f0, double *f1)
--+gdtoa__strtoId(CONST char *s, char **sp, double *f0, double *f1)
-- #endif
-- {
-- 	static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, SI };
--@@ -51,7 +51,7 @@
-- 
-- 	B[0] = Balloc(1);
-- 	B[0]->wds = 2;
---	k = strtoIg(s, sp, &fpi, exp, B, rv);
--+	k = gdtoa__strtoIg(s, sp, &fpi, exp, B, rv);
-- 	ULtod((ULong*)f0, B[0]->x, exp[0], rv[0]);
-- 	Bfree(B[0]);
-- 	if (B[1]) {
--diff -u gdtoa.orig/strtoIdd.c gdtoa/strtoIdd.c
----- gdtoa.orig/strtoIdd.c	1998-09-09 13:59:17 +0000
--+++ gdtoa/strtoIdd.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  int
-- #ifdef KR_headers
---strtoIdd(s, sp, f0, f1) CONST char *s; char **sp; double *f0, *f1;
--+gdtoa__strtoIdd(s, sp, f0, f1) CONST char *s; char **sp; double *f0, *f1;
-- #else
---strtoIdd(CONST char *s, char **sp, double *f0, double *f1)
--+gdtoa__strtoIdd(CONST char *s, char **sp, double *f0, double *f1)
-- #endif
-- {
-- #ifdef Sudden_Underflow
--@@ -55,7 +55,7 @@
-- 
-- 	B[0] = Balloc(2);
-- 	B[0]->wds = 4;
---	k = strtoIg(s, sp, &fpi, exp, B, rv);
--+	k = gdtoa__strtoIg(s, sp, &fpi, exp, B, rv);
-- 	ULtodd((ULong*)f0, B[0]->x, exp[0], rv[0]);
-- 	Bfree(B[0]);
-- 	if (B[1]) {
--diff -u gdtoa.orig/strtoIf.c gdtoa/strtoIf.c
----- gdtoa.orig/strtoIf.c	1998-09-09 13:59:17 +0000
--+++ gdtoa/strtoIf.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  int
-- #ifdef KR_headers
---strtoIf(s, sp, f0, f1) CONST char *s; char **sp; float *f0, *f1;
--+gdtoa__strtoIf(s, sp, f0, f1) CONST char *s; char **sp; float *f0, *f1;
-- #else
---strtoIf(CONST char *s, char **sp, float *f0, float *f1)
--+gdtoa__strtoIf(CONST char *s, char **sp, float *f0, float *f1)
-- #endif
-- {
-- 	static FPI fpi = { 24, 1-127-24+1,  254-127-24+1, 1, SI };
--@@ -51,7 +51,7 @@
-- 
-- 	B[0] = Balloc(0);
-- 	B[0]->wds = 1;
---	k = strtoIg(s, sp, &fpi, exp, B, rv);
--+	k = gdtoa__strtoIg(s, sp, &fpi, exp, B, rv);
-- 	ULtof((ULong*)f0, B[0]->x, exp[0], rv[0]);
-- 	Bfree(B[0]);
-- 	if (B[1]) {
--diff -u gdtoa.orig/strtoIg.c gdtoa/strtoIg.c
----- gdtoa.orig/strtoIg.c	1998-06-26 14:04:19 +0000
--+++ gdtoa/strtoIg.c	2008-10-04 02:01:43 +0000
--@@ -39,9 +39,9 @@
-- 
--  int
-- #ifdef KR_headers
---strtoIg(s00, se, f



More information about the MLton-commit mailing list