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