+2001-06-27 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * doc/c-tree.texi, doc/contrib.texi, doc/cpp.texi,
+ doc/cppinternals.texi, doc/extend.texi, doc/gcc.texi,
+ doc/gcov.texi, doc/install-old.texi, doc/install.texi,
+ doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Replace
+ . at end of sentences preceded by a capital letter with @..
+
2001-06-26 Daniel Berlin <dan@cgsoftware.com>
* doc/invoke.texi: Add description of max-gcse-passes param.
construct used in C that does not appear in the C++ front end and that
is the GNU ``nested function'' extension. Many of the macros documented
here do not apply in C because the corresponding language constructs do
-not appear in C.
+not appear in C@.
If you are developing a ``back end'', be it is a code-generator or some
other tool, that uses this representation, you may occasionally find
documenting the functionality you require. Similarly, if you find
yourself writing functions that do not deal directly with your back end,
but instead might be useful to other people using the GCC front end, you
-should submit your patches for inclusion in GCC.
+should submit your patches for inclusion in GCC@.
@menu
* Deficiencies:: Topics net yet covered in this document.
Note that in C (but not in C++) a function declared like @code{void f()}
is an unprototyped function taking a variable number of arguments; the
-@code{TYPE_ARG_TYPES} of such a function will be NULL.
+@code{TYPE_ARG_TYPES} of such a function will be NULL@.
@item METHOD_TYPE
Used to represent the type of a non-static member function. Like a
@item USING_STMT
Used to represent a @code{using} directive. The namespace is given by
-@code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL. This node
+@code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL@. This node
is needed inside template functions, to implement using directives
during instantiation.
testing of GCC using glibc, ISO C99 support, CFG dumping support, etc.
@item
-Richard Earnshaw for his ongoing work with the ARM.
+Richard Earnshaw for his ongoing work with the ARM@.
@item
David Edelsohn for his direction via the steering committee,
loop changes.
@item
-Paul Eggert for random hacking all over GCC.
+Paul Eggert for random hacking all over GCC@.
@item
Mark Elbrecht for various DJGPP improvements.
Klaus Kaempf for his ongoing work to make alpha-vms a viable target.
@item
-David Kashtan of SRI adapted GCC to VMS.
+David Kashtan of SRI adapted GCC to VMS@.
@item
Geoffrey Keating for his ongoing work to make the PPC work for Linux.
@item
Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
-MIL-STD-1750A.
+MIL-STD-1750A@.
@item
Richard Kenner of the New York University Ultracomputer Research
will be removed, and the Makefile will not work.
Having said that, you can often get away with using cpp on things which
-are not C. Other Algol-ish programming languages are often safe
+are not C@. Other Algol-ish programming languages are often safe
(Pascal, Ada, etc.) So is assembly, with caution. @option{-traditional}
mode preserves more white space, and is otherwise more permissive. Many
of the problems can be avoided by writing C or C++ style comments
These are nine three-character sequences, all starting with @samp{??},
that are defined by ISO C to stand for single characters. They permit
-obsolete systems that lack some of C's punctuation to use C. For
+obsolete systems that lack some of C's punctuation to use C@. For
example, @samp{??/} stands for @samp{\}, so @t{'??/n'} is a character
constant for a newline. By default, GCC ignores trigraphs, but if you
request a strictly conforming mode with the @option{-std} option, then
normally considered a letter.) All characters with the high bit set
(numeric range 0x7F--0xFF) are also ``other'' in the present
implementation. This will change when proper support for international
-character sets is added to GCC.
+character sets is added to GCC@.
NUL is a special case because of the high probability that its
appearance is accidental, and because it may be invisible to the user
@end example
@noindent
-(where @samp{^@@} is ASCII NUL). Within string or character constants,
+(where @samp{^@@} is ASCII NUL)@. Within string or character constants,
NULs are preserved. In the latter two cases the preprocessor emits a
warning message.
@var{mm} are the year and month of the Standard version. This signifies
which version of the C Standard the compiler conforms to. Like
@code{__STDC__}, this is not necessarily accurate for the entire
-implementation, unless GNU CPP is being used with GCC.
+implementation, unless GNU CPP is being used with GCC@.
The value @code{199409L} signifies the 1989 C standard as amended in
1994, which is the current default; the value @code{199901L} signifies
@itemx __GNUC_MINOR__
@itemx __GNUC_PATCHLEVEL__
These macros are defined by all GNU compilers that use the C
-preprocessor: C, C++, and Objective-C. Their values are the major
+preprocessor: C, C++, and Objective-C@. Their values are the major
version, minor version, and patch level of the compiler, as integer
constants. For example, GCC 3.2.1 will define @code{__GNUC__} to 3,
@code{__GNUC_MINOR__} to 2, and @code{__GNUC_PATCHLEVEL__} to 1. They
Even if a conditional fails, the @var{controlled text} inside it is
still run through initial transformations and tokenization. Therefore,
-it must all be lexically valid C. Normally the only way this matters is
+it must all be lexically valid C@. Normally the only way this matters is
that all comments and string literals inside a failing conditional group
must still be properly ended.
Arithmetic operators for addition, subtraction, multiplication,
division, bitwise operations, shifts, comparisons, and logical
operations (@code{&&} and @code{||}). The latter two obey the usual
-short-circuiting rules of standard C.
+short-circuiting rules of standard C@.
@item
Macros. All macros in the expression are expanded before actual
the object file. On other systems, the directive is ignored.
This directive is not part of the C standard, but it is not an official
-GNU extension either. We believe it came from System V.
+GNU extension either. We believe it came from System V@.
@findex #sccs
The @samp{#sccs} directive is recognized on some systems, because it
change subtly in future implementations.
Also documented here are obsolete features and changes from previous
-versions of GNU CPP.
+versions of GNU CPP@.
@menu
* Implementation-defined behavior::
GNU CPP has a number of features which are present mainly for
compatibility with older programs. We discourage their use in new code.
-In some cases, we plan to remove the feature in a future version of GCC.
+In some cases, we plan to remove the feature in a future version of GCC@.
@menu
* Assertions::
If you use @samp{#import} instead of @samp{#include}, then you don't
need the conditionals inside the header file to prevent multiple
inclusion of the contents. GCC permits the use of @samp{#import} in C
-and C++ as well as Objective-C. However, it is not in standard C or C++
+and C++ as well as Objective-C@. However, it is not in standard C or C++
and should therefore not be used by portable programs.
@samp{#import} is not a well designed feature. It requires the users of
GCC currently allows a string constant to extend across multiple logical
lines of the source file. This extension is deprecated and will be
-removed in a future version of GCC. Such string constants are already
+removed in a future version of GCC@. Such string constants are already
rejected in all directives apart from @samp{#define}.
Instead, make use of ISO C concatenation of adjacent string literals, or
@cindex differences from previous versions
This section details behavior which has changed from previous versions
-of GNU CPP. We do not plan to change it again in the near future, but
+of GNU CPP@. We do not plan to change it again in the near future, but
we do not promise not to, either.
The ``previous versions'' discussed here are 2.95 and before. The
@itemx iso9899:199x
@itemx c9x
The revised ISO C standard, published in December 1999. Before
-publication, this was known as C9X.
+publication, this was known as C9X@.
@item gnu89
The 1990 C standard plus GNU extensions. This is the default.
@item -remap
Enable special code to work around file systems which only permit very
-short file names, such as MS-DOS.
+short file names, such as MS-DOS@.
@item -$
Forbid the use of @samp{$} in identifiers. The C standard allows
Interpretation of some character sequences depends upon whether we are
lexing C, C++ or Objective-C, and on the revision of the standard in
force. For example, @samp{::} is a single token in C++, but two
-separate @samp{:} tokens, and almost certainly a syntax error, in C.
+separate @samp{:} tokens, and almost certainly a syntax error, in C@.
Such cases are handled in the main function @samp{_cpp_lex_token}, based
upon the flags set in the @samp{cpp_options} structure.
@cindex C language extensions
@opindex pedantic
-GNU C provides several language features not found in ISO standard C.
+GNU C provides several language features not found in ISO standard C@.
(The @option{-pedantic} option directs GCC to print a warning message if
any of these features is used.) To test for the availability of these
features in conditional compilation, check for a predefined macro
-@code{__GNUC__}, which is always defined under GCC.
+@code{__GNUC__}, which is always defined under GCC@.
-These extensions are available in C and Objective-C. Most of them are
+These extensions are available in C and Objective-C@. Most of them are
also available in C++. @xref{C++ Extensions,,Extensions to the
C++ Language}, for extensions that apply @emph{only} to C++.
@c changed it from "within" to "in". --mew 4feb93
A compound statement enclosed in parentheses may appear as an expression
-in GNU C. This allows you to use loops, switches, and local variables
+in GNU C@. This allows you to use loops, switches, and local variables
within an expression.
Recall that a compound statement is a sequence of statements surrounded
if the machine supports fullword-to-doubleword a widening multiply
instruction. Division and shifts are open-coded only on machines that
provide special support. The operations that are not open-coded use
-special library routines that come with GCC.
+special library routines that come with GCC@.
There may be pitfalls when you use @code{long long} types for function
arguments, unless you declare function prototypes. If a function
floating type, you should use the ISO C99 functions @code{crealf},
@code{creal}, @code{creall}, @code{cimagf}, @code{cimag} and
@code{cimagl}, declared in @code{<complex.h>} and also provided as
-built-in functions by GCC.
+built-in functions by GCC@.
@cindex complex conjugation
The operator @samp{~} performs complex conjugation when used on a value
with a complex type. This is a GNU extension; for values of
floating type, you should use the ISO C99 functions @code{conjf},
@code{conj} and @code{conjl}, declared in @code{<complex.h>} and also
-provided as built-in functions by GCC.
+provided as built-in functions by GCC@.
GCC can allocate complex automatic variables in a noncontiguous
fashion; it's even possible for the real part to be in a register while
@cindex length-zero arrays
@cindex flexible array members
-Zero-length arrays are allowed in GNU C. They are very useful as the
+Zero-length arrays are allowed in GNU C@. They are very useful as the
last element of a structure which is really a header for a variable-length
object:
Subscripting is allowed on arrays that are not lvalues, even though the
unary @samp{&} operator is not. (In ISO C99, both are allowed (though
the array may not be used after the next sequence point), but this ISO
-C99 feature is not yet fully supported in GCC.) For example,
+C99 feature is not yet fully supported in GCC@.) For example,
this is valid in GNU C though not valid in C89:
@example
@cindex non-constant initializers
As in standard C++ and ISO C99, the elements of an aggregate initializer for an
-automatic variable are not required to be constant expressions in GNU C.
+automatic variable are not required to be constant expressions in GNU C@.
Here is an example of an initializer with run-time varying elements:
@example
initializing data that will be used implicitly during the execution of
the program.
-These attributes are not currently implemented for Objective-C.
+These attributes are not currently implemented for Objective-C@.
@item unused
This attribute, attached to a function, means that the function is meant
@item long_call/short_call
@cindex indirect calls on ARM
This attribute allows to specify how to call a particular function on
-ARM. Both attributes override the @option{-mlong-calls} (@pxref{ARM Options})
+ARM@. Both attributes override the @option{-mlong-calls} (@pxref{ARM Options})
command line switch and @code{#pragma long_calls} settings. The
@code{long_call} attribute causes the compiler to always call the
function by first loading its address into a register and then using the
void f () __attribute__ ((interrupt ("IRQ")));
@end smallexample
-Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF.
+Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF@.
@item interrupt_handler
@cindex interrupt handler functions on the H8/300 and SH processors
This section describes the syntax with which @code{__attribute__} may be
used, and the constructs to which attribute specifiers bind, for the C
-language. Some details may vary for C++ and Objective-C. Because of
+language. Some details may vary for C++ and Objective-C@. Because of
infelicities in the grammar for attributes, some forms described here
may not be successfully parsed in all cases.
@cindex @code{shared} variable attribute
On Windows NT, in addition to putting variable definitions in a named
section, the section can also be shared among all running copies of an
-executable or DLL. For example, this small program defines shared data
+executable or DLL@. For example, this small program defines shared data
by putting it in a named section @code{shared} and marking the section
shareable:
attribute with a fully initialized global definition because of the way
linkers work. See @code{section} attribute for more information.
-The @code{shared} attribute is only available on Windows NT.
+The @code{shared} attribute is only available on Windows NT@.
@item transparent_union
This attribute, attached to a function parameter which is a union, means
Assume @code{addr} contains the address of a memory mapped device
register. The PowerPC @code{eieio} instruction (Enforce In-order
Execution of I/O) tells the cpu to make sure that the store to that
-device register happens before it issues any other I/O.
+device register happens before it issues any other I/O@.
Note that even a volatile @code{asm} instruction can be moved in ways
that appear insignificant to the compiler, such as across jump
Note that you will still be paying the penalty for the call through a
function pointer; on most modern architectures, such a call defeats the
-branch prediction features of the CPU. This is also true of normal
+branch prediction features of the CPU@. This is also true of normal
virtual function calls.
The syntax for this extension is
affecting the behavior of ``GCC'' or sometimes just ``the compiler''.
Front ends for other languages, such as Ada 95 and Pascal exist but
-have not yet been integrated into GCC. These front ends, like that for C++,
+have not yet been integrated into GCC@. These front ends, like that for C++,
are built in subdirectories of GCC and link to it. The result is an
integrated compiler that can compile programs written in C, C++,
Objective-C, or any of the languages for which you have installed front
@c FIXME: details of C++ standard.
-There is no formal written standard for Objective-C. The most
+There is no formal written standard for Objective-C@. The most
authoritative manual is ``Object-Oriented Programming and the
Objective-C Language'', available at a number of web sites;
@uref{http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/} has a
information as well.
@xref{Language,,The GNU Fortran Language, g77, Using and Porting GNU
-Fortran}, for details of the Fortran language supported by GCC.
+Fortran}, for details of the Fortran language supported by GCC@.
@xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj},
for details of compatibility between @code{gcj} and the Java Platform.
@cindex installation trouble
@cindex known causes of trouble
-This section describes known problems that affect users of GCC. Most
+This section describes known problems that affect users of GCC@. Most
of these are not GCC bugs per se---if they were, we would fix them.
But the result for a user may be like the result of a bug.
@item
@cindex DBX
DBX rejects some files produced by GCC, though it accepts similar
-constructs in output from PCC. Until someone can supply a coherent
+constructs in output from PCC@. Until someone can supply a coherent
description of what is valid DBX input and what is not, there is
nothing I can do about these problems. You are on your own.
@item
-The GNU assembler (GAS) does not support PIC. To generate PIC code, you
+The GNU assembler (GAS) does not support PIC@. To generate PIC code, you
must use some other assembler, such as @file{/bin/as}.
@item
@item
On some SGI systems, when you use @option{-lgl_s} as an option,
it gets translated magically to @samp{-lgl_s -lX11_s -lc_s}.
-Naturally, this does not happen when you use GCC.
+Naturally, this does not happen when you use GCC@.
You must specify all three options explicitly.
@item
@code{double *} to a function compiled with GCC, dereferencing the
pointer may cause a fatal signal.
-One way to solve this problem is to compile your entire program with GCC.
+One way to solve this problem is to compile your entire program with GCC@.
Another solution is to modify the function that is compiled with
Sun CC to copy the argument into a local variable; local variables
are always properly aligned. A third solution is to modify the function
@item
On the HP PA machine, ADB sometimes fails to work on functions compiled
-with GCC. Specifically, it fails to work on functions that use
+with GCC@. Specifically, it fails to work on functions that use
@code{alloca} or variable-size arrays. This is because GCC doesn't
generate HP-UX unwind descriptors for such functions. It may even be
impossible to generate them.
will cause the linker to report an undefined symbol @code{foo}.
Although this behavior differs from most other systems, it is not a
bug because redefining an @code{extern} variable as @code{static}
-is undefined in ISO C.
+is undefined in ISO C@.
@item
AIX on the RS/6000 provides support (NLS) for environments outside of
@item
On the RS/6000, XLC version 1.3.0.0 will miscompile @file{jump.c}. XLC
version 1.3.0.1 or later fixes this problem. You can obtain XLC-1.3.0.2
-by requesting PTF 421749 from IBM.
+by requesting PTF 421749 from IBM@.
@item
@opindex mno-serialize-volatile
@opindex traditional
There are several noteworthy incompatibilities between GNU C and K&R
-(non-ISO) versions of C. The @option{-traditional} option
+(non-ISO) versions of C@. The @option{-traditional} option
eliminates many of these incompatibilities, @emph{but not all}, by
telling GCC to behave like a K&R C compiler.
@item
Programs that use preprocessing directives in the middle of macro
-arguments do not work with GCC. For example, a program like this
+arguments do not work with GCC@. For example, a program like this
will not work:
@example
GCC complains about program fragments such as @samp{0x74ae-0x4000}
which appear to be two hexadecimal constants separated by the minus
operator. Actually, this string is a single @dfn{preprocessing token}.
-Each such token must correspond to one token in C. Since this does not,
+Each such token must correspond to one token in C@. Since this does not,
GCC prints an error message. Although it may appear obvious that what
is meant is an operator and two values, the ISO C standard specifically
requires that this be treated as erroneous.
@item
If you update the system's header files, such as by installing a new
system version, the fixed header files of GCC are not automatically
-updated. The easiest way to update them is to reinstall GCC. (If
+updated. The easiest way to update them is to reinstall GCC@. (If
you want to be clever, look in the makefile and you can find a
shortcut.)
The ISO C standard leaves it up to the implementation whether a bit-field
declared plain @code{int} is signed or not. This in effect creates two
-alternative dialects of C.
+alternative dialects of C@.
@opindex fsigned-bitfields
@opindex funsigned-bitfields
Some computer manufacturers have published Application Binary Interface
standards which specify that plain bit-fields should be unsigned. It is
-a mistake, however, to say anything about this issue in an ABI. This is
-because the handling of plain bit-fields distinguishes two dialects of C.
+a mistake, however, to say anything about this issue in an ABI@. This is
+because the handling of plain bit-fields distinguishes two dialects of C@.
Both dialects are meaningful on every type of machine. Whether a
particular object file was compiled using signed bit-fields or unsigned
is of no concern to other object files, even if they access the same
GCC normally defines @code{__STDC__} to be 1, and in addition
defines @code{__STRICT_ANSI__} if you specify the @option{-ansi} option,
-or a @option{-std} option for strict conformance to some version of ISO C.
+or a @option{-std} option for strict conformance to some version of ISO C@.
On some hosts, system include files use a different convention, where
@code{__STDC__} is normally 0, but is 1 if the user specifies strict
conformance to the C Standard. GCC follows the host convention when
They would not work otherwise.
In addition, many header files are written to provide prototypes in ISO
-C but not in traditional C. Many of these header files can work without
+C but not in traditional C@. Many of these header files can work without
change in C++ provided @code{__STDC__} is defined. If @code{__STDC__}
is not defined, they will all fail, and will all need to be changed to
test explicitly for C++ as well.
it may not. (If it does not, look in the service directory; see
@ref{Service}.) In any case, the principal function of a bug report is
to help the entire community by making the next version of GCC work
-better. Bug reports are your contribution to the maintenance of GCC.
+better. Bug reports are your contribution to the maintenance of GCC@.
Since the maintainers are very overloaded, we cannot respond to every
bug report. However, if the bug has not been fixed, we are likely to
@itemize @bullet
@item
-The version of GCC. You can get this by running it with the
+The version of GCC@. You can get this by running it with the
@option{-v} option.
Without this, we won't know whether there is any point in looking for
-the bug in the current version of GCC.
+the bug in the current version of GCC@.
@item
A complete input file that will reproduce the bug. If the bug is in the
@item
Details of any other deviations from the standard procedure for installing
-GCC.
+GCC@.
@item
A description of what behavior you observe that you believe is
@chapter Using GCC on VMS
@c prevent bad page break with this line
-Here is how to use GCC on VMS.
+Here is how to use GCC on VMS@.
@menu
* Include Files and VMS:: Where the preprocessor looks for the include files.
@end example
@noindent
-are a common source of incompatibility between VAX-C and GCC. VAX-C
+are a common source of incompatibility between VAX-C and GCC@. VAX-C
treats this much like a standard @code{#include <foobar.h>} directive.
That is incompatible with the ISO C behavior implemented by GCC: to
expand the name @code{foobar} as a macro. Macro expansion should
@findex GLOBALVALUEDEF
@findex GLOBALVALUEREF
GCC does not provide the @code{globalref}, @code{globaldef} and
-@code{globalvalue} keywords of VAX-C. You can get the same effect with
+@code{globalvalue} keywords of VAX-C@. You can get the same effect with
an obscure feature of GAS, the GNU assembler. (This requires GAS
version 1.39 or later.) The following macros allow you to use this
feature in a fairly natural way:
by VMS as a status code indicating a normal successful completion.
Version 1 of GCC did not provide this default.
-GCC on VMS works only with the GNU assembler, GAS. You need version
+GCC on VMS works only with the GNU assembler, GAS@. You need version
1.37 or later of GAS in order to produce value debugging information for
the VMS debugger. Use the ordinary VMS linker with the object files
-produced by GAS.
+produced by GAS@.
@cindex shared VMS run time system
@cindex @file{VAXCRTL}
libraries (such as Xlib) which were generated by another compiler. You
can use the compiler option @samp{/NOCASE_HACK} to inhibit augmentation;
it makes external C functions and variables case-independent as is usual
-on VMS. Alternatively, you could write all references to the functions
+on VMS@. Alternatively, you could write all references to the functions
and variables in such libraries using lower case; this will work on VMS,
but is not portable to other systems. The compiler option @samp{/NAMES}
also provides control over global name handling.
change is practical only if you are switching to GCC as the sole C
compiler for the system. We may implement register argument passing on
certain machines once we have a complete GNU system so that we can
-compile the libraries with GCC.
+compile the libraries with GCC@.
On some machines (particularly the Sparc), certain types of arguments
are passed ``by invisible reference''. This means that the value is
they appear in @file{libgcc2.c}. Others must be hand-written in
assembly language for each processor. Wherever they are defined, they
are compiled into the support library, @file{libgcc.a}, which is
-automatically searched when you link programs with GCC.
+automatically searched when you link programs with GCC@.
@end ifset
@ifset INTERNALS
the function and the types and number of parameters it has. Note that
this function may contain loops, recursive calls to itself
(tail-recursive functions can be inlined!), gotos, in short, all
-constructs supported by GCC. The file @file{integrate.c} contains
+constructs supported by GCC@. The file @file{integrate.c} contains
the code to save a function's rtl for later inlining and to inline that
rtl when the function is called. The header file @file{integrate.h}
is also used for this purpose.
also responsible for identifying spurious test and compare
instructions. Machine-specific peephole optimizations are performed
at the same time. The function entry and exit sequences are generated
-directly as assembler code in this pass; they never exist as RTL.
+directly as assembler code in this pass; they never exist as RTL@.
The source files are @file{final.c} plus @file{insn-output.c}; the
latter is generated automatically from the machine description by the
All the passes that work with RTL use the header files @file{rtl.h}
and @file{rtl.def}, and subroutines in file @file{rtl.c}. The tools
@code{gen*} also use these files to read and work with the machine
-description RTL.
+description RTL@.
@findex genconfig
@item
@table @code
@findex USG
@item USG
-Define this macro if the host system is System V.
+Define this macro if the host system is System V@.
@findex VMS
@item VMS
-Define this macro if the host system is VMS.
+Define this macro if the host system is VMS@.
@findex FATAL_EXIT_CODE
@item FATAL_EXIT_CODE
@findex USE_C_ALLOCA
@item USE_C_ALLOCA
Define this macro to indicate that the compiler is running with the
-@code{alloca} implemented in C. This version of @code{alloca} can be
+@code{alloca} implemented in C@. This version of @code{alloca} can be
found in the file @file{alloca.c}; to use it, you must also alter the
@file{Makefile} variable @code{ALLOCA}. (This is done automatically
for the systems on which we know it is needed.)
@findex MULTIBYTE_CHARS
@item MULTIBYTE_CHARS
Define this macro to enable support for multibyte characters in the
-input to GCC. This requires that the host system support the ISO C
+input to GCC@. This requires that the host system support the ISO C
library functions for converting multibyte characters to wide
characters.
free software added up to a complete system because the GNU Project
had been working since 1984 to make one. The GNU Manifesto
had set forth the goal of developing a free Unix-like system, called
-GNU. By the time Linux was written, the system was almost finished.
+GNU@. By the time Linux was written, the system was almost finished.
Most free software projects have the goal of developing a particular
program for a particular job. For example, Linus Torvalds set out to
major components without which there could be no system. Linux itself
was about 3%. So if you were going to pick a name for the system
based on who wrote the programs in the system, the most appropriate
-single choice would be ``GNU''.
+single choice would be ``GNU''@.
But we don't think that is the right way to consider the question.
The GNU Project was not, is not, a project to develop specific
timing information you can use along with the information you get from
@command{gcov}.
-@command{gcov} works only on code compiled with GCC. It is not
+@command{gcov} works only on code compiled with GCC@. It is not
compatible with any other profiling or test coverage mechanism.
@c man end
See @ref{Configurations}, for a list of supported configuration names and
notes on many of the configurations. You should check the notes in that
-section before proceeding any further with the installation of GNU CC.
+section before proceeding any further with the installation of GNU CC@.
@end enumerate
You can add a version number to the system type; this may or may not
make a difference. For example, you can write @samp{bsd4.3} or
-@samp{bsd4.4} to distinguish versions of BSD. In practice, the version
+@samp{bsd4.4} to distinguish versions of BSD@. In practice, the version
number is most needed for @samp{sysv3} and @samp{sysv4}, which are often
treated differently.
@table @samp
@item vax-dec-vms
-See @ref{VMS Install}, for details on how to install GNU CC on VMS.
+See @ref{VMS Install}, for details on how to install GNU CC on VMS@.
@end table
@node Cross-Compiler
@end itemize
It is most convenient to do all of these steps on the same host machine,
-since then you can do it all with a single invocation of GNU CC. This
+since then you can do it all with a single invocation of GNU CC@. This
requires a suitable cross-assembler and cross-linker. For some targets,
the GNU assembler and linker are available.
find them when run later.
The easiest way to provide these files is to build the Binutils package
-and GAS. Configure them with the same @option{--host} and @option{--target}
+and GAS@. Configure them with the same @option{--host} and @option{--target}
options that you use for configuring GNU CC, then build and install
them. They install their executables automatically into the proper
directory. Alas, they do not support all the targets that GNU CC
Provide the header files before you build the cross-compiler, because
the build stage actually runs the cross-compiler to produce parts of
@file{libgcc.a}. (These are the parts that @emph{can} be compiled with
-GNU CC.) Some of them need suitable header files.
+GNU CC@.) Some of them need suitable header files.
Here's an example showing how to copy the header files from a target
machine. On the target machine, do this:
The actual calls to the constructors are carried out by a subroutine
called @code{__main}, which is called (automatically) at the beginning
of the body of @code{main} (provided @code{main} was compiled with GNU
-CC). Calling @code{__main} is necessary, even when compiling C code, to
+CC)@. Calling @code{__main} is necessary, even when compiling C code, to
allow linking C and C++ object code together. (If you use
@option{-nostdlib}, you get an unresolved reference to @code{__main},
since it's defined in the standard GCC library. Include @option{-lgcc} at
@settitle Installing GCC: Binaries
@end ifset
-@comment $Id: install.texi,v 1.36 2001/06/26 23:23:32 jsm28 Exp $
+@comment $Id: install.texi,v 1.37 2001/06/27 00:04:38 jsm28 Exp $
@c Copyright (C) 2001 Free Software Foundation, Inc.
@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
components.
Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page}
-for information on how to obtain GCC.
+for information on how to obtain GCC@.
The full distribution includes the C, C++, Objective-C, Fortran, Java,
and Chill compilers. The full distribution also includes runtime libraries
@heading Options specification
Use @var{options} to override several configure time options for
-GCC. A partial list of supported @var{options}:
+GCC@. A partial list of supported @var{options}:
@table @code
@item --prefix=@var{dirname}
@item --libdir=@var{dirname}
Specify the installation directory for object code libraries and
-internal parts of GCC. The default is @file{@var{exec-prefix}/lib}.
+internal parts of GCC@. The default is @file{@var{exec-prefix}/lib}.
@item --with-slibdir=@var{dirname}
Specify the installation directory for the shared libgcc library. The
The purpose of @option{--prefix} is to specify where to @emph{install
GCC}. The local header files in @file{/usr/local/include}---if you put
-any in that directory---are not part of GCC. They are part of other
+any in that directory---are not part of GCC@. They are part of other
programs---perhaps many others. (GCC installs its own header files in
another directory which is based on the @option{--prefix} value.)
Indications are that people who use this option use it based on mistaken
ideas of what it is for. People use it as if it specified where to
-install part of GCC. Perhaps they make this assumption because
+install part of GCC@. Perhaps they make this assumption because
installing GCC creates the directory.
@item --enable-shared[=@var{package}[,@dots{}]]
On MIPS based systems and on Alphas, you must specify whether you want
GCC to create the normal ECOFF debugging format, or to use BSD-style
stabs passed through the ECOFF symbol table. The normal ECOFF debug
-format cannot fully handle languages other than C. BSD stabs format can
-handle other languages, but it only works with the GNU debugger GDB.
+format cannot fully handle languages other than C@. BSD stabs format can
+handle other languages, but it only works with the GNU debugger GDB@.
Normally, GCC uses the ECOFF debugging format by default; if you
-prefer BSD stabs, specify @option{--with-stabs} when you configure GCC.
+prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@.
No matter which default you choose when you configure GCC, the user
can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly
@item dce
DCE thread support.
@item mach
-Generic MACH thread support, known to work on NEXTSTEP. (Please note
+Generic MACH thread support, known to work on NEXTSTEP@. (Please note
that the file needed to support this configuration, @file{gthr-mach.h}, is
missing and thus this setting will cause a known bootstrap failure.)
@item no
Specify which cpu variant the
compiler should generate code for by default. This is currently
only supported on the some ports, specifically arm, powerpc, and
-SPARC. If configure does not recognize the model name (e.g.@: arm700,
+SPARC@. If configure does not recognize the model name (e.g.@: arm700,
603e, or ultrasparc) you provide, please check the configure script
for a complete list of supported models.
internal consistency checks. This does not change the generated code,
but adds error checking within the compiler. This will slow down the
compiler and may only work properly if you are building the compiler
-with GCC. This is on by default when building from CVS or snapshots,
+with GCC@. This is on by default when building from CVS or snapshots,
but off for releases. More control over the checks may be had by
specifying @var{list}; the categories of checks available are
@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}. The
The @option{--enable-nls} option enables Native Language Support (NLS),
which lets GCC output diagnostics in languages other than American
English. Native Language Support is enabled by default if not doing a
-canadian cross build. The @option{--disable-nls} option disables NLS.
+canadian cross build. The @option{--disable-nls} option disables NLS@.
@item --with-included-gettext
If NLS is enabled, the @option{--with-included-gettext} option causes the build
@file{sys/types.h}. If you find that @code{size_t} is a signed type and
that type mismatches occur, this could be the cause.
-The solution is not to use such a directory for building GCC.
+The solution is not to use such a directory for building GCC@.
When building from CVS or snapshots, or if you modify parser sources,
you need the Bison parser generator installed. Any version 1.25 or
When building a cross compiler, it is not generally possible to do a
3-stage bootstrap of the compiler. This makes for an interesting problem
-as parts of GCC can only be built with GCC.
+as parts of GCC can only be built with GCC@.
To build a cross compiler, we first recommend building and installing a
native compiler. You can then use the native GCC compiler to build the
If you have a multiprocessor system you can use @samp{make bootstrap
MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap}
for GNU Make 3.79 and above instead of just @samp{make bootstrap}
-when building GCC. You can use a bigger number instead of two if
+when building GCC@. You can use a bigger number instead of two if
you like. In most cases, it won't help to use a number bigger than
the number of processors in your machine.
@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,build status page}.
If your system is not listed, send a note to
@uref{mailto:gcc@@gcc.gnu.org,,gcc@@gcc.gnu.org} indicating
-that you successfully built and installed GCC.
+that you successfully built and installed GCC@.
Include the output from running @file{@var{srcdir}/config.guess}. (Do
not send us the config.guess file itself, just the one-line output from
printing with programs such as @command{dvips}. You can also
@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
Free Software Foundation}, though such manuals may not be for the most
-recent version of GCC.
+recent version of GCC@.
@html
<hr>
@cindex Binaries
@cindex Installing GCC: Binaries
-We are often asked about pre-compiled versions of GCC. While we cannot
+We are often asked about pre-compiled versions of GCC@. While we cannot
provide these for all platforms, below you'll find links to binaries for
various platforms where creating them by yourself is not easy due to various
reasons.
The MIL-STD-1750A cross configuration produces output for
@code{as1750}, an assembler/linker available under the GNU Public
-License for the 1750A. @code{as1750} can be obtained at
+License for the 1750A@. @code{as1750} can be obtained at
@uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}.
A similarly licensed simulator for
the 1750A is available from same address.
You should ignore a fatal error during the building of libgcc (libgcc is
-not yet implemented for the 1750A.)
+not yet implemented for the 1750A@.)
The @code{as1750} assembler requires the file @file{ms1750.inc}, which is
found in the directory @file{config/1750a}.
The read-only (ROM) constants section.
@item Init
-Initialization section (code to copy KREL to SREL).
+Initialization section (code to copy KREL to SREL)@.
@end table
The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). This
means that type @code{char} is represented with a 16-bit word per character.
The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by
-GCC.
+GCC@.
@html
</p>
This section contains general configuration information for all
alpha-based platforms using ELF (in particular, ignore this section for
-DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this
+DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this
section, please read all other sections that match your target.
We require binutils 2.11.1 (as of yet unreleased), binutils with
@samp{.s} files after each series of compilations.
GCC now supports both the native (ECOFF) debugging format used by DBX
-and GDB and an encapsulated STABS format for use only with GDB. See the
+and GDB and an encapsulated STABS format for use only with GDB@. See the
discussion of the @option{--with-stabs} option of @file{configure} above
for more information on these formats and how to select them.
different depending on whether or not @option{-g} is also specified.
To avoid this behavior, specify @option{-gstabs+} and use GDB instead of
-DBX. DEC is now aware of this problem with the assembler and hopes to
+DBX@. DEC is now aware of this problem with the assembler and hopes to
provide a fix shortly.
@html
Options,, AVR Options, gcc, Using and Porting the GNU Compiler
Collection (GCC)}, for the list of supported MCU types.
-Use @samp{configure --target=avr --enable-languages="c"} to configure GCC.
+Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
Further installation notes and other useful information about AVR tools
can also be obtained from:
@item decstation-osfrose
Open Software Foundation reference port of OSF/1 which uses the
-OSF/rose object file format instead of ECOFF. Normally, you
+OSF/rose object file format instead of ECOFF@. Normally, you
would not select this configuration.
@end table
@end html
@heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd
The Elxsi's C compiler has known limitations that prevent it from
-compiling GCC. Please contact @email{mrs@@cygnus.com} for more details.
+compiling GCC@. Please contact @email{mrs@@cygnus.com} for more details.
@html
</p>
@heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10
For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
-@code{PHCO_19798} from HP. HP has two sites which provide patches free of
+@code{PHCO_19798} from HP@. HP has two sites which provide patches free of
charge:
@itemize @bullet
particular, @option{--enable-threads} is now configured by default.
However, as a general user, do not attempt to replace the system
compiler with this release. Known to bootstrap and check with good
-results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT.
+results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT@.
At this time, @option{--enable-threads} is not compatible with
-@option{--enable-libgcj} on FreeBSD.
+@option{--enable-libgcj} on FreeBSD@.
@html
</p>
@end html
Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync
-since the latest exception handling changes for GCC. Compiling glibc
+since the latest exception handling changes for GCC@. Compiling glibc
with GCC 3.0 will give a binary incompatible glibc and therefore cause
lots of problems and might make your system completly unusable. This
-will definitly need fixes in glibc but might also need fixes in GCC. We
+will definitly need fixes in glibc but might also need fixes in GCC@. We
strongly advise to wait for glibc 2.2.4 and to read the release notes of
glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc
2.2.3 with GCC 3.0, just do not try to recompile it.
the system debugger to be used. That support was too burdensome to
maintain. GCC now emits only dwarf-2 for this target. This means you
may use either the UDK debugger or GDB to debug programs built by this
-version of GCC.
+version of GCC@.
If you are building languages other than C, you must follow the instructions
about invoking @samp{make bootstrap} because the native OpenServer
are symptoms of this problem. You may work around this by not
building affected files with that flag, by using the GNU assembler, or
-by using the assembler provided with the current version of the OS.
+by using the assembler provided with the current version of the OS@.
Users of GNU assembler should see the note below for hazards on doing
so.
If you are getting core dumps immediately upon execution of your
g77 program---and especially if it's compiled with @option{-fPIC}---try applying
@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your libf2c and
-rebuilding GCC.
+rebuilding GCC@.
Affected faults, when analyzed in a debugger, will show a stack
backtrace with a fault occurring in @code{rtld()} and the program
running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO
but is meant to be used when hosting on a system where UDK isn't the
default compiler such as OpenServer 5 or Unixware 2. This target will
generate binaries that will run on OpenServer, Unixware 2, or Unixware 7,
-with the same warnings and caveats as the SCO UDK.
+with the same warnings and caveats as the SCO UDK@.
-You can stage1 with either your native compiler or with UDK. If you
+You can stage1 with either your native compiler or with UDK@. If you
don't do a full bootstrap when initially building with your native compiler
you will have an utterly unusable pile of bits as your reward.
@heading @anchor{i860-intel-osf*}i860-intel-osf*
On the Intel Paragon (an i860 machine), if you are using operating
system version 1.0, you will get warnings or errors about redefinition
-of @code{va_arg} when you build GCC.
+of @code{va_arg} when you build GCC@.
If this happens, then you need to link most programs with the library
@file{iclib.a}. You must also modify @file{stdio.h} as follows: before
Errors involving @code{alloca} when building GCC generally are due
to an incorrect definition of @var{CC} in the Makefile or mixing files
-compiled with the native C compiler and GCC. During the stage1 phase of
+compiled with the native C compiler and GCC@. During the stage1 phase of
the build, the native AIX compiler @strong{must} be invoked as @command{cc}
(not @command{xlc}). Once @command{configure} has been informed of
@command{xlc}, one needs to use @samp{make distclean} to remove the
website does work. Binutils 2.11 is expected to include AIX 4.3
support. The GNU Assembler is necessary for libstdc++ to build. The
AIX native ld still is recommended. The native AIX tools do
-interoperate with GCC.
+interoperate with GCC@.
Linking executables and shared libraries may produce warnings of
duplicate symbols. The assembly files generated by GCC for AIX always
Some versions of the AIX binder (linker) can fail with a relocation
overflow severe error when the @option{-bbigtoc} option is used to link
-GCC-produced object files into an executable that overflows the TOC. A fix
+GCC-produced object files into an executable that overflows the TOC@. A fix
for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
available from IBM Customer Support and from its
@uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com}
website as PTF U455193.
The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
-with a segmentation fault when invoked by any version of GCC. A fix for
+with a segmentation fault when invoked by any version of GCC@. A fix for
APAR IX87327 is available from IBM Customer Support and from its
@uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com}
website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above.
@uref{http://service.boulder.ibm.com/,,service.boulder.ibm.com}
website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above.
-AIX provides National Language Support (NLS). Compilers and assemblers
+AIX provides National Language Support (NLS)@. Compilers and assemblers
use NLS to support locale-specific representations of various data
formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for
separating decimal fractions). There have been problems reported where
<hr>
@end html
@heading @anchor{m68000-hp-bsd}m68000-hp-bsd
-HP 9000 series 200 running BSD. Note that the C compiler that comes
+HP 9000 series 200 running BSD@. Note that the C compiler that comes
with this system cannot compile GCC; contact @email{law@@cygnus.com}
to get binaries of GCC for bootstrapping.
<hr>
@end html
@heading @anchor{m68k-apple-aux}m68k-apple-aux
-Apple Macintosh running A/UX.
+Apple Macintosh running A/UX@.
You may configure GCC to use either the system assembler and
linker or the GNU assembler and linker. You should use the GNU configuration
if you can, especially if you also want to use G++. You enabled
options to @code{configure}.
Note the C compiler that comes
-with this system cannot compile GCC. You can find binaries of GCC
+with this system cannot compile GCC@. You can find binaries of GCC
for bootstrapping on @code{jagubox.gsfc.nasa.gov}.
You will also a patched version of @file{/bin/ld} there that
raises some of the arbitrary limits found in the original.
<hr>
@end html
@heading @anchor{m68k-att-sysv}m68k-att-sysv
-AT&T 3b1, a.k.a.@: 7300 PC. This version of GCC cannot
+AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot
be compiled with the system C compiler, which is too buggy.
You will need to get a previous version of GCC and use it to
bootstrap. Binaries are available from the OSU-CIS archive, at
<hr>
@end html
@heading @anchor{m68k-hp-hpux}m68k-hp-hpux
-HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in
-the assembler that prevents compilation of GCC. This
+HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in
+the assembler that prevents compilation of GCC@. This
bug manifests itself during the first stage of compilation, while
building @file{libgcc2.a}:
@heading @anchor{m68k-sun}m68k-sun
Sun 3. We do not provide a configuration file to use the Sun FPA by
default, because programs that establish signal handlers for floating
-point traps inherently cannot work with the FPA.
+point traps inherently cannot work with the FPA@.
@html
</p>
<hr>
@end html
@heading @anchor{m88k-*-dgux}m88k-*-dgux
-Motorola m88k running DG/UX. To build 88open BCS native or cross
+Motorola m88k running DG/UX@. To build 88open BCS native or cross
compilers on DG/UX, specify the configuration name as
@samp{m88k-*-dguxbcs} and build in the 88open BCS software development
environment. To build ELF native or cross compilers on DG/UX, specify
then your version of @command{cc} uses the O32 ABI default. You
should set the environment variable @env{CC} to @samp{cc -n32}
-before configuring GCC.
+before configuring GCC@.
GCC does not currently support generating O32 ABI binaries in the
mips-sgi-irix6 configurations. It used to be possible to create a GCC
<hr>
@end html
@heading @anchor{mips-sony-sysv}mips-sony-sysv
-Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 (which
-uses ELF instead of COFF). Support for 5.0.2 will probably be provided
+Sony MIPS NEWS@. This works in NEWSOS 5.0.1, but not in 5.0.2 (which
+uses ELF instead of COFF)@. Support for 5.0.2 will probably be provided
soon by volunteers. In particular, the linker does not like the
code generated by GCC when shared libraries are linked in.
<hr>
@end html
@heading @anchor{ns32k-encore}ns32k-encore
-Encore ns32000 system. Encore systems are supported only under BSD.
+Encore ns32000 system. Encore systems are supported only under BSD@.
@html
</p>
You will need
@uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils-2.9.4.0.8}
-or newer for a working GCC. It is strongly recommended to recompile binutils
+or newer for a working GCC@. It is strongly recommended to recompile binutils
if you initially built it with gcc-2.7.2.x.
You can specify a default version for the @option{-mcpu=@var{cpu_type}}
<hr>
@end html
@heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe
-PowerPC system in little endian mode running Windows NT.
+PowerPC system in little endian mode running Windows NT@.
You can specify a default version for the @option{-mcpu=@var{cpu_type}}
switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
@end html
@heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach
The only operating systems supported for the IBM RT PC are AOS and
-MACH. GCC does not support AIX running on the RT. We recommend you
+MACH@. GCC does not support AIX running on the RT@. We recommend you
compile GCC with an earlier version of itself; if you compile GCC
with @code{hc}, the Metaware compiler, it will work, but you will get
mismatches between the stage 2 and stage 3 compilers in various files.
@end html
@heading @anchor{sparc-sun-*}sparc-sun-*
Sometimes on a Sun 4 you may observe a crash in the program
-@code{genflags} or @code{genoutput} while building GCC. This is said to
+@code{genflags} or @code{genoutput} while building GCC@. This is said to
be due to a bug in @code{sh}. You can probably get around it by running
@code{genflags} or @code{genoutput} manually and then retrying the
@code{make}.
run code generated by GCC; it doesn't suffice to install it only on
the hosts that run GCC itself. Second, Sun says that 106950-03 is
only a partial fix for bug 4210064, but Sun doesn't know whether the
-partial fix is adequate for GCC. Revision -08 or later should fix
+partial fix is adequate for GCC@. Revision -08 or later should fix
the bug, but (as of 1999-10-06) it is still being tested.
@end itemize
debugging information.
The system's compiler runs out of capacity when compiling @file{stmt.c}
-in GCC. You can work around this by building @file{cpp} in GCC
+in GCC@. You can work around this by building @file{cpp} in GCC
first, then use that instead of the system's preprocessor with the
system's C compiler to compile @file{stmt.c}. Here is how:
Support for old systems as hosts for GCC can cause problems if the
workarounds for compiler, library and operating system bugs affect the
-cleanliness or maintainability of the rest of GCC. In some cases, to
+cleanliness or maintainability of the rest of GCC@. In some cases, to
bring GCC up on such a system, if still possible with current GCC, may
require first installing an old version of GCC which did work on that
system, and using it to compile a more recent GCC, to avoid bugs in
@c man end
@c man begin AUTHOR
See the Info entry for @file{gcc}, or
-@w{@uref{http://gcc.gnu.org/thanks.html}}, for contributors to GCC.
+@w{@uref{http://gcc.gnu.org/thanks.html}}, for contributors to GCC@.
@c man end
@end ignore
@itemx @var{file}.C
C++ source code which must be preprocessed. Note that in @samp{.cxx},
the last two letters must both be literally @samp{x}. Likewise,
-@samp{.C} refers to a literal capital C.
+@samp{.C} refers to a literal capital C@.
@item @var{file}.f
@itemx @var{file}.for
@item @var{file}.r
Fortran source code which must be preprocessed with a RATFOR
-preprocessor (not included with GCC).
+preprocessor (not included with GCC)@.
@xref{Overall Options,,Options Controlling the Kind of Output, g77,
Using and Porting GNU Fortran}, for more details of the handling of
language; or command-line options meaningful for C and related
languages; or options that are meaningful only for C++ programs.
@xref{C Dialect Options,,Options Controlling C Dialect}, for
-explanations of options for languages related to C.
+explanations of options for languages related to C@.
@xref{C++ Dialect Options,,Options Controlling C++ Dialect}, for
explanations of options that are meaningful only for C++ programs.
@opindex aux-info
Output to the given filename prototyped declarations for all functions
declared and/or defined in a translation unit, including those in header
-files. This option is silently ignored in any language other than C.
+files. This option is silently ignored in any language other than C@.
Besides declarations, the file indicates, in comments, the origin of
each declaration (source file and line), whether the declaration was
@opindex fshort-wchar
Override the underlying type for @samp{wchar_t} to be @samp{short
unsigned int} instead of the default for the target. This option is
-useful for building programs to run under WINE.
+useful for building programs to run under WINE@.
@end table
@node C++ Dialect Options
@noindent
In this example, only @option{-frepo} is an option meant
only for C++ programs; you can use the other options with any
-language supported by GCC.
+language supported by GCC@.
Here is a list of options that are @emph{only} for compiling C++ programs:
@item -fno-nonansi-builtins
@opindex fno-nonansi-builtins
Disable built-in declarations of functions that are not mandated by
-ANSI/ISO C. These include @code{ffs}, @code{alloca}, @code{_exit},
+ANSI/ISO C@. These include @code{ffs}, @code{alloca}, @code{_exit},
@code{index}, @code{bzero}, @code{conjf}, and other related functions.
@item -fno-operator-names
Downgrade messages about nonconformant code from errors to warnings. By
default, g++ effectively sets @option{-pedantic-errors} without
@option{-pedantic}; this option reverses that. This behavior and this
-option are superseded by @option{-pedantic}, which works as it does for GNU C.
+option are superseded by @option{-pedantic}, which works as it does for GNU C@.
@item -frepo
@opindex frepo
@noindent
In this example, only @option{-fgnu-runtime} is an option meant only for
Objective-C programs; you can use the other options with any language
-supported by GCC.
+supported by GCC@.
Here is a list of options that are @emph{only} for compiling Objective-C
programs:
@item -fnext-runtime
@opindex fnext-runtime
Generate output compatible with the NeXT runtime. This is the default
-for NeXT-based systems, including Darwin and Mac OS X.
+for NeXT-based systems, including Darwin and Mac OS X@.
@item -gen-decls
@opindex gen-decls
@opindex fmessage-length
Try to format error messages so that they fit on lines of about @var{n}
characters. The default is 72 characters for g++ and 0 for the rest of
-the front ends supported by GCC. If @var{n} is zero, then no
+the front ends supported by GCC@. If @var{n} is zero, then no
line-wrapping will be done; each error message will appear on a single
line.
Valid ISO C and ISO C++ programs should compile properly with or without
this option (though a rare few will require @option{-ansi} or a
-@option{-std} option specifying the required version of ISO C). However,
+@option{-std} option specifying the required version of ISO C)@. However,
without this option, certain GNU extensions and traditional C and C++
features are supported as well. With this option, they are rejected.
@cindex unknown pragmas, warning
@cindex pragmas, warning of unknown
Warn when a #pragma directive is encountered which is not understood by
-GCC. If this command line option is used, warnings will even be issued
+GCC@. If this command line option is used, warnings will even be issued
for unknown pragmas in system header files. This is not the case if
the warnings were only enabled by the @option{-Wall} command line option.
@item -Wtraditional (C only)
@opindex Wtraditional
Warn about certain constructs that behave differently in traditional and
-ISO C. Also warn about ISO C constructs that have no traditional C
+ISO C@. Also warn about ISO C constructs that have no traditional C
equivalent, and/or problematic constructs which should be avoided.
@itemize @bullet
@item
Macro parameters that appear within string literals in the macro body.
In traditional C macro replacement takes place within string literals,
-but does not in ISO C.
+but does not in ISO C@.
@item
In traditional C, some preprocessor directives did not exist.
@item -g
@opindex g
Produce debugging information in the operating system's native format
-(stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging
+(stabs, COFF, XCOFF, or DWARF)@. GDB can work with this debugging
information.
On most systems that use stabs format, @option{-g} enables use of extra
@item -ggdb
@opindex ggdb
-Produce debugging information for use by GDB. This means to use the
+Produce debugging information for use by GDB@. This means to use the
most expressive format available (DWARF 2, stabs, or the native format
if neither of those are supported), including GDB extensions if at all
possible.
Produce debugging information in stabs format (if that is supported),
without GDB extensions. This is the format used by DBX on most BSD
systems. On MIPS, Alpha and System V Release 4 systems this option
-produces stabs debugging output which is not understood by DBX or SDB.
+produces stabs debugging output which is not understood by DBX or SDB@.
On System V Release 4 systems this option requires the GNU assembler.
@item -gstabs+
@opindex gstabs+
Produce debugging information in stabs format (if that is supported),
-using GNU extensions understood only by the GNU debugger (GDB). The
+using GNU extensions understood only by the GNU debugger (GDB)@. The
use of these extensions is likely to make other debuggers crash or
refuse to read the program.
@item -gxcoff+
@opindex gxcoff+
Produce debugging information in XCOFF format (if that is supported),
-using GNU extensions understood only by the GNU debugger (GDB). The
+using GNU extensions understood only by the GNU debugger (GDB)@. The
use of these extensions is likely to make other debuggers crash or
refuse to read the program, and may cause assemblers other than the GNU
assembler (GAS) to fail with an error.
@opindex gdwarf+
Produce debugging information in DWARF version 1 format (if that is
supported), using GNU extensions understood only by the GNU debugger
-(GDB). The use of these extensions is likely to make other debuggers
+(GDB)@. The use of these extensions is likely to make other debuggers
crash or refuse to read the program.
@item -gdwarf-2
Like @samp{%p}, but puts @samp{__} before and after the name of each
predefined macro, except for macros that start with @samp{__} or with
@samp{_@var{L}}, where @var{L} is an uppercase letter. This is for ISO
-C.
+C@.
@item %I
-Substitute a @option{-iprefix} option made from GCC_EXEC_PREFIX.
+Substitute a @option{-iprefix} option made from GCC_EXEC_PREFIX@.
@item %s
Current argument is the name of a library or startup file of some sort.
Output the accumulated preprocessor options specified by @option{-Wp}.
@item %v1
-Substitute the major version number of GCC.
+Substitute the major version number of GCC@.
(For version 2.9.5, this is 2.)
@item %v2
-Substitute the minor version number of GCC.
+Substitute the minor version number of GCC@.
(For version 2.9.5, this is 9.)
@item %v3
-Substitute the patch level number of GCC.
+Substitute the patch level number of GCC@.
(For version 2.9.5, this is 5.)
@item %a
a single space.
@item %@{@code{S}@}
-Substitutes the @code{-S} switch, if that switch was given to GCC.
+Substitutes the @code{-S} switch, if that switch was given to GCC@.
If that switch was not specified, this substitutes nothing. Note that
the leading dash is omitted when specifying this option, and it is
automatically inserted if the substitution is performed. Thus the spec
@item %@{@code{S}*:@code{X}@}
Substitutes @code{X} if one or more switches whose names start with
-@code{-S} are specified to GCC. Note that the tail part of the
+@code{-S} are specified to GCC@. Note that the tail part of the
@code{-S} option (i.e.@: the part matched by the @samp{*}) will be substituted
for each occurrence of @samp{%*} within @code{X}.
@item %@{@code{S}:@code{X}@}
-Substitutes @code{X}, but only if the @samp{-S} switch was given to GCC.
+Substitutes @code{X}, but only if the @samp{-S} switch was given to GCC@.
@item %@{!@code{S}:@code{X}@}
-Substitutes @code{X}, but only if the @samp{-S} switch was @emph{not} given to GCC.
+Substitutes @code{X}, but only if the @samp{-S} switch was @emph{not} given to GCC@.
@item %@{|@code{S}:@code{X}@}
Like %@{@code{S}:@code{X}@}, but if no @code{S} switch, substitute @samp{-}.
Substitutes @code{X}, but only if @emph{not} processing a file with suffix @code{S}.
@item %@{@code{S}|@code{P}:@code{X}@}
-Substitutes @code{X} if either @code{-S} or @code{-P} was given to GCC. This may be
+Substitutes @code{X} if either @code{-S} or @code{-P} was given to GCC@. This may be
combined with @samp{!} and @samp{.} sequences as well, although they
have a stronger binding than the @samp{|}. For example a spec string
like this:
@opindex msoft-quad-float
Generate output containing library calls for quad-word (long double)
floating point instructions. The functions called are those specified
-in the SPARC ABI. This is the default.
+in the SPARC ABI@. This is the default.
As of this writing, there are no sparc implementations that have hardware
support for the quad-word floating point instructions. They all invoke
@code{ldd} and @code{std} instructions for copies in structure
assignment, in place of twice as many @code{ld} and @code{st} pairs.
However, the use of this changed alignment directly violates the Sparc
-ABI. Thus, it's intended only for use on targets where the developer
+ABI@. Thus, it's intended only for use on targets where the developer
acknowledges that their resulting code will not be directly in line with
-the rules of the ABI.
+the rules of the ABI@.
@item -mv8
@itemx -msparclite
Use the normal memory model: Generate @code{call} instructions only when
calling functions in the same file and @code{calli} instructions
otherwise. This works if each file occupies less than 256 KB but allows
-the entire executable to be larger than 256 KB. This is the default.
+the entire executable to be larger than 256 KB@. This is the default.
@item -mlarge
@opindex mlarge
@item -msoft-float
@opindex msoft-float
Generate output containing library calls for floating point.
-@strong{Warning:} the requisite libraries are not part of GCC.
+@strong{Warning:} the requisite libraries are not part of GCC@.
Normally the facilities of the machine's usual C compiler are used, but
this can't be done directly in cross-compilation. You must make your
own arrangements to provide suitable library functions for
@item -mapcs-float
@opindex mapcs-float
Pass floating point arguments using the float point registers. This is
-one of the variants of the APCS. This option is recommended if the
+one of the variants of the APCS@. This option is recommended if the
target hardware has a floating point unit or if a lot of floating point
arithmetic is going to be performed by the code. The default is
@option{-mno-apcs-float}, since integer only code is slightly increased in
@item -mbsd
@opindex mbsd
-This option only applies to RISC iX. Emulate the native BSD-mode
+This option only applies to RISC iX@. Emulate the native BSD-mode
compiler. This is the default if @option{-ansi} is not specified.
@item -mxopen
@opindex mxopen
-This option only applies to RISC iX. Emulate the native X/Open-mode
+This option only applies to RISC iX@. Emulate the native X/Open-mode
compiler.
@item -mno-symrename
@opindex mno-symrename
-This option only applies to RISC iX. Do not run the assembler
+This option only applies to RISC iX@. Do not run the assembler
post-processor, @samp{symrename}, after code has been assembled.
Normally it is necessary to modify some of the standard symbols in
preparation for linking with the RISC iX C library; this option
@opindex mfp
This specifies the version of the floating point emulation available on
the target. Permissible values are 2 and 3. @option{-mfp=} is a synonym
-for @option{-mfpe=}, for compatibility with older versions of GCC.
+for @option{-mfpe=}, for compatibility with older versions of GCC@.
@item -mstructure-size-boundary=@var{n}
@opindex mstructure-size-boundary
@cindex debugging, 88k OCS
Include (or omit) additional debugging information (about registers used
in each stack frame) as specified in the 88open Object Compatibility
-Standard, ``OCS''. This extra information allows debugging of code that
+Standard, ``OCS''@. This extra information allows debugging of code that
has had the frame pointer eliminated. The default for DG/UX, SVr4, and
Delta 88 SVr3.2 is to include this information; other 88k configurations
omit this information by default.
@opindex mpowerpc64
@opindex mno-powerpc64
GCC supports two related instruction set architectures for the
-RS/6000 and PowerPC. The @dfn{POWER} instruction set are those
+RS/6000 and PowerPC@. The @dfn{POWER} instruction set are those
instructions supported by the @samp{rios} chip set used in the original
RS/6000 systems and the @dfn{PowerPC} instruction set is the
architecture of the Motorola MPC5xx, MPC6xx, MPC8xx microprocessors, and
You use these options to specify which instructions are available on the
processor you are using. The default value of these options is
-determined when configuring GCC. Specifying the
+determined when configuring GCC@. Specifying the
@option{-mcpu=@var{cpu_type}} overrides the specification of these
options. We recommend you use the @option{-mcpu=@var{cpu_type}} option
rather than the options listed above.
every executable file. The @option{-mfull-toc} option is selected by
default. In that case, GCC will allocate at least one TOC entry for
each unique non-automatic variable reference in your program. GCC
-will also place floating-point constants in the TOC. However, only
-16,384 entries are available in the TOC.
+will also place floating-point constants in the TOC@. However, only
+16,384 entries are available in the TOC@.
If you receive a linker error message that saying you have overflowed
the available TOC space, you can reduce the amount of TOC space used
@option{-mno-fp-in-toc} prevents GCC from putting floating-point
constants in the TOC and @option{-mno-sum-in-toc} forces GCC to
generate code to calculate the sum of an address and a constant at
-run-time instead of putting that sum into the TOC. You may specify one
+run-time instead of putting that sum into the TOC@. You may specify one
or both of these options. Each causes GCC to produce very slightly
slower and larger code at the expense of conserving TOC space.
@item -mpe
@opindex mpe
-Support @dfn{IBM RS/6000 SP} @dfn{Parallel Environment} (PE). Link an
+Support @dfn{IBM RS/6000 SP} @dfn{Parallel Environment} (PE)@. Link an
application written to use message passing with special startup code to
enable the application to run. The system must have PE installed in the
standard location (@file{/usr/lpp/ppe.poe/}), or the @file{specs} file
@item -mcall-aix
@opindex mcall-aix
On System V.4 and embedded PowerPC systems compile code using calling
-conventions that are similar to those used on AIX. This is the
+conventions that are similar to those used on AIX@. This is the
default if you configured GCC using @samp{powerpc-*-eabiaix}.
@item -mcall-solaris
@item -mfull-fp-blocks
@opindex mfull-fp-blocks
Generate full-size floating point data blocks, including the minimum
-amount of scratch space recommended by IBM. This is the default.
+amount of scratch space recommended by IBM@. This is the default.
@item -mminimum-fp-blocks
@opindex mminimum-fp-blocks
@item -mips1
@opindex mips1
-Issue instructions from level 1 of the MIPS ISA. This is the default.
+Issue instructions from level 1 of the MIPS ISA@. This is the default.
@samp{r3000} is the default @var{cpu-type} at this ISA level.
@item -mips2
and longs are 32 bits wide. For @option{-mabi=eabi} and higher ISAs, ints
are 32 bits, and longs are 64 bits wide. The width of pointer types is
the smaller of the width of longs or the width of general purpose
-registers (which in turn depends on the ISA).
+registers (which in turn depends on the ISA)@.
@item -mabi=32
@itemx -mabi=o64
@opindex mabi=n32
@opindex mabi=64
@opindex mabi=eabi
-Generate code for the indicated ABI. The default instruction level is
+Generate code for the indicated ABI@. The default instruction level is
@option{-mips1} for @samp{32}, @option{-mips3} for @samp{n32}, and
@option{-mips4} otherwise. Conversely, with @option{-mips1} or
@option{-mips2}, the default ABI is @samp{32}; otherwise, the default ABI
platforms except for the OSF/1 reference platform, using the OSF/rose
object format. If the either of the @option{-gstabs} or @option{-gstabs+}
switches are used, the @file{mips-tfile} program will encapsulate the
-stabs within MIPS ECOFF.
+stabs within MIPS ECOFF@.
@item -mgas
@opindex mgas
@item -msoft-float
@opindex msoft-float
Generate output containing library calls for floating point.
-@strong{Warning:} the requisite libraries are not part of GCC.
+@strong{Warning:} the requisite libraries are not part of GCC@.
Normally the facilities of the machine's usual C compiler are used, but
this can't be done directly in cross-compilation. You must make your
own arrangements to provide suitable library functions for
made using PC relative address, and all data is addressed using the $gp
register. No more than 65536 bytes of global data may be used. This
requires GNU as and GNU ld which do most of the work. This currently
-only works on targets which use ECOFF; it does not work with ELF.
+only works on targets which use ECOFF; it does not work with ELF@.
@item -membedded-data
@itemx -mno-embedded-data
@item -msoft-float
@opindex msoft-float
Generate output containing library calls for floating point.
-@strong{Warning:} the requisite libraries are not part of GCC.
+@strong{Warning:} the requisite libraries are not part of GCC@.
Normally the facilities of the machine's usual C compiler are used, but
this can't be done directly in cross-compilation. You must make your
own arrangements to provide suitable library functions for
The usual calling convention has functions return values of types
@code{float} and @code{double} in an FPU register, even if there
-is no FPU. The idea is that the operating system should emulate
-an FPU.
+is no FPU@. The idea is that the operating system should emulate
+an FPU@.
The option @option{-mno-fp-ret-in-387} causes such values to be returned
in ordinary CPU registers instead.
@opindex mno-fancy-math-387
Some 387 emulators do not support the @code{sin}, @code{cos} and
@code{sqrt} instructions for the 387. Specify this option to avoid
-generating those instructions. This option is the default on FreeBSD.
+generating those instructions. This option is the default on FreeBSD@.
As of revision 2.6.1, these instructions are not generated unless you
also use the @option{-funsafe-math-optimizations} switch.
@item -mdisable-indexing
@opindex mdisable-indexing
Prevent the compiler from using indexing address modes. This avoids some
-rather obscure problems when compiling MIG generated code under MACH.
+rather obscure problems when compiling MIG generated code under MACH@.
@item -mno-space-regs
@opindex mno-space-regs
win on this implementation of the i960. Complex addressing modes may not
be worthwhile on the K-series, but they definitely are on the C-series.
The default is currently @option{-mcomplex-addr} for all processors except
-the CB and CC.
+the CB and CC@.
@item -mcode-align
@itemx -mno-code-align
@item -mh
@opindex mh
-Generate code for the H8/300H.
+Generate code for the H8/300H@.
@item -ms
@opindex ms
-Generate code for the H8/S.
+Generate code for the H8/S@.
@item -ms2600
@opindex ms2600
@item -mpadstruct
@opindex mpadstruct
This option is deprecated. It pads structures to multiple of 4 bytes,
-which is incompatible with the SH ABI.
+which is incompatible with the SH ABI@.
@item -mspace
@opindex mspace
@opindex mbk
@opindex mno-bk
Allow (disallow) allocation of general integer operands into the block
-count register BK.
+count register BK@.
@item -mdb
@itemx -mno-db
@opindex mparanoid
Force the DP register to be saved on entry to an interrupt service
routine (ISR), reloaded to point to the data section, and restored on
-exit from the ISR. This should not be required unless someone has
+exit from the ISR@. This should not be required unless someone has
violated the small memory model by modifying the DP register, say within
an object library.
@opindex mrpts
@opindex mno-rpts
Enable (disable) the use of the single instruction repeat instruction
-RPTS. If a repeat block contains a single instruction, and the loop
+RPTS@. If a repeat block contains a single instruction, and the loop
count can be guaranteed to be less than the value @var{count}, GCC will
-emit a RPTS instruction instead of a RPTB. If no value is specified,
+emit a RPTS instruction instead of a RPTB@. If no value is specified,
then a RPTS will be emitted even if the loop count cannot be determined
at compile time. Note that the repeated instruction following RPTS does
not have to be reloaded from memory each iteration, thus freeing up the
@item -mhimem
@opindex mhimem
-Many ns32000 series addressing modes use displacements of up to 512MB.
+Many ns32000 series addressing modes use displacements of up to 512MB@.
If an address is above 512MB then displacements from zero can not be used.
-This option causes code to be generated which can be loaded above 512MB.
+This option causes code to be generated which can be loaded above 512MB@.
This may be useful for operating systems or ROM code.
@item -mnohimem
@table @gcctabopt
@item -mbig-endian
@opindex mbig-endian
-Generate code for a big endian target. This is the default for HPUX.
+Generate code for a big endian target. This is the default for HPUX@.
@item -mlittle-endian
@opindex mlittle-endian
@item -mno-pic
@opindex mno-pic
Generate code that does not use a global pointer register. The result
-is not position independent code, and violates the IA-64 ABI.
+is not position independent code, and violates the IA-64 ABI@.
@item -mvolatile-asm-stop
@itemx -mno-volatile-asm-stop
@cindex PIC
Generate position-independent code (PIC) suitable for use in a shared
library, if supported for the target machine. Such code accesses all
-constant addresses through a global offset table (GOT). The dynamic
+constant addresses through a global offset table (GOT)@. The dynamic
loader resolves the GOT entries when the program starts (the dynamic
loader is not part of GCC; it is part of the operating system). If
the GOT size for the linked executable exceeds a machine-specific
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.
+limit of 128K@.
@cindex aliasing of parameters
@cindex parameters, aliased
Note that you can also specify places to search using options such as
@option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These
take precedence over places specified using environment variables, which
-in turn take precedence over those specified by the configuration of GCC.
+in turn take precedence over those specified by the configuration of GCC@.
@end ifclear
@ifset INTERNALS
Note that you can also specify places to search using options such as
@option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These
take precedence over places specified using environment variables, which
-in turn take precedence over those specified by the configuration of GCC.
+in turn take precedence over those specified by the configuration of GCC@.
@xref{Driver}.
@end ifset
@node Running Protoize
@section Running Protoize
-The program @code{protoize} is an optional part of GCC. You can use
+The program @code{protoize} is an optional part of GCC@. You can use
it to add prototypes to a program, thus converting the program to ISO
C in one respect. The companion program @code{unprotoize} does the
reverse: it removes argument types from any prototypes that are found.
insn list. If a @code{define_expand} is used, one of three things
happens, based on the condition logic. The condition logic may manually
create new insns for the insn list, say via @code{emit_insn()}, and
-invoke DONE. For certain named patterns, it may invoke FAIL to tell the
+invoke DONE@. For certain named patterns, it may invoke FAIL to tell the
compiler to use an alternate way of performing that task. If it invokes
neither @code{DONE} nor @code{FAIL}, the template given in the pattern
is inserted, as if the @code{define_expand} were a @code{define_insn}.
use as an input occurs before the early result is written. Adding
alternatives of this form often allows GCC to produce better code
when only some of the inputs can be affected by the earlyclobber.
-See, for example, the @samp{mulsi3} insn of the ARM.
+See, for example, the @samp{mulsi3} insn of the ARM@.
@samp{&} does not obviate the need to write @samp{=}.
@cindex @code{nonlocal_goto_receiver} instruction pattern
@item @samp{nonlocal_goto_receiver}
This pattern, if defined, contains code needed at the target of a
-nonlocal goto after the code already generated by GCC. You will not
+nonlocal goto after the code already generated by GCC@. You will not
normally need to define this pattern. A typical reason why you might
need this pattern is if some value, such as a pointer to a global table,
must be restored when the frame pointer is restored. Note that a nonlocal
On some target machines, some standard pattern names for RTL generation
cannot be handled with single insn, but a sequence of RTL insns can
represent them. For these target machines, you can write a
-@code{define_expand} to specify how to generate the sequence of RTL.
+@code{define_expand} to specify how to generate the sequence of RTL@.
@findex define_expand
A @code{define_expand} is an RTL expression that looks almost like a
updated with the correct length of the insn.
This macro will normally not be required. A case in which it is
-required is the ROMP. On this machine, the size of an @code{addr_vec}
+required is the ROMP@. On this machine, the size of an @code{addr_vec}
insn must be increased by two to compensate for the fact that alignment
may be required.
@end table
@findex XVECEXP
@item XVECEXP (@var{exp}, @var{idx}, @var{eltnum})
Access element number @var{eltnum} in the vector which is
-in operand number @var{idx} in @var{exp}. This value is an RTX.
+in operand number @var{idx} in @var{exp}. This value is an RTX@.
It is up to you to make sure that @var{eltnum} is not negative
and is less than @code{XVECLEN (@var{exp}, @var{idx})}.
``Block'' mode represents values that are aggregates to which none of
the other modes apply. In RTL, only memory references can have this mode,
and only if they appear in string-move or vector instructions. On machines
-which have no such instructions, @code{BLKmode} will not appear in RTL.
+which have no such instructions, @code{BLKmode} will not appear in RTL@.
@findex VOIDmode
@item VOIDmode
code @code{pc} will return @code{pc_rtx}.
All instructions that do not jump alter the program counter implicitly
-by incrementing it, but there is no need to mention this in the RTL.
+by incrementing it, but there is no need to mention this in the RTL@.
@findex mem
@item (mem:@var{m} @var{addr} @var{alias})
combiner phase to add the @code{clobber} when required. You do this by
coding (@code{clobber} (@code{match_scratch} @dots{})). If you do
clobber a pseudo register, use one which appears nowhere else---generate
-a new one each time. Otherwise, you may confuse CSE.
+a new one each time. Otherwise, you may confuse CSE@.
There is one other known use for clobbering a pseudo register in a
@code{parallel}: when one of the input operands of the insn is also
@item REG_BR_PRED
These notes are found in JUMP insns after delayed branch scheduling
has taken place. They indicate both the direction and the likelihood
-of the JUMP. The format is a bitmask of ATTR_FLAG_* values.
+of the JUMP@. The format is a bitmask of ATTR_FLAG_* values.
@findex REG_FRAME_RELATED_EXPR
@item REG_FRAME_RELATED_EXPR
compiler.
People frequently have the idea of using RTL stored as text in a file as
-an interface between a language front end and the bulk of GCC. This
+an interface between a language front end and the bulk of GCC@. This
idea is not feasible.
GCC was designed to use RTL internally only. Correct RTL for a given
@findex CPP_SPEC
@item CPP_SPEC
A C string constant that tells the GCC driver program options to
-pass to CPP. It can also specify how to translate options you
-give to GCC into options for GCC to pass to the CPP.
+pass to CPP@. It can also specify how to translate options you
+give to GCC into options for GCC to pass to the CPP@.
Do not define this macro if it does not need to do anything.
@findex CPLUSPLUS_CPP_SPEC
@item CPLUSPLUS_CPP_SPEC
This macro is just like @code{CPP_SPEC}, but is used for C++, rather
-than C. If you do not define this macro, then the value of
+than C@. If you do not define this macro, then the value of
@code{CPP_SPEC} (if any) will be used instead.
@findex NO_BUILTIN_SIZE_TYPE
@findex SIGNED_CHAR_SPEC
@item SIGNED_CHAR_SPEC
A C string constant that tells the GCC driver program options to
-pass to CPP. By default, this macro is defined to pass the option
+pass to CPP@. By default, this macro is defined to pass the option
@option{-D__CHAR_UNSIGNED__} to CPP if @code{char} will be treated as
@code{unsigned char} by @code{cc1}.
Do not define this macro if it does not need to do anything.
Note that everything defined in CC1_SPEC is already passed to
@code{cc1plus} so there is no need to duplicate the contents of
-CC1_SPEC in CC1PLUS_SPEC.
+CC1_SPEC in CC1PLUS_SPEC@.
@findex ASM_SPEC
@item ASM_SPEC
@code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
@code{STANDARD_INCLUDE_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR}
and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
-and specify private search areas for GCC. The directory
+and specify private search areas for GCC@. The directory
@code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
The definition should be an initializer for an array of structures.
the stack pointer. The definition is a C expression
for the desired alignment (measured in bits). If STACK_BOUNDARY is
also defined, this macro must evaluate to a value equal to or larger
-than STACK_BOUNDARY.
+than STACK_BOUNDARY@.
@cindex @code{PUSH_ROUNDING}, interaction with @code{PREFERRED_STACK_BOUNDARY}
If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned
@findex IEEE_FLOAT_FORMAT
@item IEEE_FLOAT_FORMAT
This code indicates IEEE floating point. It is the default; there is no
-need to define this macro when the format is IEEE.
+need to define this macro when the format is IEEE@.
@findex VAX_FLOAT_FORMAT
@item VAX_FLOAT_FORMAT
If the usage of an entire class of registers depends on the target
flags, you may indicate this to GCC by using this macro to modify
@code{fixed_regs} and @code{call_used_regs} to 1 for each of the
-registers in the classes which should not be used by GCC. Also define
+registers in the classes which should not be used by GCC@. Also define
the macro @code{REG_CLASS_FROM_LETTER} to return @code{NO_REGS} if it
is called with a letter for a class that shouldn't be used.
registers to and from memory, but require a scratch register for stores
to some memory locations (e.g., those with symbolic address on the RT,
and those with certain symbolic address on the Sparc when compiling
-PIC). In some cases, both an intermediate and a scratch register are
+PIC)@. In some cases, both an intermediate and a scratch register are
required.
You should define these macros to indicate to the reload phase that it may
For machines like the Vax and 68000, where normally all arguments are
pushed, zero suffices as a definition.
-The value of the expression can also be a @code{parallel} RTX. This is
+The value of the expression can also be a @code{parallel} RTX@. This is
used when an argument is passed in multiple locations. The mode of the
of the @code{parallel} should be the mode of the entire argument. The
@code{parallel} holds any number of @code{expr_list} pairs; each one
undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
The value passed for @var{libname} is always 0, since library routines
-with special calling conventions are never compiled with GCC. The
+with special calling conventions are never compiled with GCC@. The
argument @var{libname} exists for symmetry with
@code{INIT_CUMULATIVE_ARGS}.
@c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
@item DEFAULT_PCC_STRUCT_RETURN
Define this macro to be 1 if all structure and union return values must be
in memory. Since this results in slower code, this should be defined
-only if needed for compatibility with other compilers or with an ABI.
+only if needed for compatibility with other compilers or with an ABI@.
If you define this macro to be 0, then the conventions used for structure
and union return values are decided by the @code{RETURN_IN_MEMORY} macro.
@findex mcount
The details of how @code{mcount} expects to be called are determined by
-your operating system environment, not by GCC. To figure them out,
+your operating system environment, not by GCC@. To figure them out,
compile a small program for profiling using the system's installed C
compiler and look at the assembler code that results.
Output code to call the subroutine @code{__bb_init_trace_func}
and pass two parameters to it. The first parameter is the same as
for @code{__bb_init_func}. The second parameter is the number of the
-first basic block of the function as given by BLOCK_OR_LABEL. Note
+first basic block of the function as given by BLOCK_OR_LABEL@. Note
that @code{__bb_init_trace_func} has to be called, even if the object
module has been initialized already.
@item TRANSFER_FROM_TRAMPOLINE
Define this macro if trampolines need a special subroutine to do their
work. The macro should expand to a series of @code{asm} statements
-which will be compiled with GCC. They go in a library function named
+which will be compiled with GCC@. They go in a library function named
@code{__transfer_from_trampoline}.
If you need to avoid executing the ordinary prologue code of a compiled
that alias analysis can understand machine-dependent addresses.
The typical use of this macro is to handle addresses containing
-a label_ref or symbol_ref within an UNSPEC.
+a label_ref or symbol_ref within an UNSPEC@.
@findex LEGITIMIZE_ADDRESS
@item LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win})
@item SELECT_RTX_SECTION (@var{mode}, @var{rtx})
A C statement or statements to switch to the appropriate section for
output of @var{rtx} in mode @var{mode}. You can assume that @var{rtx}
-is some kind of constant in RTL. The argument @var{mode} is redundant
+is some kind of constant in RTL@. The argument @var{mode} is redundant
except in the case of a @code{const_int} rtx. Select the section by
calling @code{text_section} or one of the alternatives for other
sections.
@item PIC_OFFSET_TABLE_REGNUM
The register number of the register used to address a table of static
data addresses in memory. In some cases this register is defined by a
-processor's ``application binary interface'' (ABI). When this macro
+processor's ``application binary interface'' (ABI)@. When this macro
is defined, RTL is generated for this register once, as with the stack
pointer and frame pointer registers. If this macro is not defined, it
is up to the machine-dependent files to allocate such a register (if
Define this macro as a C expression which is nonzero if the constant
@var{exp}, of type @code{tree}, should be output after the code for a
function. The compiler will normally output all constants before the
-function; you need not define this macro if this is OK.
+function; you need not define this macro if this is OK@.
@findex ASM_OUTPUT_POOL_EPILOGUE
@item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
The last variant uses neither arbitrary sections nor the GNU linker.
This is preferable when you want to do dynamic linking and when using
-file formats which the GNU linker does not support, such as `ECOFF'. In
+file formats which the GNU linker does not support, such as `ECOFF'@. In
this case, @code{ASM_OUTPUT_CONSTRUCTOR} does not produce an
@code{N_SETT} symbol; initialization and termination functions are
recognized simply by their names. This requires an extra program in the
You must provide this macro on machines where the addresses in a
dispatch table are relative to the table's own address. If defined, GCC
-will also use this macro on all machines when producing PIC.
+will also use this macro on all machines when producing PIC@.
@var{body} is the body of the ADDR_DIFF_VEC; it is provided so that the
mode and flags can be read.
@findex LABEL_ALIGN_AFTER_BARRIER
@item LABEL_ALIGN_AFTER_BARRIER (@var{label})
The alignment (log base 2) to put in front of @var{label}, which follows
-a BARRIER.
+a BARRIER@.
This macro need not be defined if you don't want any special alignment
to be done at such a time. Most machine descriptions do not currently
expression may be @var{regno} itself. But sometimes there are some
registers that the compiler knows about and DBX does not, or vice
versa. In such cases, some register may need to have one number in
-the compiler and another for DBX.
+the compiler and another for DBX@.
If two registers have consecutive numbers inside GCC, and they can be
used as a pair to hold a multiword value, then they @emph{must} have
those symbols in the necessary order. Any predefined types that you
don't explicitly output will be output afterward in no particular order.
-Be careful not to define this macro so that it works only for C. There
+Be careful not to define this macro so that it works only for C@. There
are no global variables to access most of the built-in types, because
another language may have another set of types. The way to output a
particular type is to look through @var{syms} to see if you can find it.
operation, this bit has to be set. Changing the PR bit requires a general
purpose register as a scratch register, hence these FPSCR sets have to
be inserted before reload, i.e.@: you can't put this into instruction emitting
-or MACHINE_DEPENDENT_REORG.
+or MACHINE_DEPENDENT_REORG@.
You can have multiple entities that are mode-switched, and select at run time
which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should
@code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to
return an integer value not larger than the corresponding element in
NUM_MODES_FOR_MODE_SWITCHING, to denote the mode that @var{entity} must
-be switched into prior to the execution of INSN.
+be switched into prior to the execution of INSN@.
@findex NORMAL_MODE
@item NORMAL_MODE (@var{entity})
This macro specifies the order in which modes for ENTITY are processed.
0 is the highest priority, NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1 the
lowest. The value of the macro should be an integer designating a mode
-for ENTITY. For any fixed @var{entity}, @code{mode_priority_to_mode}
+for ENTITY@. For any fixed @var{entity}, @code{mode_priority_to_mode}
(@var{entity}, @var{n}) shall be a bijection in 0 @dots{}
@code{num_modes_for_mode_switching}[@var{entity}] @minus{} 1 .
@findex NO_IMPLICIT_EXTERN_C
@item NO_IMPLICIT_EXTERN_C
-Define this macro if the system header files support C++ as well as C.
+Define this macro if the system header files support C++ as well as C@.
This macro inhibits the usual method of using system header files in
C++, which is to pretend that the file's contents are enclosed in
@samp{extern "C" @{@dots{}@}}.
The primary reason to define this macro is to provide compatibility with
other compilers for the same target. In general, we discourage
-definition of target-specific pragmas for GCC.
+definition of target-specific pragmas for GCC@.
If the pragma can be implemented by attributes then the macro
@samp{INSERT_ATTRIBUTES} might be a useful one to define as well.
@findex TARGET_HAS_F_SETLKW
@item TARGET_HAS_F_SETLKW
-Define this macro if the target supports file locking with fcntl / F_SETLKW.
-Note that this functionality is part of POSIX.
+Define this macro if the target supports file locking with fcntl / F_SETLKW@.
+Note that this functionality is part of POSIX@.
Defining @code{TARGET_HAS_F_SETLKW} will enable the test coverage code
to use file locking when exiting a program, which avoids race conditions
if the program has forked.