PR#6418: support "@[<hov %d>" in the new format implementation (Benoît Vaugon)

The bootstrap procedure, as for commit 4.02@14975 (see there for
detailed build instructions), requires to first commit a temporary
patch:

> diff -Naur old/typing/typecore.ml new/typing/typecore.ml
> --- old/typing/typecore.ml        2014-06-11 18:16:24.851647309 +0200
> +++ new/typing/typecore.ml        2014-06-11 18:15:50.075646418 +0200
> @@ -2758,16 +2758,9 @@
>        let mk_int n = mk_cst (Const_int n)
>        and mk_string str = mk_cst (Const_string (str, None))
>        and mk_char chr = mk_cst (Const_char chr) in
> -      let mk_block_type bty = match bty with
> -        | Pp_hbox   -> mk_constr "Pp_hbox"   []
> -        | Pp_vbox   -> mk_constr "Pp_vbox"   []
> -        | Pp_hvbox  -> mk_constr "Pp_hvbox"  []
> -        | Pp_hovbox -> mk_constr "Pp_hovbox" []
> -        | Pp_box    -> mk_constr "Pp_box"    []
> -        | Pp_fits   -> mk_constr "Pp_fits"   [] in
>        let rec mk_formatting_lit fmting = match fmting with
> -        | Open_box (org, bty, idt) ->
> -          mk_constr "Open_box" [ mk_string org; mk_block_type bty; mk_int idt ]
> +        | Open_box _ ->
> +          assert false
>          | Close_box ->
>            mk_constr "Close_box" []
>          | Close_tag ->
> @@ -2950,6 +2943,19 @@
>            mk_constr "Alpha" [ mk_fmt rest ]
>          | Theta rest ->
>            mk_constr "Theta" [ mk_fmt rest ]
> +        | Formatting_lit (Open_box (org, _bty, _idt), rest) ->
> +          mk_constr "Formatting_gen" [
> +            mk_constr "Open_box" [
> +              mk_constr "Format" [
> +                mk_constr "String_literal" [
> +                  mk_string "<>";
> +                  mk_constr "End_of_format" [];
> +                ];
> +                mk_string "@[<>";
> +              ]
> +            ];
> +            mk_fmt rest;
> +          ]
>          | Formatting_lit (fmting, rest) ->
>            mk_constr "Formatting_lit" [ mk_formatting_lit fmting; mk_fmt rest ]
>          | Formatting_gen (fmting, rest) ->

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14985 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Fix #6456.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14986 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Fix PR#6459: update StdlibModules

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14987 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6457: Distinguish data and literals in CamlinternalFormat.make_printf (patch by Benoit Vaugon).

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14988 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6463: properly propagate errors raised when creating the mapper (typically, invalid arguments) to the compiler.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14989 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
remove (module P) syntax for type-level module alias

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14991 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Fix #PR6471: missing links in HTML for module aliases

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14992 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6476: Attributes on class signatures.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14993 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
remove tests that use the (module M) syntax, which was removed in commit 14991

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14994 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ignore generated files

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14995 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Keep attributes and location on recursive modules when inserted in the environment.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14996 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6469: -dsource prints Pervasives.(!) as Pervasives.!

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14997 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6482: ocamlbuild fails when _tags file in unhygienic directory

ocamlbuild lazily traverses directory to build a vision of the
filesystem tree in which the build happens. During that traversals, it
parses any configuration file `_tags` it encouters. PR#6482 was caused
by the fact that the configuration-parsing code used the relative path
of the _tags file, which was correct at the time of traversal, but
stale at the time the lazy thunk was in fact forced (a Sys.chdir had
occured in between).

The first fix is to detect when relative paths become stale, and use
the correct absolute path in that situation.

The reason why this lazy thunk was only forced after a Sys.chdir is
that, at hygiene time, only the subtrees that are selected for hygiene
checking are forced. It is an unexpected behavior that non-hygienic
subtrees could remain unforced for so long (in particular, the
semantics of parsing a configuration file only much later in the build
process is more than unclear); this commit also removes this behavior
by always forcing the whole traversed subtree just before hygiene.

Conflicts:
	Changes

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14999 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
mantis 6489 (fix by Richard Jones)

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15001 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
CSE bug on amd64: Ifloatsqrtf involves a memory load

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15003 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Typo in destroyed_at_alloc and destroyed_at_c_call, D17 was incorrectly claimed to be preserved.


git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15006 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6411: -static-libgcc by default.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15008 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6411: background info for -static-libgcc.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15009 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6460: runtime assertion failure with large [| e1;...eN |]
float array expressions


git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15010 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6484 and PR#6486: CSE across memory allocations can present the GC with memory roots that are illegal.
Plus: lift the previous restriction that all arithmetic ops and loads have at most one result register, this isn't true for ARM with soft floats.
Plus: code refactoring and more comments.


git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15012 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02