standards.texi: Copy-editing for grammar, markup, and sentence flow throughout the file.
2016-01-19 Sandra Loosemore <sandra@codesourcery.com> gcc/ * doc/standards.texi: Copy-editing for grammar, markup, and sentence flow throughout the file. Fix broken link to Objective-C 2.0 documentation. * doc/invoke.texi: More copy-editing; fix numerous typos and spelling errors. From-SVN: r232583
This commit is contained in:
parent
199501ea41
commit
d0899488d9
3 changed files with 150 additions and 138 deletions
|
@ -1,3 +1,11 @@
|
|||
2016-01-19 Sandra Loosemore <sandra@codesourcery.com>
|
||||
|
||||
* doc/standards.texi: Copy-editing for grammar, markup, and sentence
|
||||
flow throughout the file. Fix broken link to Objective-C 2.0
|
||||
documentation.
|
||||
* doc/invoke.texi: More copy-editing; fix numerous typos and spelling
|
||||
errors.
|
||||
|
||||
2016-01-19 Wilco Dijkstra <wdijkstr@arm.com>
|
||||
|
||||
* ccmp.c (expand_ccmp_expr_1): Avoid spurious unused warnings.
|
||||
|
|
|
@ -2742,9 +2742,9 @@ This warning is enabled by default.
|
|||
|
||||
@item -Wlto-type-mismatch
|
||||
@opindex Wlto-type-mismatch
|
||||
@opindex Wno-lto-type-mistmach
|
||||
@opindex Wno-lto-type-mismatch
|
||||
|
||||
During the link-time optimization warn about type mismatches in between
|
||||
During the link-time optimization warn about type mismatches in
|
||||
global declarations from different compilation units.
|
||||
Requires @option{-flto} to be enabled. Enabled by default.
|
||||
|
||||
|
@ -3261,7 +3261,7 @@ a message which is too long to fit on a single line.
|
|||
@item -fdiagnostics-color[=@var{WHEN}]
|
||||
@itemx -fno-diagnostics-color
|
||||
@opindex fdiagnostics-color
|
||||
@cindex highlight, color, colour
|
||||
@cindex highlight, color
|
||||
@vindex GCC_COLORS @r{environment variable}
|
||||
Use color in diagnostics. @var{WHEN} is @samp{never}, @samp{always},
|
||||
or @samp{auto}. The default depends on how the compiler has been configured,
|
||||
|
@ -3346,7 +3346,7 @@ option is known to the diagnostic machinery). Specifying the
|
|||
@opindex fno-diagnostics-show-caret
|
||||
@opindex fdiagnostics-show-caret
|
||||
By default, each diagnostic emitted includes the original source line
|
||||
and a caret '^' indicating the column. This option suppresses this
|
||||
and a caret @samp{^} indicating the column. This option suppresses this
|
||||
information. The source line is truncated to @var{n} characters, if
|
||||
the @option{-fmessage-length=n} option is given. When the output is done
|
||||
to the terminal, the width is limited to the width given by the
|
||||
|
@ -5049,7 +5049,7 @@ types. @option{-Wconversion-null} is enabled by default.
|
|||
@item -Wzero-as-null-pointer-constant @r{(C++ and Objective-C++ only)}
|
||||
@opindex Wzero-as-null-pointer-constant
|
||||
@opindex Wno-zero-as-null-pointer-constant
|
||||
Warn when a literal '0' is used as null pointer constant. This can
|
||||
Warn when a literal @samp{0} is used as null pointer constant. This can
|
||||
be useful to facilitate the conversion to @code{nullptr} in C++11.
|
||||
|
||||
@item -Wsubobject-linkage @r{(C++ and Objective-C++ only)}
|
||||
|
@ -5878,19 +5878,19 @@ except when selective scheduling is enabled.
|
|||
|
||||
@item -gsplit-dwarf
|
||||
@opindex gsplit-dwarf
|
||||
Separate as much dwarf debugging information as possible into a
|
||||
separate output file with the extension .dwo. This option allows
|
||||
Separate as much DWARF debugging information as possible into a
|
||||
separate output file with the extension @file{.dwo}. This option allows
|
||||
the build system to avoid linking files with debug information. To
|
||||
be useful, this option requires a debugger capable of reading .dwo
|
||||
be useful, this option requires a debugger capable of reading @file{.dwo}
|
||||
files.
|
||||
|
||||
@item -gpubnames
|
||||
@opindex gpubnames
|
||||
Generate dwarf .debug_pubnames and .debug_pubtypes sections.
|
||||
Generate DWARF @code{.debug_pubnames} and @code{.debug_pubtypes} sections.
|
||||
|
||||
@item -ggnu-pubnames
|
||||
@opindex ggnu-pubnames
|
||||
Generate .debug_pubnames and .debug_pubtypes sections in a format
|
||||
Generate @code{.debug_pubnames} and @code{.debug_pubtypes} sections in a format
|
||||
suitable for conversion into a GDB@ index. This option is only useful
|
||||
with a linker that can produce GDB@ index version 7.
|
||||
|
||||
|
@ -5906,18 +5906,17 @@ and on some objects @code{.debug_types} produces larger instead of smaller
|
|||
debugging information.
|
||||
|
||||
@item -grecord-gcc-switches
|
||||
@item -gno-record-gcc-switches
|
||||
@opindex grecord-gcc-switches
|
||||
@opindex gno-record-gcc-switches
|
||||
This switch causes the command-line options used to invoke the
|
||||
compiler that may affect code generation to be appended to the
|
||||
DW_AT_producer attribute in DWARF debugging information. The options
|
||||
are concatenated with spaces separating them from each other and from
|
||||
the compiler version. See also @option{-frecord-gcc-switches} for another
|
||||
way of storing compiler options into the object file. This is the default.
|
||||
|
||||
@item -gno-record-gcc-switches
|
||||
@opindex gno-record-gcc-switches
|
||||
Disallow appending command-line options to the DW_AT_producer attribute
|
||||
in DWARF debugging information.
|
||||
the compiler version.
|
||||
It is enabled by default.
|
||||
See also @option{-frecord-gcc-switches} for another
|
||||
way of storing compiler options into the object file.
|
||||
|
||||
@item -gstrict-dwarf
|
||||
@opindex gstrict-dwarf
|
||||
|
@ -7591,7 +7590,7 @@ The default is @samp{simple} at levels @option{-O}, @option{-Os}, and
|
|||
@opindex freorder-blocks-and-partition
|
||||
In addition to reordering basic blocks in the compiled function, in order
|
||||
to reduce number of taken branches, partitions hot and cold basic blocks
|
||||
into separate sections of the assembly and .o files, to improve
|
||||
into separate sections of the assembly and @file{.o} files, to improve
|
||||
paging and cache locality performance.
|
||||
|
||||
This optimization is automatically turned off in the presence of
|
||||
|
@ -7825,6 +7824,9 @@ had been part of the same translation unit.
|
|||
|
||||
To use the link-time optimizer, @option{-flto} and optimization
|
||||
options should be specified at compile time and during the final link.
|
||||
It is recommended that you compile all the files participating in the
|
||||
same link with the same options and also specify those options at
|
||||
link time.
|
||||
For example:
|
||||
|
||||
@smallexample
|
||||
|
@ -7855,15 +7857,15 @@ merges them together into a single GIMPLE representation and optimizes
|
|||
them as usual to produce @file{myprog}.
|
||||
|
||||
The only important thing to keep in mind is that to enable link-time
|
||||
optimizations you need to use the GCC driver to perform the link-step.
|
||||
optimizations you need to use the GCC driver to perform the link step.
|
||||
GCC then automatically performs link-time optimization if any of the
|
||||
objects involved were compiled with the @option{-flto} command-line option.
|
||||
You generally
|
||||
should specify the optimization options to be used for link-time
|
||||
optimization though GCC tries to be clever at guessing an
|
||||
optimization level to use from the options used at compile-time
|
||||
if you fail to specify one at link-time. You can always override
|
||||
the automatic decision to do link-time optimization at link-time
|
||||
optimization level to use from the options used at compile time
|
||||
if you fail to specify one at link time. You can always override
|
||||
the automatic decision to do link-time optimization at link time
|
||||
by passing @option{-fno-lto} to the link command.
|
||||
|
||||
To make whole program optimization effective, it is necessary to make
|
||||
|
@ -7876,14 +7878,14 @@ the linker plugin is not available, @option{-fwhole-program} should be
|
|||
used to allow the compiler to make these assumptions, which leads
|
||||
to more aggressive optimization decisions.
|
||||
|
||||
When @option{-fuse-linker-plugin} is not enabled then, when a file is
|
||||
When @option{-fuse-linker-plugin} is not enabled, when a file is
|
||||
compiled with @option{-flto}, the generated object file is larger than
|
||||
a regular object file because it contains GIMPLE bytecodes and the usual
|
||||
final code (see @option{-ffat-lto-objects}. This means that
|
||||
object files with LTO information can be linked as normal object
|
||||
files; if @option{-fno-lto} is passed to the linker, no
|
||||
interprocedural optimizations are applied. Note that when
|
||||
@option{-fno-fat-lto-objects} is enabled the compile-stage is faster
|
||||
@option{-fno-fat-lto-objects} is enabled the compile stage is faster
|
||||
but you cannot perform a regular, non-LTO link on them.
|
||||
|
||||
Additionally, the optimization flags used to compile individual files
|
||||
|
@ -7909,22 +7911,21 @@ further processing.
|
|||
|
||||
There are some code generation flags preserved by GCC when
|
||||
generating bytecodes, as they need to be used during the final link
|
||||
stage. Generally options specified at link-time override those
|
||||
specified at compile-time.
|
||||
stage. Generally options specified at link time override those
|
||||
specified at compile time.
|
||||
|
||||
If you do not specify an optimization level option @option{-O} at
|
||||
link-time then GCC computes one based on the optimization levels
|
||||
used when compiling the object files. The highest optimization
|
||||
level wins here.
|
||||
link time, then GCC uses the highest optimization level
|
||||
used when compiling the object files.
|
||||
|
||||
Currently, the following options and their setting are take from
|
||||
the first object file that explicitely specified it:
|
||||
Currently, the following options and their settings are taken from
|
||||
the first object file that explicitly specifies them:
|
||||
@option{-fPIC}, @option{-fpic}, @option{-fpie}, @option{-fcommon},
|
||||
@option{-fexceptions}, @option{-fnon-call-exceptions}, @option{-fgnu-tm}
|
||||
and all the @option{-m} target flags.
|
||||
|
||||
Certain ABI changing flags are required to match in all compilation-units
|
||||
and trying to override this at link-time with a conflicting value
|
||||
Certain ABI-changing flags are required to match in all compilation units,
|
||||
and trying to override this at link time with a conflicting value
|
||||
is ignored. This includes options such as @option{-freg-struct-return}
|
||||
and @option{-fpcc-struct-return}.
|
||||
|
||||
|
@ -7933,12 +7934,8 @@ Other options such as @option{-ffp-contract}, @option{-fno-strict-overflow},
|
|||
are passed through to the link stage and merged conservatively for
|
||||
conflicting translation units. Specifically
|
||||
@option{-fno-strict-overflow}, @option{-fwrapv} and @option{-fno-trapv} take
|
||||
precedence and for example @option{-ffp-contract=off} takes precedence
|
||||
over @option{-ffp-contract=fast}. You can override them at linke-time.
|
||||
|
||||
It is recommended that you compile all the files participating in the
|
||||
same link with the same options and also specify those options at
|
||||
link time.
|
||||
precedence; and for example @option{-ffp-contract=off} takes precedence
|
||||
over @option{-ffp-contract=fast}. You can override them at link time.
|
||||
|
||||
If LTO encounters objects with C linkage declared with incompatible
|
||||
types in separate translation units to be linked together (undefined
|
||||
|
@ -8038,7 +8035,7 @@ the link-time optimization step directly from the WPA phase.
|
|||
@item -flto-odr-type-merging
|
||||
@opindex flto-odr-type-merging
|
||||
Enable streaming of mangled types names of C++ types and their unification
|
||||
at linktime. This increases size of LTO object files, but enable
|
||||
at link time. This increases size of LTO object files, but enables
|
||||
diagnostics about One Definition Rule violations.
|
||||
|
||||
@item -flto-compression-level=@var{n}
|
||||
|
@ -8259,7 +8256,7 @@ it might, and @option{-fno-math-errno} is the default.
|
|||
|
||||
Allow optimizations for floating-point arithmetic that (a) assume
|
||||
that arguments and results are valid and (b) may violate IEEE or
|
||||
ANSI standards. When used at link-time, it may include libraries
|
||||
ANSI standards. When used at link time, it may include libraries
|
||||
or startup files that change the default FPU control word or other
|
||||
similar optimizations.
|
||||
|
||||
|
@ -8922,7 +8919,7 @@ doing loop versioning for alias in the vectorizer.
|
|||
|
||||
@item vect-max-peeling-for-alignment
|
||||
The maximum number of loop peels to enhance access alignment
|
||||
for vectorizer. Value -1 means 'no limit'.
|
||||
for vectorizer. Value -1 means no limit.
|
||||
|
||||
@item max-iterations-to-track
|
||||
The maximum number of iterations of a loop the brute-force algorithm
|
||||
|
@ -9219,7 +9216,7 @@ redundancies for loads and stores. If this limit is hit the search
|
|||
is aborted and the load or store is not considered redundant. The
|
||||
number of queries is algorithmically limited to the number of
|
||||
stores on all paths from the load to the function entry.
|
||||
The default maxmimum number of queries is 1000.
|
||||
The default maximum number of queries is 1000.
|
||||
|
||||
@item ira-max-loops-num
|
||||
IRA uses regional register allocation by default. If a function
|
||||
|
@ -9261,7 +9258,7 @@ motion optimization performed on them. The default value of the
|
|||
parameter is 1000 for @option{-O1} and 10000 for @option{-O2} and above.
|
||||
|
||||
@item loop-max-datarefs-for-datadeps
|
||||
Building data dapendencies is expensive for very large loops. This
|
||||
Building data dependencies is expensive for very large loops. This
|
||||
parameter limits the number of data references in loops that are
|
||||
considered for data dependence analysis. These large loops are no
|
||||
handled by the optimizations using loop data dependencies.
|
||||
|
@ -9406,7 +9403,7 @@ The default value is 75. A small positive adjustment is applied for
|
|||
statements with memory operands as those are even more profitable so sink.
|
||||
|
||||
@item max-stores-to-sink
|
||||
The maximum number of conditional stores paires that can be sunk. Set to 0
|
||||
The maximum number of conditional store pairs that can be sunk. Set to 0
|
||||
if either vectorization (@option{-ftree-vectorize}) or if-conversion
|
||||
(@option{-ftree-loop-if-convert}) is disabled. The default is 2.
|
||||
|
||||
|
@ -9674,7 +9671,7 @@ out-of-bounds and use-after-free bugs.
|
|||
See @uref{https://github.com/google/sanitizers/wiki/AddressSanitizer} for
|
||||
more details. The run-time behavior can be influenced using the
|
||||
@env{ASAN_OPTIONS} environment variable. When set to @code{help=1},
|
||||
the available options are shown at startup of the instrumended program. See
|
||||
the available options are shown at startup of the instrumented program. See
|
||||
@url{https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags}
|
||||
for a list of supported options.
|
||||
|
||||
|
@ -9904,7 +9901,7 @@ is usable even in freestanding environments.
|
|||
@item -fsanitize-coverage=trace-pc
|
||||
@opindex fsanitize-coverage=trace-pc
|
||||
Enable coverage-guided fuzzing code instrumentation.
|
||||
Inserts call to __sanitizer_cov_trace_pc into every basic block.
|
||||
Inserts a call to @code{__sanitizer_cov_trace_pc} into every basic block.
|
||||
|
||||
@item -fbounds-check
|
||||
@opindex fbounds-check
|
||||
|
@ -11765,8 +11762,8 @@ text / bss / data / heap / stack / dso start locations.
|
|||
|
||||
@item -freport-bug
|
||||
@opindex freport-bug
|
||||
Collect and dump debug information into temporary file if ICE in C/C++
|
||||
compiler occured.
|
||||
Collect and dump debug information into a temporary file if an
|
||||
internal compiler error (ICE) occurs.
|
||||
|
||||
@item -fdump-unnumbered
|
||||
@opindex fdump-unnumbered
|
||||
|
@ -12798,7 +12795,7 @@ Do not assume that unaligned memory references are handled by the system.
|
|||
@itemx -mno-omit-leaf-frame-pointer
|
||||
@opindex momit-leaf-frame-pointer
|
||||
@opindex mno-omit-leaf-frame-pointer
|
||||
Omit or keep the frame pointer in leaf functions. The former behaviour is the
|
||||
Omit or keep the frame pointer in leaf functions. The former behavior is the
|
||||
default.
|
||||
|
||||
@item -mtls-dialect=desc
|
||||
|
@ -12983,7 +12980,7 @@ That allows code to run on hardware variants that lack these registers.
|
|||
|
||||
@item -mprefer-short-insn-regs
|
||||
@opindex mprefer-short-insn-regs
|
||||
Preferrentially allocate registers that allow short instruction generation.
|
||||
Preferentially allocate registers that allow short instruction generation.
|
||||
This can result in increased instruction count, so this may either reduce or
|
||||
increase overall code size.
|
||||
|
||||
|
@ -13275,31 +13272,31 @@ The following instructions are enabled: MPYW, and MPYUW.
|
|||
@item 2
|
||||
@opindex wlh1
|
||||
The multiply option is set to wlh1: 32x32 multiplier, fully
|
||||
pipelined (1 stage). The following instructions are additionaly
|
||||
pipelined (1 stage). The following instructions are additionally
|
||||
enabled: MPY, MPYU, MPYM, MPYMU, and MPY_S.
|
||||
|
||||
@item 3
|
||||
@opindex wlh2
|
||||
The multiply option is set to wlh2: 32x32 multiplier, fully pipelined
|
||||
(2 stages). The following instructions are additionaly enabled: MPY,
|
||||
(2 stages). The following instructions are additionally enabled: MPY,
|
||||
MPYU, MPYM, MPYMU, and MPY_S.
|
||||
|
||||
@item 4
|
||||
@opindex wlh3
|
||||
The multiply option is set to wlh3: Two 16x16 multiplier, blocking,
|
||||
sequential. The following instructions are additionaly enabled: MPY,
|
||||
sequential. The following instructions are additionally enabled: MPY,
|
||||
MPYU, MPYM, MPYMU, and MPY_S.
|
||||
|
||||
@item 5
|
||||
@opindex wlh4
|
||||
The multiply option is set to wlh4: One 16x16 multiplier, blocking,
|
||||
sequential. The following instructions are additionaly enabled: MPY,
|
||||
sequential. The following instructions are additionally enabled: MPY,
|
||||
MPYU, MPYM, MPYMU, and MPY_S.
|
||||
|
||||
@item 6
|
||||
@opindex wlh5
|
||||
The multiply option is set to wlh5: One 32x4 multiplier, blocking,
|
||||
sequential. The following instructions are additionaly enabled: MPY,
|
||||
sequential. The following instructions are additionally enabled: MPY,
|
||||
MPYU, MPYM, MPYMU, and MPY_S.
|
||||
|
||||
@end table
|
||||
|
@ -13521,7 +13518,7 @@ Indicate target register priority for r0..r3 / r12..r15.
|
|||
|
||||
@item -mlra-priority-noncompact
|
||||
@opindex mlra-priority-noncompact
|
||||
Reduce target regsiter priority for r0..r3 / r12..r15.
|
||||
Reduce target register priority for r0..r3 / r12..r15.
|
||||
|
||||
@item -mno-millicode
|
||||
@opindex mno-millicode
|
||||
|
@ -14307,7 +14304,7 @@ the compiler and are subject to some limitations:
|
|||
The compiler never sets @code{EIND}.
|
||||
|
||||
@item
|
||||
The compiler uses @code{EIND} implicitely in @code{EICALL}/@code{EIJMP}
|
||||
The compiler uses @code{EIND} implicitly in @code{EICALL}/@code{EIJMP}
|
||||
instructions or might read @code{EIND} directly in order to emulate an
|
||||
indirect call/jump by means of a @code{RET} instruction.
|
||||
|
||||
|
@ -16476,7 +16473,7 @@ to 64 bits. These are HP-UX specific flags.
|
|||
(Dis/En)able data speculative scheduling before reload.
|
||||
This results in generation of @code{ld.a} instructions and
|
||||
the corresponding check instructions (@code{ld.c} / @code{chk.a}).
|
||||
The default is 'disable'.
|
||||
The default setting is disabled.
|
||||
|
||||
@item -msched-ar-data-spec
|
||||
@itemx -mno-sched-ar-data-spec
|
||||
|
@ -16485,7 +16482,7 @@ The default is 'disable'.
|
|||
(En/Dis)able data speculative scheduling after reload.
|
||||
This results in generation of @code{ld.a} instructions and
|
||||
the corresponding check instructions (@code{ld.c} / @code{chk.a}).
|
||||
The default is 'enable'.
|
||||
The default setting is enabled.
|
||||
|
||||
@item -mno-sched-control-spec
|
||||
@itemx -msched-control-spec
|
||||
|
@ -16495,7 +16492,7 @@ The default is 'enable'.
|
|||
available only during region scheduling (i.e.@: before reload).
|
||||
This results in generation of the @code{ld.s} instructions and
|
||||
the corresponding check instructions @code{chk.s}.
|
||||
The default is 'disable'.
|
||||
The default setting is disabled.
|
||||
|
||||
@item -msched-br-in-data-spec
|
||||
@itemx -mno-sched-br-in-data-spec
|
||||
|
@ -16504,7 +16501,7 @@ The default is 'disable'.
|
|||
(En/Dis)able speculative scheduling of the instructions that
|
||||
are dependent on the data speculative loads before reload.
|
||||
This is effective only with @option{-msched-br-data-spec} enabled.
|
||||
The default is 'enable'.
|
||||
The default setting is enabled.
|
||||
|
||||
@item -msched-ar-in-data-spec
|
||||
@itemx -mno-sched-ar-in-data-spec
|
||||
|
@ -16513,7 +16510,7 @@ The default is 'enable'.
|
|||
(En/Dis)able speculative scheduling of the instructions that
|
||||
are dependent on the data speculative loads after reload.
|
||||
This is effective only with @option{-msched-ar-data-spec} enabled.
|
||||
The default is 'enable'.
|
||||
The default setting is enabled.
|
||||
|
||||
@item -msched-in-control-spec
|
||||
@itemx -mno-sched-in-control-spec
|
||||
|
@ -16522,7 +16519,7 @@ The default is 'enable'.
|
|||
(En/Dis)able speculative scheduling of the instructions that
|
||||
are dependent on the control speculative loads.
|
||||
This is effective only with @option{-msched-control-spec} enabled.
|
||||
The default is 'enable'.
|
||||
The default setting is enabled.
|
||||
|
||||
@item -mno-sched-prefer-non-data-spec-insns
|
||||
@itemx -msched-prefer-non-data-spec-insns
|
||||
|
@ -16531,7 +16528,7 @@ The default is 'enable'.
|
|||
If enabled, data-speculative instructions are chosen for schedule
|
||||
only if there are no other choices at the moment. This makes
|
||||
the use of the data speculation much more conservative.
|
||||
The default is 'disable'.
|
||||
The default setting is disabled.
|
||||
|
||||
@item -mno-sched-prefer-non-control-spec-insns
|
||||
@itemx -msched-prefer-non-control-spec-insns
|
||||
|
@ -16540,7 +16537,7 @@ The default is 'disable'.
|
|||
If enabled, control-speculative instructions are chosen for schedule
|
||||
only if there are no other choices at the moment. This makes
|
||||
the use of the control speculation much more conservative.
|
||||
The default is 'disable'.
|
||||
The default setting is disabled.
|
||||
|
||||
@item -mno-sched-count-spec-in-critical-path
|
||||
@itemx -msched-count-spec-in-critical-path
|
||||
|
@ -16549,7 +16546,7 @@ The default is 'disable'.
|
|||
If enabled, speculative dependencies are considered during
|
||||
computation of the instructions priorities. This makes the use of the
|
||||
speculation a bit more conservative.
|
||||
The default is 'disable'.
|
||||
The default setting is disabled.
|
||||
|
||||
@item -msched-spec-ldc
|
||||
@opindex msched-spec-ldc
|
||||
|
@ -18512,7 +18509,7 @@ to undefined behavior.
|
|||
@opindex mrelax-pic-calls
|
||||
Try to turn PIC calls that are normally dispatched via register
|
||||
@code{$25} into direct calls. This is only possible if the linker can
|
||||
resolve the destination at link-time and if the destination is within
|
||||
resolve the destination at link time and if the destination is within
|
||||
range for a direct call.
|
||||
|
||||
@option{-mrelax-pic-calls} is the default if GCC was configured to use
|
||||
|
@ -18796,7 +18793,7 @@ This option is also passed on to the assembler.
|
|||
This option enables or disables warnings about conflicts between the
|
||||
MCU name specified by the @option{-mmcu} option and the ISA set by the
|
||||
@option{-mcpu} option and/or the hardware multiply support set by the
|
||||
@option{-mhwmult} option. It also toggles warnings about unrecognised
|
||||
@option{-mhwmult} option. It also toggles warnings about unrecognized
|
||||
MCU names. This option is on by default.
|
||||
|
||||
@item -mcpu=
|
||||
|
@ -18834,7 +18831,7 @@ for the original 16-bit-only multiply supported by early MCUs.
|
|||
A value of @samp{auto} can also be given. This tells GCC to deduce
|
||||
the hardware multiply support based upon the MCU name provided by the
|
||||
@option{-mmcu} option. If no @option{-mmcu} option is specified or if
|
||||
the MCU name is not recognised then no hardware multiply support is
|
||||
the MCU name is not recognized then no hardware multiply support is
|
||||
assumed. @code{auto} is the default setting.
|
||||
|
||||
Hardware multiplies are normally performed by calling a library
|
||||
|
@ -18863,8 +18860,8 @@ do not have one of the @code{lower}, @code{upper}, @code{either} or
|
|||
@code{upper}, @code{either} or @code{any}. The first three behave
|
||||
like the corresponding attribute. The fourth possible value -
|
||||
@code{any} - is the default. It leaves placement entirely up to the
|
||||
linker script and how it assigns the standard sections (.text, .data
|
||||
etc) to the memory regions.
|
||||
linker script and how it assigns the standard sections
|
||||
(@code{.text}, @code{.data}, etc) to the memory regions.
|
||||
|
||||
@item -msilicon-errata=
|
||||
@opindex msilicon-errata
|
||||
|
@ -19018,14 +19015,14 @@ compiled with the same @option{-G} setting.
|
|||
Generate GP-relative accesses for all data objects in the program. If you
|
||||
use this option, the entire data and BSS segments
|
||||
of your program must fit in 64K of memory and you must use an appropriate
|
||||
linker script to allocate them within the addressible range of the
|
||||
linker script to allocate them within the addressable range of the
|
||||
global pointer.
|
||||
|
||||
@item all
|
||||
Generate GP-relative addresses for function pointers as well as data
|
||||
pointers. If you use this option, the entire text, data, and BSS segments
|
||||
of your program must fit in 64K of memory and you must use an appropriate
|
||||
linker script to allocate them within the addressible range of the
|
||||
linker script to allocate them within the addressable range of the
|
||||
global pointer.
|
||||
|
||||
@end table
|
||||
|
@ -19539,11 +19536,11 @@ support to use, unless this is overridden by an explicit
|
|||
@option{-mmul=none} option on the command line. Thus specifying
|
||||
@option{-mcpu=g13} enables the use of the G13 hardware multiply
|
||||
peripheral and specifying @option{-mcpu=g10} disables the use of
|
||||
hardware multipications altogether.
|
||||
hardware multiplications altogether.
|
||||
|
||||
Note, although the RL78/G14 core is the default target, specifying
|
||||
@option{-mcpu=g14} or @option{-mcpu=rl78} on the command line does
|
||||
change the behaviour of the toolchain since it also enables G14
|
||||
change the behavior of the toolchain since it also enables G14
|
||||
hardware multiply support. If these options are not specified on the
|
||||
command line then software multiplication routines will be used even
|
||||
though the code targets the RL78 core. This is for backwards
|
||||
|
@ -19762,7 +19759,7 @@ the AltiVec instruction set. You may also need to set
|
|||
enhancements.
|
||||
|
||||
When @option{-maltivec} is used, rather than @option{-maltivec=le} or
|
||||
@option{-maltivec=be}, the element order for Altivec intrinsics such
|
||||
@option{-maltivec=be}, the element order for AltiVec intrinsics such
|
||||
as @code{vec_splat}, @code{vec_extract}, and @code{vec_insert}
|
||||
match array element order corresponding to the endianness of the
|
||||
target. That is, element zero identifies the leftmost element in a
|
||||
|
@ -19772,23 +19769,23 @@ little-endian platform.
|
|||
|
||||
@item -maltivec=be
|
||||
@opindex maltivec=be
|
||||
Generate Altivec instructions using big-endian element order,
|
||||
Generate AltiVec instructions using big-endian element order,
|
||||
regardless of whether the target is big- or little-endian. This is
|
||||
the default when targeting a big-endian platform.
|
||||
|
||||
The element order is used to interpret element numbers in Altivec
|
||||
The element order is used to interpret element numbers in AltiVec
|
||||
intrinsics such as @code{vec_splat}, @code{vec_extract}, and
|
||||
@code{vec_insert}. By default, these match array element order
|
||||
corresponding to the endianness for the target.
|
||||
|
||||
@item -maltivec=le
|
||||
@opindex maltivec=le
|
||||
Generate Altivec instructions using little-endian element order,
|
||||
Generate AltiVec instructions using little-endian element order,
|
||||
regardless of whether the target is big- or little-endian. This is
|
||||
the default when targeting a little-endian platform. This option is
|
||||
currently ignored when targeting a big-endian platform.
|
||||
|
||||
The element order is used to interpret element numbers in Altivec
|
||||
The element order is used to interpret element numbers in AltiVec
|
||||
intrinsics such as @code{vec_splat}, @code{vec_extract}, and
|
||||
@code{vec_insert}. By default, these match array element order
|
||||
corresponding to the endianness for the target.
|
||||
|
@ -21133,7 +21130,7 @@ define vector type variables and arguments. @samp{vector} is only
|
|||
available when GNU extensions are enabled. It will not be expanded
|
||||
when requesting strict standard compliance e.g. with @option{-std=c99}.
|
||||
In addition to the GCC low-level builtins @option{-mzvector} enables
|
||||
a set of builtins added for compatibility with Altivec-style
|
||||
a set of builtins added for compatibility with AltiVec-style
|
||||
implementations like Power and Cell. In order to make use of these
|
||||
builtins the header file @file{vecintrin.h} needs to be included.
|
||||
@option{-mzvector} is disabled by default.
|
||||
|
@ -21487,7 +21484,7 @@ Control the IEEE compliance of floating-point comparisons, which affects the
|
|||
handling of cases where the result of a comparison is unordered. By default
|
||||
@option{-mieee} is implicitly enabled. If @option{-ffinite-math-only} is
|
||||
enabled @option{-mno-ieee} is implicitly set, which results in faster
|
||||
floating-point greater-equal and less-equal comparisons. The implcit settings
|
||||
floating-point greater-equal and less-equal comparisons. The implicit settings
|
||||
can be overridden by specifying either @option{-mieee} or @option{-mno-ieee}.
|
||||
|
||||
@item -minline-ic_invalidate
|
||||
|
@ -24176,9 +24173,9 @@ privileges, isn't available.
|
|||
@item -fwritable-relocated-rdata
|
||||
@opindex fno-writable-relocated-rdata
|
||||
This option is available for MinGW and Cygwin targets. It specifies
|
||||
that relocated-data in read-only section is put into .data
|
||||
that relocated-data in read-only section is put into the @code{.data}
|
||||
section. This is a necessary for older runtimes not supporting
|
||||
modification of .rdata sections for pseudo-relocation.
|
||||
modification of @code{.rdata} sections for pseudo-relocation.
|
||||
|
||||
@item -mpe-aligned-commons
|
||||
@opindex mpe-aligned-commons
|
||||
|
@ -24342,7 +24339,7 @@ strings to control their behavior. The spec strings built into GCC can
|
|||
be overridden by using the @option{-specs=} command-line switch to specify
|
||||
a spec file.
|
||||
|
||||
@dfn{Spec files} are plaintext files that are used to construct spec
|
||||
@dfn{Spec files} are plain-text files that are used to construct spec
|
||||
strings. They consist of a sequence of directives separated by blank
|
||||
lines. The type of directive is determined by the first non-whitespace
|
||||
character on the line, which can be one of the following:
|
||||
|
|
|
@ -50,9 +50,6 @@ with some exceptions, and possibly with some extensions.
|
|||
@cindex hosted environment
|
||||
@findex __STDC_HOSTED__
|
||||
|
||||
GCC supports three versions of the C standard, although support for
|
||||
the most recent version is not yet complete.
|
||||
|
||||
@opindex std
|
||||
@opindex ansi
|
||||
@opindex pedantic
|
||||
|
@ -62,10 +59,12 @@ published in 1990. This standard was ratified as an ISO standard
|
|||
(ISO/IEC 9899:1990) later in 1990. There were no technical
|
||||
differences between these publications, although the sections of the
|
||||
ANSI standard were renumbered and became clauses in the ISO standard.
|
||||
This standard, in both its forms, is commonly known as @dfn{C89}, or
|
||||
occasionally as @dfn{C90}, from the dates of ratification. The ANSI
|
||||
The ANSI
|
||||
standard, but not the ISO standard, also came with a Rationale
|
||||
document. To select this standard in GCC, use one of the options
|
||||
document.
|
||||
This standard, in both its forms, is commonly known as @dfn{C89}, or
|
||||
occasionally as @dfn{C90}, from the dates of ratification.
|
||||
To select this standard in GCC, use one of the options
|
||||
@option{-ansi}, @option{-std=c90} or @option{-std=iso9899:1990}; to obtain
|
||||
all the diagnostics required by the standard, you should also specify
|
||||
@option{-pedantic} (or @option{-pedantic-errors} if you want them to be
|
||||
|
@ -85,35 +84,40 @@ as @dfn{AMD1}; the amended standard is sometimes known as @dfn{C94} or
|
|||
@option{-pedantic} to receive all required diagnostics).
|
||||
|
||||
A new edition of the ISO C standard was published in 1999 as ISO/IEC
|
||||
9899:1999, and is commonly known as @dfn{C99}. GCC has substantially
|
||||
9899:1999, and is commonly known as @dfn{C99}. (While in
|
||||
development, drafts of this standard version were referred to as
|
||||
@dfn{C9X}.) GCC has substantially
|
||||
complete support for this standard version; see
|
||||
@uref{http://gcc.gnu.org/c99status.html} for details. To select this
|
||||
standard, use @option{-std=c99} or @option{-std=iso9899:1999}. (While in
|
||||
development, drafts of this standard version were referred to as
|
||||
@dfn{C9X}.)
|
||||
standard, use @option{-std=c99} or @option{-std=iso9899:1999}.
|
||||
|
||||
Errors in the 1999 ISO C standard were corrected in three Technical
|
||||
Corrigenda published in 2001, 2004 and 2007. GCC does not support the
|
||||
uncorrected version.
|
||||
|
||||
A fourth version of the C standard, known as @dfn{C11}, was published
|
||||
in 2011 as ISO/IEC 9899:2011. GCC has substantially complete support
|
||||
for this standard, enabled with @option{-std=c11} or
|
||||
@option{-std=iso9899:2011}. (While in development, drafts of this
|
||||
in 2011 as ISO/IEC 9899:2011. (While in development, drafts of this
|
||||
standard version were referred to as @dfn{C1X}.)
|
||||
GCC has substantially complete support
|
||||
for this standard, enabled with @option{-std=c11} or
|
||||
@option{-std=iso9899:2011}.
|
||||
|
||||
By default, GCC provides some extensions to the C language that on
|
||||
By default, GCC provides some extensions to the C language that, on
|
||||
rare occasions conflict with the C standard. @xref{C
|
||||
Extensions,,Extensions to the C Language Family}. Use of the
|
||||
Extensions,,Extensions to the C Language Family}.
|
||||
Some features that are part of the C99 standard
|
||||
are accepted as extensions in C90 mode, and some features that are part
|
||||
of the C11 standard are accepted as extensions in C90 and C99 modes.
|
||||
Use of the
|
||||
@option{-std} options listed above disables these extensions where
|
||||
they conflict with the C standard version selected. You may also
|
||||
select an extended version of the C language explicitly with
|
||||
@option{-std=gnu90} (for C90 with GNU extensions), @option{-std=gnu99}
|
||||
(for C99 with GNU extensions) or @option{-std=gnu11} (for C11 with GNU
|
||||
extensions). The default, if no C language dialect options are given,
|
||||
is @option{-std=gnu11}. Some features that are part of the C99 standard
|
||||
are accepted as extensions in C90 mode, and some features that are part
|
||||
of the C11 standard are accepted as extensions in C90 and C99 modes.
|
||||
extensions).
|
||||
|
||||
The default, if no C language dialect options are given,
|
||||
is @option{-std=gnu11}.
|
||||
|
||||
The ISO C standard defines (in clause 4) two classes of conforming
|
||||
implementation. A @dfn{conforming hosted implementation} supports the
|
||||
|
@ -124,28 +128,30 @@ library facilities: those in @code{<float.h>}, @code{<limits.h>},
|
|||
@code{<iso646.h>}; since C99, also those in @code{<stdbool.h>} and
|
||||
@code{<stdint.h>}; and since C11, also those in @code{<stdalign.h>}
|
||||
and @code{<stdnoreturn.h>}. In addition, complex types, added in C99, are not
|
||||
required for freestanding implementations. The standard also defines
|
||||
two environments for programs, a @dfn{freestanding environment},
|
||||
required of all implementations and which may not have library
|
||||
facilities beyond those required of freestanding implementations,
|
||||
where the handling of program startup and termination are
|
||||
implementation-defined, and a @dfn{hosted environment}, which is not
|
||||
required, in which all the library facilities are provided and startup
|
||||
is through a function @code{int main (void)} or @code{int main (int,
|
||||
char *[])}. An OS kernel would be a freestanding environment; a
|
||||
program using the facilities of an operating system would normally be
|
||||
in a hosted implementation.
|
||||
required for freestanding implementations.
|
||||
|
||||
The standard also defines two environments for programs, a
|
||||
@dfn{freestanding environment}, required of all implementations and
|
||||
which may not have library facilities beyond those required of
|
||||
freestanding implementations, where the handling of program startup
|
||||
and termination are implementation-defined; and a @dfn{hosted
|
||||
environment}, which is not required, in which all the library
|
||||
facilities are provided and startup is through a function @code{int
|
||||
main (void)} or @code{int main (int, char *[])}. An OS kernel is an example
|
||||
of a program running in a freestanding environment;
|
||||
a program using the facilities of an
|
||||
operating system is an example of a program running in a hosted environment.
|
||||
|
||||
@opindex ffreestanding
|
||||
GCC aims towards being usable as a conforming freestanding
|
||||
implementation, or as the compiler for a conforming hosted
|
||||
implementation. By default, it will act as the compiler for a hosted
|
||||
implementation. By default, it acts as the compiler for a hosted
|
||||
implementation, defining @code{__STDC_HOSTED__} as @code{1} and
|
||||
presuming that when the names of ISO C functions are used, they have
|
||||
the semantics defined in the standard. To make it act as a conforming
|
||||
freestanding implementation for a freestanding environment, use the
|
||||
option @option{-ffreestanding}; it will then define
|
||||
@code{__STDC_HOSTED__} to @code{0} and not make assumptions about the
|
||||
option @option{-ffreestanding}; it then defines
|
||||
@code{__STDC_HOSTED__} to @code{0} and does not make assumptions about the
|
||||
meanings of function names from the standard library, with exceptions
|
||||
noted below. To build an OS kernel, you may well still need to make
|
||||
your own arrangements for linking and startup.
|
||||
|
@ -153,8 +159,9 @@ your own arrangements for linking and startup.
|
|||
|
||||
GCC does not provide the library facilities required only of hosted
|
||||
implementations, nor yet all the facilities required by C99 of
|
||||
freestanding implementations on all platforms; to use the facilities of a hosted
|
||||
environment, you will need to find them elsewhere (for example, in the
|
||||
freestanding implementations on all platforms.
|
||||
To use the facilities of a hosted
|
||||
environment, you need to find them elsewhere (for example, in the
|
||||
GNU C library). @xref{Standard Libraries,,Standard Libraries}.
|
||||
|
||||
Most of the compiler support routines used by GCC are present in
|
||||
|
@ -162,7 +169,7 @@ Most of the compiler support routines used by GCC are present in
|
|||
freestanding environment provide @code{memcpy}, @code{memmove},
|
||||
@code{memset} and @code{memcmp}.
|
||||
Finally, if @code{__builtin_trap} is used, and the target does
|
||||
not implement the @code{trap} pattern, then GCC will emit a call
|
||||
not implement the @code{trap} pattern, then GCC emits a call
|
||||
to @code{abort}.
|
||||
|
||||
For references to Technical Corrigenda, Rationale documents and
|
||||
|
@ -225,7 +232,9 @@ select an extended version of the C++ language explicitly with
|
|||
@option{-std=gnu++98} (for C++98 with GNU extensions), or
|
||||
@option{-std=gnu++11} (for C++11 with GNU extensions), or
|
||||
@option{-std=gnu++14} (for C++14 with GNU extensions), or
|
||||
@option{-std=gnu++1z} (for C++1z with GNU extensions). The default, if
|
||||
@option{-std=gnu++1z} (for C++1z with GNU extensions).
|
||||
|
||||
The default, if
|
||||
no C++ language dialect options are given, is @option{-std=gnu++14}.
|
||||
|
||||
@section Objective-C and Objective-C++ Languages
|
||||
|
@ -251,34 +260,32 @@ works with the Apple/NeXT Objective-C runtime library.
|
|||
|
||||
There is no formal written standard for Objective-C or Objective-C++@.
|
||||
The authoritative manual on traditional Objective-C (1.0) is
|
||||
``Object-Oriented Programming and the Objective-C Language'',
|
||||
available at a number of web sites:
|
||||
``Object-Oriented Programming and the Objective-C Language'':
|
||||
@itemize
|
||||
@item
|
||||
@uref{http://www.gnustep.org/@/resources/@/documentation/@/ObjectivCBook.pdf}
|
||||
is the original NeXTstep document;
|
||||
@item
|
||||
@uref{http://objc.toodarkpark.net}
|
||||
is the same document in another format;
|
||||
@item
|
||||
@uref{http://developer.apple.com/@/mac/@/library/@/documentation/@/Cocoa/@/Conceptual/@/ObjectiveC/}
|
||||
has an updated version but make sure you search for ``Object Oriented Programming and the Objective-C Programming Language 1.0'',
|
||||
not documentation on the newer ``Objective-C 2.0'' language
|
||||
is the same document in another format.
|
||||
@end itemize
|
||||
|
||||
The Objective-C exception and synchronization syntax (that is, the
|
||||
keywords @@try, @@throw, @@catch, @@finally and @@synchronized) is
|
||||
keywords @code{@@try}, @code{@@throw}, @code{@@catch},
|
||||
@code{@@finally} and @code{@@synchronized}) is
|
||||
supported by GCC and is enabled with the option
|
||||
@option{-fobjc-exceptions}. The syntax is briefly documented in this
|
||||
manual and in the Objective-C 2.0 manuals from Apple.
|
||||
|
||||
The Objective-C 2.0 language extensions and features are automatically
|
||||
enabled; they include properties (via the @@property, @@synthesize and
|
||||
@@dynamic keywords), fast enumeration (not available in
|
||||
Objective-C++), attributes for methods (such as deprecated, noreturn,
|
||||
sentinel, format), the unused attribute for method arguments, the
|
||||
@@package keyword for instance variables and the @@optional and
|
||||
@@required keywords in protocols. You can disable all these
|
||||
enabled; they include properties (via the @code{@@property},
|
||||
@code{@@synthesize} and
|
||||
@code{@@dynamic keywords}), fast enumeration (not available in
|
||||
Objective-C++), attributes for methods (such as @code{deprecated},
|
||||
@code{noreturn}, @code{sentinel}, @code{format}),
|
||||
the @code{unused} attribute for method arguments, the
|
||||
@code{@@package} keyword for instance variables and the @code{@@optional} and
|
||||
@code{@@required} keywords in protocols. You can disable all these
|
||||
Objective-C 2.0 language extensions with the option
|
||||
@option{-fobjc-std=objc1}, which causes the compiler to recognize the
|
||||
same Objective-C language syntax recognized by GCC 4.0, and to produce
|
||||
|
@ -289,7 +296,7 @@ GCC has currently no support for non-fragile instance variables.
|
|||
The authoritative manual on Objective-C 2.0 is available from Apple:
|
||||
@itemize
|
||||
@item
|
||||
@uref{http://developer.apple.com/@/mac/@/library/@/documentation/@/Cocoa/@/Conceptual/@/ObjectiveC/}
|
||||
@uref{https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html}
|
||||
@end itemize
|
||||
|
||||
For more information concerning the history of Objective-C that is
|
||||
|
|
Loading…
Add table
Reference in a new issue