Skip to content

Commit

Permalink
merge changes from 3.12.0 to 3.12.1
Browse files Browse the repository at this point in the history
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@11123 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
  • Loading branch information
doligez committed Jul 20, 2011
1 parent fc695db commit a45ed2c
Show file tree
Hide file tree
Showing 253 changed files with 1,860 additions and 1,859 deletions.
36 changes: 20 additions & 16 deletions .depend
Expand Up @@ -317,13 +317,13 @@ bytecomp/translobj.cmi: bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi
bytecomp/typeopt.cmi: typing/typedtree.cmi typing/path.cmi \
bytecomp/lambda.cmi
bytecomp/bytegen.cmo: typing/types.cmi bytecomp/switch.cmi typing/subst.cmi \
typing/stypes.cmi typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi \
typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi \
bytecomp/instruct.cmi typing/ident.cmi utils/config.cmi \
parsing/asttypes.cmi typing/annot.cmi bytecomp/bytegen.cmi
parsing/asttypes.cmi bytecomp/bytegen.cmi
bytecomp/bytegen.cmx: typing/types.cmx bytecomp/switch.cmx typing/subst.cmx \
typing/stypes.cmx typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \
typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \
bytecomp/instruct.cmx typing/ident.cmx utils/config.cmx \
parsing/asttypes.cmi typing/annot.cmi bytecomp/bytegen.cmi
parsing/asttypes.cmi bytecomp/bytegen.cmi
bytecomp/bytelibrarian.cmo: utils/misc.cmi utils/config.cmi \
bytecomp/cmo_format.cmi utils/clflags.cmi bytecomp/bytelink.cmi \
bytecomp/bytelibrarian.cmi
Expand Down Expand Up @@ -406,10 +406,12 @@ bytecomp/printlambda.cmx: typing/types.cmx typing/primitive.cmx \
parsing/asttypes.cmi bytecomp/printlambda.cmi
bytecomp/runtimedef.cmo: bytecomp/runtimedef.cmi
bytecomp/runtimedef.cmx: bytecomp/runtimedef.cmi
bytecomp/simplif.cmo: bytecomp/lambda.cmi typing/ident.cmi utils/clflags.cmi \
parsing/asttypes.cmi bytecomp/simplif.cmi
bytecomp/simplif.cmx: bytecomp/lambda.cmx typing/ident.cmx utils/clflags.cmx \
parsing/asttypes.cmi bytecomp/simplif.cmi
bytecomp/simplif.cmo: typing/stypes.cmi bytecomp/lambda.cmi typing/ident.cmi \
utils/clflags.cmi parsing/asttypes.cmi typing/annot.cmi \
bytecomp/simplif.cmi
bytecomp/simplif.cmx: typing/stypes.cmx bytecomp/lambda.cmx typing/ident.cmx \
utils/clflags.cmx parsing/asttypes.cmi typing/annot.cmi \
bytecomp/simplif.cmi
bytecomp/switch.cmo: bytecomp/switch.cmi
bytecomp/switch.cmx: bytecomp/switch.cmi
bytecomp/symtable.cmo: utils/tbl.cmi bytecomp/runtimedef.cmi \
Expand Down Expand Up @@ -601,9 +603,9 @@ asmcomp/codegen.cmx: asmcomp/split.cmx asmcomp/spill.cmx asmcomp/reload.cmx \
asmcomp/coloring.cmo: asmcomp/reg.cmi asmcomp/proc.cmi asmcomp/coloring.cmi
asmcomp/coloring.cmx: asmcomp/reg.cmx asmcomp/proc.cmx asmcomp/coloring.cmi
asmcomp/comballoc.cmo: asmcomp/reg.cmi asmcomp/mach.cmi utils/config.cmi \
asmcomp/comballoc.cmi
asmcomp/arch.cmo asmcomp/comballoc.cmi
asmcomp/comballoc.cmx: asmcomp/reg.cmx asmcomp/mach.cmx utils/config.cmx \
asmcomp/comballoc.cmi
asmcomp/arch.cmx asmcomp/comballoc.cmi
asmcomp/compilenv.cmo: utils/misc.cmi typing/ident.cmi typing/env.cmi \
utils/config.cmi asmcomp/cmx_format.cmi asmcomp/clambda.cmi \
asmcomp/compilenv.cmi
Expand Down Expand Up @@ -684,12 +686,14 @@ asmcomp/schedgen.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
asmcomp/schedgen.cmi
asmcomp/scheduling.cmo: asmcomp/schedgen.cmi asmcomp/scheduling.cmi
asmcomp/scheduling.cmx: asmcomp/schedgen.cmx asmcomp/scheduling.cmi
asmcomp/selectgen.cmo: utils/tbl.cmi asmcomp/reg.cmi asmcomp/proc.cmi \
utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi asmcomp/debuginfo.cmi \
asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/selectgen.cmi
asmcomp/selectgen.cmx: utils/tbl.cmx asmcomp/reg.cmx asmcomp/proc.cmx \
utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx asmcomp/debuginfo.cmx \
asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/selectgen.cmi
asmcomp/selectgen.cmo: utils/tbl.cmi bytecomp/simplif.cmi asmcomp/reg.cmi \
asmcomp/proc.cmi utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi \
asmcomp/debuginfo.cmi asmcomp/cmm.cmi asmcomp/arch.cmo \
asmcomp/selectgen.cmi
asmcomp/selectgen.cmx: utils/tbl.cmx bytecomp/simplif.cmx asmcomp/reg.cmx \
asmcomp/proc.cmx utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx \
asmcomp/debuginfo.cmx asmcomp/cmm.cmx asmcomp/arch.cmx \
asmcomp/selectgen.cmi
asmcomp/selection.cmo: asmcomp/selectgen.cmi asmcomp/reg.cmi asmcomp/proc.cmi \
utils/misc.cmi asmcomp/mach.cmi asmcomp/debuginfo.cmi asmcomp/cmm.cmi \
utils/clflags.cmi asmcomp/arch.cmo asmcomp/selection.cmi
Expand Down
98 changes: 98 additions & 0 deletions Changes
Expand Up @@ -22,6 +22,104 @@ Standard library:
Bug Fixes:


Objective Caml 3.12.1:
----------------------

Bug fixes:
- PR#4345, PR#4767: problems with camlp4 printing of float values
- PR#4380: ocamlbuild should not use tput on windows
- PR#4487, PR#5164: multiple 'module type of' are incompatible
- PR#4552: ocamlbuild does not create symlinks when using '.itarget' file
- PR#4673, PR#5144: camlp4 fails on object copy syntax
- PR#4702: system threads: cleanup tick thread at exit
- PR#4732: camlp4 rejects polymorphic variants using keywords from macros
- PR#4778: Win32/MSVC port: rare syntax error in generated MASM assembly file
- PR#4794, PR#4959: call annotations not generated by ocamlopt
- PR#4820: revised syntax pretty printer crashes with 'Stack_overflow'
- PR#4928: wrong printing of classes and class types by camlp4
- PR#4939: camlp4 rejects patterns of the '?x:_' form
- PR#4967: ocamlbuild passes wrong switches to ocamldep through menhir
- PR#4972: mkcamlp4 does not include 'dynlink.cma'
- PR#5039: ocamlbuild should use '-linkpkg' only when linking programs
- PR#5066: ocamldoc: add -charset option used in html generator
- PR#5069: fcntl() in caml_sys_open may block, do it within blocking section
- PR#5071, PR#5129, PR#5134: inconsistencies between camlp4 and camlp4* binaries
- PR#5080, PR#5104: regression in type constructor handling by camlp4
- PR#5090: bad interaction between toplevel and camlp4
- PR#5095: ocamlbuild ignores some tags when building bytecode objects
- PR#5100: ocamlbuild always rebuilds a 'cmxs' file
- PR#5103: build and install objinfo when building with ocamlbuild
- PR#5109: crash when a parser calls a lexer that calls another parser
- PR#5110: invalid module name when using optional argument
- PR#5115: bytecode executables produced by msvc64 port crash on 32-bit versions
- PR#5117: bigarray: wrong function name without HAS_MMAP; missing include
- PR#5118: Camlp4o and integer literals
- PR#5122: camlp4 rejects lowercase identifiers for module types
- PR#5123: shift_right_big_int returns a wrong zero
- PR#5124: substitution inside a signature leads to odd printing
- PR#5128: typo in 'Camlp4ListComprehension' syntax extension
- PR#5136: obsolete function used in emacs mode
- PR#5145: ocamldoc: missing html escapes
- PR#5146: problem with spaces in multi-line string constants
- PR#5149: (partial) various documentation problems
- PR#5156: rare compiler crash with objects
- PR#5165: ocamlbuild does not pass '-thread' option to ocamlfind
- PR#5167: camlp4r loops when printing package type
- PR#5172: camlp4 support for 'module type of' construct
- PR#5175: in bigarray accesses, make sure bigarray expr is evaluated only once
- PR#5177: Gc.compact implies Gc.full_major
- PR#5182: use bytecode version of ocamldoc to generate man pages
- PR#5184: under Windows, alignment issue with bigarrays mapped from files
- PR#5188: double-free corruption in bytecode system threads
- PR#5192: mismatch between words and bytes in interpreting max_young_wosize
- PR#5202: error in documentation of atan2
- PR#5209: natdynlink incorrectly detected on BSD systems
- PR#5213: ocamlbuild should pass '-rectypes' to ocamldoc when needed
- PR#5217: ocamlfind plugin should add '-linkpkg' for toplevel
- PR#5228: document the exceptions raised by functions in 'Filename'
- PR#5229: typo in build script ('TAG_LINE' vs 'TAGLINE')
- PR#5230: error in documentation of Scanf.Scanning.open_in
- PR#5234: option -shared reverses order of -cclib options
- PR#5237: incorrect .size directives generated for x86-32 and x86-64
- PR#5244: String.compare uses polymorphic compare_val (regression of PR#4194)
- PR#5248: regression introduced while fixing PR#5118
- PR#5252: typo in docs
- PR#5258: win32unix: unix fd leak under windows
- PR#5269: (tentative fix) Wrong ext_ref entries in .annot files
- PR#5272: caml.el doesn't recognize downto as a keyword
- PR#5276: issue with ocamlc -pack and recursively-packed modules
- PR#5280: alignment constraints incorrectly autodetected on MIPS 32
- PR#5281: typo in error message
- PR#5308: unused variables not detected in "include (struct .. end)"
- camlp4 revised syntax printing bug in the toplevel (reported on caml-list)
- configure: do not define _WIN32 under cygwin
- Hardened generic comparison in the case where two custom blocks
are compared and have different sets of custom operations.
- Hardened comparison between bigarrays in the case where the two
bigarrays have different kinds.
- Fixed wrong autodetection of expm1() and log1p().
- don't add .exe suffix when installing the ocamlmktop shell script
- ocamldoc: minor fixes related to the display of ocamldoc options
- fixed bug with huge values in OCAMLRUNPARAM
- mismatch between declaration and definition of caml_major_collection_slice

Feature wishes:
- PR#4992: added '-ml-synonym' and '-mli-synonym' options to ocamldep
- PR#5065: added '-ocamldoc' option to ocamlbuild
- PR#5139: added possibility to add options to ocamlbuild
- PR#5158: added access to current camlp4 parsers and printers
- PR#5180: improved instruction selection for float operations on amd64
- stdlib: added a 'usage_string' function to Arg
- allow with constraints to add a type equation to a datatype definition
- ocamldoc: allow to merge '@before' tags like other ones
- ocamlbuild: allow dependency on file "_oasis"

Other changes:
- Changed default minor heap size from 32k to 256k words.
- Added new operation 'compare_ext' to custom blocks, called when
comparing a custom block value with an unboxed integer.


Objective Caml 3.12.0:
----------------------

Expand Down
4 changes: 0 additions & 4 deletions INSTALL
Expand Up @@ -255,10 +255,6 @@ From the top directory, become superuser and do:
umask 022 # make sure to give read & execute permission to all
make install

In the ocamlbuild setting instead of make install do:

./build/install.sh

7- Installation is complete. Time to clean up. From the toplevel
directory, do "make clean".

Expand Down
5 changes: 3 additions & 2 deletions LICENSE
Expand Up @@ -6,8 +6,9 @@ INRIA" in the following directories and their sub-directories:
and "the Compiler" refers to all files marked "Copyright INRIA" in the
following directories and their sub-directories:

asmcomp, boot, bytecomp, debugger, driver, lex, ocamldoc, parsing,
tools, toplevel, typing, utils, yacc
asmcomp, boot, build, bytecomp, debugger, driver, lex, man,
ocamlbuild, ocamldoc, parsing, testsuite, tools, toplevel, typing,
utils, yacc

The Compiler is distributed under the terms of the Q Public License
version 1.0 with a change to choice of law (included below).
Expand Down
2 changes: 1 addition & 1 deletion README
Expand Up @@ -21,7 +21,7 @@ native-code compiler currently runs on the following platforms:

Tier 1 (actively used and maintained by the core Caml team):

AMD64 (Opteron) Linux
AMD64 (Opteron) Linux, MacOS X, MS Windows
IA32 (Pentium) Linux, FreeBSD, MacOS X, MS Windows
PowerPC MacOS X

Expand Down
12 changes: 9 additions & 3 deletions README.win32
Expand Up @@ -37,7 +37,7 @@ the GPL. Thus, these .exe files can only be distributed under a license
that is compatible with the GPL. Executables generated by MSVC or by
MinGW have no such restrictions.

(**) The debugger is supported but the "replay" function of it are not enabled.
(**) The debugger is supported but the "replay" functions are not enabled.
Other functions are available (step, goto, run...).

The remainder of this document gives more information on each port.
Expand Down Expand Up @@ -183,6 +183,10 @@ by Jacob Navia, then significantly improved by Christopher A. Watford.
The native Win32 port built with Mingw
--------------------------------------

NOTE: Due to changes in cygwin's compilers, this port is not available
in OCaml 3.12.1. A patch will be made available soon after the release
of 3.12.1.

REQUIREMENTS:

This port runs under MS Windows Vista, XP, and 2000.
Expand Down Expand Up @@ -232,7 +236,7 @@ You will need the following software components to perform the recompilation:
- Windows NT, 2000, XP, or Vista.
- Cygwin: http://sourceware.cygnus.com/cygwin/
Install at least the following packages: binutils, diffutils,
gcc-core, gcc-mingw-core, make, mingw-runtime, ncurses, w32-api.
gcc-core, gcc-mingw-core, make, mingw-runtime, ncurses, w32api.
- TCL/TK version 8.5 (see above).
- The flexdll tool (see above).

Expand Down Expand Up @@ -302,7 +306,9 @@ NOTES:

The libraries available in this port are "num", "str", "threads",
"unix" and "labltk". "graph" is not available.
The replay debugger is supported.
The replay debugger is fully supported.
When upgrading from 3.12.0 to 3.12.1, you will need to remove
/usr/local/bin/ocamlmktop.exe before typing "make install".

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

Expand Down
2 changes: 1 addition & 1 deletion VERSION
@@ -1,4 +1,4 @@
3.13.0+dev4 (2011-06-20)
3.13.0+dev5 (2011-07-20)

# The version string is the first line of this file.
# It must be in the format described in stdlib/sys.mli
Expand Down
15 changes: 9 additions & 6 deletions asmcomp/amd64/emit.mlp
Expand Up @@ -338,9 +338,12 @@ let emit_instr fallthrough i =
| Lop(Imove | Ispill | Ireload) ->
let src = i.arg.(0) and dst = i.res.(0) in
if src.loc <> dst.loc then begin
if src.typ = Float then
` movsd {emit_reg src}, {emit_reg dst}\n`
else
match src.typ, src.loc, dst.loc with
Float, Reg _, Reg _ ->
` movapd {emit_reg src}, {emit_reg dst}\n`
| Float, _, _ ->
` movsd {emit_reg src}, {emit_reg dst}\n`
| _ ->
` movq {emit_reg src}, {emit_reg dst}\n`
end
| Lop(Iconst_int n) ->
Expand All @@ -359,7 +362,7 @@ let emit_instr fallthrough i =
| _ ->
let lbl = new_label() in
float_constants := (lbl, s) :: !float_constants;
` movlpd {emit_label lbl}(%rip), {emit_reg i.res.(0)}\n`
` movsd {emit_label lbl}(%rip), {emit_reg i.res.(0)}\n`
end
| Lop(Iconst_symbol s) ->
` {load_symbol_addr s}, {emit_reg i.res.(0)}\n`
Expand Down Expand Up @@ -412,7 +415,7 @@ let emit_instr fallthrough i =
| Single ->
` cvtss2sd {emit_addressing addr i.arg 0}, {emit_reg dest}\n`
| Double | Double_u ->
` movlpd {emit_addressing addr i.arg 0}, {emit_reg dest}\n`
` movsd {emit_addressing addr i.arg 0}, {emit_reg dest}\n`
end
| Lop(Istore(chunk, addr)) ->
begin match chunk with
Expand All @@ -428,7 +431,7 @@ let emit_instr fallthrough i =
` cvtsd2ss {emit_reg i.arg.(0)}, %xmm15\n`;
` movss %xmm15, {emit_addressing addr i.arg 1}\n`
| Double | Double_u ->
` movlpd {emit_reg i.arg.(0)}, {emit_addressing addr i.arg 1}\n`
` movsd {emit_reg i.arg.(0)}, {emit_addressing addr i.arg 1}\n`
end
| Lop(Ialloc n) ->
if !fastcode_flag then begin
Expand Down
17 changes: 10 additions & 7 deletions asmcomp/amd64/emit_nt.mlp
Expand Up @@ -332,10 +332,13 @@ let emit_instr fallthrough i =
| Lop(Imove | Ispill | Ireload) ->
let src = i.arg.(0) and dst = i.res.(0) in
if src.loc <> dst.loc then begin
if src.typ = Float then
` movsd {emit_reg dst}, {emit_reg src}\n`
else
` mov {emit_reg dst}, {emit_reg src}\n`
match src.typ, src.loc, dst.loc with
Float, Reg _, Reg _ ->
` movapd {emit_reg dst}, {emit_reg src}\n`
| Float, _, _ ->
` movsd {emit_reg dst}, {emit_reg src}\n`
| _ ->
` mov {emit_reg dst}, {emit_reg src}\n`
end
| Lop(Iconst_int n) ->
if n = 0n then begin
Expand All @@ -357,7 +360,7 @@ let emit_instr fallthrough i =
| _ ->
let lbl = new_label() in
float_constants := (lbl, s) :: !float_constants;
` movlpd {emit_reg i.res.(0)}, {emit_label lbl}\n`
` movsd {emit_reg i.res.(0)}, {emit_label lbl}\n`
end
| Lop(Iconst_symbol s) ->
add_used_symbol s;
Expand Down Expand Up @@ -418,7 +421,7 @@ let emit_instr fallthrough i =
| Single ->
` cvtss2sd {emit_reg dest}, REAL4 PTR {emit_addressing addr i.arg 0}\n`
| Double | Double_u ->
` movlpd {emit_reg dest}, REAL8 PTR {emit_addressing addr i.arg 0}\n`
` movsd {emit_reg dest}, REAL8 PTR {emit_addressing addr i.arg 0}\n`
end
| Lop(Istore(chunk, addr)) ->
begin match chunk with
Expand All @@ -434,7 +437,7 @@ let emit_instr fallthrough i =
` cvtsd2ss xmm15, {emit_reg i.arg.(0)}\n`;
` movss REAL4 PTR {emit_addressing addr i.arg 1}, xmm15\n`
| Double | Double_u ->
` movlpd REAL8 PTR {emit_addressing addr i.arg 1}, {emit_reg i.arg.(0)}\n`
` movsd REAL8 PTR {emit_addressing addr i.arg 1}, {emit_reg i.arg.(0)}\n`
end
| Lop(Ialloc n) ->
if !fastcode_flag then begin
Expand Down
2 changes: 1 addition & 1 deletion asmcomp/asmlink.ml
Expand Up @@ -262,7 +262,7 @@ let link_shared ppf objfiles output_name =
Clflags.ccobjs := !Clflags.ccobjs @ !lib_ccobjs;
Clflags.ccopts := !lib_ccopts @ !Clflags.ccopts;
let objfiles = List.rev (List.map object_file_name objfiles) @
!Clflags.ccobjs in
(List.rev !Clflags.ccobjs) in

let startup =
if !Clflags.keep_startup_file
Expand Down
2 changes: 1 addition & 1 deletion asmcomp/closure.ml
Expand Up @@ -544,7 +544,7 @@ let rec close fenv cenv = function
| ((ufunct, _), uargs) ->
(Ugeneric_apply(ufunct, uargs, Debuginfo.none), Value_unknown)
end
| Lsend(kind, met, obj, args) ->
| Lsend(kind, met, obj, args, _) ->
let (umet, _) = close fenv cenv met in
let (uobj, _) = close fenv cenv obj in
(Usend(kind, umet, uobj, close_list fenv cenv args, Debuginfo.none),
Expand Down

0 comments on commit a45ed2c

Please sign in to comment.