[m-rev.] for review: reduce the number of publicly documented base grades

Julien Fischer jfischer at opturion.com
Fri Apr 10 15:31:43 AEST 2015


For review by anyone.

As per the discussion in this thread, 
<http://www.mercurylang.org/list-archives/reviews/2014-September/017300.html>.
This does not implement everything discussed in that thread, but it's a 
start.

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

Reduce the number of publicly documented base grades.

Currently, 14 out of a possible 15 base grades are publicly documented (to some
extent).  This changes hides the user facing documentation for seven of the
less useful base grades, namely: asm_jump, fast, jump, hlc_nest, hl, hl_nest
and il.

Change the configure script so that it will not automatically set the LLDS base
grade to asm_jump, fast or jump.  (Developers can still manually select these
base grades using configure's '--with-llds-base-grade' option.)

Hide the user facing documentation for the .pic_reg and .agc grade components.
The former is an internal thing and the latter is an experimental feature
(which currently doesn't work anyway).

configure.ac:
 	When choosing the LLDS base grade, use the first one of asm_fast,
 	reg or none that is supported.  Do not attempt to use asm_jump,
 	fast or jump.

 	Disable the documentation for the '--enable-agc-grades' option.
 	(The option itself is still supported.)

compiler/options.m:
doc/user_guide.texi:
 	Comment out, ignore or delete (as appropriate) documentation related
 	to the seven base grades and two grade components mentioned above.

 	Delete a left-over reference to the MPS collector.

 	Delete references to the IL backend in various spots.

 	Add reference to the Erlang backend where appropriate.

.INSTALL.in:
 	Delete the description of the '--enable-agc-grades' option.

README.MinGW:
README.MinGW-cross:
 	Delete references to the asm_jump grade.

Julien.

diff --git a/.INSTALL.in b/.INSTALL.in
index 150d756..5ee0dc9 100755
--- a/.INSTALL.in
+++ b/.INSTALL.in
@@ -126,9 +126,6 @@ make install
  #          The option --disable-nogc-grades prevents the installation
  #          of grades without garbage collection.
  #
-#          The option --enable-agc-grades causes the installation
-#          of grades that support type-accurate garbage collection.
-#
  #          The option --disable-prof-grades prevents the installation
  #          of grades that support profiling.
  #
diff --git a/README.MinGW b/README.MinGW
index 62ba269..bbeb359 100644
--- a/README.MinGW
+++ b/README.MinGW
@@ -2,9 +2,9 @@ This file documents the port of Mercury to Windows using either the MinGW
  or MinGW64 ports of GCC, i.e. the i686-pc-mingw32 or x86_64-w64-mingw32
  configurations.

-NOTE: There are problems with 64-bit executables in some low-level C grades,
-namely the 'asm_fast*' and 'asm_jump*' grades. The 'none*' and 'reg*' grades
-do appear to work correctly in our limited testing.
+NOTE: There are currently problems with 64-bit executalbes in the 'asm_fast*'
+grade.  The 'none*' and 'reg*' grades do appear to work correctly in our
+limited testing.

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

diff --git a/README.MinGW-cross b/README.MinGW-cross
index 5d4b5d5..6a3689f 100644
--- a/README.MinGW-cross
+++ b/README.MinGW-cross
@@ -7,9 +7,9 @@ After copying and adjusting some paths, the Mercury installation should be
  usable on Windows.  When combined with a native Mercury compiler, it can be
  used to cross-compile Mercury applications for Windows.

-NOTE: There are problems with 64-bit executables in some low-level C grades,
-namely 'asm_fast*' and 'asm_jump*' grades. The 'none*' and 'reg*' grades
-do appear to work correctly in our limited testing.
+NOTE: There are currently problems with 64-bit executalbes in the 'asm_fast*'
+grade.  The 'none*' and 'reg*' grades do appear to work correctly in our
+limited testing.

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

diff --git a/compiler/options.m b/compiler/options.m
index 4c957e4..0979a90 100644
--- a/compiler/options.m
+++ b/compiler/options.m
@@ -3863,7 +3863,7 @@ options_help_output -->
          "\tCheck the module for errors, but do not generate any code.",
          "-C, --target-code-only",
          "\tGenerate target code (i.e. C code in `<module>.c',",
-        "\tIL code in `<module>.il', or Java code in",
+        "\tC# code in `<module>.cs', or Java code in",
          "\t`<module>.java'), but not object code.",
          "-c, --compile-only",
          "\tGenerate C code in `<module>.c' and object code in `<module>.o'",
@@ -4311,16 +4311,27 @@ options_help_compilation_model -->
          "",
          "-s <grade>, --grade <grade>",
          "\tSelect the compilation model. The <grade> should be one of",
-        "\tthe base grades `none', `reg', `jump', `asm_jump', `fast', ",
-        "\t`asm_fast', `hl', `hlc', `il', `java', `csharp' or `erlang'",
-% The hl, hl_nest, and hlc_nest are not yet documented, because
-% the --high-level-data option is not yet supported for C,
-% and the --gcc-nested-functions option is not yet documented.
-% The ilc grade is not documented because it is not useful;
-% it has been superceded by the il grade.
+        "\tthe base grades `none', `reg', `asm_fast', `hlc', `java',",
+        "\t`csharp' or `erlang'",
+
+% The following base grade components are not publicly documented:
+%
+%  asm_jump
+%  fast 
+%  jump        These three are not tested as much as the other
+%              three LLDS base grades and have proved to be a bit
+%              delicate in any case.
+%
+%  hlc_nest 
+%  hl_nest     These two rely on GCC nested functions extension.
+%
+%  hl          Not useful.
+%  il          Currently broken.
+%  ilc         Deprecated.
+%
          "\tor one of those with one or more of the grade modifiers",
          "\t`.gc', `.prof', `.memprof', `.profdeep', `.tr',",
-        "\t`.spf', `.stseg', `.debug', `.par' and/or `.pic_reg' appended.",
+        "\t`.spf', `.stseg', `.debug', and/or `.par' appended.",
          "\tDepending on your particular installation, only a subset",
          "\tof these possible grades will have been installed.",
          "\tAttempting to use a grade which has not been installed",
@@ -4329,16 +4340,15 @@ options_help_compilation_model -->

      io.write_string("\n    Target selection compilation model options:\n"),
      write_tabbed_lines([
-        "--target c\t\t\t(grades: none, reg, jump, fast,",
-        "\t\t\t\t\tasm_jump, asm_fast, hl, hlc)",
-        "--target il\t\t\t(grades: il)",
+        %"--target c\t\t\t(grades: none, reg, jump, fast,",
+        %"\t\t\t\t\tasm_jump, asm_fast, hl, hlc)",
+        %"--target il\t\t\t(grades: il)",
+        "--target c\t\t\t(grades: none, reg, asm_fast)",
          "--target csharp\t\t\t(grades: csharp)",
          "--target java\t\t\t(grades: java)",
          "--target erlang\t\t\t(grades: erlang)",
-        "\tSpecify the target language: C, IL, C#, Java or Erlang.",
-        "\tThe default is C.  ""IL"" (also known as ""CIL"" or ""MSIL"")",
-        "\tis the Intermediate Language for the .NET Common Language",
-        "\tRuntime.",
+        "\tSpecify the target language: C, C#, Java or Erlang.",
+        "\tThe default is C.",
          "\tTargets other than C imply `--high-level-code' (see below).",

  % IL options are commented out to reduce confusion.
@@ -4417,13 +4427,13 @@ options_help_compilation_model -->
          "\tgenerated code, and also output some profiling",
          "\tinformation (the static call graph) to the file",
          "\t`<module>.prof'.",
-        "\tThis option is not supported for the IL, C# or Java back-ends.",
+        "\tThis option is not supported for the C#, Erlang or Java back-ends.",
          "--memory-profiling\t\t(grade modifier: `.memprof')",
          "\tEnable memory and call profiling.",
-        "\tThis option is not supported for the IL, C# or Java back-ends.",
+        "\tThis option is not supported for the C#, Erlang or Java back-ends.",
          "--deep-profiling\t\t(grade modifier: `.profdeep')",
          "\tEnable deep profiling.",
-        "\tThis option is not supported for the high-level C, IL, C#",
+        "\tThis option is not supported for the high-level C, C#, Erlang",
          "\tor Java back-ends.",

  % This option is not documented, it is intended for use by developers only.
@@ -4531,14 +4541,14 @@ options_help_compilation_model -->
          "\t`accurate' is our own type-accurate copying GC;",
          "\tit requires `--high-level-code'.",
          "\t`automatic' means the target language provides it.",
-        "\tThis is the case for the IL, C#, Java and Erlang back-ends,",
+        "\tThis is the case for the C#, Java and Erlang back-ends,",
          "\twhich always use the garbage collector of the underlying",
          "\timplementation.",
          "--use-trail\t\t\t(grade modifier: `.tr')",
          "\tEnable use of a trail.",
          "\tThis is necessary for interfacing with constraint solvers,",
          "\tor for backtrackable destructive update.",
-        "\tThis option is not yet supported for the IL, C#, Java",
+        "\tThis option is not yet supported for the C#, Java",
          "\tor Erlang back-ends.",
          "--trail-segments\t\t\t(grade modifier: `.trseg')",
          "\tAs above, but use a dynamically sized trail that is composed",
@@ -4575,30 +4585,37 @@ options_help_compilation_model -->
      io.write_string("\n    LLDS back-end compilation model options:\n"),
      write_tabbed_lines([

-        "--gcc-global-registers\t\t(grades: reg, fast, asm_fast)",
-        "--no-gcc-global-registers\t(grades: none, jump, asm_jump)",
+        %"--gcc-global-registers\t\t(grades: reg, fast, asm_fast)",
+        %"--no-gcc-global-registers\t(grades: none, jump, asm_jump)",
+        "--gcc-global-registers\t\t(grades: reg, asm_fast)",
+        "--no-gcc-global-registers\t(grades: none)",
          "\tSpecify whether or not to use GNU C's",
          "\tglobal register variables extension.",
          "\tThis option is ignored if the `--high-level-code' option is",
          "\tenabled.",
-        "--gcc-non-local-gotos\t\t(grades: jump, fast, asm_jump, asm_fast)",
+        %"--gcc-non-local-gotos\t\t(grades: jump, fast, asm_jump, asm_fast)",
+        %"--no-gcc-non-local-gotos\t(grades: none, reg)",
+        "--gcc-non-local-gotos\t\t(grades: asm_fast)",
          "--no-gcc-non-local-gotos\t(grades: none, reg)",
          "\tSpecify whether or not to use GNU C's",
          "\t""labels as values"" extension.",
          "\tThis option is ignored if the `--high-level-code' option is",
          "\tenabled.",
-        "--asm-labels\t\t\t(grades: asm_jump, asm_fast)",
-        "--no-asm-labels\t\t\t(grades: none, reg, jump, fast)",
+        %"--asm-labels\t\t\t(grades: asm_jump, asm_fast)",
+        %"--no-asm-labels\t\t\t(grades: none, reg, jump, fast)",
+        "--asm-labels\t\t\t(grades: asm_fast)",
+        "--no-asm-labels\t\t\t(grades: none, reg)",
          "\tSpecify whether or not to use GNU C's",
          "\tasm extensions for inline assembler labels.",
          "\tThis option is ignored if the `--high-level-code' option is",
          "\tenabled.",
-        "--pic-reg\t\t\t(grade modifier: `.pic_reg')",
-        "[For Unix with intel x86 architecture only]",
-        "\tSelect a register usage convention that is compatible,",
-        "\twith position-independent code (gcc's `-fpic' option).",
-        "\tThis is necessary when using shared libraries on Intel x86",
-        "\tsystems running Unix.  On other systems it has no effect.",
+        % This option is a developer only option.
+        %"--pic-reg\t\t\t(grade modifier: `.pic_reg')",
+        %"[For Unix with intel x86 architecture only]",
+        %"\tSelect a register usage convention that is compatible,",
+        %"\twith position-independent code (gcc's `-fpic' option).",
+        %"\tThis is necessary when using shared libraries on Intel x86",
+        %"\tsystems running Unix.  On other systems it has no effect.",
          "--stack-segments\t\t(grade modifier: `.stseg')",
          "\tSpecify whether to use dynamically sized stacks that are",
          "\tcomposed of small segments.  This can help to avoid stack",
@@ -4618,7 +4635,8 @@ options_help_compilation_model -->
  %       "-H, --high-level-code\t\t\t(grades: hl_nest, hlc_nest)",
  % The ilc grade is not documented because it is not useful;
  % it has been superceded by the il grade.
-        "-H, --high-level-code\t\t\t(grades: hl, hlc, il, csharp, java)",
+        %"-H, --high-level-code\t\t\t(grades: hl, hlc, il, csharp, java)",
+        "-H, --high-level-code\t\t\t(grades: hlc, csharp, java)",
          "\tUse an alternative back-end that generates high-level code",
          "\trather than the very low-level code that is generated by our",
          "\toriginal back-end.",
@@ -4626,10 +4644,10 @@ options_help_compilation_model -->
  % because the --gcc-nested-functions option is not yet documented.
  % because it is not yet supported
  %       "--high-level-data\t\t\t(grades: hl, hl_nest, il, csharp, java)",
-        "--high-level-data\t\t\t(grades: hl, il, csharp, java)",
+        "--high-level-data\t\t\t(grades: csharp, java)",
          "\tUse an alternative higher-level data representation.",
  %       "--high-level\t\t\t(grades: hl, hl_nest, il, csharp, java)",
-        "--high-level\t\t\t(grades: hl, il, csharp, java)",
+        "--high-level\t\t\t(grades: csharp, java)",
          "\tAn abbreviation for `--high-level-code --high-level-data'."
  % The --gcc-nested-functions option is not yet documented,
  % because it doesn't pass our test suite, and it is
@@ -5507,8 +5525,8 @@ options_help_target_code_compilation -->
          "\tEnable debugging of the generated target code.",
          "\tIf the target language is C, this has the same effect as",
          "\t`--c-debug' (see below).",
-        "\tIf the target language is IL or C#, this causes the compiler to",
-        "\tpass `/debug' to the IL assembler or C# compiler.)",
+        "\tIf the target language is C#, this causes the compiler to",
+        "\tpass `/debug' to the C# compiler.)",

          "--cc <compiler-name>",
          "\tSpecify which C compiler to use.",
diff --git a/configure.ac b/configure.ac
index dfd1609..ebf5270 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3287,15 +3287,15 @@ AC_SUBST([SYMPREFIX])
  # BEST_LLDS_BASE_GRADE is the most efficient of the LLDS->C base grades
  # that can be supported.  If the user explicitly chooses a base grade
  # using --with-llds-base-grade then we use that instead.
+#
+# NOTE: the base grade can also be one of asm_jump, fast and jump.
+# However, we do not publicly document those grades or encourage their
+# use by non-developers.

  AC_ARG_WITH([llds-base-grade],
     AC_HELP_STRING([--with-llds-base-grade=<base_grade>],
            [Force the use of <base_grade> as the base LLDS grade.
-                   This is mainly useful for forcing the source distribution to
-                   compile in a grade other than the one which is chosen
-           automatically.
-                   <base_grade> must be one of asm_fast, asm_jump, fast, jump,
-                   reg or none]),
+          <base_grade> must be one of asm_fast, reg or none]),
     [user_llds_base_grade="$withval";mercury_cv_user_base_grade=yes],
     [mercury_cv_user_base_grade=no]
  )
@@ -3323,24 +3323,14 @@ case "$mercury_cv_user_base_grade" in
              esac
              ;;
      no)
-        if test $mercury_cv_asm_labels = yes; then
-            if test $mercury_cv_gcc_model_fast = yes; then
-                BEST_LLDS_BASE_GRADE=asm_fast
-            else
-                BEST_LLDS_BASE_GRADE=asm_jump
-            fi
-        elif test $mercury_cv_gcc_labels = yes; then
-            if test $mercury_cv_gcc_model_fast = yes; then
-                BEST_LLDS_BASE_GRADE=fast
-            else
-                BEST_LLDS_BASE_GRADE=jump
-            fi
+        if test $mercury_cv_asm_labels = yes -a \
+                $mercury_cv_gcc_model_fast = yes
+        then
+            BEST_LLDS_BASE_GRADE=asm_fast
+        elif test $mercury_cv_gcc_model_reg = yes; then
+            BEST_LLDS_BASE_GRADE=reg
          else
-            if test $mercury_cv_gcc_model_reg = yes; then
-                BEST_LLDS_BASE_GRADE=reg
-            else
-                BEST_LLDS_BASE_GRADE=none
-            fi
+            BEST_LLDS_BASE_GRADE=none
          fi

          # We used to force the use of the none base grade if the C compiler
@@ -3512,9 +3502,10 @@ AC_ARG_ENABLE(nogc-grades,
                     [install no-gc versions of the library]),
      enable_nogc_grades="$enableval",enable_nogc_grades=no)

-AC_ARG_ENABLE(agc-grades,
-    AC_HELP_STRING([--enable-agc-grades],
-                   [install accurate GC versions of the library]),
+# Not publicly documented since the agc grades are currently broken.
+#
+#  --enable-agc-grades     install accurate GC versions of the library
+AC_ARG_ENABLE(agc-grades, [],
      enable_agc_grades="$enableval",enable_agc_grades=no)

  AC_ARG_ENABLE(debug-grades,
diff --git a/doc/user_guide.texi b/doc/user_guide.texi
index 034eae4..dbb88a7 100644
--- a/doc/user_guide.texi
+++ b/doc/user_guide.texi
@@ -7645,13 +7645,13 @@ The set of aspects and their alternatives are:

  @cindex none (compilation grade)
  @cindex reg (compilation grade)
- at cindex jump (compilation grade)
- at cindex asm_jump (compilation grade)
- at cindex fast (compilation grade)
- at cindex asm_fast (compilation grade)
- at cindex hl (compilation grade)
+ at c @cindex jump (compilation grade)
+ at c @cindex asm_jump (compilation grade)
+ at c @cindex fast (compilation grade)
+ at c @cindex asm_fast (compilation grade)
+ at c @cindex hl (compilation grade)
  @cindex hlc (compilation grade)
- at cindex il (compilation grade)
+ at c @cindex il (compilation grade)
  @cindex csharp (compilation grade)
  @cindex java (compilation grade)
  @cindex erlang (compilation grade)
@@ -7675,7 +7675,7 @@ The set of aspects and their alternatives are:
  @cindex .tr (grade modifier)
  @cindex .trseg (grade modifier)
  @cindex .gc (grade modifier)
- at cindex .agc (grade modifier)
+ at c @cindex .agc (grade modifier)
  @cindex .spf (grade modifier)
  @cindex .stseg (grade modifier)
  @cindex .debug (grade modifier)
@@ -7693,7 +7693,8 @@ The set of aspects and their alternatives are:
  (the default is system dependent).

  @item What garbage collection strategy to use:
- at samp{gc}, and @samp{agc} (the default is no garbage collection).
+ at c @samp{agc}
+ at samp{gc} (the default is no garbage collection).

  @item What kind of profiling to use:
  @samp{prof},
@@ -7774,14 +7775,14 @@ and grade modifier; they are followed by descriptions of those options.
  @item @samp{reg}
  @code{--target c --gcc-global-registers --no-gcc-nonlocal-gotos --no-asm-labels}.

- at item @samp{jump}
- at code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.
+ at c @item @samp{jump}
+ at c @code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.

- at item @samp{fast}
- at code{--target c --gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.
+ at c @item @samp{fast}
+ at c @code{--target c --gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.

- at item @samp{asm_jump}
- at code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --asm-labels}.
+ at c @item @samp{asm_jump}
+ at c @code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --asm-labels}.

  @item @samp{asm_fast}
  @code{--target c --gcc-global-registers --gcc-nonlocal-gotos --asm-labels}.
@@ -7789,11 +7790,11 @@ and grade modifier; they are followed by descriptions of those options.
  @item @samp{hlc}
  @code{--target c --high-level-code}.

- at item @samp{hl}
- at code{--target c --high-level-code --high-level-data}.
+ at c @item @samp{hl}
+ at c @code{--target c --high-level-code --high-level-data}.

- at item @samp{il}
- at code{--target il --high-level-code --high-level-data}.
+ at c @item @samp{il}
+ at c @code{--target il --high-level-code --high-level-data}.

  @item @samp{csharp}
  @code{--target csharp --high-level-code --high-level-data}.
@@ -7807,8 +7808,8 @@ and grade modifier; they are followed by descriptions of those options.
  @item @samp{.gc}
  @code{--gc boehm}.

- at item @samp{.agc}
- at code{--gc accurate}.
+ at c @item @samp{.agc}
+ at c @code{--gc accurate}.

  @item @samp{.prof}
  @code{--profiling}.
@@ -7876,16 +7877,15 @@ and grade modifier; they are followed by descriptions of those options.
  @cindex Target options

  @table @asis
- at item @code{--target c} (grades: none, reg, jump, fast, asm_jump, asm_fast, hl, hlc)
- at itemx @code{--il}, @code{--target il} (grades: il)
+ at c @item @code{--target c} (grades: none, reg, jump, fast, asm_jump, asm_fast, hl, hlc)
+ at item @code{--target c} (grades: none, reg, asm_fast, hlc)
+ at c @itemx @code{--il}, @code{--target il} (grades: il)
  @itemx @code{--csharp}, @code{--target csharp} (grades: csharp)
  @itemx @code{--java}, @code{--target java} (grades: java)
  @itemx @code{--erlang}, @code{--target erlang} (grades: erlang)
-Specify the target language used for compilation: C, IL, C#, Java
+Specify the target language used for compilation: C, C#, Java
  or Erlang.
  C means ANSI/ISO C, optionally with GNU C extensions (see below).
-IL means the Intermediate Language of the .NET Common Language Runtime.
-(IL is sometimes also known as "CIL" or "MSIL".)
  Targets other than C and Erlang imply @samp{--high-level-code}.

  @c @sp 1
@@ -7949,15 +7949,19 @@ the Erlang compiler to produce Erlang bytecode.
  @table @asis

  @sp 1
- at item @code{--gcc-global-registers} (grades: reg, fast, asm_fast)
- at itemx @code{--no-gcc-global-registers} (grades: none, jump, asm_jump)
+ at c @item @code{--gcc-global-registers} (grades: reg, fast, asm_fast)
+ at c @itemx @code{--no-gcc-global-registers} (grades: none, jump, asm_jump)
+ at item @code{--gcc-global-registers} (grades: reg, asm_fast)
+ at itemx @code{--no-gcc-global-registers} (grades: none)
  @findex --gcc-global-registers
  @findex --no-gcc-global-registers
  Specify whether or not to use GNU C's global register variables extension.
  This option is ignored if the @samp{--high-level-code} option is enabled.

  @sp 1
- at item @code{--gcc-non-local-gotos} (grades: jump, fast, asm_jump, asm_fast)
+ at c @item @code{--gcc-non-local-gotos} (grades: jump, fast, asm_jump, asm_fast)
+ at c @itemx @code{--no-gcc-non-local-gotos} (grades: none, reg)
+ at item @code{--gcc-non-local-gotos} (grades: asm_fast)
  @itemx @code{--no-gcc-non-local-gotos} (grades: none, reg)
  @findex --gcc-non-local-gotos
  @findex --no-gcc-non-local-gotos
@@ -7965,14 +7969,20 @@ Specify whether or not to use GNU C's ``labels as values'' extension.
  This option is ignored if the @samp{--high-level-code} option is enabled.

  @sp 1
- at item @code{--asm-labels} (grades: asm_jump, asm_fast)
- at itemx @code{--no-asm-labels} (grades: none, reg, jump, fast)
+ at c @item @code{--asm-labels} (grades: asm_jump, asm_fast)
+ at c @itemx @code{--no-asm-labels} (grades: none, reg, jump, fast)
+ at item @code{--asm-labels} (grades: asm_fast)
+ at itemx @code{--no-asm-labels} (grades: none, reg)
  @findex --asm-labels
  @findex --no-asm-labels
  Specify whether or not to use GNU C's asm extensions
  for inline assembler labels.
  This option is ignored if the @samp{--high-level-code} option is enabled.

+ at ignore
+ 
+   This option is not useful for non-developers.
+
  @sp 1
  @item @code{--pic-reg} (grades: any grade containing `.pic_reg')
  @findex --pic-reg
@@ -7986,6 +7996,7 @@ with position-independent code (gcc's `-fpic' option).
  This is necessary when using shared libraries on Intel x86 systems
  running Unix.  On other systems it has no effect.
  This option is also ignored if the @samp{--high-level-code} option is enabled.
+ at end ignore

  @sp 1
  @item @code{--stack-segments} (grades: any grade containing `.stseg')
@@ -8003,14 +8014,16 @@ This option is ignored if the @samp{--high-level-code} option is enabled.
  @cindex MLDS back-end compilation model options

  @table @asis
- at item @code{-H}, @code{--high-level-code} (grades: hl, hlc, il, csharp, java)
+ at c @item @code{-H}, @code{--high-level-code} (grades: hl, hlc, il, csharp, java)
+ at item @code{-H}, @code{--high-level-code} (grades: hlc, csharp, java)
  @findex -H
  @findex --high-level-code
  Use an alternative back-end that generates high-level code
  rather than the very low-level code that is generated by our
  original back-end.

- at item @code{--high-level-data} (grades: hl, il, csharp, java)
+ at c @item @code{--high-level-data} (grades: hl, il, csharp, java)
+ at item @code{--high-level-data} (grades: csharp, java)
  @findex --high-level-data
  Use an alternative, higher-level data representation that uses structs
  or classes, rather than treating all objects as arrays.
@@ -8192,27 +8205,29 @@ This option is supported for the C back-end, with @samp{--no-high-level-code}.
  For now, this option itself is for developers only.

  @sp 1
- at item @code{--gc @{none, boehm, accurate, automatic@}}
- at itemx @code{--garbage-collection @{none, boehm, accurate, automatic@}}
+ at c @item @code{--gc @{none, boehm, accurate, automatic@}}
+ at c @itemx @code{--garbage-collection @{none, boehm, accurate, automatic@}}
+ at item @code{--gc @{none, boehm, automatic@}}
+ at itemx @code{--garbage-collection @{none, boehm, automatic@}}
  @cindex Garbage collection
  @cindex Conservative garbage collection
  @cindex Boehm (et al) conservative garbage collector
- at cindex Memory Pool System conservative garbage collector
- at cindex Accurate garbage collection
+ at c @cindex Accurate garbage collection
  @cindex Automatic garbage collection
  @findex --gc
  @findex --garbage-collection
  Specify which method of garbage collection to use.
-Grades containing @samp{csharp}, @samp{java}, @samp{il} or @samp{erlang} use
+ at c and @samp{il}.
+Grades containing @samp{csharp}, @samp{java}, or @samp{erlang} use
  @samp{--gc automatic},
  grades containing @samp{.gc} use @samp{--gc boehm},
  other grades use @samp{--gc none}.
  @samp{conservative} or @samp{boehm} is Hans Boehm et al's conservative
  garbage collector.
- at samp{accurate} is our own type-accurate copying collector.
-It requires @samp{--high-level-code}.
+ at c @samp{accurate} is our own type-accurate copying collector.
+ at c It requires @samp{--high-level-code}.
  @samp{automatic} means the target language provides it.
-This is the case for the IL, C#, Java and Erlang back-ends, which always use
+This is the case for the C#, Java and Erlang back-ends, which always use
  the underlying implementation's garbage collector.

  @sp 1
@@ -8256,7 +8271,7 @@ accessible via the @samp{thread} module in the standard library.
  The runtime uses POSIX threads to achieve this, therefore it may also support
  parallel execution of threads.

-The Java, C#, IL and Erlang grades support concurrency without this option.
+The Java, C# and Erlang grades support concurrency without this option.
  Parallel execution may also be available depending on the target's runtime.

  @sp 1
@@ -9329,8 +9344,8 @@ than to @samp{mmc}.
  Enable debugging of the generated target code.
  If the target language is C, this has the same effect as
  @samp{--c-debug} (see below).
-If the target language is IL or C#, this causes the compiler to
-pass @samp{/debug} to the IL assembler or C# compiler.
+If the target language is C#, this causes the compiler to pass @samp{/debug} to
+the C# compiler.

  @sp 1
  @item --cc @var{compiler-name}



More information about the reviews mailing list