On 11/20/20 10:12 AM, Nathan Sidwell wrote:
@@ -214,14 +215,21 @@ in the following sections.
-faligned-new=@var{n} -fargs-in-order=@var{n} -fchar8_t -fcheck-new @gol
-fconstexpr-depth=@var{n} -fconstexpr-cache-depth=@var{n} @gol
-fconstexpr-loop-limit=@var{n} -fconstexpr-ops-limit=@var{n} @gol
+-fmodule-header@r{[}=@var{kind}@r{]} -fmodule-only -fmodules-ts @gol
+-fmodule-implicit-inline @gol
+-fmodule-mapper=@var{specification} @gol
+-fmodule-version-ignore @gol
-fno-elide-constructors @gol
-fno-enforce-eh-specs @gol
-fno-gnu-keywords @gol
-fno-implicit-templates @gol
-fno-implicit-inline-templates @gol
--fno-implement-inlines -fms-extensions @gol
+-fno-implement-inlines @gol
+-fno-module-lazy @gol
+-fms-extensions @gol
-fnew-inheriting-ctors @gol
-fnew-ttp-matching @gol
+-fno-module-lazy @gol
-fno-nonansi-builtins -fnothrow-opt -fno-operator-names @gol
-fno-optional-diags -fpermissive @gol
-fno-pretty-templates @gol
It looks to me like this table is currently alphabetized ignoring "no-"
prefixes. Your additions don't match that convention.
@@ -233,12 +241,14 @@ in the following sections.
-fvisibility-inlines-hidden @gol
-fvisibility-ms-compat @gol
-fext-numeric-literals @gol
+-flang-info-include-translate@r{[}=@var{name}@r{]} @gol
-Wabi-tag -Wcatch-value -Wcatch-value=@var{n} @gol
-Wno-class-conversion -Wclass-memaccess @gol
-Wcomma-subscript -Wconditionally-supported @gol
-Wno-conversion-null -Wctad-maybe-unsupported @gol
-Wctor-dtor-privacy -Wno-delete-incomplete @gol
--Wdelete-non-virtual-dtor -Wdeprecated-copy -Wdeprecated-copy-dtor @gol
+-Wdelete-non-virtual-dtor -Wdeprecated-copy -Wdeprecated-copy-dtor @gol
+-Winvalid-imported-macros @gol
-Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion @gol
-Weffc++ -Wno-exceptions -Wextra-semi -Wno-inaccessible-base @gol
-Wno-inherited-variadic-ctor -Wno-init-list-lifetime @gol
Ditto here.
@@ -599,7 +609,7 @@ Objective-C and Objective-C++ Dialects}.
-fpreprocessed -ftabstop=@var{width} -ftrack-macro-expansion @gol
-fwide-exec-charset=@var{charset} -fworking-directory @gol
-H -imacros @var{file} -include @var{file} @gol
--M -MD -MF -MG -MM -MMD -MP -MQ -MT @gol
+-M -MD -MF -MG -MM -MMD -MP -Mno-modules -MQ -MT @gol
-no-integrated-cpp -P -pthread -remap @gol
-traditional -traditional-cpp -trigraphs @gol
-U@var{macro} -undef @gol
And this seems like a totally random place to insert the new option...
+@item -fmodule-header
+@itemx -fmodule-header=user
+@itemx -fmodule-header=system
+@opindex fmodule-header
+Compile a header file to create an importableheader unit.
Is that a typo for "importable header", or some jargon?
+@item -fmodule-implicit-inline
+@opindex fmodule-implicit-inline
+Member functions defined in their class definitions are not implicitly
+inline for modular code. This is different to traditional C++
+behavior, for good reasons. However, it may result in a difficulty
+during code porting. This option will make such function definitions
s/will make/makes/
@@ -3303,6 +3359,12 @@ for ISO C++11 onwards (@option{-std=c++11}, ...).
Do not search for header files in the standard directories specific to
C++, but do still search the other standard directories. (This option
is used when building the C++ library.)
+
+@item -flang-info-include-translate
+@itemx -flang-info-include-translate=@var{header}
+@opindex flang-info-include-translate
+Give notice of include translation events.
+
What does "give notice" mean? I don't see that term used elsewhere in
the documentation.
+@item Textual merging of reachable GM entities
+Entities may be multiply defined across different header-units.
+These must be de-duplicated, and this is implemented across imports,
+or when an import redefines a textually-defined entity. However the
+reverse is not implemented -- textually redefining an entity that has
+been defined in an imported header-unit. A redefinition error will be
+emitted.
In Texinfo an em-dash is represented by "---" without spaces on either side.
Also, s/will be/is/, unless you are explicitly talking about something
that will happen when the implementation is finished and not current
behavior.
+No new source file suffixes are required or supported. If you wish to
+use a non-standard suffix (@xref{Overall Options}), you will also need
s/will //
+As header files often have no suffix, you commonly have to specify a
+@option{-x} option to tell the compiler the source is a header file.
+You may use @option{-x c++-header}, @option{-x c++-user-header} or
+@option{-x c++-system-header}. When used in conjunction with
+@option{-fmodules-ts}, these all imply an appropriate
+@option{-fmodule-header} option. The latter two variants will use the
Here too.
+CMI contents are written to a temporary file, which is then atomically
+renamed. Observers will either see old contents (if there is an
+existing file), or complete new contents. They will not observe the
+CMI during its creation. This is unlike object file writing, which
+may be observed by an external process.
I think both instances here, too, since this appears to be talking about
something that happens concurrently with compilation and not at some
point in the future.
+The @option{--param lazy-modules=@var{n}} parameter controls the limit
+on the number of concurrently open module files during lazy loading.
+Should more modules be imported, an LRU algorithm is used to determine
+which files to close -- until that file is needed again. This limit
Em-dash syntax again.
+The @option{-flang-info-include-translate} option notes whether
+include translation occurs. With no argument, all include translation
+is noted. Otherwise, queries about include translation of a specific
+header file is noted. The latter form may be repeated. This option
+may be helpful in determining whether include translation is
+happenning -- if it is working correctly, it'll behave as if it wasn't
+there at all.
Here too, plus s/happenning/happening/
+The @option{-Winvalid-imported-macros} option causes all imported macros
+to be resolved at the end of compilation. Without this, imported
+macros are only resolved when expanded or (re)defined. This option
+will detect conflicting import definitions for all macros.
s/will detect/detects/
+A mapper may be specified with the @option{-fmodule-mapper=@var{val}}
+option or @env{CXX_MODULE_MAPPER} environment variable. The value may
+have one of the following forms:
Eh, let's put this in an active voice. "You can specify a mapper...."
+Modules affect preprocessing because of header units and include
+translation. Some uses of the preprocessor as a separate step will
+either not produce a correct output, or require CMIs to be available.
...separate step either do not... or require....
+Header units import macros. These macros can affect later conditional
+inclusion, which therefore can cascade to differing import sets. When
+preprocessing, it is necessary to load the CMI. If a header unit is
+unavailable, the preprocessor will issue a warning and continue (when
s/will issue/issues/, unless this is not implemented yet
+The @option{-save-temps} option will use @option{-fdirectives-only}
Similar problem here.
+for preprocessing, and preserve the macro definitions in the
+preprocessed output. Usually you will also want to use this option
And here.
This is all nit-picky copy-editing stuff.... I haven't made any real
effort to understand the features being documented here, as my C++
knowledge has been swapped out for Fortran lately. :-(
-Sandra