aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorZack Weinberg <zack@gcc.gnu.org>2001-08-18 21:02:44 +0000
committerZack Weinberg <zack@gcc.gnu.org>2001-08-18 21:02:44 +0000
commit9c34dbbf06f7ac8a2a0ac0d9c4fd8540f24cec83 (patch)
treefe743a1b6588147724f41a6c3991d22299f3b611 /gcc/doc
parentb649398a84df1df9c44e50b58c4fe766909af897 (diff)
downloadgcc-9c34dbbf06f7ac8a2a0ac0d9c4fd8540f24cec83.zip
gcc-9c34dbbf06f7ac8a2a0ac0d9c4fd8540f24cec83.tar.gz
gcc-9c34dbbf06f7ac8a2a0ac0d9c4fd8540f24cec83.tar.bz2
extend.texi, [...]: Eliminate overfull or underfull hboxes.
* doc/extend.texi, doc/gcc.texi, doc/install-old.texi, doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/include/gpl.texi: Eliminate overfull or underfull hboxes. From-SVN: r45012
Diffstat (limited to 'gcc/doc')
-rw-r--r--gcc/doc/extend.texi150
-rw-r--r--gcc/doc/gcc.texi40
-rw-r--r--gcc/doc/include/gpl.texi2
-rw-r--r--gcc/doc/install-old.texi31
-rw-r--r--gcc/doc/invoke.texi402
-rw-r--r--gcc/doc/md.texi41
-rw-r--r--gcc/doc/rtl.texi7
7 files changed, 333 insertions, 340 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 2951096..05a2e58 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -147,7 +147,8 @@ results (5.2.4.2.2).}
@item
@cite{The rounding behaviors characterized by non-standard values
-of @code{FLT_ROUNDS} (5.2.4.2.2).}
+of @code{FLT_ROUNDS} @gol
+(5.2.4.2.2).}
@item
@cite{The evaluation methods characterized by non-standard negative
@@ -788,9 +789,11 @@ but it's not wise to take the risk. If, however, the nested function
does not refer to anything that has gone out of scope, you should be
safe.
-GCC implements taking the address of a nested function using a
-technique called @dfn{trampolines}. A paper describing them is
-available as @uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}.
+GCC implements taking the address of a nested function using a technique
+called @dfn{trampolines}. A paper describing them is available as
+
+@noindent
+@uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}.
A nested function can jump to a label inherited from a containing
function, provided the label was explicitly declared in the containing
@@ -2546,10 +2549,17 @@ An attribute specifier list may appear immediately before a declarator
(other than the first) in a comma-separated list of declarators in a
declaration of more than one identifier using a single list of
specifiers and qualifiers. Such attribute specifiers apply
-only to the identifier before whose declarator they appear. For example, in
-@code{__attribute__((noreturn)) void d0 (void),
-__attribute__((format(printf, 1, 2))) d1 (const char *, ...), d2
-(void)}, the @code{noreturn} attribute applies to all the functions
+only to the identifier before whose declarator they appear. For
+example, in
+
+@smallexample
+__attribute__((noreturn)) void d0 (void),
+ __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
+ d2 (void)
+@end smallexample
+
+@noindent
+the @code{noreturn} attribute applies to all the functions
declared; the @code{format} attribute only applies to @code{d1}.
An attribute specifier list may appear immediately before the comma,
@@ -2557,16 +2567,22 @@ An attribute specifier list may appear immediately before the comma,
than a function definition. At present, such attribute specifiers apply
to the declared object or function, but in future they may attach to the
outermost adjacent declarator. In simple cases there is no difference,
-but, for example, in @code{void (****f)(void)
-__attribute__((noreturn));}, at present the @code{noreturn} attribute
-applies to @code{f}, which causes a warning since @code{f} is not a
-function, but in future it may apply to the function @code{****f}. The
-precise semantics of what attributes in such cases will apply to are not
-yet specified. Where an assembler name for an object or function is
-specified (@pxref{Asm Labels}), at present the attribute must follow the
-@code{asm} specification; in future, attributes before the @code{asm}
-specification may apply to the adjacent declarator, and those after it
-to the declared object or function.
+but, for example, in
+
+@smallexample
+void (****f)(void) __attribute__((noreturn));
+@end smallexample
+
+@noindent
+at present the @code{noreturn} attribute applies to @code{f}, which
+causes a warning since @code{f} is not a function, but in future it may
+apply to the function @code{****f}. The precise semantics of what
+attributes in such cases will apply to are not yet specified. Where an
+assembler name for an object or function is specified (@pxref{Asm
+Labels}), at present the attribute must follow the @code{asm}
+specification; in future, attributes before the @code{asm} specification
+may apply to the adjacent declarator, and those after it to the declared
+object or function.
An attribute specifier list may, in future, be permitted to appear after
the declarator in a function definition (before any old-style parameter
@@ -2610,12 +2626,24 @@ declaration @code{T D} specifies the type
@var{type-qualifier-and-attribute-specifier-list} @var{Type}'' for
@var{ident}.
-For example, @code{void (__attribute__((noreturn)) ****f)();} specifies
-the type ``pointer to pointer to pointer to pointer to non-returning
-function returning @code{void}''. As another example, @code{char
-*__attribute__((aligned(8))) *f;} specifies the type ``pointer to
-8-byte-aligned pointer to @code{char}''. Note again that this describes
-intended future semantics, not current implementation.
+For example,
+
+@smallexample
+void (__attribute__((noreturn)) ****f) (void);
+@end smallexample
+
+@noindent
+specifies the type ``pointer to pointer to pointer to pointer to
+non-returning function returning @code{void}''. As another example,
+
+@smallexample
+char *__attribute__((aligned(8))) *f;
+@end smallexample
+
+@noindent
+specifies the type ``pointer to 8-byte-aligned pointer to @code{char}''.
+Note again that this describes intended future semantics, not current
+implementation.
@node Function Prototypes
@section Prototypes and Old-Style Function Definitions
@@ -2672,6 +2700,7 @@ isroot (uid_t x)
@}
@end example
+@noindent
GNU C++ does not support old-style function definitions, so this
extension is irrelevant.
@@ -4166,11 +4195,11 @@ recommend general use of these functions.
The remaining functions are provided for optimization purposes.
@opindex fno-builtin
-GCC includes built-in versions of many of the functions in the
-standard C library. The versions prefixed with @code{__builtin_} will
-always be treated as having the same meaning as the C library function
-even if you specify the @option{-fno-builtin} (@pxref{C Dialect Options})
-option. Many of these functions are only optimized in certain cases; if
+GCC includes built-in versions of many of the functions in the standard
+C library. The versions prefixed with @code{__builtin_} will always be
+treated as having the same meaning as the C library function even if you
+specify the @option{-fno-builtin} option. (@pxref{C Dialect Options})
+Many of these functions are only optimized in certain cases; if they are
not optimized in a particular case, a call to the library function will
be emitted.
@@ -4184,38 +4213,38 @@ strict C89 mode (@option{-ansi} or @option{-std=c89}).
Outside strict ISO C mode, the functions @code{alloca}, @code{bcmp},
@code{bzero}, @code{index}, @code{rindex} and @code{ffs} may be handled
-as built-in functions. Corresponding versions @code{__builtin_alloca},
-@code{__builtin_bcmp}, @code{__builtin_bzero}, @code{__builtin_index},
-@code{__builtin_rindex} and @code{__builtin_ffs} are also recognized in
-strict ISO C mode.
+as built-in functions. All these functions have corresponding versions
+prefixed with @code{__builtin_}, which may be used even in strict C89
+mode.
The ISO C99 functions @code{conj}, @code{conjf}, @code{conjl},
@code{creal}, @code{crealf}, @code{creall}, @code{cimag}, @code{cimagf},
-@code{cimagl}, @code{llabs} and @code{imaxabs} are handled as built-in functions
-except in strict ISO C89 mode. There are also built-in versions of the ISO C99
-functions @code{cosf}, @code{cosl}, @code{fabsf}, @code{fabsl},
-@code{sinf}, @code{sinl}, @code{sqrtf}, and @code{sqrtl}, that are
-recognized in any mode since ISO C89 reserves these names for the
-purpose to which ISO C99 puts them. All these functions have
-corresponding versions prefixed with @code{__builtin_}.
-
-The following ISO C89 functions are recognized as built-in functions unless
-@option{-fno-builtin} is specified: @code{abs}, @code{cos}, @code{fabs},
+@code{cimagl}, @code{llabs} and @code{imaxabs} are handled as built-in
+functions except in strict ISO C89 mode. There are also built-in
+versions of the ISO C99 functions @code{cosf}, @code{cosl},
+@code{fabsf}, @code{fabsl}, @code{sinf}, @code{sinl}, @code{sqrtf}, and
+@code{sqrtl}, that are recognized in any mode since ISO C89 reserves
+these names for the purpose to which ISO C99 puts them. All these
+functions have corresponding versions prefixed with @code{__builtin_}.
+
+The ISO C89 functions @code{abs}, @code{cos}, @code{fabs},
@code{fprintf}, @code{fputs}, @code{labs}, @code{memcmp}, @code{memcpy},
@code{memset}, @code{printf}, @code{sin}, @code{sqrt}, @code{strcat},
@code{strchr}, @code{strcmp}, @code{strcpy}, @code{strcspn},
@code{strlen}, @code{strncat}, @code{strncmp}, @code{strncpy},
-@code{strpbrk}, @code{strrchr}, @code{strspn}, and @code{strstr}. All
-of these functions have corresponding versions prefixed with
-@code{__builtin_}, except that the version for @code{sqrt} is called
-@code{__builtin_fsqrt}.
-
-GCC provides built-in versions of the ISO C99 floating point
-comparison macros (that avoid raising exceptions for unordered
-operands): @code{__builtin_isgreater}, @code{__builtin_isgreaterequal},
-@code{__builtin_isless}, @code{__builtin_islessequal},
-@code{__builtin_islessgreater}, and @code{__builtin_isunordered}.
-
+@code{strpbrk}, @code{strrchr}, @code{strspn}, and @code{strstr} are all
+recognized as built-in functions unless @option{-fno-builtin} is
+specified. All of these functions have corresponding versions prefixed
+with @code{__builtin_}, except that the version for @code{sqrt} is
+called @code{__builtin_fsqrt}.
+
+GCC provides built-in versions of the ISO C99 floating point comparison
+macros that avoid raising exceptions for unordered operands. They have
+the same names as the standard macros ( @code{isgreater},
+@code{isgreaterequal}, @code{isless}, @code{islessequal},
+@code{islessgreater}, and @code{isunordered}) , with @code{__builtin_}
+prefixed. We intend for a library implementor to be able to simply
+@code{#define} each standard macro to its built-in equivalent.
@deftypefn {Built-in Function} int __builtin_constant_p (@var{exp})
You can use the built-in function @code{__builtin_constant_p} to
@@ -4943,9 +4972,10 @@ using code written for the Cfront model, the file containing a class
template and the file containing its member templates should be
implemented in the same translation unit.
+@item
@opindex falt-external-templates
-A slight variation on this approach is to instead use the flag
-@option{-falt-external-templates}; this flag causes template
+A slight variation on this approach is to use the flag
+@option{-falt-external-templates} instead. This flag causes template
instances to be emitted in the translation unit that implements the
header where they are first instantiated, rather than the one which
implements the file where the templates are defined. This header must
@@ -5047,11 +5077,11 @@ from C++. Normally, GNU C++ will automatically detect when you are
writing C++ code that uses Java exceptions, and handle them
appropriately. However, if C++ code only needs to execute destructors
when Java exceptions are thrown through it, GCC will guess incorrectly.
-Sample problematic code:
+Sample problematic code is:
@example
struct S @{ ~S(); @};
- extern void bar(); // is implemented in Java and may throw exceptions
+ extern void bar(); // is written in Java, and may throw exceptions
void foo()
@{
S s;
@@ -5071,8 +5101,8 @@ exceptions, or run destructors when exceptions are thrown through them.
You cannot mix Java and C++ exceptions in the same translation unit. It
is believed to be safe to throw a C++ exception from one file through
-another file compiled for the for the Java exception model, or vice
-versa, but there may be bugs in this area.
+another file compiled for the Java exception model, or vice versa, but
+there may be bugs in this area.
@node Deprecated Features
@section Deprecated Features
diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi
index 4435742..862d2fe 100644
--- a/gcc/doc/gcc.texi
+++ b/gcc/doc/gcc.texi
@@ -2529,11 +2529,18 @@ our current development sources are available by CVS (see
@uref{http://gcc.gnu.org/cvs.html}). Source and binary snapshots are
also available for FTP; see @uref{http://gcc.gnu.org/snapshots.html}.
-If you would like to work on improvements to GCC, please read
-@uref{http://gcc.gnu.org/contribute.html} and
-@uref{http://gcc.gnu.org/contributewhy.html} for information on how to
-make useful contributions and avoid duplication of effort. Suggested
-projects are listed at @uref{http://gcc.gnu.org/projects/}.
+If you would like to work on improvements to GCC, please read the
+advice at these URLs:
+
+@smallexample
+@uref{http://gcc.gnu.org/contribute.html}
+@uref{http://gcc.gnu.org/contributewhy.html}
+@end smallexample
+
+@noindent
+for information on how to make useful contributions and avoid
+duplication of effort. Suggested projects are listed at
+@uref{http://gcc.gnu.org/projects/}.
@node VMS
@chapter Using GCC on VMS
@@ -3229,23 +3236,23 @@ tree node that represents an expression has a data type attached.
Variables are represented as declaration nodes.
The language-independent source files for parsing are
-@file{stor-layout.c}, @file{fold-const.c}, and @file{tree.c}.
+@file{tree.c}, @file{fold-const.c}, and @file{stor-layout.c}.
There are also header files @file{tree.h} and @file{tree.def}
which define the format of the tree representation.
-C Preprocessing, for language front ends, that want or require it, is
+C preprocessing, for language front ends, that want or require it, is
performed by cpplib, which is covered in seperate documentation. In
-particular, the internals are covered in @xref{Top, ,Cpplib internals, cppinternals, Cpplib Internals}.
-
+particular, the internals are covered in @xref{Top, ,Cpplib internals,
+cppinternals, Cpplib Internals}.
@c Avoiding overfull is tricky here.
The source files to parse C are
-@file{c-aux-info.c},
@file{c-convert.c},
@file{c-decl.c},
@file{c-errors.c},
@file{c-lang.c},
@file{c-parse.in},
+@file{c-aux-info.c},
and
@file{c-typeck.c},
along with a header file
@@ -3266,19 +3273,18 @@ They are @file{parse.y},
@file{cp-tree.h}, and @file{decl.h}.
The special source files for parsing Objective-C are in @file{objc/}.
-They are @file{objc-parse.y}, @file{objc-act.c}, @file{objc-tree.def}, and
-@file{objc-act.h}. Certain C-specific files are used for this as
-well.
+They are @file{objc-act.c}, @file{objc-tree.def}, and @file{objc-act.h}.
+Certain C-specific files are used for this as well.
The files
@file{c-common.c},
@file{c-common.def},
@file{c-dump.c},
@file{c-format.c},
-@file{c-lex.c},
@file{c-pragma.c},
-and
@file{c-semantics.c},
+and
+@file{c-lex.c},
along with header files
@file{c-common.h},
@file{c-dump.h},
@@ -4193,7 +4199,9 @@ For example, in the PowerPC embedded ABI support, it is not desirable
to build libraries compiled with the @option{-mcall-aix} option
and either of the @option{-fleading-underscore} or @option{-mlittle} options
at the same time. Therefore @code{MULTILIB_EXCEPTIONS} is set to
-@code{*mcall-aix/*fleading-underscore* *mlittle/*mcall-aix*}.
+@smallexample
+*mcall-aix/*fleading-underscore* *mlittle/*mcall-aix*
+@end smallexample
@findex MULTILIB_EXTRA_OPTS
@item MULTILIB_EXTRA_OPTS
diff --git a/gcc/doc/include/gpl.texi b/gcc/doc/include/gpl.texi
index 1c9d85a..32e7406 100644
--- a/gcc/doc/include/gpl.texi
+++ b/gcc/doc/include/gpl.texi
@@ -61,7 +61,7 @@ patent must be licensed for everyone's free use or not licensed at all.
modification follow.
@iftex
-@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@unnumberedsec TERMS AND CONDITIONS FOR COPYING,@*DISTRIBUTION AND MODIFICATION
@end iftex
@ifnottex
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
diff --git a/gcc/doc/install-old.texi b/gcc/doc/install-old.texi
index ea186cfb..94c0097 100644
--- a/gcc/doc/install-old.texi
+++ b/gcc/doc/install-old.texi
@@ -430,11 +430,11 @@ machine, the cross-compiler can use them also.
Otherwise, you're on your own in finding header files to use when
cross-compiling.
-When you have found suitable header files, put them in the directory
-@file{/usr/local/@var{target}/include}, before building the cross
-compiler. Then installation will run fixincludes properly and install
-the corrected versions of the header files where the compiler will use
-them.
+When you have found suitable header files, you should put them in the
+directory @file{/usr/local/@var{target}/include}, before building the
+cross compiler. Then installation will run fixincludes properly and
+install the corrected versions of the header files where the compiler
+will use them.
Provide the header files before you build the cross-compiler, because
the build stage actually runs the cross-compiler to produce parts of
@@ -613,9 +613,9 @@ $ install replace sys$common:[syslib]dcltables
@end smallexample
@item
-Type @samp{@@make-gcc} to recompile everything (alternatively, submit
-the file @file{make-gcc.com} to a batch queue). If you wish to build
-the GNU C++ compiler as well as the GNU CC compiler, you must first edit
+Type @samp{@@make-gcc} to recompile everything, or submit the file
+@file{make-gcc.com} to a batch queue. If you wish to build the GNU C++
+compiler as well as the GNU CC compiler, you must first edit
@file{make-gcc.com} and follow the instructions that appear in the
comments.
@@ -680,12 +680,6 @@ the read-only bit set, and the linker will generate warning messages
about mismatched psect attributes for these variables. These warning
messages are merely a nuisance, and can safely be ignored.
-If you are compiling with a version of GNU CC older than 1.33, specify
-@samp{/DEFINE=("inline=")} as an option in all the compilations. This
-requires editing all the @code{gcc} commands in @file{make-cc1.com}.
-(The older versions had problems supporting @code{inline}.) Once you
-have a working 1.33 or newer GNU CC, you can change this file back.
-
@item
If you want to build GNU CC with the VAX C compiler, you will need to
make minor changes in @file{make-cccp.com} and @file{make-cc1.com}
@@ -829,11 +823,12 @@ done).
is where @code{g++} looks first for header files. The C++ library
installs only target independent header files in that directory.
-@code{LOCAL_INCLUDE_DIR} is used only for a native compiler. It is
-normally @file{/usr/local/include}. GNU CC searches this directory so
-that users can install header files in @file{/usr/local/include}.
+@code{LOCAL_INCLUDE_DIR} is used only by native compilers. GNU CC
+doesn't install anything there. It is normally
+@file{/usr/local/include}. This is where local additions to a packaged
+system should place header files.
-@code{CROSS_INCLUDE_DIR} is used only for a cross compiler. GNU CC
+@code{CROSS_INCLUDE_DIR} is used only by cross compilers. GNU CC
doesn't install anything there.
@code{TOOL_INCLUDE_DIR} is used for both native and cross compilers. It
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index d0969d3..67c25c0 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -435,7 +435,8 @@ in the following sections.
-mstrict-align -mno-strict-align -mrelocatable @gol
-mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol
-mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol
--mcall-aix -mcall-sysv -mcall-netbsd -mprototype -mno-prototype @gol
+-mcall-aix -mcall-sysv -mcall-netbsd @gol
+-mprototype -mno-prototype @gol
-msim -mmvme -mads -myellowknife -memb -msdata @gol
-msdata=@var{opt} -mvxworks -G @var{num}}
@@ -1107,50 +1108,12 @@ rely on ISO C features. Some vendors are starting to ship systems with
ISO C header files and you cannot use @option{-traditional} on such
systems to compile files that include any system headers.
-The @option{-traditional} option also enables @option{-traditional-cpp},
-which is described next.
+The @option{-traditional} option also enables @option{-traditional-cpp}.
@item -traditional-cpp
@opindex traditional-cpp
Attempt to support some aspects of traditional C preprocessors.
-Specifically:
-
-@itemize @bullet
-@item
-Comments convert to nothing at all, rather than to a space. This allows
-traditional token concatenation.
-
-@item
-In a preprocessing directive, the @samp{#} symbol must appear as the first
-character of a line.
-
-@item
-Macro arguments are recognized within string constants in a macro
-definition (and their values are stringified, though without additional
-quote marks, when they appear in such a context). The preprocessor
-always considers a string constant to end at a newline.
-
-@item
-@cindex detecting @w{@option{-traditional}}
-The predefined macro @code{__STDC__} is not defined when you use
-@option{-traditional}, but @code{__GNUC__} is (since the GNU extensions
-which @code{__GNUC__} indicates are not affected by
-@option{-traditional}). If you need to write header files that work
-differently depending on whether @option{-traditional} is in use, by
-testing both of these predefined macros you can distinguish four
-situations: GNU C, traditional GNU C, other ISO C compilers, and other
-old C compilers. The predefined macro @code{__STDC_VERSION__} is also
-not defined when you use @option{-traditional}. @xref{Standard
-Predefined,,Standard Predefined Macros,cpp.info,The C Preprocessor},
-for more discussion of these and other predefined macros.
-
-@item
-@cindex string constants vs newline
-@cindex newline vs string constants
-The preprocessor considers a string constant to end at a newline (unless
-the newline is escaped with @samp{\}). (Without @w{@option{-traditional}},
-string constants can contain the newline character as typed.)
-@end itemize
+See the GNU CPP manual for details.
@item -fcond-mismatch
@opindex fcond-mismatch
@@ -1319,8 +1282,9 @@ will still optimize based on the exception specifications.
@item -fexternal-templates
@opindex fexternal-templates
-Cause template instantiations to obey @samp{#pragma interface} and
-@samp{implementation}; template instances are emitted or not according
+
+Cause @samp{#pragma interface} and @samp{implementation} to apply to
+template instantiation; template instances are emitted or not according
to the location of the template definition. @xref{Template
Instantiation}, for more information.
@@ -1328,8 +1292,8 @@ This option is deprecated.
@item -falt-external-templates
@opindex falt-external-templates
-Similar to @option{-fexternal-templates}, but template instances are emitted or
-not according to the place where they are first instantiated.
+Similar to @option{-fexternal-templates}, but template instances are
+emitted or not according to the place where they are first instantiated.
@xref{Template Instantiation}, for more information.
This option is deprecated.
@@ -1406,9 +1370,9 @@ option are superseded by @option{-pedantic}, which works as it does for GNU C@.
@item -frepo
@opindex frepo
-Enable automatic template instantiation. This option also implies
-@option{-fno-implicit-templates}. @xref{Template Instantiation}, for more
-information.
+Enable automatic template instantiation at link time. This option also
+implies @option{-fno-implicit-templates}. @xref{Template
+Instantiation}, for more information.
@item -fno-rtti
@opindex fno-rtti
@@ -1983,9 +1947,10 @@ this sort of problem in programs.
The present implementation of this option only works for C programs. A
future implementation may also work for C++ programs.
-There is some controversy over the precise meaning of the sequence point
-rules in subtle cases. Links to papers with alternative formal definitions
-and other related discussions may be found on our readings page
+The C standard is worded confusingly, therefore there is some debate
+over the precise meaning of the sequence point rules in subtle cases.
+Links to discussions of the problem, including proposed formal
+definitions, may be found on our readings page, at
@w{@uref{http://gcc.gnu.org/readings.html}}.
@item -Wreturn-type
@@ -2889,9 +2854,8 @@ Dump after global register allocation, to @file{@var{file}.21.greg}.
@opindex dh
Dump after finalization of EH handling code, to @file{@var{file}.02.eh}.
@item o
-@item o
@opindex do
-Dump after post-reload CSE and other optimizations, to @file{@var{file}.22.postreload}.
+Dump after post-reload optimizations, to @file{@var{file}.22.postreload}.
@item G
@opindex dG
Dump after GCSE, to @file{@var{file}.10.gcse}.
@@ -2925,16 +2889,14 @@ Dump after the register move pass, to @file{@var{file}.18.regmove}.
Dump after RTL generation, to @file{@var{file}.00.rtl}.
@item R
@opindex dR
-Dump after the second instruction scheduling pass, to
-@file{@var{file}.27.sched2}.
+Dump after the second scheduling pass, to @file{@var{file}.27.sched2}.
@item s
@opindex ds
Dump after CSE (including the jump optimization that sometimes follows
CSE), to @file{@var{file}.08.cse}.
@item S
@opindex dS
-Dump after the first instruction scheduling pass, to
-@file{@var{file}.19.sched}.
+Dump after the first scheduling pass, to @file{@var{file}.19.sched}.
@item t
@opindex dt
Dump after the second CSE pass (including the jump optimization that
@@ -2944,7 +2906,7 @@ sometimes follows CSE), to @file{@var{file}.12.cse2}.
Dump after the second flow pass, to @file{@var{file}.23.flow2}.
@item X
@opindex dX
-Dump after SSA aggressive dead code elimination, to @file{@var{file}.06.ssadce}.
+Dump after SSA dead code elimination, to @file{@var{file}.06.ssadce}.
@item z
@opindex dz
Dump after the peephole pass, to @file{@var{file}.24.peephole2}.
@@ -3028,8 +2990,7 @@ Dump before any tree based optimization, to @file{@var{file}.original}.
@item optimized
Dump after all tree based optimization, to @file{@var{file}.optimized}.
@item inlined
-Dump after inlining within the body of the function, to
-@file{@var{file}.inlined}.
+Dump after function inlining, to @file{@var{file}.inlined}.
@end table
@item -fpretend-float
@@ -3152,19 +3113,9 @@ between statements, you can then assign a new value to any variable or
change the program counter to any other statement in the function and
get exactly the results you would expect from the source code.
-Without @option{-O}, the compiler only allocates variables declared
-@code{register} in registers. The resulting compiled code is a little
-worse than produced by PCC without @option{-O}.
-
With @option{-O}, the compiler tries to reduce code size and execution
-time.
-
-When you specify @option{-O}, the compiler turns on @option{-fthread-jumps}
-and @option{-fdefer-pop} on all machines. The compiler turns on
-@option{-fdelayed-branch} on machines that have delay slots, and
-@option{-fomit-frame-pointer} on machines that can support debugging even
-without a frame pointer. On some machines the compiler also turns
-on other flags.
+time, without performing any optimizations that take a great deal of
+compilation time.
@item -O2
@opindex O2
@@ -3349,8 +3300,8 @@ performed when this option is not used.
@item -ffast-math
@opindex ffast-math
-Sets @option{-fno-math-errno}, @option{-funsafe-math-optimizations},
-and @option{-fno-trapping-math}.
+Sets @option{-fno-math-errno}, @option{-funsafe-math-optimizations}, and @*
+@option{-fno-trapping-math}.
This option causes the preprocessor macro @code{__FAST_MATH__} to be defined.
@@ -3371,8 +3322,7 @@ it can result in incorrect output for programs which depend on
an exact implementation of IEEE or ISO rules/specifications for
math functions.
-The default is @option{-fmath-errno}. The @option{-ffast-math} option
-sets @option{-fno-math-errno}.
+The default is @option{-fmath-errno}.
@item -funsafe-math-optimizations
@opindex funsafe-math-optimizations
@@ -3387,8 +3337,7 @@ it can result in incorrect output for programs which depend on
an exact implementation of IEEE or ISO rules/specifications for
math functions.
-The default is @option{-fno-unsafe-math-optimizations}. The
-@option{-ffast-math} option sets @option{-funsafe-math-optimizations}.
+The default is @option{-fno-unsafe-math-optimizations}.
@item -fno-trapping-math
@opindex fno-trapping-math
@@ -3401,12 +3350,9 @@ it can result in incorrect output for programs which depend on
an exact implementation of IEEE or ISO rules/specifications for
math functions.
-The default is @option{-ftrapping-math}. The @option{-ffast-math}
-option sets @option{-fno-trapping-math}.
+The default is @option{-ftrapping-math}.
@end table
-@c following causes underfulls.. they don't look great, but we deal.
-@c --mew 26jan93
The following options control specific optimizations. The @option{-O2}
option turns on all of these optimizations except @option{-funroll-loops}
and @option{-funroll-all-loops}. On most machines, the @option{-O} option
@@ -3416,6 +3362,9 @@ but specific machines may handle it differently.
You can use the following flags in the rare cases when ``fine-tuning''
of optimizations to be performed is desired.
+Not all of the optimizations performed by GCC have @option{-f} options
+to control them.
+
@table @gcctabopt
@item -fstrength-reduce
@opindex fstrength-reduce
@@ -3481,11 +3430,15 @@ can be changed to a load before the loop and a store after the loop.
@item -fdelete-null-pointer-checks
@opindex fdelete-null-pointer-checks
-Use global dataflow analysis to identify and eliminate useless null
-pointer checks. Programs which rely on NULL pointer dereferences @emph{not}
-halting the program may not work properly with this option. Use
-@option{-fno-delete-null-pointer-checks} to disable this optimizing for programs
-which depend on that behavior.
+Use global dataflow analysis to identify and eliminate useless checks
+for null pointers. The compiler assumes that dereferencing a null
+pointer would have halted the program. If a pointer is checked after
+it has already been dereferenced, it cannot be null.
+
+In some environments, this assumption is not true, and programs can
+safely dereference null pointers. Use
+@option{-fno-delete-null-pointer-checks} to disable this optimization
+for programs which depend on that behavior.
@item -fexpensive-optimizations
@opindex fexpensive-optimizations
@@ -3562,16 +3515,18 @@ default.
@item -funroll-loops
@opindex funroll-loops
-Perform the optimization of loop unrolling. This is only done for loops
-whose number of iterations can be determined at compile time or run time.
-@option{-funroll-loops} implies both @option{-fstrength-reduce} and
-@option{-frerun-cse-after-loop}.
+Unroll loops whose number of iterations can be determined at compile
+time or upon entry to the loop. @option{-funroll-loops} implies both
+@option{-fstrength-reduce} and @option{-frerun-cse-after-loop}. This
+option makes code larger, and may or may not make it run faster.
@item -funroll-all-loops
@opindex funroll-all-loops
-Perform the optimization of loop unrolling. This is done for all loops
-and usually makes programs run more slowly. @option{-funroll-all-loops}
-implies @option{-fstrength-reduce} as well as @option{-frerun-cse-after-loop}.
+Unroll all loops, even if their number of iterations is uncertain when
+the loop is entered. This usually makes programs run more slowly.
+@option{-funroll-all-loops} implies the same options as
+@option{-funroll-loops},
+
@item -fmove-all-movables
@opindex fmove-all-movables
@@ -3629,13 +3584,19 @@ exactly determine which path is taken more often.
@item -fno-guess-branch-probability
@opindex fno-guess-branch-probability
-Sometimes gcc will opt to guess branch probabilities when none are
-available from either profile directed feedback (@option{-fprofile-arcs})
-or @samp{__builtin_expect}. In a hard real-time system, people don't
-want different runs of the compiler to produce code that has different
-behavior; minimizing non-determinism is of paramount import. This
-switch allows users to reduce non-determinism, possibly at the expense
-of inferior optimization.
+Do not guess branch probabilities using a randomized model.
+
+Sometimes gcc will opt to use a randomized model to guess branch
+probabilities, when none are available from either profiling feedback
+(@option{-fprofile-arcs}) or @samp{__builtin_expect}. This means that
+different runs of the compiler on the same program may produce different
+object code.
+
+In a hard real-time system, people don't want different runs of the
+compiler to produce code that has different behavior; minimizing
+non-determinism is of paramount import. This switch allows users to
+reduce non-determinism, possibly at the expense of inferior
+optimization.
@item -fstrict-aliasing
@opindex fstrict-aliasing
@@ -5497,11 +5458,11 @@ Set the instruction scheduling parameters for machine type
@var{cpu_type}, but do not set the instruction set or register set that the
option @option{-mcpu=@var{cpu_type}} would.
-The same values for @option{-mcpu=@var{cpu_type}} are used for
-@option{-mtune=@var{cpu_type}}, though the only useful values are those that
-select a particular cpu implementation: @samp{cypress}, @samp{supersparc},
-@samp{hypersparc}, @samp{f930}, @samp{f934}, @samp{sparclite86x},
-@samp{tsc701}, @samp{ultrasparc}.
+The same values for @option{-mcpu=@var{cpu_type}} can be used for
+@option{-mtune=@var{cpu_type}}, but the only useful values are those
+that select a particular cpu implementation. Those are @samp{cypress},
+@samp{supersparc}, @samp{hypersparc}, @samp{f930}, @samp{f934},
+@samp{sparclite86x}, @samp{tsc701}, and @samp{ultrasparc}.
@end table
@@ -6315,15 +6276,16 @@ pointer is not eliminated when debugging information is selected by the
-g switch.
@item -moptimize-arg-area
-@itemx -mno-optimize-arg-area
@opindex moptimize-arg-area
-@opindex mno-optimize-arg-area
@cindex arguments in frame (88k)
-Control how function arguments are stored in stack frames.
-@option{-moptimize-arg-area} saves space by optimizing them, but this
-conflicts with the 88open specifications. The opposite alternative,
-@option{-mno-optimize-arg-area}, agrees with 88open standards. By default
-GCC does not optimize the argument area.
+Save space by reorganizing the stack frame. This option generates code
+that does not agree with the 88open specifications, but uses less
+memory.
+
+@itemx -mno-optimize-arg-area
+@opindex mno-optimize-arg-area
+Do not reorganize the stack frame to save space. This is the default.
+The generated conforms to the specification, but uses more memory.
@item -mshort-data-@var{num}
@opindex mshort-data
@@ -6409,14 +6371,14 @@ division by zero under certain conditions. By default, when
compiling code that might be run on such a processor, GCC
generates code that explicitly checks for zero-valued divisors
and traps with exception number 503 when one is detected. Use of
-mno-check-zero-division suppresses such checking for code
+@option{-mno-check-zero-division} suppresses such checking for code
generated to run on an MC88100 processor.
-GCC assumes that the MC88110 processor correctly detects all
-instances of integer division by zero. When @option{-m88110} is
-specified, both @option{-mcheck-zero-division} and
-@option{-mno-check-zero-division} are ignored, and no explicit checks for
-zero-valued divisors are generated.
+GCC assumes that the MC88110 processor correctly detects all instances
+of integer division by zero. When @option{-m88110} is specified, no
+explicit checks for zero-valued divisors are generated, and both
+@option{-mcheck-zero-division} and @option{-mno-check-zero-division} are
+ignored.
@item -muse-div-instruction
@opindex muse-div-instruction
@@ -6466,6 +6428,10 @@ language, and are often the source of portability problems. By default,
GCC issues no such warning.
@end table
+@c break page here to avoid unsightly interparagraph stretch.
+@c -zw, 2001-8-17
+@page
+
@node RS/6000 and PowerPC Options
@subsection IBM RS/6000 and PowerPC Options
@cindex RS/6000 and PowerPC Options
@@ -6546,13 +6512,12 @@ allow use of the MQ register; specify this for the Motorola MPC601.
@itemx -mold-mnemonics
@opindex mnew-mnemonics
@opindex mold-mnemonics
-Select which mnemonics to use in the generated assembler code.
-@option{-mnew-mnemonics} requests output that uses the assembler mnemonics
-defined for the PowerPC architecture, while @option{-mold-mnemonics}
-requests the assembler mnemonics defined for the POWER architecture.
-Instructions defined in only one architecture have only one mnemonic;
-GCC uses that mnemonic irrespective of which of these options is
-specified.
+Select which mnemonics to use in the generated assembler code. With
+@option{-mnew-mnemonics}, GCC uses the assembler mnemonics defined for
+the PowerPC architecture. With @option{-mold-mnemonics} it uses the
+assembler mnemonics defined for the POWER architecture. Instructions
+defined in only one architecture have only one mnemonic; GCC uses that
+mnemonic irrespective of which of these options is specified.
GCC defaults to the mnemonics appropriate for the architecture in
use. Specifying @option{-mcpu=@var{cpu_type}} sometimes overrides the
@@ -6569,54 +6534,69 @@ Supported values for @var{cpu_type} are @samp{rios}, @samp{rios1},
@samp{603}, @samp{603e}, @samp{604}, @samp{604e}, @samp{620},
@samp{630}, @samp{740}, @samp{750}, @samp{power}, @samp{power2},
@samp{powerpc}, @samp{403}, @samp{505}, @samp{801}, @samp{821},
-@samp{823}, and @samp{860} and @samp{common}. @option{-mcpu=power},
-@option{-mcpu=power2}, @option{-mcpu=powerpc}, and @option{-mcpu=powerpc64}
-specify generic POWER, POWER2, pure 32-bit PowerPC (i.e., not MPC601),
-and 64-bit PowerPC architecture machine types, with an appropriate,
-generic processor model assumed for scheduling purposes.
-
-Specifying any of the following options:
-@option{-mcpu=rios1}, @option{-mcpu=rios2}, @option{-mcpu=rsc},
-@option{-mcpu=power}, or @option{-mcpu=power2}
-enables the @option{-mpower} option and disables the @option{-mpowerpc} option;
-@option{-mcpu=601} enables both the @option{-mpower} and @option{-mpowerpc} options.
-All of @option{-mcpu=rs64a}, @option{-mcpu=602}, @option{-mcpu=603},
-@option{-mcpu=603e}, @option{-mcpu=604}, @option{-mcpu=620}, @option{-mcpu=630},
-@option{-mcpu=740}, and @option{-mcpu=750}
-enable the @option{-mpowerpc} option and disable the @option{-mpower} option.
-Exactly similarly, all of @option{-mcpu=403},
-@option{-mcpu=505}, @option{-mcpu=821}, @option{-mcpu=860} and @option{-mcpu=powerpc}
-enable the @option{-mpowerpc} option and disable the @option{-mpower} option.
-@option{-mcpu=common} disables both the
-@option{-mpower} and @option{-mpowerpc} options.
-
-AIX versions 4 or greater selects @option{-mcpu=common} by default, so
-that code will operate on all members of the RS/6000 POWER and PowerPC
-families. In that case, GCC will use only the instructions in the
-common subset of both architectures plus some special AIX common-mode
-calls, and will not use the MQ register. GCC assumes a generic
+@samp{823}, and @samp{860} and @samp{common}.
+
+@option{-mcpu=common} selects a completely generic processor. Code
+generated under this option will run on any POWER or PowerPC processor.
+GCC will use only the instructions in the common subset of both
+architectures, and will not use the MQ register. GCC assumes a generic
processor model for scheduling purposes.
-Specifying any of the options @option{-mcpu=rios1}, @option{-mcpu=rios2},
-@option{-mcpu=rsc}, @option{-mcpu=power}, or @option{-mcpu=power2} also
-disables the @samp{new-mnemonics} option. Specifying @option{-mcpu=601},
-@option{-mcpu=602}, @option{-mcpu=603}, @option{-mcpu=603e}, @option{-mcpu=604},
-@option{-mcpu=620}, @option{-mcpu=630}, @option{-mcpu=403}, @option{-mcpu=505},
-@option{-mcpu=821}, @option{-mcpu=860} or @option{-mcpu=powerpc} also enables
-the @samp{new-mnemonics} option.
+@option{-mcpu=power}, @option{-mcpu=power2}, @option{-mcpu=powerpc}, and
+@option{-mcpu=powerpc64} specify generic POWER, POWER2, pure 32-bit
+PowerPC (i.e., not MPC601), and 64-bit PowerPC architecture machine
+types, with an appropriate, generic processor model assumed for
+scheduling purposes.
-Specifying @option{-mcpu=403}, @option{-mcpu=821}, or @option{-mcpu=860} also
-enables the @option{-msoft-float} option.
+The other options specify a specific processor. Code generated under
+those options will run best on that processor, and may not run at all on
+others.
+
+The @option{-mcpu} options automatically enable or disable other
+@option{-m} options as follows:
+
+@table @samp
+@item common
+@option{-mno-power}, @option{-mno-powerc}
+
+@item power
+@itemx power2
+@itemx rios1
+@itemx rios2
+@itemx rsc
+@option{-mpower}, @option{-mno-powerpc}, @option{-mno-new-mnemonics}
+
+@item powerpc
+@itemx rs64a
+@itemx 602
+@itemx 603
+@itemx 603e
+@itemx 604
+@itemx 620
+@itemx 630
+@itemx 740
+@itemx 750
+@itemx 505
+@option{-mno-power}, @option{-mpowerpc}, @option{-mnew-mnemonics}
+
+@item 601
+@option{-mpower}, @option{-mpowerpc}, @option{-mnew-mnemonics}
+
+@item 403
+@itemx 821
+@itemx 860
+@option{-mno-power}, @option{-mpowerpc}, @option{-mnew-mnemonics}, @option{-msoft-float}
+@end table
@item -mtune=@var{cpu_type}
@opindex mtune
Set the instruction scheduling parameters for machine type
-@var{cpu_type}, but do not set the architecture type, register usage,
-choice of mnemonics like @option{-mcpu=@var{cpu_type}} would. The same
-values for @var{cpu_type} are used for @option{-mtune=@var{cpu_type}} as
-for @option{-mcpu=@var{cpu_type}}. The @option{-mtune=@var{cpu_type}}
-option overrides the @option{-mcpu=@var{cpu_type}} option in terms of
-instruction scheduling parameters.
+@var{cpu_type}, but do not set the architecture type, register usage, or
+choice of mnemonics, as @option{-mcpu=@var{cpu_type}} would. The same
+values for @var{cpu_type} are used for @option{-mtune} as for
+@option{-mcpu}. If both are specified, the code generated will use the
+architecture, registers, and mnemonics set by @option{-mcpu}, but the
+scheduling parameters set by @option{-mtune}.
@item -mfull-toc
@itemx -mno-fp-in-toc
@@ -7405,8 +7385,9 @@ specifying @option{-march=@var{cpu-type}} implies @option{-mcpu=@var{cpu-type}}.
@opindex m486
@opindex mpentium
@opindex mpentiumpro
-Synonyms for @option{-mcpu=i386}, @option{-mcpu=i486}, @option{-mcpu=pentium}, and @option{-mcpu=pentiumpro}
-respectively. These synonyms are deprecated.
+These options are synonyms for @option{-mcpu=i386}, @option{-mcpu=i486},
+@option{-mcpu=pentium}, and @option{-mcpu=pentiumpro} respectively.
+These synonyms are deprecated.
@item -mintel-syntax
@opindex mintel-syntax
@@ -7488,9 +7469,9 @@ application binary interface. This is the default.
@itemx -mno-svr3-shlib
@opindex msvr3-shlib
@opindex mno-svr3-shlib
-Control whether GCC places uninitialized locals into @code{bss} or
-@code{data}. @option{-msvr3-shlib} places these locals into @code{bss}.
-These options are meaningful only on System V Release 3.
+Control whether GCC places uninitialized local variables into the
+@code{bss} or @code{data} segments. @option{-msvr3-shlib} places them
+into @code{bss}. These options are meaningful only on System V Release 3.
@item -mno-wide-multiply
@itemx -mwide-multiply
@@ -7881,44 +7862,23 @@ maximum performance. It is mostly compliant with the IEEE floating
point standard. However, for full compliance, software assistance is
required. This option generates code fully IEEE compliant code
@emph{except} that the @var{inexact-flag} is not maintained (see below).
-If this option is turned on, the CPP macro @code{_IEEE_FP} is defined
-during compilation. The option is a shorthand for: @option{-D_IEEE_FP
--mfp-trap-mode=su -mtrap-precision=i -mieee-conformant}. The resulting
-code is less efficient but is able to correctly support denormalized
-numbers and exceptional IEEE values such as not-a-number and plus/minus
-infinity. Other Alpha compilers call this option
-@option{-ieee_with_no_inexact}.
+If this option is turned on, the preprocessor macro @code{_IEEE_FP} is
+defined during compilation. The resulting code is less efficient but is
+able to correctly support denormalized numbers and exceptional IEEE
+values such as not-a-number and plus/minus infinity. Other Alpha
+compilers call this option @option{-ieee_with_no_inexact}.
@item -mieee-with-inexact
@opindex mieee-with-inexact
-@c overfull hbox here --bob 22 jul96
-@c original text between ignore ... end ignore
-@ignore
-This is like @option{-mieee} except the generated code also maintains the
-IEEE @var{inexact-flag}. Turning on this option causes the generated
-code to implement fully-compliant IEEE math. The option is a shorthand
-for @option{-D_IEEE_FP -D_IEEE_FP_INEXACT} plus @option{-mieee-conformant},
-@option{-mfp-trap-mode=sui}, and @option{-mtrap-precision=i}. On some Alpha
-implementations the resulting code may execute significantly slower than
-the code generated by default. Since there is very little code that
-depends on the @var{inexact-flag}, you should normally not specify this
-option. Other Alpha compilers call this option
-@option{-ieee_with_inexact}.
-@end ignore
-@c changed paragraph
-This is like @option{-mieee} except the generated code also maintains the
-IEEE @var{inexact-flag}. Turning on this option causes the generated
-code to implement fully-compliant IEEE math. The option is a shorthand
-for @option{-D_IEEE_FP -D_IEEE_FP_INEXACT} plus the three following:
-@option{-mieee-conformant},
-@option{-mfp-trap-mode=sui},
-and @option{-mtrap-precision=i}.
-On some Alpha implementations the resulting code may execute
-significantly slower than the code generated by default. Since there
-is very little code that depends on the @var{inexact-flag}, you should
+This is like @option{-mieee} except the generated code also maintains
+the IEEE @var{inexact-flag}. Turning on this option causes the
+generated code to implement fully-compliant IEEE math. In addition to
+@code{_IEEE_FP}, @code{_IEEE_FP_EXACT} is defined as a preprocessor
+macro. On some Alpha implementations the resulting code may execute
+significantly slower than the code generated by default. Since there is
+very little code that depends on the @var{inexact-flag}, you should
normally not specify this option. Other Alpha compilers call this
option @option{-ieee_with_inexact}.
-@c end changes to prevent overfull hboxes
@item -mfp-trap-mode=@var{trap-mode}
@opindex mfp-trap-mode
@@ -8117,8 +8077,8 @@ Produce code for a C300 Clipper processor. This is the default.
@item -mc400
@opindex mc400
-Produce code for a C400 Clipper processor i.e.@: use floating point
-registers f8---f15.
+Produce code for a C400 Clipper processor, i.e.@: use floating point
+registers f8--f15.
@end table
@node H8/300 Options
@@ -9102,16 +9062,16 @@ that of some integer type.
@item -freg-struct-return
@opindex freg-struct-return
-Use the convention that @code{struct} and @code{union} values are
-returned in registers when possible. This is more efficient for small
-structures than @option{-fpcc-struct-return}.
+Return @code{struct} and @code{union} values in registers when possible.
+This is more efficient for small structures than
+@option{-fpcc-struct-return}.
-If you specify neither @option{-fpcc-struct-return} nor its contrary
+If you specify neither @option{-fpcc-struct-return} nor
@option{-freg-struct-return}, GCC defaults to whichever convention is
standard for the target. If there is no standard convention, GCC
-defaults to @option{-fpcc-struct-return}, except on targets where GCC
-is the principal compiler. In those cases, we can choose the standard,
-and we chose the more efficient register return alternative.
+defaults to @option{-fpcc-struct-return}, except on targets where GCC is
+the principal compiler. In those cases, we can choose the standard, and
+we chose the more efficient register return alternative.
@item -fshort-enums
@opindex fshort-enums
@@ -9399,11 +9359,11 @@ would grow beyond the value, a signal is raised. For most targets,
the signal is raised before the stack overruns the boundary, so
it is possible to catch the signal without taking special precautions.
-For instance, if the stack starts at address @samp{0x80000000} and grows
-downwards you can use the flags
-@samp{-fstack-limit-symbol=__stack_limit
--Wl,--defsym,__stack_limit=0x7ffe0000} which will enforce a stack
-limit of 128K@.
+For instance, if the stack starts at absolute address @samp{0x80000000}
+and grows downwards, you can use the flags
+@option{-fstack-limit-symbol=__stack_limit} and
+@option{-Wl,--defsym,__stack_limit=0x7ffe0000} to enforce a stack limit
+of 128KB@. Note that this may only work with the GNU linker.
@cindex aliasing of parameters
@cindex parameters, aliased
@@ -9417,9 +9377,9 @@ Specify the possible relationships among parameters and between
parameters and global data.
@option{-fargument-alias} specifies that arguments (parameters) may
-alias each other and may alias global storage.
+alias each other and may alias global storage.@*
@option{-fargument-noalias} specifies that arguments do not alias
-each other, but may alias global storage.
+each other, but may alias global storage.@*
@option{-fargument-noalias-global} specifies that arguments do not
alias each other and do not alias global storage.
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index f395d6f..f2e7b8f 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -448,8 +448,6 @@ those listed in the @code{match_parallel}.
A typical use of @code{match_parallel} is to match load and store
multiple expressions, which can contain a variable number of elements
in a @code{parallel}. For example,
-@c the following is *still* going over. need to change the code.
-@c also need to work on grouping of this example. --mew 1feb93
@smallexample
(define_insn ""
@@ -463,7 +461,7 @@ in a @code{parallel}. For example,
@end smallexample
This example comes from @file{a29k.md}. The function
-@code{load_multiple_operations} is defined in @file{a29k.c} and checks
+@code{load_multiple_operation} is defined in @file{a29k.c} and checks
that subsequent elements in the @code{parallel} are the same as the
@code{set} in the pattern, except that they are referencing subsequent
registers and memory locations.
@@ -1295,12 +1293,12 @@ general-purpose registers respectively; @pxref{Simple Constraints}), and
@samp{I}, usually the letter indicating the most common
immediate-constant format.
-For each machine architecture, the @file{config/@var{machine}.h} file
-defines additional constraints. These constraints are used by the
-compiler itself for instruction generation, as well as for @code{asm}
-statements; therefore, some of the constraints are not particularly
-interesting for @code{asm}. The constraints are defined through these
-macros:
+For each machine architecture, the
+@file{config/@var{machine}/@var{machine}.h} file defines additional
+constraints. These constraints are used by the compiler itself for
+instruction generation, as well as for @code{asm} statements; therefore,
+some of the constraints are not particularly interesting for @code{asm}.
+The constraints are defined through these macros:
@table @code
@item REG_CLASS_FROM_LETTER
@@ -2068,9 +2066,8 @@ machines explicit memory references will get optional reloads.
If a scratch register is required to move an object to or from memory,
it can be allocated using @code{gen_reg_rtx} prior to life analysis.
-If there are cases needing
-scratch registers after reload, you must define
-@code{SECONDARY_INPUT_RELOAD_CLASS} and perhaps also
+If there are cases which need scratch registers during or after reload,
+you must define @code{SECONDARY_INPUT_RELOAD_CLASS} and/or
@code{SECONDARY_OUTPUT_RELOAD_CLASS} to detect them, and provide
patterns @samp{reload_in@var{m}} or @samp{reload_out@var{m}} to handle
them. @xref{Register Classes}.
@@ -2947,8 +2944,8 @@ the function should return. This will normally need to copied by the
pattern to some special register or memory location.
This pattern only needs to be defined if call frame exception handling
-is to be used, and simple moves to @code{EH_RETURN_STACKADJ_RTX} and
-@code{EH_RETURN_HANDLER_RTX} are not sufficient.
+is to be used, and simple moves involving @code{EH_RETURN_STACKADJ_RTX}
+and @code{EH_RETURN_HANDLER_RTX} are not sufficient.
@cindex @code{prologue} instruction pattern
@anchor{prologue instruction pattern}
@@ -3251,9 +3248,9 @@ iterations. This avoids the need for fetching and executing a
@samp{dbra}-like instruction and avoids pipeline stalls associated with
the jump.
-GCC has three special named patterns to support low overhead looping,
-@samp{decrement_and_branch_until_zero}, @samp{doloop_begin}, and
-@samp{doloop_end}. The first pattern,
+GCC has three special named patterns to support low overhead looping.
+They are @samp{decrement_and_branch_until_zero}, @samp{doloop_begin},
+and @samp{doloop_end}. The first pattern,
@samp{decrement_and_branch_until_zero}, is not emitted during RTL
generation but may be emitted during the instruction combination phase.
This requires the assistance of the loop optimizer, using information
@@ -3888,7 +3885,8 @@ from i386.md:
"TARGET_ZERO_EXTEND_WITH_AND && !optimize_size"
"#"
"&& reload_completed"
- [(parallel [(set (match_dup 0) (and:SI (match_dup 0) (const_int 65535)))
+ [(parallel [(set (match_dup 0)
+ (and:SI (match_dup 0) (const_int 65535)))
(clobber (reg:CC 17))])]
""
[(set_attr "type" "alu1")])
@@ -4749,9 +4747,10 @@ as follows:
return (get_attr_length (insn) == 4
? "b %l0" : "l r15,=a(%l0); br r15");
@}
- [(set (attr "length") (if_then_else (lt (match_dup 0) (const_int 4096))
- (const_int 4)
- (const_int 6)))])
+ [(set (attr "length")
+ (if_then_else (lt (match_dup 0) (const_int 4096))
+ (const_int 4)
+ (const_int 6)))])
@end smallexample
@node Constant Attributes
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index cfe7ba9..c6beaaa 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1527,8 +1527,8 @@ than the operands. Write the pattern for this as
where @var{m} is wider than the modes of @var{x} and @var{y}, which need
not be the same.
-Write patterns for unsigned widening multiplication similarly using
-@code{zero_extend}.
+For unsigned widening multiplication, use the same idiom, but with
+@code{zero_extend} instead of @code{sign_extend}.
@findex div
@cindex division
@@ -2169,7 +2169,8 @@ either wrap around or use saturating addition depending on the value
of a special control register:
@example
-(parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3) (reg:SI 4)] 0))
+(parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3)
+ (reg:SI 4)] 0))
(use (reg:SI 1))])
@end example