diff -Nrcpad gcc-3.4.4/BUGS gcc-3.4.5/BUGS
*** gcc-3.4.4/BUGS 2005-05-19 09:58:07.000000000 +0000
--- gcc-3.4.5/BUGS 2005-12-01 03:48:28.000000000 +0000
***************
*** 1,7 ****
GCC Bugs
! The latest version of this document is always available at
[1]http://gcc.gnu.org/bugs.html.
_________________________________________________________________
--- 1,7 ----
GCC Bugs
! The latest version of this document is always available at
[1]http://gcc.gnu.org/bugs.html.
_________________________________________________________________
*************** Table of Contents
*** 13,19 ****
+ [5]Where to post it
+ [6]Detailed bug reporting instructions
+ [7]Detailed bug reporting instructions for GNAT
! + [8]Detailed bug reporting instructions when using a
precompiled header
* [9]Frequently Reported Bugs in GCC
+ [10]C++
--- 13,19 ----
+ [5]Where to post it
+ [6]Detailed bug reporting instructions
+ [7]Detailed bug reporting instructions for GNAT
! + [8]Detailed bug reporting instructions when using a
precompiled header
* [9]Frequently Reported Bugs in GCC
+ [10]C++
*************** Table of Contents
*** 29,65 ****
Reporting Bugs
! The main purpose of a bug report is to enable us to fix the bug. The
! most important prerequisite for this is that the report must be
complete and self-contained.
! Before you report a bug, please check the [19]list of well-known bugs
! and, if possible, try a current development snapshot. If you want to
! report a bug with versions of GCC before 3.4 we strongly recommend
upgrading to the current release first.
! Before reporting that GCC compiles your code incorrectly, please
! compile it with gcc -Wall and see whether this shows anything wrong
with your code that could be the cause instead of a bug in GCC.
Summarized bug reporting instructions
! After this summary, you'll find detailed bug reporting instructions,
! that explain how to obtain some of the information requested in this
summary.
What we need
! Please include in your bug report all of the following items, the
first three of which can be obtained from the output of gcc -v:
* the exact version of GCC;
* the system type;
* the options given when GCC was configured/built;
* the complete command line that triggers the bug;
* the compiler output (error messages, warnings, etc.); and
! * the preprocessed file (*.i*) that triggers the bug, generated by
adding -save-temps to the complete compilation command, or, in the
! case of a bug report for the GNAT front end, a complete set of
source files (see below).
What we do not want
--- 29,65 ----
Reporting Bugs
! The main purpose of a bug report is to enable us to fix the bug. The
! most important prerequisite for this is that the report must be
complete and self-contained.
! Before you report a bug, please check the [19]list of well-known bugs
! and, if possible, try a current development snapshot. If you want to
! report a bug with versions of GCC before 3.4 we strongly recommend
upgrading to the current release first.
! Before reporting that GCC compiles your code incorrectly, please
! compile it with gcc -Wall and see whether this shows anything wrong
with your code that could be the cause instead of a bug in GCC.
Summarized bug reporting instructions
! After this summary, you'll find detailed bug reporting instructions,
! that explain how to obtain some of the information requested in this
summary.
What we need
! Please include in your bug report all of the following items, the
first three of which can be obtained from the output of gcc -v:
* the exact version of GCC;
* the system type;
* the options given when GCC was configured/built;
* the complete command line that triggers the bug;
* the compiler output (error messages, warnings, etc.); and
! * the preprocessed file (*.i*) that triggers the bug, generated by
adding -save-temps to the complete compilation command, or, in the
! case of a bug report for the GNAT front end, a complete set of
source files (see below).
What we do not want
*************** Summarized bug reporting instructions
*** 67,199 ****
* A source file that #includes header files that are left out of the
bug report (see above)
* That source file and a collection of header files.
! * An attached archive (tar, zip, shar, whatever) containing all (or
some :-) of the above.
! * A code snippet that won't cause the compiler to produce the exact
! output mentioned in the bug report (e.g., a snippet with just a
! few lines around the one that apparently triggers the bug, with
! some pieces replaced with ellipses or comments for extra
obfuscation :-)
! * The location (URL) of the package that failed to build (we won't
download it, anyway, since you've already given us what we need to
duplicate the bug, haven't you? :-)
! * An error that occurs only some of the times a certain file is
! compiled, such that retrying a sufficient number of times results
! in a successful compilation; this is a symptom of a hardware
problem, not of a compiler bug (sorry)
! * Assembly files (*.s) produced by the compiler, or any binary
! files, such as object files, executables, core files, or
precompiled header files
! * Duplicate bug reports, or reports of bugs already fixed in the
development tree, especially those that have already been reported
as fixed last week :-)
! * Bugs in the assembler, the linker or the C library. These are
! separate projects, with separate mailing lists and different bug
reporting procedures
! * Bugs in releases or snapshots of GCC not issued by the GNU
Project. Report them to whoever provided you with the release
! * Questions about the correctness or the expected behavior of
certain constructs that are not GCC extensions. Ask them in forums
dedicated to the discussion of the programming language
Where to post it
! Please submit your bug report directly to the [20]GCC bug database.
! Alternatively, you can use the gccbug script that mails your bug
report to the bug database.
! Only if all this is absolutely impossible, mail all information to
[21]gcc-bugs@gcc.gnu.org.
Detailed bug reporting instructions
! Please refer to the [22]next section when reporting bugs in GNAT, the
! Ada compiler, or to the [23]one after that when reporting bugs that
appear when using a precompiled header.
! In general, all the information we need can be obtained by collecting
! the command line below, as well as its output and the preprocessed
file it generates.
gcc -v -save-temps all-your-options source-file
! The only excuses to not send us the preprocessed sources are (i) if
! you've found a bug in the preprocessor, (ii) if you've reduced the
! testcase to a small file that doesn't include any other file or (iii)
! if the bug appears only when using precompiled headers. If you can't
! post the preprocessed sources because they're proprietary code, then
try to create a small file that triggers the same problem.
! Since we're supposed to be able to re-create the assembly output
! (extension .s), you usually should not include it in the bug report,
! although you may want to post parts of it to point out assembly code
you consider to be wrong.
! Please avoid posting an archive (.tar, .shar or .zip); we generally
! need just a single file to reproduce the bug (the .i/.ii/.f
! preprocessed file), and, by storing it in an archive, you're just
making our volunteers' jobs harder. Only when your bug report requires
multiple source files to be reproduced should you use an archive. This
! is, for example, the case if you are using INCLUDE directives in
! Fortran code, which are not processed by the preprocessor, but the
! compiler. In that case, we need the main file and all INCLUDEd files.
! In any case, make sure the compiler version, error message, etc, are
! included in the body of your bug report as plain text, even if
needlessly duplicated as part of an archive.
Detailed bug reporting instructions for GNAT
! See the [24]previous section for bug reporting instructions for GCC
language implementations other than Ada.
! Bug reports have to contain at least the following information in
order to be useful:
* the exact version of GCC, as shown by "gcc -v";
* the system type;
* the options when GCC was configured/built;
! * the exact command line passed to the gcc program triggering the
! bug (not just the flags passed to gnatmake, but gnatmake prints
the parameters it passed to gcc)
* a collection of source files for reproducing the bug, preferably a
minimal set (see below);
* a description of the expected behavior;
* a description of actual behavior.
! If your code depends on additional source files (usually package
specifications), submit the source code for these compilation units in
! a single file that is acceptable input to gnatchop, i.e. contains no
! non-Ada text. If the compilation terminated normally, you can usually
obtain a list of dependencies using the "gnatls -d main_unit" command,
! where main_unit is the file name of the main compilation unit (which
is also passed to gcc).
! If you report a bug which causes the compiler to print a bug box,
include that bug box in your report, and do not forget to send all the
source files listed after the bug box along with your report.
! If you use gnatprep, be sure to send in preprocessed sources (unless
you have to report a bug in gnatprep).
! When you have checked that your report meets these criteria, please
! submit it according to our [25]generic instructions. (If you use a
! mailing list for reporting, please include an "[Ada]" tag in the
subject.)
Detailed bug reporting instructions when using a precompiled header
! If you're encountering a bug when using a precompiled header, the
first thing to do is to delete the precompiled header, and try running
! the same GCC command again. If the bug happens again, the bug doesn't
! really involve precompiled headers, please report it without using
them by following the instructions [26]above.
! If you've found a bug while building a precompiled header (for
! instance, the compiler crashes), follow the usual instructions
[27]above.
! If you've found a real precompiled header bug, what we'll need to
! reproduce it is the sources to build the precompiled header (as a
single .i file), the source file that uses the precompiled header, any
! other headers that source file includes, and the command lines that
you used to build the precompiled header and to use it.
Please don't send us the actual precompiled header. It is likely to be
--- 67,199 ----
* A source file that #includes header files that are left out of the
bug report (see above)
* That source file and a collection of header files.
! * An attached archive (tar, zip, shar, whatever) containing all (or
some :-) of the above.
! * A code snippet that won't cause the compiler to produce the exact
! output mentioned in the bug report (e.g., a snippet with just a
! few lines around the one that apparently triggers the bug, with
! some pieces replaced with ellipses or comments for extra
obfuscation :-)
! * The location (URL) of the package that failed to build (we won't
download it, anyway, since you've already given us what we need to
duplicate the bug, haven't you? :-)
! * An error that occurs only some of the times a certain file is
! compiled, such that retrying a sufficient number of times results
! in a successful compilation; this is a symptom of a hardware
problem, not of a compiler bug (sorry)
! * Assembly files (*.s) produced by the compiler, or any binary
! files, such as object files, executables, core files, or
precompiled header files
! * Duplicate bug reports, or reports of bugs already fixed in the
development tree, especially those that have already been reported
as fixed last week :-)
! * Bugs in the assembler, the linker or the C library. These are
! separate projects, with separate mailing lists and different bug
reporting procedures
! * Bugs in releases or snapshots of GCC not issued by the GNU
Project. Report them to whoever provided you with the release
! * Questions about the correctness or the expected behavior of
certain constructs that are not GCC extensions. Ask them in forums
dedicated to the discussion of the programming language
Where to post it
! Please submit your bug report directly to the [20]GCC bug database.
! Alternatively, you can use the gccbug script that mails your bug
report to the bug database.
! Only if all this is absolutely impossible, mail all information to
[21]gcc-bugs@gcc.gnu.org.
Detailed bug reporting instructions
! Please refer to the [22]next section when reporting bugs in GNAT, the
! Ada compiler, or to the [23]one after that when reporting bugs that
appear when using a precompiled header.
! In general, all the information we need can be obtained by collecting
! the command line below, as well as its output and the preprocessed
file it generates.
gcc -v -save-temps all-your-options source-file
! The only excuses to not send us the preprocessed sources are (i) if
! you've found a bug in the preprocessor, (ii) if you've reduced the
! testcase to a small file that doesn't include any other file or (iii)
! if the bug appears only when using precompiled headers. If you can't
! post the preprocessed sources because they're proprietary code, then
try to create a small file that triggers the same problem.
! Since we're supposed to be able to re-create the assembly output
! (extension .s), you usually should not include it in the bug report,
! although you may want to post parts of it to point out assembly code
you consider to be wrong.
! Please avoid posting an archive (.tar, .shar or .zip); we generally
! need just a single file to reproduce the bug (the .i/.ii/.f
! preprocessed file), and, by storing it in an archive, you're just
making our volunteers' jobs harder. Only when your bug report requires
multiple source files to be reproduced should you use an archive. This
! is, for example, the case if you are using INCLUDE directives in
! Fortran code, which are not processed by the preprocessor, but the
! compiler. In that case, we need the main file and all INCLUDEd files.
! In any case, make sure the compiler version, error message, etc, are
! included in the body of your bug report as plain text, even if
needlessly duplicated as part of an archive.
Detailed bug reporting instructions for GNAT
! See the [24]previous section for bug reporting instructions for GCC
language implementations other than Ada.
! Bug reports have to contain at least the following information in
order to be useful:
* the exact version of GCC, as shown by "gcc -v";
* the system type;
* the options when GCC was configured/built;
! * the exact command line passed to the gcc program triggering the
! bug (not just the flags passed to gnatmake, but gnatmake prints
the parameters it passed to gcc)
* a collection of source files for reproducing the bug, preferably a
minimal set (see below);
* a description of the expected behavior;
* a description of actual behavior.
! If your code depends on additional source files (usually package
specifications), submit the source code for these compilation units in
! a single file that is acceptable input to gnatchop, i.e. contains no
! non-Ada text. If the compilation terminated normally, you can usually
obtain a list of dependencies using the "gnatls -d main_unit" command,
! where main_unit is the file name of the main compilation unit (which
is also passed to gcc).
! If you report a bug which causes the compiler to print a bug box,
include that bug box in your report, and do not forget to send all the
source files listed after the bug box along with your report.
! If you use gnatprep, be sure to send in preprocessed sources (unless
you have to report a bug in gnatprep).
! When you have checked that your report meets these criteria, please
! submit it according to our [25]generic instructions. (If you use a
! mailing list for reporting, please include an "[Ada]" tag in the
subject.)
Detailed bug reporting instructions when using a precompiled header
! If you're encountering a bug when using a precompiled header, the
first thing to do is to delete the precompiled header, and try running
! the same GCC command again. If the bug happens again, the bug doesn't
! really involve precompiled headers, please report it without using
them by following the instructions [26]above.
! If you've found a bug while building a precompiled header (for
! instance, the compiler crashes), follow the usual instructions
[27]above.
! If you've found a real precompiled header bug, what we'll need to
! reproduce it is the sources to build the precompiled header (as a
single .i file), the source file that uses the precompiled header, any
! other headers that source file includes, and the command lines that
you used to build the precompiled header and to use it.
Please don't send us the actual precompiled header. It is likely to be
*************** Detailed bug reporting instructions when
*** 202,215 ****
Frequently Reported Bugs in GCC
! This is a list of bugs in GCC that are reported very often, but not
! yet fixed. While it is certainly better to fix bugs instead of
! documenting them, this document might save people the effort of
writing a bug report when the bug is already well-known.
! There are many reasons why a reported bug doesn't get fixed. It might
! be difficult to fix, or fixing it might break compatibility. Often,
! reports get a low priority when there is a simple work-around. In
particular, bugs caused by invalid code have a simple work-around: fix
the code.
_________________________________________________________________
--- 202,215 ----
Frequently Reported Bugs in GCC
! This is a list of bugs in GCC that are reported very often, but not
! yet fixed. While it is certainly better to fix bugs instead of
! documenting them, this document might save people the effort of
writing a bug report when the bug is already well-known.
! There are many reasons why a reported bug doesn't get fixed. It might
! be difficult to fix, or fixing it might break compatibility. Often,
! reports get a low priority when there is a simple work-around. In
particular, bugs caused by invalid code have a simple work-around: fix
the code.
_________________________________________________________________
*************** C++
*** 219,239 ****
Missing features
The export keyword is not implemented.
! Most C++ compilers (G++ included) do not yet implement export,
! which is necessary for separate compilation of template
! declarations and definitions. Without export, a template
! definition must be in scope to be used. The obvious workaround
! is simply to place all definitions in the header itself.
! Alternatively, the compilation unit containing template
definitions may be included from the header.
Bugs fixed in the 3.4 series
! The following bugs are present up to (and including) GCC 3.3.x. They
have been fixed in 3.4.0.
Two-stage name-lookup.
! GCC did not implement two-stage name-lookup (also see
[28]below).
Covariant return types.
--- 219,239 ----
Missing features
The export keyword is not implemented.
! Most C++ compilers (G++ included) do not yet implement export,
! which is necessary for separate compilation of template
! declarations and definitions. Without export, a template
! definition must be in scope to be used. The obvious workaround
! is simply to place all definitions in the header itself.
! Alternatively, the compilation unit containing template
definitions may be included from the header.
Bugs fixed in the 3.4 series
! The following bugs are present up to (and including) GCC 3.3.x. They
have been fixed in 3.4.0.
Two-stage name-lookup.
! GCC did not implement two-stage name-lookup (also see
[28]below).
Covariant return types.
*************** A bar()
*** 262,318 ****
return (A()); // return A temporary
}
! Although being valid code, each of the three lines with a
! comment was rejected by GCC. The work-arounds for older
compiler versions proposed below do not change the semantics of
the programs at all.
The problem in the first case was that GCC started to parse the
! declaration of b as a function called b returning B, taking a
function returning A as an argument. When it encountered the 1,
! it was too late. To show the compiler that this should be
! really an expression, a comma operator with a dummy argument
could be used:
B b((0,A()),A(1));
! The work-around for simpler cases like the second one was to
! add additional parentheses around the expressions that were
mistaken as declarations:
(B(A(2))).foo();
In the third case, however, additional parentheses were causing
! the problems: The compiler interpreted A() as a function
(taking no arguments, returning A), and (A()) as a cast lacking
! an expression to be casted, hence the parse error. The
work-around was to omit the parentheses:
return A();
! This problem occurred in a number of variants; in throw
! statements, people also frequently put the object in
parentheses.
_________________________________________________________________
Fortran
! Fortran bugs are documented in the G77 manual rather than explicitly
! listed here. Please see [29]Known Causes of Trouble with GNU Fortran
in the G77 manual.
_________________________________________________________________
Non-bugs
! The following are not actually bugs, but are reported often enough to
warrant a mention here.
! It is not always a bug in the compiler, if code which "worked" in a
! previous version, is now rejected. Earlier versions of GCC sometimes
were less picky about standard conformance and accepted invalid source
! code. In addition, programming languages themselves change, rendering
! code invalid that used to be conforming (this holds especially for
! C++). In either case, you should update your code to match recent
language standards.
_________________________________________________________________
--- 262,318 ----
return (A()); // return A temporary
}
! Although being valid code, each of the three lines with a
! comment was rejected by GCC. The work-arounds for older
compiler versions proposed below do not change the semantics of
the programs at all.
The problem in the first case was that GCC started to parse the
! declaration of b as a function called b returning B, taking a
function returning A as an argument. When it encountered the 1,
! it was too late. To show the compiler that this should be
! really an expression, a comma operator with a dummy argument
could be used:
B b((0,A()),A(1));
! The work-around for simpler cases like the second one was to
! add additional parentheses around the expressions that were
mistaken as declarations:
(B(A(2))).foo();
In the third case, however, additional parentheses were causing
! the problems: The compiler interpreted A() as a function
(taking no arguments, returning A), and (A()) as a cast lacking
! an expression to be casted, hence the parse error. The
work-around was to omit the parentheses:
return A();
! This problem occurred in a number of variants; in throw
! statements, people also frequently put the object in
parentheses.
_________________________________________________________________
Fortran
! Fortran bugs are documented in the G77 manual rather than explicitly
! listed here. Please see [29]Known Causes of Trouble with GNU Fortran
in the G77 manual.
_________________________________________________________________
Non-bugs
! The following are not actually bugs, but are reported often enough to
warrant a mention here.
! It is not always a bug in the compiler, if code which "worked" in a
! previous version, is now rejected. Earlier versions of GCC sometimes
were less picky about standard conformance and accepted invalid source
! code. In addition, programming languages themselves change, rendering
! code invalid that used to be conforming (this holds especially for
! C++). In either case, you should update your code to match recent
language standards.
_________________________________________________________________
*************** General
*** 320,326 ****
Problems with floating point numbers - the [30]most often reported
non-bug.
! In a number of cases, GCC appears to perform floating point
computations incorrectly. For example, the C++ program
#include
--- 320,326 ----
Problems with floating point numbers - the [30]most often reported
non-bug.
! In a number of cases, GCC appears to perform floating point
computations incorrectly. For example, the C++ program
#include
*************** int main()
*** 333,348 ****
return 0;
}
! might print 50 on some systems and optimization levels, and 49
on others.
! This is the result of rounding: The computer cannot represent
all real numbers exactly, so it has to use approximations. When
! computing with approximation, the computer needs to round to
the nearest representable number.
! This is not a bug in the compiler, but an inherent limitation
! of the floating point types. Please study [31]this paper for
more information.
_________________________________________________________________
--- 333,348 ----
return 0;
}
! might print 50 on some systems and optimization levels, and 49
on others.
! This is the result of rounding: The computer cannot represent
all real numbers exactly, so it has to use approximations. When
! computing with approximation, the computer needs to round to
the nearest representable number.
! This is not a bug in the compiler, but an inherent limitation
! of the floating point types. Please study [31]this paper for
more information.
_________________________________________________________________
*************** foo(i,++i)
*** 357,370 ****
i*(++i) /* special case with foo=="operator*" */
std::cout << i << ++i /* foo(foo(std::cout,i),++i) */
! since the i without increment can be evaluated before or after
++i.
! The C and C++ standards have the notion of "sequence points".
! Everything that happens between two sequence points happens in
! an unspecified order, but it has to happen after the first and
! before the second sequence point. The end of a statement and a
! function call are examples for sequence points, whereas
assignments and the comma between function arguments are not.
Modifying a value twice between two sequence points as shown in
--- 357,370 ----
i*(++i) /* special case with foo=="operator*" */
std::cout << i << ++i /* foo(foo(std::cout,i),++i) */
! since the i without increment can be evaluated before or after
++i.
! The C and C++ standards have the notion of "sequence points".
! Everything that happens between two sequence points happens in
! an unspecified order, but it has to happen after the first and
! before the second sequence point. The end of a statement and a
! function call are examples for sequence points, whereas
assignments and the comma between function arguments are not.
Modifying a value twice between two sequence points as shown in
*************** foo(++i,++i)
*** 375,389 ****
(++i)*(++i) /* special case with foo=="operator*" */
std::cout << ++i << ++i /* foo(foo(std::cout,++i),++i) */
! This leads to undefined behavior (i.e. the compiler can do
anything).
Casting does not work as expected when optimization is turned on.
! This is often caused by a violation of aliasing rules, which
! are part of the ISO C standard. These rules say that a program
is invalid if you try to access a variable through a pointer of
! an incompatible type. This is happening in the following
! example where a short is accessed through a pointer to integer
(the code assumes 16-bit shorts and 32-bit ints):
#include
--- 375,389 ----
(++i)*(++i) /* special case with foo=="operator*" */
std::cout << ++i << ++i /* foo(foo(std::cout,++i),++i) */
! This leads to undefined behavior (i.e. the compiler can do
anything).
Casting does not work as expected when optimization is turned on.
! This is often caused by a violation of aliasing rules, which
! are part of the ISO C standard. These rules say that a program
is invalid if you try to access a variable through a pointer of
! an incompatible type. This is happening in the following
! example where a short is accessed through a pointer to integer
(the code assumes 16-bit shorts and 32-bit ints):
#include
*************** int main()
*** 401,435 ****
return 0;
}
! The aliasing rules were designed to allow compilers more
! aggressive optimization. Basically, a compiler can assume that
! all changes to variables happen through pointers or references
! to variables of a type compatible to the accessed variable.
! Dereferencing a pointer that violates the aliasing rules
results in undefined behavior.
! In the case above, the compiler may assume that no access
! through an integer pointer can change the array a, consisting
! of shorts. Thus, printf may be called with the original values
of a[0] and a[1]. What really happens is up to the compiler and
may change with architecture and optimization level.
! Recent versions of GCC turn on the option -fstrict-aliasing
! (which allows alias-based optimizations) by default with -O2.
And some architectures then really print "1111 1111" as result.
! Without optimization the executable will generate the
"expected" output "2222 2222".
! To disable optimizations based on alias-analysis for faulty
! legacy code, the option -fno-strict-aliasing can be used as a
work-around.
The option -Wstrict-aliasing (which is included in -Wall) warns
about some - but not all - cases of violation of aliasing rules
when -fstrict-aliasing is active.
! To fix the code above, you can use a union instead of a cast
! (note that this is a GCC extension which might not work with
other compilers):
#include
--- 401,435 ----
return 0;
}
! The aliasing rules were designed to allow compilers more
! aggressive optimization. Basically, a compiler can assume that
! all changes to variables happen through pointers or references
! to variables of a type compatible to the accessed variable.
! Dereferencing a pointer that violates the aliasing rules
results in undefined behavior.
! In the case above, the compiler may assume that no access
! through an integer pointer can change the array a, consisting
! of shorts. Thus, printf may be called with the original values
of a[0] and a[1]. What really happens is up to the compiler and
may change with architecture and optimization level.
! Recent versions of GCC turn on the option -fstrict-aliasing
! (which allows alias-based optimizations) by default with -O2.
And some architectures then really print "1111 1111" as result.
! Without optimization the executable will generate the
"expected" output "2222 2222".
! To disable optimizations based on alias-analysis for faulty
! legacy code, the option -fno-strict-aliasing can be used as a
work-around.
The option -Wstrict-aliasing (which is included in -Wall) warns
about some - but not all - cases of violation of aliasing rules
when -fstrict-aliasing is active.
! To fix the code above, you can use a union instead of a cast
! (note that this is a GCC extension which might not work with
other compilers):
#include
*************** int main()
*** 453,463 ****
Now the result will always be "2222 2222".
! For some more insight into the subject, please have a look at
[33]this article.
Cannot use preprocessor directive in macro arguments.
! Let me guess... you used an older version of GCC to compile
code that looks something like this:
memcpy(dest, src,
--- 453,463 ----
Now the result will always be "2222 2222".
! For some more insight into the subject, please have a look at
[33]this article.
Cannot use preprocessor directive in macro arguments.
! Let me guess... you used an older version of GCC to compile
code that looks something like this:
memcpy(dest, src,
*************** test.c:8: undefined or invalid # directi
*** 479,501 ****
test.c:9: parse error before `24'
test.c:10: undefined or invalid # directive
! This is because your C library's happens to define
! memcpy as a macro - which is perfectly legitimate. In recent
versions of glibc, for example, printf is among those functions
which are implemented as macros.
! Versions of GCC prior to 3.3 did not allow you to put #ifdef
(or any other preprocessor directive) inside the arguments of a
macro. The code therefore would not compile.
As of GCC 3.3 this kind of construct is always accepted and the
! preprocessor will probably do what you expect, but see the
manual for detailed semantics.
! However, this kind of code is not portable. It is "undefined
! behavior" according to the C standard; that means different
! compilers may do different things with it. It is always
! possible to rewrite code which uses conditionals inside macros
so that it doesn't. You could write the above example
#ifdef PLATFORM1
--- 479,501 ----
test.c:9: parse error before `24'
test.c:10: undefined or invalid # directive
! This is because your C library's happens to define
! memcpy as a macro - which is perfectly legitimate. In recent
versions of glibc, for example, printf is among those functions
which are implemented as macros.
! Versions of GCC prior to 3.3 did not allow you to put #ifdef
(or any other preprocessor directive) inside the arguments of a
macro. The code therefore would not compile.
As of GCC 3.3 this kind of construct is always accepted and the
! preprocessor will probably do what you expect, but see the
manual for detailed semantics.
! However, this kind of code is not portable. It is "undefined
! behavior" according to the C standard; that means different
! compilers may do different things with it. It is always
! possible to rewrite code which uses conditionals inside macros
so that it doesn't. You could write the above example
#ifdef PLATFORM1
*************** test.c:10: undefined or invalid # direct
*** 504,535 ****
memcpy(dest, src, 24);
#endif
! This is a bit more typing, but I personally think it's better
style in addition to being more portable.
Cannot initialize a static variable with stdin.
! This has nothing to do with GCC, but people ask us about it a
lot. Code like this:
#include
FILE *yyin = stdin;
! will not compile with GNU libc, because stdin is not a
! constant. This was done deliberately, to make it easier to
! maintain binary compatibility when the type FILE needs to be
changed. It is surprising for people used to traditional Unix C
libraries, but it is permitted by the C standard.
! This construct commonly occurs in code generated by old
! versions of lex or yacc. We suggest you try regenerating the
! parser with a current version of flex or bison, respectively.
! In your own code, the appropriate fix is to move the
initialization to the beginning of main.
! There is a common misconception that the GCC developers are
! responsible for GNU libc. These are in fact two entirely
! separate projects; please check the [34]GNU libc web pages for
details.
_________________________________________________________________
--- 504,535 ----
memcpy(dest, src, 24);
#endif
! This is a bit more typing, but I personally think it's better
style in addition to being more portable.
Cannot initialize a static variable with stdin.
! This has nothing to do with GCC, but people ask us about it a
lot. Code like this:
#include
FILE *yyin = stdin;
! will not compile with GNU libc, because stdin is not a
! constant. This was done deliberately, to make it easier to
! maintain binary compatibility when the type FILE needs to be
changed. It is surprising for people used to traditional Unix C
libraries, but it is permitted by the C standard.
! This construct commonly occurs in code generated by old
! versions of lex or yacc. We suggest you try regenerating the
! parser with a current version of flex or bison, respectively.
! In your own code, the appropriate fix is to move the
initialization to the beginning of main.
! There is a common misconception that the GCC developers are
! responsible for GNU libc. These are in fact two entirely
! separate projects; please check the [34]GNU libc web pages for
details.
_________________________________________________________________
*************** C++
*** 537,592 ****
Nested classes can access private members and types of the containing
class.
! Defect report 45 clarifies that nested classes are members of
! the class they are nested in, and so are granted access to
private members of that class.
G++ emits two copies of constructors and destructors.
! In general there are three types of constructors (and
destructors).
1. The complete object constructor/destructor.
2. The base object constructor/destructor.
3. The allocating constructor/deallocating destructor.
! The first two are different, when virtual base classes are
involved.
Global destructors are not run in the correct order.
! Global destructors should be run in the reverse order of their
! constructors completing. In most cases this is the same as the
! reverse order of constructors starting, but sometimes it is
! different, and that is important. You need to compile and link
! your programs with --use-cxa-atexit. We have not turned this
! switch on by default, as it requires a cxa aware runtime
library (libc, glibc, or equivalent).
Classes in exception specifiers must be complete types.
! [15.4]/1 tells you that you cannot have an incomplete type, or
! pointer to incomplete (other than cv void *) in an exception
specification.
Exceptions don't work in multithreaded applications.
! You need to rebuild g++ and libstdc++ with --enable-threads.
! Remember, C++ exceptions are not like hardware interrupts. You
! cannot throw an exception in one thread and catch it in
! another. You cannot throw an exception from a signal handler
and catch it in the main thread.
Templates, scoping, and digraphs.
! If you have a class in the global namespace, say named X, and
want to give it as a template argument to some other class, say
std::vector, then std::vector<::X> fails with a parser error.
! The reason is that the standard mandates that the sequence <:
! is treated as if it were the token [. (There are several such
! combinations of characters - they are called digraphs.)
! Depending on the version, the compiler then reports a parse
! error before the character : (the colon before X) or a missing
closing bracket ].
! The simplest way to avoid this is to write std::vector< ::X>,
! i.e. place a space between the opening angle bracket and the
scope operator.
Copy constructor access check while initializing a reference.
--- 537,592 ----
Nested classes can access private members and types of the containing
class.
! Defect report 45 clarifies that nested classes are members of
! the class they are nested in, and so are granted access to
private members of that class.
G++ emits two copies of constructors and destructors.
! In general there are three types of constructors (and
destructors).
1. The complete object constructor/destructor.
2. The base object constructor/destructor.
3. The allocating constructor/deallocating destructor.
! The first two are different, when virtual base classes are
involved.
Global destructors are not run in the correct order.
! Global destructors should be run in the reverse order of their
! constructors completing. In most cases this is the same as the
! reverse order of constructors starting, but sometimes it is
! different, and that is important. You need to compile and link
! your programs with --use-cxa-atexit. We have not turned this
! switch on by default, as it requires a cxa aware runtime
library (libc, glibc, or equivalent).
Classes in exception specifiers must be complete types.
! [15.4]/1 tells you that you cannot have an incomplete type, or
! pointer to incomplete (other than cv void *) in an exception
specification.
Exceptions don't work in multithreaded applications.
! You need to rebuild g++ and libstdc++ with --enable-threads.
! Remember, C++ exceptions are not like hardware interrupts. You
! cannot throw an exception in one thread and catch it in
! another. You cannot throw an exception from a signal handler
and catch it in the main thread.
Templates, scoping, and digraphs.
! If you have a class in the global namespace, say named X, and
want to give it as a template argument to some other class, say
std::vector, then std::vector<::X> fails with a parser error.
! The reason is that the standard mandates that the sequence <:
! is treated as if it were the token [. (There are several such
! combinations of characters - they are called digraphs.)
! Depending on the version, the compiler then reports a parse
! error before the character : (the colon before X) or a missing
closing bracket ].
! The simplest way to avoid this is to write std::vector< ::X>,
! i.e. place a space between the opening angle bracket and the
scope operator.
Copy constructor access check while initializing a reference.
*************** void bar(void)
*** 614,632 ****
}
Starting with GCC 3.4.0, binding an rvalue to a const reference
! requires an accessible copy constructor. This might be
! surprising at first sight, especially since most popular
compilers do not correctly implement this rule.
The C++ Standard says that a temporary object should be created
! in this context and its contents filled with a copy of the
! object we are trying to bind to the reference; it also says
! that the temporary copy can be elided, but the semantic
! constraints (eg. accessibility) of the copy constructor still
have to be checked.
! For further information, you can consult the following
! paragraphs of the C++ standard: [dcl.init.ref]/5, bullet 2,
sub-bullet 1, and [class.temporary]/2.
Common problems when upgrading the compiler
--- 614,632 ----
}
Starting with GCC 3.4.0, binding an rvalue to a const reference
! requires an accessible copy constructor. This might be
! surprising at first sight, especially since most popular
compilers do not correctly implement this rule.
The C++ Standard says that a temporary object should be created
! in this context and its contents filled with a copy of the
! object we are trying to bind to the reference; it also says
! that the temporary copy can be elided, but the semantic
! constraints (eg. accessibility) of the copy constructor still
have to be checked.
! For further information, you can consult the following
! paragraphs of the C++ standard: [dcl.init.ref]/5, bullet 2,
sub-bullet 1, and [class.temporary]/2.
Common problems when upgrading the compiler
*************** void bar(void)
*** 634,714 ****
ABI changes
The C++ application binary interface (ABI) consists of two components:
! the first defines how the elements of classes are laid out, how
! functions are called, how function names are mangled, etc; the second
part deals with the internals of the objects in libstdc++. Although we
! strive for a non-changing ABI, so far we have had to modify it with
! each major release. If you change your compiler to a different major
release you must recompile all libraries that contain C++ code. If you
! fail to do so you risk getting linker errors or malfunctioning
programs. Some of our Java support libraries also contain C++ code, so
you might want to recompile all libraries to be safe. It should not be
necessary to recompile if you have changed to a bug-fix release of the
! same version of the compiler; bug-fix releases are careful to avoid
ABI changes. See also the [35]compatibility section of the GCC manual.
! Remark: A major release is designated by a change to the first or
! second component of the two- or three-part version number. A minor
! (bug-fix) release is designated by a change to the third component
! only. Thus GCC 3.2 and 3.3 are major releases, while 3.3.1 and 3.3.2
! are bug-fix releases for GCC 3.3. With the 3.4 series we are
! introducing a new naming scheme; the first release of this series is
3.4.0 instead of just 3.4.
Standard conformance
! With each release, we try to make G++ conform closer to the ISO C++
! standard (available at [36]http://www.ncits.org/cplusplus.htm). We
! have also implemented some of the core and library defect reports
(available at
! [37]http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html &
[38]http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
respectively).
! Non-conforming legacy code that worked with older versions of GCC may
! be rejected by more recent compilers. There is no command-line switch
! to ensure compatibility in general, because trying to parse
! standard-conforming and old-style code at the same time would render
! the C++ frontend unmaintainable. However, some non-conforming
! constructs are allowed when the command-line option -fpermissive is
used.
! Two milestones in standard conformance are GCC 3.0 (including a major
! overhaul of the standard library) and the 3.4.0 version (with its new
C++ parser).
New in GCC 3.0
! * The standard library is much more conformant, and uses the std::
namespace (which is now a real namespace, not an alias for ::).
* The standard header files for the c library don't end with .h, but
begin with c (i.e. rather than ). The .h names
are still available, but are deprecated.
* is deprecated, use instead.
! * streambuf::seekoff & streambuf::seekpos are private, instead use
streambuf::pubseekoff & streambuf::pubseekpos respectively.
* If std::operator << (std::ostream &, long long) doesn't exist, you
need to recompile libstdc++ with --enable-long-long.
! If you get lots of errors about things like cout not being found,
you've most likely forgotten to tell the compiler to look in the std::
namespace. There are several ways to do this:
* Say std::cout at the call. This is the most explicit way of saying
what you mean.
! * Say using std::cout; somewhere before the call. You will need to
! do this for each function or type you wish to use from the
standard library.
! * Say using namespace std; somewhere before the call. This is the
! quick-but-dirty fix. This brings the whole of the std:: namespace
! into scope. Never do this in a header file, as every user of your
header file will be affected by this decision.
New in GCC 3.4.0
! The new parser brings a lot of improvements, especially concerning
name-lookup.
! * The "implicit typename" extension got removed (it was already
! deprecated since GCC 3.1), so that the following code is now
rejected, see [14.6]:
template struct A
--- 634,714 ----
ABI changes
The C++ application binary interface (ABI) consists of two components:
! the first defines how the elements of classes are laid out, how
! functions are called, how function names are mangled, etc; the second
part deals with the internals of the objects in libstdc++. Although we
! strive for a non-changing ABI, so far we have had to modify it with
! each major release. If you change your compiler to a different major
release you must recompile all libraries that contain C++ code. If you
! fail to do so you risk getting linker errors or malfunctioning
programs. Some of our Java support libraries also contain C++ code, so
you might want to recompile all libraries to be safe. It should not be
necessary to recompile if you have changed to a bug-fix release of the
! same version of the compiler; bug-fix releases are careful to avoid
ABI changes. See also the [35]compatibility section of the GCC manual.
! Remark: A major release is designated by a change to the first or
! second component of the two- or three-part version number. A minor
! (bug-fix) release is designated by a change to the third component
! only. Thus GCC 3.2 and 3.3 are major releases, while 3.3.1 and 3.3.2
! are bug-fix releases for GCC 3.3. With the 3.4 series we are
! introducing a new naming scheme; the first release of this series is
3.4.0 instead of just 3.4.
Standard conformance
! With each release, we try to make G++ conform closer to the ISO C++
! standard (available at [36]http://www.ncits.org/cplusplus.htm). We
! have also implemented some of the core and library defect reports
(available at
! [37]http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html &
[38]http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
respectively).
! Non-conforming legacy code that worked with older versions of GCC may
! be rejected by more recent compilers. There is no command-line switch
! to ensure compatibility in general, because trying to parse
! standard-conforming and old-style code at the same time would render
! the C++ frontend unmaintainable. However, some non-conforming
! constructs are allowed when the command-line option -fpermissive is
used.
! Two milestones in standard conformance are GCC 3.0 (including a major
! overhaul of the standard library) and the 3.4.0 version (with its new
C++ parser).
New in GCC 3.0
! * The standard library is much more conformant, and uses the std::
namespace (which is now a real namespace, not an alias for ::).
* The standard header files for the c library don't end with .h, but
begin with c (i.e. rather than ). The .h names
are still available, but are deprecated.
* is deprecated, use instead.
! * streambuf::seekoff & streambuf::seekpos are private, instead use
streambuf::pubseekoff & streambuf::pubseekpos respectively.
* If std::operator << (std::ostream &, long long) doesn't exist, you
need to recompile libstdc++ with --enable-long-long.
! If you get lots of errors about things like cout not being found,
you've most likely forgotten to tell the compiler to look in the std::
namespace. There are several ways to do this:
* Say std::cout at the call. This is the most explicit way of saying
what you mean.
! * Say using std::cout; somewhere before the call. You will need to
! do this for each function or type you wish to use from the
standard library.
! * Say using namespace std; somewhere before the call. This is the
! quick-but-dirty fix. This brings the whole of the std:: namespace
! into scope. Never do this in a header file, as every user of your
header file will be affected by this decision.
New in GCC 3.4.0
! The new parser brings a lot of improvements, especially concerning
name-lookup.
! * The "implicit typename" extension got removed (it was already
! deprecated since GCC 3.1), so that the following code is now
rejected, see [14.6]:
template struct A
*************** template struct B
*** 724,730 ****
B b;
! * For similar reasons, the following code now requires the template
keyword, see [14.2]:
template struct A
--- 724,730 ----
B b;
! * For similar reasons, the following code now requires the template
keyword, see [14.2]:
template struct A
*************** template struct B
*** 740,746 ****
B b;
! * We now have two-stage name-lookup, so that the following code is
rejected, see [14.6]/9:
template int foo()
--- 740,746 ----
B b;
! * We now have two-stage name-lookup, so that the following code is
rejected, see [14.6]/9:
template int foo()
*************** template struct B : A
*** 766,772 ****
int foo5() { return j; } // OK
};
! In addition to the problems listed above, the manual contains a
section on [39]Common Misunderstandings with GNU C++.
References
--- 766,772 ----
int foo5() { return j; } // OK
};
! In addition to the problems listed above, the manual contains a
section on [39]Common Misunderstandings with GNU C++.
References
diff -Nrcpad gcc-3.4.4/ChangeLog gcc-3.4.5/ChangeLog
*** gcc-3.4.4/ChangeLog 2005-05-19 07:46:15.000000000 +0000
--- gcc-3.4.5/ChangeLog 2005-12-01 02:39:46.000000000 +0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff -Nrcpad gcc-3.4.4/config/ChangeLog gcc-3.4.5/config/ChangeLog
*** gcc-3.4.4/config/ChangeLog 2005-05-19 07:46:27.000000000 +0000
--- gcc-3.4.5/config/ChangeLog 2005-12-01 02:39:34.000000000 +0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff -Nrcpad gcc-3.4.4/contrib/ChangeLog gcc-3.4.5/contrib/ChangeLog
*** gcc-3.4.4/contrib/ChangeLog 2005-05-19 07:46:30.000000000 +0000
--- gcc-3.4.5/contrib/ChangeLog 2005-12-01 02:39:15.000000000 +0000
***************
*** 1,3 ****
--- 1,25 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
+ 2005-11-17 Eric Botcazou
+
+ Backport from mainline:
+ * gcc_update: When svn update is called and --silent is used, pass -q.
+
+ 2005-11-01 Joseph S. Myers
+
+ * gcc_update: Include revision number in LAST_UPDATED.
+
+ 2005-10-28 Daniel Berlin
+ Ben Elliston
+
+ * gcc_update: Update for svn.
+
+ 2005-06-05 Gerald Pfeifer
+
+ * gennews (files): Update for egcs-1.0 release pages consolidation.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff -Nrcpad gcc-3.4.4/contrib/gcc_update gcc-3.4.5/contrib/gcc_update
*** gcc-3.4.4/contrib/gcc_update 2005-03-22 06:42:33.000000000 +0000
--- gcc-3.4.5/contrib/gcc_update 2005-11-17 12:18:22.000000000 +0000
***************
*** 1,10 ****
#! /bin/sh
#
! # Update a local CVS tree from the GCC repository, with an emphasis
# on treating generated files correctly, so that autoconf, gperf et
# al are not required for the ``end'' user.
#
! # By default all command-line options are passed to `cvs update` in
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
# are omitted.
--- 1,18 ----
#! /bin/sh
#
! # Update a local Subversion tree from the GCC repository, with an emphasis
# on treating generated files correctly, so that autoconf, gperf et
# al are not required for the ``end'' user.
#
! # (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
! # Originally by Gerald Pfeifer , August 1998.
! #
! # This script is Free Software, and it can be copied, distributed and
! # modified as defined in the GNU General Public License. A copy of
! # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
! #
! #
! # By default all command-line options are passed to `svn update` in
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
# are omitted.
***************
*** 12,18 ****
# If the first parameter reads --patch, the second parameter is considered
# a patch file.
#
! # If the first parameter is --touch, no cvs operation will be performed,
# only generated files that appear to be out of date in the local tree
# will be touched.
#
--- 20,26 ----
# If the first parameter reads --patch, the second parameter is considered
# a patch file.
#
! # If the first parameter is --touch, no svn operation will be performed,
# only generated files that appear to be out of date in the local tree
# will be touched.
#
***************
*** 24,53 ****
#
# Examples:
#
! # contrib/gcc_update -r gcc_latest_snapshot
! # contrib/gcc_update -A
! # contrib/gcc_update --nostdflags -P -r gcc-2_95-branch gcc/testsuite
# contrib/gcc_update --patch some-patch
# contrib/gcc_update --touch
# contrib/gcc_update --list
- #
- #
- # (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
- # Originally by Gerald Pfeifer , August 1998.
- #
- # This script is Free Software, and it can be copied, distributed and
- # modified as defined in the GNU General Public License. A copy of
- # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
! # CVS command
! GCC_CVS=${GCC_CVS-${CVS-cvs}}
! # Default options used when updating via CVS.
! UPDATE_OPTIONS=-Pd
! # Use -P to prune empty directories.
! # Use -d to create any directories that exist in the repository but not
! # locally.
! # Use -A to reset any sticky tags, dates, or `-k' options.
######## Anything below shouldn't be changed by regular users.
--- 32,47 ----
#
# Examples:
#
! # contrib/gcc_update -r 8712
# contrib/gcc_update --patch some-patch
# contrib/gcc_update --touch
# contrib/gcc_update --list
! # SVN command
! GCC_SVN=${GCC_SVN-${SVN-svn}}
! # Default options used when updating via SVN (none).
! UPDATE_OPTIONS=""
######## Anything below shouldn't be changed by regular users.
*************** p
*** 214,222 ****
esac
! # Check whether this indeed looks like a local CVS tree.
! if [ ! -d CVS ]; then
! echo "This does not seem to be a GCC CVS tree!"
exit
fi
--- 208,216 ----
esac
! # Check whether this indeed looks like a local SVN tree.
! if [ ! -d .svn ]; then
! echo "This does not seem to be a GCC SVN tree!"
exit
fi
*************** else
*** 227,242 ****
set -- $UPDATE_OPTIONS ${1+"$@"}
fi
! chat "Updating CVS tree"
! $GCC_CVS -q ${silent+-Q} update -r gcc-3_4-branch ${1+"$@"}
if [ $? -ne 0 ]; then
(touch_files_reexec)
! echo "CVS update of full tree failed." >&2
exit 1
fi
{
date
! TZ=UTC date
} > LAST_UPDATED
touch_files_reexec
--- 221,237 ----
set -- $UPDATE_OPTIONS ${1+"$@"}
fi
! chat "Updating SVN tree"
!
! $GCC_SVN ${silent+-q} --non-interactive update ${1+"$@"}
if [ $? -ne 0 ]; then
(touch_files_reexec)
! echo "SVN update of full tree failed." >&2
exit 1
fi
{
date
! echo "`TZ=UTC date` (revision `svnversion .`)"
} > LAST_UPDATED
touch_files_reexec
diff -Nrcpad gcc-3.4.4/contrib/gennews gcc-3.4.5/contrib/gennews
*** gcc-3.4.4/contrib/gennews 2004-05-15 09:51:28.000000000 +0000
--- gcc-3.4.5/contrib/gennews 2005-06-05 20:37:38.000000000 +0000
*************** files="gcc-3.4/index.html gcc-3.4/change
*** 29,36 ****
gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html
gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
! egcs-1.0/egcs-1.0.3.html egcs-1.0/egcs-1.0.2.html egcs-1.0/egcs-1.0.1.html
! egcs-1.0/egcs-1.0.html egcs-1.0/features.html egcs-1.0/caveats.html"
set -e
--- 29,35 ----
gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html
gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
! egcs-1.0/index.html egcs-1.0/features.html egcs-1.0/caveats.html"
set -e
diff -Nrcpad gcc-3.4.4/contrib/reghunt/ChangeLog gcc-3.4.5/contrib/reghunt/ChangeLog
*** gcc-3.4.4/contrib/reghunt/ChangeLog 2005-05-19 07:46:37.000000000 +0000
--- gcc-3.4.5/contrib/reghunt/ChangeLog 2005-12-01 02:39:13.000000000 +0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff -Nrcpad gcc-3.4.4/contrib/regression/ChangeLog gcc-3.4.5/contrib/regression/ChangeLog
*** gcc-3.4.4/contrib/regression/ChangeLog 2005-05-19 07:46:40.000000000 +0000
--- gcc-3.4.5/contrib/regression/ChangeLog 2005-12-01 02:39:11.000000000 +0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff -Nrcpad gcc-3.4.4/FAQ gcc-3.4.5/FAQ
*** gcc-3.4.4/FAQ 2005-05-19 09:58:07.000000000 +0000
--- gcc-3.4.5/FAQ 2005-12-01 03:48:28.000000000 +0000
***************
*** 1,12 ****
GCC Frequently Asked Questions
! The latest version of this document is always available at
[1]http://gcc.gnu.org/faq.html.
! This FAQ tries to answer specific questions concerning GCC. For
! general information regarding C, C++, resp. Fortran please check the
! [2]comp.lang.c FAQ, [3]comp.std.c++ FAQ, and the [4]Fortran
Information page.
Other GCC-related FAQs: [5]libstdc++-v3, and [6]GCJ.
--- 1,12 ----
GCC Frequently Asked Questions
! The latest version of this document is always available at
[1]http://gcc.gnu.org/faq.html.
! This FAQ tries to answer specific questions concerning GCC. For
! general information regarding C, C++, resp. Fortran please check the
! [2]comp.lang.c FAQ, [3]comp.std.c++ FAQ, and the [4]Fortran
Information page.
Other GCC-related FAQs: [5]libstdc++-v3, and [6]GCJ.
***************
*** 34,45 ****
1. [24]Is there a stringstream / sstream for GCC 2.95.2?
5. [25]Miscellaneous
1. [26]Friend Templates
! 2. [27]dynamic_cast, throw, typeid don't work with shared
libraries
3. [28]Why do I need autoconf, bison, xgettext, automake, etc?
4. [29]Why can't I build a shared library?
! 5. [30]When building C++, the linker says my constructors,
! destructors or virtual tables are undefined, but I defined
them
6. [31]Will GCC someday include an incremental linker?
_________________________________________________________________
--- 34,45 ----
1. [24]Is there a stringstream / sstream for GCC 2.95.2?
5. [25]Miscellaneous
1. [26]Friend Templates
! 2. [27]dynamic_cast, throw, typeid don't work with shared
libraries
3. [28]Why do I need autoconf, bison, xgettext, automake, etc?
4. [29]Why can't I build a shared library?
! 5. [30]When building C++, the linker says my constructors,
! destructors or virtual tables are undefined, but I defined
them
6. [31]Will GCC someday include an incremental linker?
_________________________________________________________________
***************
*** 48,148 ****
What is the relationship between GCC and EGCS?
! In 1990/1991 gcc version 1 had reached a point of stability. For the
! targets it could support, it worked well. It had limitations inherent
! in its design that would be difficult to resolve, so a major effort
! was made to resolve those limitations and gcc version 2 was the
result.
! When we had gcc2 in a useful state, development efforts on gcc1
! stopped and we all concentrated on making gcc2 better than gcc1 could
! ever be. This is the kind of step forward we wanted to make with the
EGCS project when it was formed in 1997.
! In April 1999 the Free Software Foundation officially halted
development on the gcc2 compiler and appointed the EGCS project as the
! official GCC maintainers. The net result was a single project which
! carries forward GCC development under the ultimate control of the
[32]GCC Steering Committee.
_________________________________________________________________
What is an open development model?
! We are using a bazaar style [33][1] approach to GCC development: we
! make snapshots publicly available to anyone who wants to try them; we
! welcome anyone to join the development mailing list. All of the
discussions on the development mailing list are available via the web.
! We're going to be making releases with a much higher frequency than
they have been made in the past.
! In addition to weekly snapshots of the GCC development sources, we
! have the sources readable from a CVS server by anyone. Furthermore we
! are using remote CVS to allow remote maintainers write access to the
! sources.
! There have been many potential GCC developers who were not able to
! participate in GCC development in the past. We want these people to
! help in any way they can; we ultimately want GCC to be the best
compiler in the world.
! A compiler is a complicated piece of software, there will still be
! strong central maintainers who will reject patches, who will demand
! documentation of implementations, and who will keep the level of
! quality as high as it is today. Code that could use wider testing may
be integrated--code that is simply ill-conceived won't be.
! GCC is not the first piece of software to use this open development
! process; FreeBSD, the Emacs lisp repository, and the Linux kernel are
a few examples of the bazaar style of development.
! With GCC, we are adding new features and optimizations at a rate that
! has not been done since the creation of gcc2; these additions
! inevitably have a temporarily destabilizing effect. With the help of
! developers working together with this bazaar style development, the
! resulting stability and quality levels will be better than we've had
before.
! [1] We've been discussing different development models a lot over
the past few months. The paper which started all of this introduced
! two terms: A cathedral development model versus a bazaar
! development model. The paper is written by Eric S. Raymond, it is
! called ``The Cathedral and the Bazaar''. The paper is a useful
starting point for discussions.
_________________________________________________________________
How do I get a bug fixed or a feature added?
! There are lots of ways to get something fixed. The list below may be
! incomplete, but it covers many of the common cases. These are listed
! roughly in order of decreasing difficulty for the average GCC user,
! meaning someone who is not skilled in the internals of GCC, and where
! difficulty is measured in terms of the time required to fix the bug.
! No alternative is better than any other; each has its benefits and
disadvantages.
! * Fix it yourself. This alternative will probably bring results, if
! you work hard enough, but will probably take a lot of time, and,
! depending on the quality of your work and the perceived benefits
! of your changes, your code may or may not ever make it into an
official release of GCC.
! * [34]Report the problem to the GCC bug tracking system and hope
! that someone will be kind enough to fix it for you. While this is
! certainly possible, and often happens, there is no guarantee that
! it will. You should not expect the same response from this method
! that you would see from a commercial support organization since
! the people who read GCC bug reports, if they choose to help you,
will be volunteering their time.
! * Hire someone to fix it for you. There are various companies and
! individuals providing support for GCC. This alternative costs
money, but is relatively likely to get results.
_________________________________________________________________
Does GCC work on my platform?
! The host/target specific installation notes for GCC include
! information about known problems with installing or using GCC on
! particular platforms. These are included in the sources for a release
! in INSTALL/specific.html, and the [35]latest version is always
! available at the GCC web site. Reports of [36]successful builds for
several versions of GCC are also available at the web site.
_________________________________________________________________
--- 48,147 ----
What is the relationship between GCC and EGCS?
! In 1990/1991 gcc version 1 had reached a point of stability. For the
! targets it could support, it worked well. It had limitations inherent
! in its design that would be difficult to resolve, so a major effort
! was made to resolve those limitations and gcc version 2 was the
result.
! When we had gcc2 in a useful state, development efforts on gcc1
! stopped and we all concentrated on making gcc2 better than gcc1 could
! ever be. This is the kind of step forward we wanted to make with the
EGCS project when it was formed in 1997.
! In April 1999 the Free Software Foundation officially halted
development on the gcc2 compiler and appointed the EGCS project as the
! official GCC maintainers. The net result was a single project which
! carries forward GCC development under the ultimate control of the
[32]GCC Steering Committee.
_________________________________________________________________
What is an open development model?
! We are using a bazaar style [33][1] approach to GCC development: we
! make snapshots publicly available to anyone who wants to try them; we
! welcome anyone to join the development mailing list. All of the
discussions on the development mailing list are available via the web.
! We're going to be making releases with a much higher frequency than
they have been made in the past.
! In addition to weekly snapshots of the GCC development sources, we
! have the sources readable from an SVN server by anyone. Furthermore we
! are using SVN to allow maintainers write access to the sources.
! There have been many potential GCC developers who were not able to
! participate in GCC development in the past. We want these people to
! help in any way they can; we ultimately want GCC to be the best
compiler in the world.
! A compiler is a complicated piece of software, there will still be
! strong central maintainers who will reject patches, who will demand
! documentation of implementations, and who will keep the level of
! quality as high as it is today. Code that could use wider testing may
be integrated--code that is simply ill-conceived won't be.
! GCC is not the first piece of software to use this open development
! process; FreeBSD, the Emacs lisp repository, and the Linux kernel are
a few examples of the bazaar style of development.
! With GCC, we are adding new features and optimizations at a rate that
! has not been done since the creation of gcc2; these additions
! inevitably have a temporarily destabilizing effect. With the help of
! developers working together with this bazaar style development, the
! resulting stability and quality levels will be better than we've had
before.
! [1] We've been discussing different development models a lot over
the past few months. The paper which started all of this introduced
! two terms: A cathedral development model versus a bazaar
! development model. The paper is written by Eric S. Raymond, it is
! called ``The Cathedral and the Bazaar''. The paper is a useful
starting point for discussions.
_________________________________________________________________
How do I get a bug fixed or a feature added?
! There are lots of ways to get something fixed. The list below may be
! incomplete, but it covers many of the common cases. These are listed
! roughly in order of decreasing difficulty for the average GCC user,
! meaning someone who is not skilled in the internals of GCC, and where
! difficulty is measured in terms of the time required to fix the bug.
! No alternative is better than any other; each has its benefits and
disadvantages.
! * Fix it yourself. This alternative will probably bring results, if
! you work hard enough, but will probably take a lot of time, and,
! depending on the quality of your work and the perceived benefits
! of your changes, your code may or may not ever make it into an
official release of GCC.
! * [34]Report the problem to the GCC bug tracking system and hope
! that someone will be kind enough to fix it for you. While this is
! certainly possible, and often happens, there is no guarantee that
! it will. You should not expect the same response from this method
! that you would see from a commercial support organization since
! the people who read GCC bug reports, if they choose to help you,
will be volunteering their time.
! * Hire someone to fix it for you. There are various companies and
! individuals providing support for GCC. This alternative costs
money, but is relatively likely to get results.
_________________________________________________________________
Does GCC work on my platform?
! The host/target specific installation notes for GCC include
! information about known problems with installing or using GCC on
! particular platforms. These are included in the sources for a release
! in INSTALL/specific.html, and the [35]latest version is always
! available at the GCC web site. Reports of [36]successful builds for
several versions of GCC are also available at the web site.
_________________________________________________________________
*************** Does GCC work on my platform?
*** 150,200 ****
How to install multiple versions of GCC
! It may be desirable to install multiple versions of the compiler on
! the same system. This can be done by using different prefix paths at
configure time and a few symlinks.
! Basically, configure the two compilers with different --prefix
! options, then build and install each compiler. Assume you want "gcc"
to be the latest compiler and available in /usr/local/bin; also assume
! that you want "gcc2" to be the older gcc2 compiler and also available
in /usr/local/bin.
! The easiest way to do this is to configure the new GCC with
! --prefix=/usr/local/gcc and the older gcc2 with
! --prefix=/usr/local/gcc2. Build and install both compilers. Then make
! a symlink from /usr/local/bin/gcc to /usr/local/gcc/bin/gcc and from
! /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
for the "g++", "c++" and "g77" compiler drivers.
! An alternative to using symlinks is to configure with a
! --program-transform-name option. This option specifies a sed command
! to process installed program names with. Using it you can, for
instance, have all the new GCC programs installed as "new-gcc" and the
! like. You will still have to specify different --prefix options for
! new GCC and old GCC, because it is only the executable program names
that are transformed. The difference is that you (as administrator) do
! not have to set up symlinks, but must specify additional directories
in your (as a user) PATH. A complication with --program-transform-name
! is that the sed command invariably contains characters significant to
! the shell, and these have to be escaped correctly, also it is not
! possible to use "^" or "$" in the command. Here is the option to
prefix "new-" to the new GCC installed programs:
--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'
With the above --prefix option, that will install the new GCC programs
! into /usr/local/gcc/bin with names prefixed by "new-". You can use
! --program-transform-name if you have multiple versions of GCC, and
wish to be sure about which version you are invoking.
! If you use --prefix, GCC may have difficulty locating a GNU assembler
! or linker on your system, [37]GCC can not find GNU as/GNU ld explains
how to deal with this.
! Another option that may be easier is to use the --program-prefix= or
! --program-suffix= options to configure. So if you're installing GCC
! 2.95.2 and don't want to disturb the current version of GCC in
/usr/local/bin/, you could do
configure --program-suffix=-2.95.2
--- 149,199 ----
How to install multiple versions of GCC
! It may be desirable to install multiple versions of the compiler on
! the same system. This can be done by using different prefix paths at
configure time and a few symlinks.
! Basically, configure the two compilers with different --prefix
! options, then build and install each compiler. Assume you want "gcc"
to be the latest compiler and available in /usr/local/bin; also assume
! that you want "gcc2" to be the older gcc2 compiler and also available
in /usr/local/bin.
! The easiest way to do this is to configure the new GCC with
! --prefix=/usr/local/gcc and the older gcc2 with
! --prefix=/usr/local/gcc2. Build and install both compilers. Then make
! a symlink from /usr/local/bin/gcc to /usr/local/gcc/bin/gcc and from
! /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
for the "g++", "c++" and "g77" compiler drivers.
! An alternative to using symlinks is to configure with a
! --program-transform-name option. This option specifies a sed command
! to process installed program names with. Using it you can, for
instance, have all the new GCC programs installed as "new-gcc" and the
! like. You will still have to specify different --prefix options for
! new GCC and old GCC, because it is only the executable program names
that are transformed. The difference is that you (as administrator) do
! not have to set up symlinks, but must specify additional directories
in your (as a user) PATH. A complication with --program-transform-name
! is that the sed command invariably contains characters significant to
! the shell, and these have to be escaped correctly, also it is not
! possible to use "^" or "$" in the command. Here is the option to
prefix "new-" to the new GCC installed programs:
--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'
With the above --prefix option, that will install the new GCC programs
! into /usr/local/gcc/bin with names prefixed by "new-". You can use
! --program-transform-name if you have multiple versions of GCC, and
wish to be sure about which version you are invoking.
! If you use --prefix, GCC may have difficulty locating a GNU assembler
! or linker on your system, [37]GCC can not find GNU as/GNU ld explains
how to deal with this.
! Another option that may be easier is to use the --program-prefix= or
! --program-suffix= options to configure. So if you're installing GCC
! 2.95.2 and don't want to disturb the current version of GCC in
/usr/local/bin/, you could do
configure --program-suffix=-2.95.2
*************** How to install multiple versions of GCC
*** 206,293 ****
Dynamic linker is unable to find GCC libraries
This problem manifests itself by programs not finding shared libraries
! they depend on when the programs are started. Note this problem often
! manifests itself with failures in the libio/libstdc++ tests after
configuring with --enable-shared and building GCC.
! GCC does not specify a runpath so that the dynamic linker can find
dynamic libraries at runtime.
! The short explanation is that if you always pass a -R option to the
! linker, then your programs become dependent on directories which may
be NFS mounted, and programs may hang unnecessarily when an NFS server
goes down.
! The problem is not programs that do require the directories; those
! programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
! SunOS effectively always passed a -R option for every -L option; this
! was a bad idea, and so it was removed for Solaris. We should not
recreate it.
! However, if you feel you really need such an option to be passed
! automatically to the linker, you may add it to the GCC specs file.
! This file can be found in the same directory that contains cc1 (run
gcc -print-prog-name=cc1 to find it). You may add linker flags such as
! -R or -rpath, depending on platform and linker, to the *link or *lib
specs.
! Another alternative is to install a wrapper script around gcc, g++ or
! ld that adds the appropriate directory to the environment variable
LD_RUN_PATH or equivalent (again, it's platform-dependent).
Yet another option, that works on a few platforms, is to hard-code the
! full pathname of the library into its soname. This can only be
! accomplished by modifying the appropriate .ml file within
libstdc++/config (and also libg++/config, if you are building libg++),
! so that $(libdir)/ appears just before the library name in -soname or
-h options.
_________________________________________________________________
GCC can not find GNU as/GNU ld
! GCC searches the PATH for an assembler and a loader, but it only does
so after searching a directory list hard-coded in the GCC executables.
! Since, on most platforms, the hard-coded list includes directories in
! which the system assembler and loader can be found, you may have to
! take one of the following actions to arrange that GCC uses the GNU
versions of those programs.
To ensure that GCC finds the GNU assembler (the GNU loader), which are
! required by [38]some configurations, you should configure these with
the same --prefix option as you used for GCC. Then build & install GNU
as (GNU ld) and proceed with building GCC.
! Another alternative is to create links to GNU as and ld in any of the
! directories printed by the command `gcc -print-search-dirs | grep
! '^programs:''. The link to `ld' should be named `real-ld' if `ld'
already exists. If such links do not exist while you're compiling GCC,
! you may have to create them in the build directories too, within the
gcc directory and in all the gcc/stage* subdirectories.
! GCC 2.95 allows you to specify the full pathname of the assembler and
the linker to use. The configure flags are `--with-as=/path/to/as' and
! `--with-ld=/path/to/ld'. GCC will try to use these pathnames before
! looking for `as' or `(real-)ld' in the standard search dirs. If, at
! configure-time, the specified programs are found to be GNU utilities,
`--with-gnu-as' and `--with-gnu-ld' need not be used; these flags will
! be auto-detected. One drawback of this option is that it won't allow
! you to override the search path for assembler and linker with
command-line options -B/path/ if the specified filenames exist.
_________________________________________________________________
cpp: Usage:... Error
! If you get an error like this when building GCC (particularly when
! building __mulsi3), then you likely have a problem with your
environment variables.
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
[switches] input output
! First look for an explicit '.' in either LIBRARY_PATH or
! GCC_EXEC_PREFIX from your environment. If you do not find an explicit
! '.', look for an empty pathname in those variables. Note that ':' at
either the start or end of these variables is an implicit '.' and will
cause problems.
--- 205,292 ----
Dynamic linker is unable to find GCC libraries
This problem manifests itself by programs not finding shared libraries
! they depend on when the programs are started. Note this problem often
! manifests itself with failures in the libio/libstdc++ tests after
configuring with --enable-shared and building GCC.
! GCC does not specify a runpath so that the dynamic linker can find
dynamic libraries at runtime.
! The short explanation is that if you always pass a -R option to the
! linker, then your programs become dependent on directories which may
be NFS mounted, and programs may hang unnecessarily when an NFS server
goes down.
! The problem is not programs that do require the directories; those
! programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
! SunOS effectively always passed a -R option for every -L option; this
! was a bad idea, and so it was removed for Solaris. We should not
recreate it.
! However, if you feel you really need such an option to be passed
! automatically to the linker, you may add it to the GCC specs file.
! This file can be found in the same directory that contains cc1 (run
gcc -print-prog-name=cc1 to find it). You may add linker flags such as
! -R or -rpath, depending on platform and linker, to the *link or *lib
specs.
! Another alternative is to install a wrapper script around gcc, g++ or
! ld that adds the appropriate directory to the environment variable
LD_RUN_PATH or equivalent (again, it's platform-dependent).
Yet another option, that works on a few platforms, is to hard-code the
! full pathname of the library into its soname. This can only be
! accomplished by modifying the appropriate .ml file within
libstdc++/config (and also libg++/config, if you are building libg++),
! so that $(libdir)/ appears just before the library name in -soname or
-h options.
_________________________________________________________________
GCC can not find GNU as/GNU ld
! GCC searches the PATH for an assembler and a loader, but it only does
so after searching a directory list hard-coded in the GCC executables.
! Since, on most platforms, the hard-coded list includes directories in
! which the system assembler and loader can be found, you may have to
! take one of the following actions to arrange that GCC uses the GNU
versions of those programs.
To ensure that GCC finds the GNU assembler (the GNU loader), which are
! required by [38]some configurations, you should configure these with
the same --prefix option as you used for GCC. Then build & install GNU
as (GNU ld) and proceed with building GCC.
! Another alternative is to create links to GNU as and ld in any of the
! directories printed by the command `gcc -print-search-dirs | grep
! '^programs:''. The link to `ld' should be named `real-ld' if `ld'
already exists. If such links do not exist while you're compiling GCC,
! you may have to create them in the build directories too, within the
gcc directory and in all the gcc/stage* subdirectories.
! GCC 2.95 allows you to specify the full pathname of the assembler and
the linker to use. The configure flags are `--with-as=/path/to/as' and
! `--with-ld=/path/to/ld'. GCC will try to use these pathnames before
! looking for `as' or `(real-)ld' in the standard search dirs. If, at
! configure-time, the specified programs are found to be GNU utilities,
`--with-gnu-as' and `--with-gnu-ld' need not be used; these flags will
! be auto-detected. One drawback of this option is that it won't allow
! you to override the search path for assembler and linker with
command-line options -B/path/ if the specified filenames exist.
_________________________________________________________________
cpp: Usage:... Error
! If you get an error like this when building GCC (particularly when
! building __mulsi3), then you likely have a problem with your
environment variables.
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
[switches] input output
! First look for an explicit '.' in either LIBRARY_PATH or
! GCC_EXEC_PREFIX from your environment. If you do not find an explicit
! '.', look for an empty pathname in those variables. Note that ':' at
either the start or end of these variables is an implicit '.' and will
cause problems.
*************** cpp: Usage:... Error
*** 296,323 ****
Optimizing the compiler itself
! If you want to test a particular optimization option, it's useful to
! try bootstrapping the compiler with that option turned on. For
example, to test the -fssa option, you could bootstrap like this:
make BOOT_CFLAGS="-O2 -fssa" bootstrap
_________________________________________________________________
Why does libiconv get linked into jc1 on Solaris?
! The Java front end requires iconv. If the compiler used to bootstrap
! GCC finds libiconv (because the GNU version of libiconv has been
installed in the same prefix as the bootstrap compiler), but the newly
built GCC does not find the library (because it will be installed with
! a different prefix), then a link-time error will occur when building
! jc1. This problem does not show up so often on platforms that have
! libiconv in a default location (like /usr/lib) because then both
! compilers can find a library named libiconv, even though it is a
different library.
! Using --disable-nls at configure-time does not prevent this problem
! because jc1 uses iconv even in that case. Solutions include
! temporarily removing the GNU libiconv, copying it to a default
! location such as /usr/lib/, and using --enable-languages at
configure-time to disable Java.
_________________________________________________________________
--- 295,322 ----
Optimizing the compiler itself
! If you want to test a particular optimization option, it's useful to
! try bootstrapping the compiler with that option turned on. For
example, to test the -fssa option, you could bootstrap like this:
make BOOT_CFLAGS="-O2 -fssa" bootstrap
_________________________________________________________________
Why does libiconv get linked into jc1 on Solaris?
! The Java front end requires iconv. If the compiler used to bootstrap
! GCC finds libiconv (because the GNU version of libiconv has been
installed in the same prefix as the bootstrap compiler), but the newly
built GCC does not find the library (because it will be installed with
! a different prefix), then a link-time error will occur when building
! jc1. This problem does not show up so often on platforms that have
! libiconv in a default location (like /usr/lib) because then both
! compilers can find a library named libiconv, even though it is a
different library.
! Using --disable-nls at configure-time does not prevent this problem
! because jc1 uses iconv even in that case. Solutions include
! temporarily removing the GNU libiconv, copying it to a default
! location such as /usr/lib/, and using --enable-languages at
configure-time to disable Java.
_________________________________________________________________
*************** Why does libiconv get linked into jc1 on
*** 325,335 ****
How do I pass flags like -fnew-abi to the testsuite?
! If you invoke runtest directly, you can use the --tool_opts option,
e.g:
runtest --tool_opts "-fnew-abi -fno-honor-std"
! Or, if you use make check you can use the make variable RUNTESTFLAGS,
e.g:
make RUNTESTFLAGS="--tool_opts '-fnew-abi -fno-honor-std'" check-g++
_________________________________________________________________
--- 324,334 ----
How do I pass flags like -fnew-abi to the testsuite?
! If you invoke runtest directly, you can use the --tool_opts option,
e.g:
runtest --tool_opts "-fnew-abi -fno-honor-std"
! Or, if you use make check you can use the make variable RUNTESTFLAGS,
e.g:
make RUNTESTFLAGS="--tool_opts '-fnew-abi -fno-honor-std'" check-g++
_________________________________________________________________
*************** How can I run the test suite with multip
*** 340,350 ****
e.g:
runtest --target_board "unix{-fPIC,-fpic,}"
! Or, if you use make check you can use the make variable RUNTESTFLAGS,
e.g:
make RUNTESTFLAGS="--target_board 'unix{-fPIC,-fpic,}'" check-gcc
! Either of these examples will run the tests three times. Once with
-fPIC, once with -fpic, and once with no additional flags.
This technique is particularly useful on multilibbed targets.
--- 339,349 ----
e.g:
runtest --target_board "unix{-fPIC,-fpic,}"
! Or, if you use make check you can use the make variable RUNTESTFLAGS,
e.g:
make RUNTESTFLAGS="--target_board 'unix{-fPIC,-fpic,}'" check-gcc
! Either of these examples will run the tests three times. Once with
-fPIC, once with -fpic, and once with no additional flags.
This technique is particularly useful on multilibbed targets.
*************** Is there a stringstream / sstream for GC
*** 363,386 ****
Friend Templates
In order to make a specialization of a template function a friend of a
! (possibly template) class, you must explicitly state that the friend
! function is a template, by appending angle brackets to its name, and
! this template function must have been declared already. Here's an
example:
template class foo {
friend void bar(foo);
}
! The above declaration declares a non-template function named bar, so
! it must be explicitly defined for each specialization of foo. A
! template definition of bar won't do, because it is unrelated with the
non-template declaration above. So you'd have to end up writing:
void bar(foo) { /* ... */ }
void bar(foo) { /* ... */ }
! If you meant bar to be a template function, you should have
forward-declared it as follows. Note that, since the template function
! declaration refers to the template class, the template class must be
forward-declared too:
template
class foo;
--- 362,385 ----
Friend Templates
In order to make a specialization of a template function a friend of a
! (possibly template) class, you must explicitly state that the friend
! function is a template, by appending angle brackets to its name, and
! this template function must have been declared already. Here's an
example:
template class foo {
friend void bar(foo);
}
! The above declaration declares a non-template function named bar, so
! it must be explicitly defined for each specialization of foo. A
! template definition of bar won't do, because it is unrelated with the
non-template declaration above. So you'd have to end up writing:
void bar(foo) { /* ... */ }
void bar(foo) { /* ... */ }
! If you meant bar to be a template function, you should have
forward-declared it as follows. Note that, since the template function
! declaration refers to the template class, the template class must be
forward-declared too:
template
class foo;
*************** class foo {
*** 396,411 ****
template
void bar(foo) { /* ... */ }
! In this case, the template argument list could be left empty, because
! it can be implicitly deduced from the function arguments, but the
! angle brackets must be present, otherwise the declaration will be
! taken as a non-template function. Furthermore, in some cases, you may
! have to explicitly specify the template arguments, to remove
ambiguity.
An error in the last public comment draft of the ANSI/ISO C++ Standard
! and the fact that previous releases of GCC would accept such friend
! declarations as template declarations has led people to believe that
the forward declaration was not necessary, but, according to the final
version of the Standard, it is.
_________________________________________________________________
--- 395,410 ----
template
void bar(foo) { /* ... */ }
! In this case, the template argument list could be left empty, because
! it can be implicitly deduced from the function arguments, but the
! angle brackets must be present, otherwise the declaration will be
! taken as a non-template function. Furthermore, in some cases, you may
! have to explicitly specify the template arguments, to remove
ambiguity.
An error in the last public comment draft of the ANSI/ISO C++ Standard
! and the fact that previous releases of GCC would accept such friend
! declarations as template declarations has led people to believe that
the forward declaration was not necessary, but, according to the final
version of the Standard, it is.
_________________________________________________________________
*************** dynamic_cast, throw, typeid don't work w
*** 414,490 ****
The new C++ ABI in the GCC 3.0 series uses address comparisons, rather
than string compares, to determine type equality. This leads to better
! performance. Like other objects that have to be present in the final
! executable, these std::type_info objects have what is called vague
! linkage because they are not tightly bound to any one particular
! translation unit (object file). The compiler has to emit them in any
! translation unit that requires their presence, and then rely on the
! linking and loading process to make sure that only one of them is
! active in the final executable. With static linking all of these
! symbols are resolved at link time, but with dynamic linking, further
resolution occurs at load time. You have to ensure that objects within
! a shared library are resolved against objects in the executable and
other shared libraries.
! * For a program which is linked against a shared library, no
additional precautions are needed.
! * You cannot create a shared library with the "-Bsymbolic" option,
as that prevents the resolution described above.
! * If you use dlopen to explicitly load code from a shared library,
! you must do several things. First, export global symbols from the
! executable by linking it with the "-E" flag (you will have to
! specify this as "-Wl,-E" if you are invoking the linker in the
! usual manner from the compiler driver, g++). You must also make
! the external symbols in the loaded library available for
! subsequent libraries by providing the RTLD_GLOBAL flag to dlopen.
The symbol resolution can be immediate or lazy.
! Template instantiations are another, user visible, case of objects
with vague linkage, which needs similar resolution. If you do not take
! the above precautions, you may discover that a template instantiation
! with the same argument list, but instantiated in multiple translation
! units, has several addresses, depending in which translation unit the
! address is taken. (This is not an exhaustive list of the kind of
! objects which have vague linkage and are expected to be resolved
during linking & loading.)
! If you are worried about different objects with the same name
! colliding during the linking or loading process, then you should use
! namespaces to disambiguate them. Giving distinct objects with global
! linkage the same name is a violation of the One Definition Rule (ODR)
[basic.def.odr].
For more details about the way that GCC implements these and other C++
! features, please read the [40]ABI specification. Note the
! std::type_info objects which must be resolved all begin with "_ZTS".
! Refer to ld's documentation for a description of the "-E" &
"-Bsymbolic" flags.
_________________________________________________________________
Why do I need autoconf, bison, xgettext, automake, etc?
! If you're using diffs up dated from one snapshot to the next, or if
! you're using the CVS repository, you may need several additional
programs to build GCC.
! These include, but are not necessarily limited to autoconf, automake,
bison, and xgettext.
! This is necessary because neither diff nor cvs keep timestamps
! correct. This causes problems for generated files as "make" may think
those generated files are out of date and try to regenerate them.
! An easy way to work around this problem is to use the gcc_update
! script in the contrib subdirectory of GCC, which handles this
! transparently without requiring installation of any additional tools.
! (Note: Up to and including GCC 2.95 this script was called egcs_update
! .)
! When building from diffs or CVS or if you modified some sources, you
may also need to obtain development versions of some GNU tools, as the
! production versions do not necessarily handle all features needed to
rebuild GCC.
! In general, the current versions of these tools from
[41]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not
supported, and you will need to use Autoconf 2.13; work is in progress
to fix this problem. Also look at
--- 413,487 ----
The new C++ ABI in the GCC 3.0 series uses address comparisons, rather
than string compares, to determine type equality. This leads to better
! performance. Like other objects that have to be present in the final
! executable, these std::type_info objects have what is called vague
! linkage because they are not tightly bound to any one particular
! translation unit (object file). The compiler has to emit them in any
! translation unit that requires their presence, and then rely on the
! linking and loading process to make sure that only one of them is
! active in the final executable. With static linking all of these
! symbols are resolved at link time, but with dynamic linking, further
resolution occurs at load time. You have to ensure that objects within
! a shared library are resolved against objects in the executable and
other shared libraries.
! * For a program which is linked against a shared library, no
additional precautions are needed.
! * You cannot create a shared library with the "-Bsymbolic" option,
as that prevents the resolution described above.
! * If you use dlopen to explicitly load code from a shared library,
! you must do several things. First, export global symbols from the
! executable by linking it with the "-E" flag (you will have to
! specify this as "-Wl,-E" if you are invoking the linker in the
! usual manner from the compiler driver, g++). You must also make
! the external symbols in the loaded library available for
! subsequent libraries by providing the RTLD_GLOBAL flag to dlopen.
The symbol resolution can be immediate or lazy.
! Template instantiations are another, user visible, case of objects
with vague linkage, which needs similar resolution. If you do not take
! the above precautions, you may discover that a template instantiation
! with the same argument list, but instantiated in multiple translation
! units, has several addresses, depending in which translation unit the
! address is taken. (This is not an exhaustive list of the kind of
! objects which have vague linkage and are expected to be resolved
during linking & loading.)
! If you are worried about different objects with the same name
! colliding during the linking or loading process, then you should use
! namespaces to disambiguate them. Giving distinct objects with global
! linkage the same name is a violation of the One Definition Rule (ODR)
[basic.def.odr].
For more details about the way that GCC implements these and other C++
! features, please read the [40]ABI specification. Note the
! std::type_info objects which must be resolved all begin with "_ZTS".
! Refer to ld's documentation for a description of the "-E" &
"-Bsymbolic" flags.
_________________________________________________________________
Why do I need autoconf, bison, xgettext, automake, etc?
! If you're using diffs up dated from one snapshot to the next, or if
! you're using the SVN repository, you may need several additional
programs to build GCC.
! These include, but are not necessarily limited to autoconf, automake,
bison, and xgettext.
! This is necessary because neither diff nor cvs keep timestamps
! correct. This causes problems for generated files as "make" may think
those generated files are out of date and try to regenerate them.
! An easy way to work around this problem is to use the gcc_update
! script in the contrib subdirectory of GCC, which handles this
! transparently without requiring installation of any additional tools.
! When building from diffs or SVN or if you modified some sources, you
may also need to obtain development versions of some GNU tools, as the
! production versions do not necessarily handle all features needed to
rebuild GCC.
! In general, the current versions of these tools from
[41]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not
supported, and you will need to use Autoconf 2.13; work is in progress
to fix this problem. Also look at
*************** Why do I need autoconf, bison, xgettext,
*** 494,513 ****
Why can't I build a shared library?
! When building a shared library you may get an error message from the
linker like `assert pure-text failed:' or `DP relative code in file'.
! This kind of error occurs when you've failed to provide proper flags
to gcc when linking the shared library.
You can get this error even if all the .o files for the shared library
! were compiled with the proper PIC option. When building a shared
! library, gcc will compile additional code to be included in the
! library. That additional code must also be compiled with the proper
PIC option.
! Adding the proper PIC option (-fpic or -fPIC) to the link line which
! creates the shared library will fix this problem on targets that
support PIC in this manner. For example:
gcc -c -fPIC myfile.c
gcc -shared -o libmyfile.so -fPIC myfile.o
--- 491,510 ----
Why can't I build a shared library?
! When building a shared library you may get an error message from the
linker like `assert pure-text failed:' or `DP relative code in file'.
! This kind of error occurs when you've failed to provide proper flags
to gcc when linking the shared library.
You can get this error even if all the .o files for the shared library
! were compiled with the proper PIC option. When building a shared
! library, gcc will compile additional code to be included in the
! library. That additional code must also be compiled with the proper
PIC option.
! Adding the proper PIC option (-fpic or -fPIC) to the link line which
! creates the shared library will fix this problem on targets that
support PIC in this manner. For example:
gcc -c -fPIC myfile.c
gcc -shared -o libmyfile.so -fPIC myfile.o
*************** Why can't I build a shared library?
*** 516,545 ****
When building C++, the linker says my constructors, destructors or virtual
tables are undefined, but I defined them
! The ISO C++ Standard specifies that all virtual methods of a class
! that are not pure-virtual must be defined, but does not require any
! diagnostic for violations of this rule [class.virtual]/8. Based on
! this assumption, GCC will only emit the implicitly defined
! constructors, the assignment operator, the destructor and the virtual
! table of a class in the translation unit that defines its first such
non-inline method.
! Therefore, if you fail to define this particular method, the linker
! may complain about the lack of definitions for apparently unrelated
! symbols. Unfortunately, in order to improve this error message, it
! might be necessary to change the linker, and this can't always be
done.
! The solution is to ensure that all virtual methods that are not pure
! are defined. Note that a destructor must be defined even if it is
declared pure-virtual [class.dtor]/7.
_________________________________________________________________
Will GCC someday include an incremental linker?
! Incremental linking is part of the linker, not the compiler. As such,
GCC doesn't have anything to do with incremental linking. Depending on
! what platform you use, it may be possible to tell GCC to use the
platform's native linker (e.g., Solaris' ild(1)).
References
--- 513,542 ----
When building C++, the linker says my constructors, destructors or virtual
tables are undefined, but I defined them
! The ISO C++ Standard specifies that all virtual methods of a class
! that are not pure-virtual must be defined, but does not require any
! diagnostic for violations of this rule [class.virtual]/8. Based on
! this assumption, GCC will only emit the implicitly defined
! constructors, the assignment operator, the destructor and the virtual
! table of a class in the translation unit that defines its first such
non-inline method.
! Therefore, if you fail to define this particular method, the linker
! may complain about the lack of definitions for apparently unrelated
! symbols. Unfortunately, in order to improve this error message, it
! might be necessary to change the linker, and this can't always be
done.
! The solution is to ensure that all virtual methods that are not pure
! are defined. Note that a destructor must be defined even if it is
declared pure-virtual [class.dtor]/7.
_________________________________________________________________
Will GCC someday include an incremental linker?
! Incremental linking is part of the linker, not the compiler. As such,
GCC doesn't have anything to do with incremental linking. Depending on
! what platform you use, it may be possible to tell GCC to use the
platform's native linker (e.g., Solaris' ild(1)).
References
diff -Nrcpad gcc-3.4.4/faq.html gcc-3.4.5/faq.html
*** gcc-3.4.4/faq.html 2005-05-19 09:58:06.000000000 +0000
--- gcc-3.4.5/faq.html 2005-12-01 03:48:28.000000000 +0000
*************** making releases with a much higher frequ
*** 106,114 ****
in the past.
In addition to weekly snapshots of the GCC development sources, we
! have the sources readable from a CVS server by anyone. Furthermore we
! are using remote CVS to allow remote maintainers write access to the
! sources.
There have been many potential GCC developers who were not able to
participate in GCC development in the past. We want these people to
--- 106,113 ----
in the past.
In addition to weekly snapshots of the GCC development sources, we
! have the sources readable from an SVN server by anyone. Furthermore we
! are using SVN to allow maintainers write access to the sources.
There have been many potential GCC developers who were not able to
participate in GCC development in the past. We want these people to
*************** documentation for a description of the "
*** 548,554 ****
If you're using diffs up dated from one snapshot to the next, or
! if you're using the CVS repository, you may need several additional programs
to build GCC.
These include, but are not necessarily limited to autoconf, automake,
--- 547,553 ----
If you're using diffs up dated from one snapshot to the next, or
! if you're using the SVN repository, you may need several additional programs
to build GCC.
These include, but are not necessarily limited to autoconf, automake,
*************** those generated files are out of date an
*** 560,571 ****
An easy way to work around this problem is to use the gcc_update
script in the contrib subdirectory of GCC, which handles this
! transparently without requiring installation of any additional tools.
! (Note: Up to and including GCC 2.95 this script was called egcs_update
!
.)
! When building from diffs or CVS or if you modified some sources,
you may also need to obtain development versions of some GNU tools, as
the production versions do not necessarily handle all features needed
to rebuild GCC.
--- 559,568 ----
An easy way to work around this problem is to use the gcc_update
script in the contrib subdirectory of GCC, which handles this
! transparently without requiring installation of any additional tools.
! When building from diffs or SVN or if you modified some sources,
you may also need to obtain development versions of some GNU tools, as
the production versions do not necessarily handle all features needed
to rebuild GCC.
diff -Nrcpad gcc-3.4.4/gcc/c-common.c gcc-3.4.5/gcc/c-common.c
*** gcc-3.4.4/gcc/c-common.c 2005-01-07 19:58:51.000000000 +0000
--- gcc-3.4.5/gcc/c-common.c 2005-10-08 22:21:11.000000000 +0000
*************** constant_fits_type_p (tree c, tree type)
*** 1273,1278 ****
--- 1273,1290 ----
return !TREE_OVERFLOW (c);
}
+ /* Nonzero if vector types T1 and T2 can be converted to each other
+ without an explicit cast. */
+ int
+ vector_types_convertible_p (tree t1, tree t2)
+ {
+ return targetm.vector_opaque_p (t1)
+ || targetm.vector_opaque_p (t2)
+ || (tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2))
+ && INTEGRAL_TYPE_P (TREE_TYPE (t1))
+ == INTEGRAL_TYPE_P (TREE_TYPE (t2)));
+ }
+
/* Convert EXPR to TYPE, warning about conversion problems with constants.
Invoke this function on every expression that is converted implicitly,
i.e. because of language rules and not because of an explicit cast. */
diff -Nrcpad gcc-3.4.4/gcc/c-common.h gcc-3.4.5/gcc/c-common.h
*** gcc-3.4.4/gcc/c-common.h 2004-02-18 00:09:01.000000000 +0000
--- gcc-3.4.5/gcc/c-common.h 2005-10-08 22:21:11.000000000 +0000
*************** extern tree finish_label_address_expr (t
*** 1261,1266 ****
--- 1261,1268 ----
different implementations. Used in c-common.c. */
extern tree lookup_label (tree);
+ extern int vector_types_convertible_p (tree t1, tree t2);
+
extern rtx c_expand_expr (tree, rtx, enum machine_mode, int, rtx *);
extern int c_safe_from_p (rtx, tree);
diff -Nrcpad gcc-3.4.4/gcc/c-decl.c gcc-3.4.5/gcc/c-decl.c
*** gcc-3.4.4/gcc/c-decl.c 2005-05-01 10:43:46.000000000 +0000
--- gcc-3.4.5/gcc/c-decl.c 2005-09-09 00:21:01.000000000 +0000
*************** diagnose_mismatched_decls (tree newdecl,
*** 955,960 ****
--- 955,969 ----
return false;
}
+ /* Enumerators have no linkage, so may only be declared once in a
+ given scope. */
+ if (TREE_CODE (olddecl) == CONST_DECL)
+ {
+ error ("%Jredeclaration of enumerator `%D'", newdecl, newdecl);
+ locate_old_decl (olddecl, error);
+ return false;
+ }
+
if (!comptypes (oldtype, newtype, COMPARE_STRICT))
{
if (TREE_CODE (olddecl) == FUNCTION_DECL
*************** diagnose_mismatched_decls (tree newdecl,
*** 1262,1268 ****
&& !(DECL_EXTERNAL (olddecl) && !DECL_EXTERNAL (newdecl))
/* Don't warn about forward parameter decls. */
&& !(TREE_CODE (newdecl) == PARM_DECL
! && TREE_ASM_WRITTEN (olddecl) && !TREE_ASM_WRITTEN (newdecl)))
{
warning ("%Jredundant redeclaration of '%D'", newdecl, newdecl);
warned = true;
--- 1271,1280 ----
&& !(DECL_EXTERNAL (olddecl) && !DECL_EXTERNAL (newdecl))
/* Don't warn about forward parameter decls. */
&& !(TREE_CODE (newdecl) == PARM_DECL
! && TREE_ASM_WRITTEN (olddecl) && !TREE_ASM_WRITTEN (newdecl))
! /* Don't warn about a variable definition following a declaration. */
! && !(TREE_CODE (newdecl) == VAR_DECL
! && DECL_INITIAL (newdecl) && !DECL_INITIAL (olddecl)))
{
warning ("%Jredundant redeclaration of '%D'", newdecl, newdecl);
warned = true;
*************** void
*** 2951,2962 ****
--- 2963,2983 ----
push_parm_decl (tree parm)
{
tree decl;
+ int old_dont_save_pending_sizes_p = 0;
/* Don't attempt to expand sizes while parsing this decl.
(We can get here with i_s_e 1 somehow from Objective-C.) */
int save_immediate_size_expand = immediate_size_expand;
immediate_size_expand = 0;
+ /* If this is a nested function, we do want to keep SAVE_EXPRs for
+ the argument sizes, regardless of the parent's setting. */
+ if (cfun)
+ {
+ old_dont_save_pending_sizes_p = cfun->x_dont_save_pending_sizes_p;
+ cfun->x_dont_save_pending_sizes_p = 0;
+ }
+
decl = grokdeclarator (TREE_VALUE (TREE_PURPOSE (parm)),
TREE_PURPOSE (TREE_PURPOSE (parm)),
PARM, 0, NULL);
*************** push_parm_decl (tree parm)
*** 2966,2971 ****
--- 2987,2994 ----
finish_decl (decl, NULL_TREE, NULL_TREE);
+ if (cfun)
+ cfun->x_dont_save_pending_sizes_p = old_dont_save_pending_sizes_p;
immediate_size_expand = save_immediate_size_expand;
}
*************** start_struct (enum tree_code code, tree
*** 4779,4791 ****
ref = lookup_tag (code, name, 1);
if (ref && TREE_CODE (ref) == code)
{
! if (TYPE_FIELDS (ref))
{
if (code == UNION_TYPE)
error ("redefinition of `union %s'", IDENTIFIER_POINTER (name));
else
error ("redefinition of `struct %s'", IDENTIFIER_POINTER (name));
}
}
else
{
--- 4802,4823 ----
ref = lookup_tag (code, name, 1);
if (ref && TREE_CODE (ref) == code)
{
! if (TYPE_SIZE (ref))
{
if (code == UNION_TYPE)
error ("redefinition of `union %s'", IDENTIFIER_POINTER (name));
else
error ("redefinition of `struct %s'", IDENTIFIER_POINTER (name));
}
+ else if (C_TYPE_BEING_DEFINED (ref))
+ {
+ if (code == UNION_TYPE)
+ error ("nested redefinition of `union %s'",
+ IDENTIFIER_POINTER (name));
+ else
+ error ("nested redefinition of `struct %s'",
+ IDENTIFIER_POINTER (name));
+ }
}
else
{
*************** finish_struct (tree t, tree fieldlist, t
*** 5000,5010 ****
if (C_DECL_VARIABLE_SIZE (x))
C_TYPE_VARIABLE_SIZE (t) = 1;
- /* Detect invalid nested redefinition. */
- if (TREE_TYPE (x) == t)
- error ("nested redefinition of `%s'",
- IDENTIFIER_POINTER (TYPE_NAME (t)));
-
if (DECL_INITIAL (x))
{
unsigned HOST_WIDE_INT width = tree_low_cst (DECL_INITIAL (x), 1);
--- 5032,5037 ----
*************** finish_struct (tree t, tree fieldlist, t
*** 5126,5131 ****
--- 5153,5161 ----
TYPE_LANG_SPECIFIC (x) = TYPE_LANG_SPECIFIC (t);
TYPE_ALIGN (x) = TYPE_ALIGN (t);
TYPE_USER_ALIGN (x) = TYPE_USER_ALIGN (t);
+ C_TYPE_FIELDS_READONLY (x) = C_TYPE_FIELDS_READONLY (t);
+ C_TYPE_FIELDS_VOLATILE (x) = C_TYPE_FIELDS_VOLATILE (t);
+ C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t);
}
/* If this was supposed to be a transparent union, but we can't
*************** start_enum (tree name)
*** 5199,5204 ****
--- 5229,5237 ----
pushtag (name, enumtype);
}
+ if (C_TYPE_BEING_DEFINED (enumtype))
+ error ("nested redefinition of `enum %s'", IDENTIFIER_POINTER (name));
+
C_TYPE_BEING_DEFINED (enumtype) = 1;
if (TYPE_VALUES (enumtype) != 0)
*************** store_parm_decls (void)
*** 5971,5979 ****
{
tree fndecl = current_function_decl;
- /* The function containing FNDECL, if any. */
- tree context = decl_function_context (fndecl);
-
/* True if this definition is written with a prototype. */
bool prototype = (current_function_parms
&& TREE_CODE (current_function_parms) != TREE_LIST);
--- 6004,6009 ----
*************** store_parm_decls (void)
*** 5998,6017 ****
/* Begin the statement tree for this function. */
begin_stmt_tree (&DECL_SAVED_TREE (fndecl));
! /* If this is a nested function, save away the sizes of any
! variable-size types so that we can expand them when generating
! RTL. */
! if (context)
! {
! tree t;
!
! DECL_LANG_SPECIFIC (fndecl)->pending_sizes
! = nreverse (get_pending_sizes ());
! for (t = DECL_LANG_SPECIFIC (fndecl)->pending_sizes;
! t;
! t = TREE_CHAIN (t))
! SAVE_EXPR_CONTEXT (TREE_VALUE (t)) = context;
! }
/* This function is being processed in whole-function mode. */
cfun->x_whole_function_mode_p = 1;
--- 6028,6036 ----
/* Begin the statement tree for this function. */
begin_stmt_tree (&DECL_SAVED_TREE (fndecl));
! /* Save away the sizes of any variable-size types so that we can
! expand them when generating RTL. */
! DECL_LANG_SPECIFIC (fndecl)->pending_sizes = get_pending_sizes ();
/* This function is being processed in whole-function mode. */
cfun->x_whole_function_mode_p = 1;
*************** static void
*** 6162,6176 ****
c_expand_body_1 (tree fndecl, int nested_p)
{
if (nested_p)
! {
! /* Make sure that we will evaluate variable-sized types involved
! in our function's type. */
! expand_pending_sizes (DECL_LANG_SPECIFIC (fndecl)->pending_sizes);
!
! /* Squirrel away our current state. */
! push_function_context ();
! }
tree_rest_of_compilation (fndecl, nested_p);
if (nested_p)
--- 6181,6192 ----
c_expand_body_1 (tree fndecl, int nested_p)
{
if (nested_p)
! /* Squirrel away our current state. */
! push_function_context ();
+ /* Make sure that we will evaluate variable-sized types involved
+ in our function's type. */
+ put_pending_sizes (DECL_LANG_SPECIFIC (fndecl)->pending_sizes);
tree_rest_of_compilation (fndecl, nested_p);
if (nested_p)
*************** c_begin_compound_stmt (void)
*** 6391,6397 ****
tree stmt;
/* Create the COMPOUND_STMT. */
! stmt = add_stmt (build_stmt (COMPOUND_STMT, NULL_TREE));
return stmt;
}
--- 6407,6413 ----
tree stmt;
/* Create the COMPOUND_STMT. */
! stmt = add_stmt (build_stmt (COMPOUND_STMT, error_mark_node));
return stmt;
}
diff -Nrcpad gcc-3.4.4/gcc/cfgcleanup.c gcc-3.4.5/gcc/cfgcleanup.c
*** gcc-3.4.4/gcc/cfgcleanup.c 2004-03-06 01:24:08.000000000 +0000
--- gcc-3.4.5/gcc/cfgcleanup.c 2005-07-29 00:51:13.000000000 +0000
*************** try_forward_edges (int mode, basic_block
*** 521,527 ****
&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG)
break;
! if (GET_CODE (insn) == NOTE)
break;
/* Do not clean up branches to just past the end of a loop
--- 521,527 ----
&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG)
break;
! if (insn && GET_CODE (insn) == NOTE)
break;
/* Do not clean up branches to just past the end of a loop
diff -Nrcpad gcc-3.4.4/gcc/ChangeLog gcc-3.4.5/gcc/ChangeLog
*** gcc-3.4.4/gcc/ChangeLog 2005-05-19 07:47:08.000000000 +0000
--- gcc-3.4.5/gcc/ChangeLog 2005-12-01 02:38:52.000000000 +0000
***************
*** 1,3 ****
--- 1,633 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
+ 2005-11-23 Alan Modra
+
+ PR middle-end/24950
+ * expmed.c (store_bit_field): Don't attempt to insv a field
+ larger than the reg.
+
+ Merge from trunk
+ 2005-11-14 Dale Johannesen
+ * expmed.c (store_bit_field): Add offset unconditionally for
+ memory targets.
+ (extract_bit_field): Don't force extzv or extv operand into
+ a register if field is too big.
+ 2004-12-01 Richard Henderson
+ * expmed.c (store_bit_field): Use simplify_gen_subreg instead
+ of gen_rtx_SUBREG directly.
+
+ 2005-11-16 Steve Ellcey
+
+ PR target/24718
+ * mklibgcc.in: Create dummy object for libgcc_eh.a
+ * config/ia64/hpux.h (LIBGCC_SPEC): Remove.
+
+ 2005-11-13 Andreas Jaeger
+
+ * fixinc/check.tpl: Handle CVS additionally.
+
+ 2005-11-10 Uros Bizjak
+
+ PR target/24315
+ * config/i386/i386.md (*pushdi2_rex64 splitter)
+ (*movdi_1_rex64 splitter): Delay splitting after
+ flow2 pass only when (optimize > 0 && flag_peephole2).
+
+ 2005-11-10 Uros Bizjak
+
+ PR target/19340
+ * reg-stack.c (reg_to_stack): Update register liveness also
+ for flag_sched2_use_traces.
+
+ 2005-11-09 Per Bothner
+ Uros Bizjak
+
+ PR c/24101
+ * toplev.c (process_options): Initialize debug_hooks early
+ in case lang_hooks.post_options ends up calling a debug_hook.
+ * cppinit.c (read_original_filename): Temporarily set
+ state.in_directive before calling _cpp_lex_direct for
+ CPP_HASH tokens.
+
+ 2005-11-07 Steve Ellcey
+
+ PR bootstrap/24688
+ * fixinc/inclhack.def (sco_math): Add bypass.
+ * fixinc/fixincl.x: Regenerate.
+
+ 2005-11-07 James E Wilson
+
+ PR preprocessor/15220
+ * cppfiles.c (_cpp_find_file): New parameter angle_brackets. Fix all
+ callers. Pass to open_file_failed.
+ (open_file_failed): New parameter angle_brackets. Fix
+ all callers. use in print_dep assignment.
+ * cpphash.h (_cpp_find_file): Add new parm to declaration.
+ * cppinit.c (cpp_read_main_file): Pass another arg to _cpp_find_file.
+
+ 2005-11-05 Andreas Jaeger
+
+ * fixinc/check.tpl: Adopt for move to subversion.
+
+ 2005-11-03 Richard Guenther
+
+ PR middle-end/24470
+ * fold-const.c (fold): Avoid running in circles if we
+ got some un-folded subtree.
+
+ 2005-10-30 Alan Modra
+
+ PR target/23070
+ * config/rs6000/rs6000.c (function_arg): For ABI_V4 calls to
+ stdarg functions, set/clear the fp marker even when no variable
+ args are passed.
+ * config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Describe
+ -mprototype and -mno-prototype.
+
+ 2005-10-21 Alan Modra
+
+ PR target/24465
+ * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Always
+ use r2 for 64-bit tls .got access.
+
+ 2005-10-19 Paolo Bonzini
+
+ * dojump.c (do_jump): Revert the last patch as it breaks Ada.
+
+ 2005-10-19 Paolo Bonzini
+
+ PR #19672
+ * dojump.c (do_jump): Handle TRUTH_AND_EXPR and TRUTH_OR_EXPR
+ like TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, if the branch cost
+ is low enough.
+
+ 2005-10-09 Eric Botcazou
+
+ * config/sparc/gmon-sol2.c (internal_mcount): Mark as used.
+
+ 2005-10-08 Janis Johnson
+
+ PR debug/24267
+ Partial backport from mainline
+ 2004-05-04 Paolo Bonzini
+ Richard Henderson
+ * tree.c (make_or_reuse_type): New.
+ (build_common_tree_nodes): Use it.
+
+ PR target/18583
+ Partial backport from mainline
+ 2004-05-04 Paolo Bonzini
+ Richard Henderson
+ * c-common.c (vector_types_convertible_p): New function.
+ * c-common.h: Declare it.
+ * c-typeck.c (digest_init): Use it.
+
+ 2005-10-07 James E Wilson
+
+ PR target/23644
+ * doc/invoke.texi (IA-64 Options, item -mtune): Renamed from
+ -mtune-arch.
+
+ 2005-10-01 Richard Earnshaw
+
+ PR target/23985
+ Back-port 2004-08-19 Richard Henderson
+ * config/arm/arm.c (arm_gen_load_multiple): Use
+ adjust_automodify_address. Take base memory and offset instead
+ of unchanging/struct/scalar bits.
+ (arm_gen_store_multiple): Likewise.
+ (arm_gen_movstrqi): Use adjust_automodify_address.
+ * config/arm/arm-protos.h: Update decls.
+ * config/arm/arm.md (load_multiple): Update arm_gen_load_multiple call.
+ (store_multiple): Similarly.
+
+ 2005-09-29 Alan Modra
+
+ PR target/24102
+ * config/rs6000/rs6000.md (floatdisf2_internal2): Correct range
+ check for numbers that need no bit twiddle.
+
+ 2005-09-09 Richard Guenther
+
+ PR c/20239
+ * cppinit.c (cpp_read_main_file): Avoid segfaulting on
+ NULL pfile->map.
+
+ 2005-09-09 Richard Guenther
+
+ PR c++/23624
+ * fold-const.c (fold): Check truth_value_p before calling
+ invert_truthvalue.
+
+ 2005-09-08 Craig Rodrigues
+
+ Backport from mainline
+ 2005-09-01 Craig Rodrigues
+
+ * c-decl.c (diagnose_mismatched_decls): With -Wredundant-decls,
+ do not issue warning for a variable definition following
+ a declaration.
+
+ 2005-09-02 Richard Sandiford
+
+ PR c/22061
+ * c-decl.c (push_parm_decl): Push and pop x_dont_save_pending_sizes_p
+ around the call to grokdeclarator. Call grokdeclarator with the
+ field set to 0.
+ (store_parm_decls): Always store the pending_sizes in cfun.
+ (c_expand_body_1): Call put_pending_sizes.
+ * c-objc-common.c (c_cannot_inline_tree_fn): Always check
+ pending_sizes.
+
+ 2005-09-01 Jakub Jelinek
+
+ PR rtl-optimization/23478
+ * regs.h (reg_info): Add throw_calls_crossed.
+ (REG_N_THROWING_CALLS_CROSSED): Define.
+ * flow.c (allocate_reg_life_data): Initialize
+ REG_N_THROWING_CALLS_CROSSED.
+ (propagate_one_insn, attempt_auto_inc): Update
+ REG_N_THROWING_CALLS_CROSSED.
+ * local-alloc.c (struct qty): Add n_throwing_calls_crossed field.
+ (alloc_qty): Initialize it.
+ (update_equiv_regs): Clear REG_N_THROWING_CALLS_CROSSED.
+ (combine_regs): Combine also n_throwing_calls_crossed fields.
+ (find_free_reg): Don't attempt to caller-save pseudos crossing
+ calls that might throw.
+ * global.c (struct allocno): Add throwing_calls_crossed field.
+ (global_alloc): Initialize throwing_calls_crossed.
+ (find_reg): Don't attempt to caller-save pseudos crossing calls that
+ might throw.
+
+ 2005-09-01 Richard Earnshaw
+
+ PR rtl-optimization/17810 target/15342
+ * regrename.c: Fix polluted patch in previous change.
+
+ 2005-09-01 Richard Earnshaw
+
+ PR rtl-optimization/17810
+ Backport
+ 2004-11-04 Richard Sandiford
+ PR target/15342
+ * regrename.c (scan_rtx): Treat the destinations of SETs and CLOBBERs
+ as OP_INOUT if the instruction is predicated.
+
+ 2005-08-31 David Edelsohn
+
+ PR target/23539
+ Backport from mainline:
+
+ 2005-08-27 David Edelsohn
+ * config/rs6000/rs6000.c (expand_block_move): Use HImode when
+ bytes >= 2 not bytes == 2.
+
+ 2005-08-21 Jakub Jelinek
+
+ * simplify-rtx.c (simplify_immed_subreg) : Only
+ clear up to elem_bitsize bits, not max_bitsize.
+
+ 2005-07-20 Steve Ellcey
+
+ PR target/21841
+ * doc/invoke.texi (-mgnu-ld): Update description.
+ (-mhp-ld): Ditto.
+
+ 2005-08-09 Paolo Bonzini
+
+ PR rtl-optimization/17860
+ * loop.c (check_dbra_loop): Do not try to use an end condition
+ like "i != 0" in the reversed loop.
+
+ 2005-08-08 Josh Conner
+
+ PR rtl-optimization/23241
+ * combine.c (simplify_comparison): Fix error in determining
+ whether to lift a subreg from comparison.
+
+ 2005-08-08 Richard Sandiford
+
+ PR middle-end/21964
+ * stmt.c (tail_recursion_args): Insert a call to emit_queue.
+
+ 2005-08-08 Richard Sandiford
+
+ PR c/22458
+ * c-decl.c (c_begin_compound_stmt): Set the initial body to
+ error_mark_node, not NULL.
+
+ 2005-08-07 John David Anglin
+
+ * pa64-regs.h (CONDITIONAL_REGISTER_USAGE): Fix loop upper bound.
+
+ 2005-08-06 John David Anglin
+
+ PR pch/14940
+ Backport from mainline:
+
+ * config.host (hppa*-*-hpux*, hppa*-*-linux): Define out_host_hook_obj
+ and host_xmake_file using new host configuration files.
+ * config/pa/pa-host.c, config/pa/x-hpux, config/pa/x-linux: New files.
+
+ 2005-08-06 Christian Joensson
+
+ PR target/20673
+ Backport from mainline:
+
+ 2005-04-15 David S. Miller
+
+ * config/sparc/sparc.h (sparc_hard_reg_printed): Mark as GTY(()).
+
+ 2005-08-05 John David Anglin
+
+ * pa.c (function_arg): Fix typo in last change.
+
+ * pa.c (function_value): Handle small aggregates on 32-bit targets.
+ (function_arg): Pass small aggregates in general registers on 32-bit
+ targets.
+ * som.h (MEMBER_TYPE_FORCES_BLK): Delete define.
+
+ 2005-08-04 Gerald Pfeifer
+
+ * doc/install.texi (Specific): Adjust link to openavr.org.
+ (Specific): Remove broken reference to GCC 2.8.1 for OS/2.
+ (Binaries): Adjust HP-UX Porting Center link.
+ (Binaries): Adjust Free Software Foundation ordering link.
+ (Binaries): Remove broken link to Sinix/Reliant Unix binaries.
+
+ 2005-08-04 Eric Botcazou
+
+ * doc/invoke.texi (Optimize Options): Document that -funswitch-loops
+ is enabled at -O3.
+
+ 2005-08-03 John David Anglin
+
+ PR target/21723
+ * pa.md: Remove fcpy alternative from movhi and movqi patterns.
+ * pa32-regs.h (HARD_REGNO_NREGS): Return two floating point registers
+ for complex modes when generating code for PA 1.0.
+ (VALID_FP_MODE_P): New macro.
+ (HARD_REGNO_MODE_OK): Use VALID_FP_MODE_P. Use non-overlapping register
+ sets for all general and floating point modes. Align wide floating
+ point modes to even register boundaries to comply with architectural
+ requirements.
+ (CLASS_MAX_NREGS): Update to align with change to HARD_REGNO_NREGS.
+ * pa64-regs.h (HARD_REGNO_NREGS): Update comment and formatting.
+ (VALID_FP_MODE_P): New macro.
+ (HARD_REGNO_MODE_OK): Use VALID_FP_MODE_P. Use non-overlapping register
+ sets for all general and floating point modes. Align wide floating
+ point modes to even register boundaries to comply with architectural
+ requirements.
+
+ 2005-08-03 Richard Sandiford
+
+ PR target/18582
+ * config/i386/i386.c (ix86_expand_unop_builtin): Force the target
+ to be a register if do_load is true.
+
+ 2005-08-02 Ian Lance Taylor
+
+ PR pch/14400
+ Backport from mainline:
+
+ 2005-08-01 Ian Lance Taylor
+
+ * config/host-linux.c (linux_gt_pch_get_address): Add new name
+ randomize_va_space for virtual address randomization control.
+
+ 2005-02-15 James A. Morrison
+
+ PR pch/14940
+ PR target/19300
+ * config/host-linux.c (linux_gt_pch_use_address): Copy from
+ config/pa/pa-host.c:pa_gt_pch_use_address.
+
+ 2004-11-09 James A. Morrison
+
+ PR pch/14940
+ * config/host-linux.c (TRY_EMPTY_VM_SPACE): Add __sparc__
+ definitions.
+
+ 2004-10-15 Jon Grimm
+
+ * config/host-linux.c (TRY_EMPTY_VM_SPACE): Add __powerpc__
+ definition.
+
+ 2004-04-24 Ulrich Weigand
+
+ * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __s390__
+ and __s390x__ hosts.
+
+ 2004-04-08 Ian Lance Taylor
+
+ * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
+ Return 1 if file was successfully mapped.
+
+ 2004-03-15 Ian Lance Taylor
+
+ * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
+ Fix the check for abort and only do the mmap if we can.
+
+ 2004-03-12 Andrew Pinski
+
+ * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
+ Use ret instead of result. Use addr instead of base.
+
+ 2004-03-10 Richard Henderson
+
+ * c-pch.c (c_common_no_more_pch): Update for gt_pch_use_address
+ extra arguments.
+ * config.host (*-*-solaris2*, *-*-linux*): Add out_host_hook_obj
+ and host_xmake_file fragments.
+ * ggc-common.c (gt_pch_save): Update for gt_pch_get_address change.
+ (gt_pch_restore): Similarly for gt_pch_use_address.
+ (default_gt_pch_get_address): New.
+ (mmap_gt_pch_get_address): Split out of gt_pch_save.
+ (default_gt_pch_use_address): Split out of gt_pch_restore.
+ (mmap_gt_pch_use_address): Likewise.
+ * hooks.c (hook_voidp_size_t_null): Remove.
+ (hook_bool_voidp_size_t_false): Remove.
+ * hooks.h: Likewise.
+ * hosthooks-def.h (HOST_HOOKS_GT_PCH_GET_ADDRESS): Use one of the
+ default_ or mmap_ definitions.
+ (HOST_HOOKS_GT_PCH_USE_ADDRESS): Likewise.
+ * hosthooks.h (struct host_hooks): Update gt_pch_get_address
+ and gt_pch_use_address.
+ * config/host-linux.c, config/host-solaris.c: New files.
+ * config/x-linux, config/x-solaris: New files.
+ * config/rs6000/host-darwin.c darwin_rs6000_gt_pch_get_address):
+ Update for changed definition.
+ (darwin_rs6000_gt_pch_use_address): Likewise.
+ * doc/hostconfig.texi: Update docs.
+
+ 2005-07-31 Richard Sandiford
+
+ PR target/20621
+ Backport from mainline:
+
+ 2004-08-01 Richard Sandiford
+ * config/mips/mips.md (cprestore): Provide two alternatives, one for
+ an in-range offset and one for an out-of-range offset. Wrap the latter
+ in .set macro/.set nomacro if it's inside a .set nomacro block.
+
+ 2004-08-01 Richard Sandiford
+ * config/mips/mips-protos.h (mips_gp_save_slot): Remove.
+ (mips_restore_gp): Declare.
+ * config/mips/mips.c (mips_add_offset): Add a scratch register
+ argument. Reimplement in rtl only, reusing MIPS16 logic from
+ mips_output_mi_thunk.
+ (mips_legitimize_address, mips_legitimize_const_move): Adjust calls
+ to mips_add_offset.
+ (mips_gp_save_slot): Delete.
+ (mips_restore_gp): New function.
+ (mips_set_return_address, mips_output_mi_thunk): Use mips_add_offset.
+ * config/mips/mips.md (exception_receiver): Turn into a
+ define_insn_and_split. Use mips_restore_gp to do the split.
+ (call_internal, call_value_internal, call_value_multiple_internal): Use
+ mips_restore_gp to restore $gp.
+
+ 2005-07-29 Alan Modra
+
+ * config/rs6000/sysv4.h (TARGET_ASM_EXCEPTION_SECTION): Delete.
+
+ 2005-07-28 Richard Henderson
+
+ PR rtl-opt/22619
+ * cfgcleanup.c (try_forward_edges): Watch out for end of
+ insn chain.
+
+ 2005-07-28 Joseph S. Myers
+
+ PR c/17188
+ PR c/21899
+ * c-decl.c (diagnose_mismatched_decls): Check for duplicate
+ declarations of enumerators.
+ (start_struct): Check TYPE_SIZE rather than TYPE_FIELDS to check
+ for redefinition. Check for nested redefinition.
+ (finish_struct): Don't check for nested redefinition.
+ (start_enum): Check for nested redefinition.
+
+ 2005-07-28 Joseph S. Myers
+
+ PR c/21873
+ * c-typeck.c (push_init_level): Don't pop levels without braces if
+ implicit == 1.
+
+ 2005-07-28 Gerald Pfeifer
+
+ * doc/install.texi (Configuration): Update Valgrind homepage.
+
+ 2005-07-28 Richard Sandiford
+
+ PR c/20187
+ * fold-const.c (fold): When shortening comparisons of widened operands,
+ check whether the tree returned by get_unwidened really is wider.
+
+ 2005-07-28 Richard Sandiford
+
+ PR c/22589
+ Backport from mainline:
+
+ 2004-06-16 Alexandre Oliva
+ * tree.c (get_narrower): Don't narrow integral types into
+ non-integral types.
+
+ 2005-07-26 Bernardo Innocenti
+
+ Backport from mainline:
+ 2005-07-12 Peter Barada
+ PR middle-end/16719
+ PR middle-end/18421
+ * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Disallow bytes
+ in address registers.
+ * config/m68k/m68k.c (hard_regno_mode_ok): Likewise.
+ * config/m68k/m68k.md: Replace 's' with 'i' in 4th
+ alternative of addsi3_5200.
+
+ 2005-07-21 Janis Johnson
+
+ PR target/20191
+ Backport from mainline:
+
+ 2004-04-23 Dale Johannesen
+
+ * config/rs6000.md (movsf_hardfloat): Add POWER form of nop.
+ (movdf_hardfloat64): Ditto.
+ (movdf_softfloat64): Ditto.
+
+ * config/rs6000.md (movsf_hardfloat): Accept CTR-to-CTR copy.
+ (movdf_hardfloat64): Ditto.
+
+ 2005-07-21 Richard Sandiford
+
+ PR rtl-optimization/22167
+ * gcse.c (hoist_code): Fix hoist_exprs[] check.
+
+ 2005-07-19 Gerald Pfeifer
+
+ * config.gcc: Add support for *-*-freebsd7, *-*-freebsd8,
+ and *-*-freebsd9.
+ * config/freebsd-spec.h (FBSD_TARGET_OS_CPP_BUILTINS): Ditto.
+
+ 2005-07-09 Jakub Jelinek
+
+ * config/i386/i386.c (output_set_got): Don't omit OFFSET FLAT:
+ in Intel syntax add %reg, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_+(.-.Lx).
+
+ 2005-07-08 David Edelsohn
+
+ Backport from mainline:
+ 2005-06-18 Roger Sayle
+ PR target/22083
+ * config/rs6000/aix51.h (TARGET_C99_FUNCTIONS): Remove definition.
+
+ 2005-07-05 Joseph S. Myers
+
+ PR c/22308
+ * c-decl.c (finish_struct): Also copy C_TYPE_FIELDS_READONLY,
+ C_TYPE_FIELDS_VOLATILE and C_TYPE_VARIABLE_SIZE to type variants.
+
+ 2005-06-14 Eric Botcazou
+
+ PR target/20301
+ * config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
+ unsigned index numbers.
+
+ 2005-06-08 Eric Botcazou
+
+ PR target/21889
+ * config/sparc/sol2.h (ASM_OUTPUT_DWARF_DTPREL): Undefine.
+ * config/sparc/sol2-gas.h (ASM_OUTPUT_DWARF_DTPREL): Redefine.
+
+ 2005-06-04 Richard Henderson
+
+ PR target/21888
+ * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
+ until we've passed initial ldgp.
+
+ 2005-06-01 Richard Henderson
+
+ * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
+ * config.in, configure: Rebuild.
+ * config/alpha/alpha.c (print_operand): Add 'j'.
+ * alpha.md (divmodsi_internal_er_1): Use it.
+ (divmoddi_internal_er_1): Likewise.
+
+ 2005-05-31 Eric Botcazou
+
+ * doc/install.texi (sparc-sun-solaris2*): Update note
+ about Sun bug 4910101.
+
+ 2005-05-29 Eric Botcazou
+
+ PR target/19933
+ * fixinc/inclhack.def (solaris_math_6_1): New fix.
+ (solaris_math_9): Rewrite and guard with #ifdef __sparc__.
+ * fixinc/fixincl.x: Regenerate.
+ * fixinc/tests/base/iso/math_c99.h: Adjust for above changes.
+
+ Backport from mainline:
+ 2005-05-19 Eric Botcazou
+ Joseph S. Myers
+
+ * fixinc/inclhack.def: New fixes solaris_math_[1-9].
+ * fixinc/fixincl.x: Regenerate.
+ * fixinc/tests/base/iso/math_c99.h: New.
+
+ Backport from mainline:
+ 2005-05-10 Joseph S. Myers
+
+ * fixinc/inclhack.def (stdio_stdarg_h, stdio_va_list): Bypass on
+ *-*-solaris2.1[0-9]*, not just *-*-solaris2.1[0-9].
+ * fixinc/fixincl.x: Regenerate.
+
+ Backport from mainline:
+ 2004-11-26 Mark Mitchell
+
+ * fixinc/inclhack.def (gnu_types): Do not use on Solaris 2.1x.
+ (stdio_va_list): Likewise.
+ (stdio_stdarg.h): Likewise.
+ (solaris_stdio_tag): Add bypass.
+ * fixinc/fixincl.x: Regenerated.
+
+ 2005-05-26 Jakub Jelinek
+
+ PR target/21716
+ * reg-stack.c (swap_rtx_condition): Don't crash if %ax user was not
+ found in the basic block and last insn in the basic block is not
+ INSN_P. Remove explicit unspec numbers that are no longer valid
+ from comments.
+
+ 2005-05-25 Roger Sayle
+
+ PR middle-end/21709
+ * fold-const.c (const_binop): Check for division by zero during
+ complex division.
+
+ 2005-05-24 Kazuhiro Inaoka
+
+ * config/m32r/m32r.c (m32r_expand_block_move): Return 0 if
+ nothing was done.
+ * config/m32r/m32r.md (movmemsi): If m32r_expand_block_move did
+ nothing then FAIL.
+ * config/m32r/m32r/m32r-protos.h (m32r_expand_block_move): Update
+ prototype.
+
+ 2005-05-23 Ulrich Weigand
+
+ * unroll.c (loop_iterations): Remove common term from initial
+ and final value only if it is loop invariant.
+
+ 2005-05-20 Mark Mitchell
+
+ * version.c (version_string): Mark as 3.4.5.
+
+ 2005-05-19 Mark Mitchell
+
+ * version.c (version_string): Restore pre-release marker.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
***************
*** 87,93 ****
(m68hc11_split_move): Likewise.
2005-05-06 Bruce Korb
! Joseph S. Myers
* fixinc/inclhack.def: Correct backslashes
* fixinc/fixincl.x: regen
--- 717,723 ----
(m68hc11_split_move): Likewise.
2005-05-06 Bruce Korb
! Joseph S. Myers
* fixinc/inclhack.def: Correct backslashes
* fixinc/fixincl.x: regen
diff -Nrcpad gcc-3.4.4/gcc/c-objc-common.c gcc-3.4.5/gcc/c-objc-common.c
*** gcc-3.4.4/gcc/c-objc-common.c 2004-02-08 23:12:17.000000000 +0000
--- gcc-3.4.5/gcc/c-objc-common.c 2005-09-02 12:34:58.000000000 +0000
*************** c_cannot_inline_tree_fn (tree *fnp)
*** 118,134 ****
}
}
! if (! DECL_FILE_SCOPE_P (fn))
{
! /* If a nested function has pending sizes, we may have already
! saved them. */
! if (DECL_LANG_SPECIFIC (fn)->pending_sizes)
! {
! if (do_warning)
! warning ("%Jnested function '%F' can never be inlined because it "
! "has possibly saved pending sizes", fn, fn);
! goto cannot_inline;
! }
}
return 0;
--- 118,129 ----
}
}
! if (DECL_LANG_SPECIFIC (fn)->pending_sizes)
{
! if (do_warning)
! warning ("%Jfunction '%F' can never be inlined because it has "
! "pending sizes", fn, fn);
! goto cannot_inline;
}
return 0;
diff -Nrcpad gcc-3.4.4/gcc/combine.c gcc-3.4.5/gcc/combine.c
*** gcc-3.4.4/gcc/combine.c 2005-03-17 01:36:08.000000000 +0000
--- gcc-3.4.5/gcc/combine.c 2005-08-08 18:41:04.000000000 +0000
*************** simplify_comparison (enum rtx_code code,
*** 10739,10745 ****
/* (A - C1) always sign-extends, like C2. */
&& num_sign_bit_copies (a, inner_mode)
> (unsigned int) (GET_MODE_BITSIZE (inner_mode)
! - mode_width - 1)))
{
op0 = SUBREG_REG (op0);
continue;
--- 10739,10745 ----
/* (A - C1) always sign-extends, like C2. */
&& num_sign_bit_copies (a, inner_mode)
> (unsigned int) (GET_MODE_BITSIZE (inner_mode)
! - (mode_width - 1))))
{
op0 = SUBREG_REG (op0);
continue;
diff -Nrcpad gcc-3.4.4/gcc/config/alpha/alpha.c gcc-3.4.5/gcc/config/alpha/alpha.c
*** gcc-3.4.4/gcc/config/alpha/alpha.c 2004-11-12 09:11:33.000000000 +0000
--- gcc-3.4.5/gcc/config/alpha/alpha.c 2005-06-04 19:27:26.000000000 +0000
*************** print_operand (FILE *file, rtx x, int co
*** 5469,5474 ****
--- 5469,5489 ----
}
break;
+ case 'j':
+ {
+ const char *lituse;
+
+ #ifdef HAVE_AS_JSRDIRECT_RELOCS
+ lituse = "lituse_jsrdirect";
+ #else
+ lituse = "lituse_jsr";
+ #endif
+
+ if (INTVAL (x) == 0)
+ abort ();
+ fprintf (file, "\t\t!%s!%d", lituse, (int) INTVAL (x));
+ }
+ break;
case 'r':
/* If this operand is the constant zero, write it as "$31". */
if (GET_CODE (x) == REG)
*************** alpha_align_insns (unsigned int max_alig
*** 8814,8820 ****
unsigned int align;
/* OFS is the offset of the current insn in the insn group. */
int ofs;
! int prev_in_use, in_use, len;
rtx i, next;
/* Let shorten branches care for assigning alignments to code labels. */
--- 8829,8835 ----
unsigned int align;
/* OFS is the offset of the current insn in the insn group. */
int ofs;
! int prev_in_use, in_use, len, ldgp;
rtx i, next;
/* Let shorten branches care for assigning alignments to code labels. */
*************** alpha_align_insns (unsigned int max_alig
*** 8832,8837 ****
--- 8847,8854 ----
if (GET_CODE (i) == NOTE)
i = next_nonnote_insn (i);
+ ldgp = alpha_function_needs_gp ? 8 : 0;
+
while (i)
{
next = (*next_group) (i, &in_use, &len);
*************** alpha_align_insns (unsigned int max_alig
*** 8888,8893 ****
--- 8905,8914 ----
}
}
+ /* We may not insert padding inside the initial ldgp sequence. */
+ else if (ldgp > 0)
+ ldgp -= len;
+
/* If the group won't fit in the same INT16 as the previous,
we need to add padding to keep the group together. Rather
than simply leaving the insn filling to the assembler, we
diff -Nrcpad gcc-3.4.4/gcc/config/alpha/alpha.md gcc-3.4.5/gcc/config/alpha/alpha.md
*** gcc-3.4.4/gcc/config/alpha/alpha.md 2004-12-05 19:59:59.000000000 +0000
--- gcc-3.4.5/gcc/config/alpha/alpha.md 2005-06-01 16:32:31.000000000 +0000
***************
*** 967,973 ****
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "ldq $27,__%E3($29)\t\t!literal!%#\;jsr $23,($27),__%E3\t\t!lituse_jsr!%#"
"&& reload_completed"
[(parallel [(set (match_dup 0)
(sign_extend:DI (match_dup 3)))
--- 967,973 ----
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "#"
"&& reload_completed"
[(parallel [(set (match_dup 0)
(sign_extend:DI (match_dup 3)))
***************
*** 1012,1018 ****
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "jsr $23,($27),__%E3%J5"
[(set_attr "type" "jsr")
(set_attr "length" "4")])
--- 1012,1018 ----
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "jsr $23,($27),__%E3%j5"
[(set_attr "type" "jsr")
(set_attr "length" "4")])
***************
*** 1036,1042 ****
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "ldq $27,__%E3($29)\t\t!literal!%#\;jsr $23,($27),__%E3\t\t!lituse_jsr!%#"
"&& reload_completed"
[(parallel [(set (match_dup 0) (match_dup 3))
(use (match_dup 0))
--- 1036,1042 ----
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "#"
"&& reload_completed"
[(parallel [(set (match_dup 0) (match_dup 3))
(use (match_dup 0))
***************
*** 1080,1086 ****
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "jsr $23,($27),__%E3%J5"
[(set_attr "type" "jsr")
(set_attr "length" "4")])
--- 1080,1086 ----
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
! "jsr $23,($27),__%E3%j5"
[(set_attr "type" "jsr")
(set_attr "length" "4")])
diff -Nrcpad gcc-3.4.4/gcc/config/arm/arm.c gcc-3.4.5/gcc/config/arm/arm.c
*** gcc-3.4.4/gcc/config/arm/arm.c 2005-02-01 15:07:02.000000000 +0000
--- gcc-3.4.5/gcc/config/arm/arm.c 2005-10-01 13:31:38.000000000 +0000
*************** multi_register_push (rtx op, enum machin
*** 5158,5170 ****
rtx
arm_gen_load_multiple (int base_regno, int count, rtx from, int up,
! int write_back, int unchanging_p, int in_struct_p,
! int scalar_p)
{
int i = 0, j;
rtx result;
int sign = up ? 1 : -1;
! rtx mem;
/* XScale has load-store double instructions, but they have stricter
alignment requirements than load-store multiple, so we can not
--- 5158,5170 ----
rtx
arm_gen_load_multiple (int base_regno, int count, rtx from, int up,
! int write_back, rtx basemem, HOST_WIDE_INT *offsetp)
{
+ HOST_WIDE_INT offset = *offsetp;
int i = 0, j;
rtx result;
int sign = up ? 1 : -1;
! rtx mem, addr;
/* XScale has load-store double instructions, but they have stricter
alignment requirements than load-store multiple, so we can not
*************** arm_gen_load_multiple (int base_regno, i
*** 5202,5216 ****
for (i = 0; i < count; i++)
{
! mem = gen_rtx_MEM (SImode, plus_constant (from, i * 4 * sign));
! RTX_UNCHANGING_P (mem) = unchanging_p;
! MEM_IN_STRUCT_P (mem) = in_struct_p;
! MEM_SCALAR_P (mem) = scalar_p;
emit_move_insn (gen_rtx_REG (SImode, base_regno + i), mem);
}
if (write_back)
! emit_move_insn (from, plus_constant (from, count * 4 * sign));
seq = get_insns ();
end_sequence ();
--- 5202,5218 ----
for (i = 0; i < count; i++)
{
! addr = plus_constant (from, i * 4 * sign);
! mem = adjust_automodify_address (basemem, SImode, addr, offset);
emit_move_insn (gen_rtx_REG (SImode, base_regno + i), mem);
+ offset += 4 * sign;
}
if (write_back)
! {
! emit_move_insn (from, plus_constant (from, count * 4 * sign));
! *offsetp = offset;
! }
seq = get_insns ();
end_sequence ();
*************** arm_gen_load_multiple (int base_regno, i
*** 5231,5256 ****
for (j = 0; i < count; i++, j++)
{
! mem = gen_rtx_MEM (SImode, plus_constant (from, j * 4 * sign));
! RTX_UNCHANGING_P (mem) = unchanging_p;
! MEM_IN_STRUCT_P (mem) = in_struct_p;
! MEM_SCALAR_P (mem) = scalar_p;
XVECEXP (result, 0, i)
= gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, base_regno + j), mem);
}
return result;
}
rtx
arm_gen_store_multiple (int base_regno, int count, rtx to, int up,
! int write_back, int unchanging_p, int in_struct_p,
! int scalar_p)
{
int i = 0, j;
rtx result;
int sign = up ? 1 : -1;
! rtx mem;
/* See arm_gen_load_multiple for discussion of
the pros/cons of ldm/stm usage for XScale. */
--- 5233,5260 ----
for (j = 0; i < count; i++, j++)
{
! addr = plus_constant (from, j * 4 * sign);
! mem = adjust_automodify_address_nv (basemem, SImode, addr, offset);
XVECEXP (result, 0, i)
= gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, base_regno + j), mem);
+ offset += 4 * sign;
}
+ if (write_back)
+ *offsetp = offset;
+
return result;
}
rtx
arm_gen_store_multiple (int base_regno, int count, rtx to, int up,
! int write_back, rtx basemem, HOST_WIDE_INT *offsetp)
{
+ HOST_WIDE_INT offset = *offsetp;
int i = 0, j;
rtx result;
int sign = up ? 1 : -1;
! rtx mem, addr;
/* See arm_gen_load_multiple for discussion of
the pros/cons of ldm/stm usage for XScale. */
*************** arm_gen_store_multiple (int base_regno,
*** 5262,5276 ****
for (i = 0; i < count; i++)
{
! mem = gen_rtx_MEM (SImode, plus_constant (to, i * 4 * sign));
! RTX_UNCHANGING_P (mem) = unchanging_p;
! MEM_IN_STRUCT_P (mem) = in_struct_p;
! MEM_SCALAR_P (mem) = scalar_p;
emit_move_insn (mem, gen_rtx_REG (SImode, base_regno + i));
}
if (write_back)
! emit_move_insn (to, plus_constant (to, count * 4 * sign));
seq = get_insns ();
end_sequence ();
--- 5266,5282 ----
for (i = 0; i < count; i++)
{
! addr = plus_constant (to, i * 4 * sign);
! mem = adjust_automodify_address (basemem, SImode, addr, offset);
emit_move_insn (mem, gen_rtx_REG (SImode, base_regno + i));
+ offset += 4 * sign;
}
if (write_back)
! {
! emit_move_insn (to, plus_constant (to, count * 4 * sign));
! *offsetp = offset;
! }
seq = get_insns ();
end_sequence ();
*************** arm_gen_store_multiple (int base_regno,
*** 5291,5305 ****
for (j = 0; i < count; i++, j++)
{
! mem = gen_rtx_MEM (SImode, plus_constant (to, j * 4 * sign));
! RTX_UNCHANGING_P (mem) = unchanging_p;
! MEM_IN_STRUCT_P (mem) = in_struct_p;
! MEM_SCALAR_P (mem) = scalar_p;
!
XVECEXP (result, 0, i)
= gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (SImode, base_regno + j));
}
return result;
}
--- 5297,5312 ----
for (j = 0; i < count; i++, j++)
{
! addr = plus_constant (to, j * 4 * sign);
! mem = adjust_automodify_address_nv (basemem, SImode, addr, offset);
XVECEXP (result, 0, i)
= gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (SImode, base_regno + j));
+ offset += 4 * sign;
}
+ if (write_back)
+ *offsetp = offset;
+
return result;
}
*************** int
*** 5307,5319 ****
arm_gen_movstrqi (rtx *operands)
{
HOST_WIDE_INT in_words_to_go, out_words_to_go, last_bytes;
int i;
! rtx src, dst;
! rtx st_src, st_dst, fin_src, fin_dst;
rtx part_bytes_reg = NULL;
rtx mem;
- int dst_unchanging_p, dst_in_struct_p, src_unchanging_p, src_in_struct_p;
- int dst_scalar_p, src_scalar_p;
if (GET_CODE (operands[2]) != CONST_INT
|| GET_CODE (operands[3]) != CONST_INT
--- 5314,5324 ----
arm_gen_movstrqi (rtx *operands)
{
HOST_WIDE_INT in_words_to_go, out_words_to_go, last_bytes;
+ HOST_WIDE_INT srcoffset, dstoffset;
int i;
! rtx src, dst, srcbase, dstbase;
rtx part_bytes_reg = NULL;
rtx mem;
if (GET_CODE (operands[2]) != CONST_INT
|| GET_CODE (operands[3]) != CONST_INT
*************** arm_gen_movstrqi (rtx *operands)
*** 5321,5343 ****
|| INTVAL (operands[3]) & 3)
return 0;
! st_dst = XEXP (operands[0], 0);
! st_src = XEXP (operands[1], 0);
!
! dst_unchanging_p = RTX_UNCHANGING_P (operands[0]);
! dst_in_struct_p = MEM_IN_STRUCT_P (operands[0]);
! dst_scalar_p = MEM_SCALAR_P (operands[0]);
! src_unchanging_p = RTX_UNCHANGING_P (operands[1]);
! src_in_struct_p = MEM_IN_STRUCT_P (operands[1]);
! src_scalar_p = MEM_SCALAR_P (operands[1]);
!
! fin_dst = dst = copy_to_mode_reg (SImode, st_dst);
! fin_src = src = copy_to_mode_reg (SImode, st_src);
in_words_to_go = ARM_NUM_INTS (INTVAL (operands[2]));
out_words_to_go = INTVAL (operands[2]) / 4;
last_bytes = INTVAL (operands[2]) & 3;
!
if (out_words_to_go != in_words_to_go && ((in_words_to_go - 1) & 3) != 0)
part_bytes_reg = gen_rtx_REG (SImode, (in_words_to_go - 1) & 3);
--- 5326,5342 ----
|| INTVAL (operands[3]) & 3)
return 0;
! dstbase = operands[0];
! srcbase = operands[1];
!
! dst = copy_to_mode_reg (SImode, XEXP (dstbase, 0));
! src = copy_to_mode_reg (SImode, XEXP (srcbase, 0));
in_words_to_go = ARM_NUM_INTS (INTVAL (operands[2]));
out_words_to_go = INTVAL (operands[2]) / 4;
last_bytes = INTVAL (operands[2]) & 3;
! dstoffset = srcoffset = 0;
!
if (out_words_to_go != in_words_to_go && ((in_words_to_go - 1) & 3) != 0)
part_bytes_reg = gen_rtx_REG (SImode, (in_words_to_go - 1) & 3);
*************** arm_gen_movstrqi (rtx *operands)
*** 5345,5382 ****
{
if (in_words_to_go > 4)
emit_insn (arm_gen_load_multiple (0, 4, src, TRUE, TRUE,
! src_unchanging_p,
! src_in_struct_p,
! src_scalar_p));
else
emit_insn (arm_gen_load_multiple (0, in_words_to_go, src, TRUE,
! FALSE, src_unchanging_p,
! src_in_struct_p, src_scalar_p));
if (out_words_to_go)
{
if (out_words_to_go > 4)
emit_insn (arm_gen_store_multiple (0, 4, dst, TRUE, TRUE,
! dst_unchanging_p,
! dst_in_struct_p,
! dst_scalar_p));
else if (out_words_to_go != 1)
emit_insn (arm_gen_store_multiple (0, out_words_to_go,
dst, TRUE,
(last_bytes == 0
? FALSE : TRUE),
! dst_unchanging_p,
! dst_in_struct_p,
! dst_scalar_p));
else
{
! mem = gen_rtx_MEM (SImode, dst);
! RTX_UNCHANGING_P (mem) = dst_unchanging_p;
! MEM_IN_STRUCT_P (mem) = dst_in_struct_p;
! MEM_SCALAR_P (mem) = dst_scalar_p;
emit_move_insn (mem, gen_rtx_REG (SImode, 0));
if (last_bytes != 0)
! emit_insn (gen_addsi3 (dst, dst, GEN_INT (4)));
}
}
--- 5344,5375 ----
{
if (in_words_to_go > 4)
emit_insn (arm_gen_load_multiple (0, 4, src, TRUE, TRUE,
! srcbase, &srcoffset));
else
emit_insn (arm_gen_load_multiple (0, in_words_to_go, src, TRUE,
! FALSE, srcbase, &srcoffset));
if (out_words_to_go)
{
if (out_words_to_go > 4)
emit_insn (arm_gen_store_multiple (0, 4, dst, TRUE, TRUE,
! dstbase, &dstoffset));
!
else if (out_words_to_go != 1)
emit_insn (arm_gen_store_multiple (0, out_words_to_go,
dst, TRUE,
(last_bytes == 0
? FALSE : TRUE),
! dstbase, &dstoffset));
else
{
! mem = adjust_automodify_address (dstbase, SImode, dst, dstoffset);
emit_move_insn (mem, gen_rtx_REG (SImode, 0));
if (last_bytes != 0)
! {
! emit_insn (gen_addsi3 (dst, dst, GEN_INT (4)));
! dstoffset += 4;
! }
}
}
*************** arm_gen_movstrqi (rtx *operands)
*** 5388,5407 ****
if (out_words_to_go)
{
rtx sreg;
!
! mem = gen_rtx_MEM (SImode, src);
! RTX_UNCHANGING_P (mem) = src_unchanging_p;
! MEM_IN_STRUCT_P (mem) = src_in_struct_p;
! MEM_SCALAR_P (mem) = src_scalar_p;
! emit_move_insn (sreg = gen_reg_rtx (SImode), mem);
! emit_move_insn (fin_src = gen_reg_rtx (SImode), plus_constant (src, 4));
!
! mem = gen_rtx_MEM (SImode, dst);
! RTX_UNCHANGING_P (mem) = dst_unchanging_p;
! MEM_IN_STRUCT_P (mem) = dst_in_struct_p;
! MEM_SCALAR_P (mem) = dst_scalar_p;
emit_move_insn (mem, sreg);
- emit_move_insn (fin_dst = gen_reg_rtx (SImode), plus_constant (dst, 4));
in_words_to_go--;
if (in_words_to_go) /* Sanity check */
--- 5381,5392 ----
if (out_words_to_go)
{
rtx sreg;
!
! mem = adjust_automodify_address (srcbase, SImode, src, srcoffset);
! sreg = copy_to_reg (mem);
!
! mem = adjust_automodify_address (dstbase, SImode, dst, dstoffset);
emit_move_insn (mem, sreg);
in_words_to_go--;
if (in_words_to_go) /* Sanity check */
*************** arm_gen_movstrqi (rtx *operands)
*** 5413,5422 ****
if (in_words_to_go < 0)
abort ();
! mem = gen_rtx_MEM (SImode, src);
! RTX_UNCHANGING_P (mem) = src_unchanging_p;
! MEM_IN_STRUCT_P (mem) = src_in_struct_p;
! MEM_SCALAR_P (mem) = src_scalar_p;
part_bytes_reg = copy_to_mode_reg (SImode, mem);
}
--- 5398,5404 ----
if (in_words_to_go < 0)
abort ();
! mem = adjust_automodify_address (srcbase, SImode, src, srcoffset);
part_bytes_reg = copy_to_mode_reg (SImode, mem);
}
*************** arm_gen_movstrqi (rtx *operands)
*** 5434,5443 ****
while (last_bytes)
{
! mem = gen_rtx_MEM (QImode, plus_constant (dst, last_bytes - 1));
! RTX_UNCHANGING_P (mem) = dst_unchanging_p;
! MEM_IN_STRUCT_P (mem) = dst_in_struct_p;
! MEM_SCALAR_P (mem) = dst_scalar_p;
emit_move_insn (mem, gen_lowpart (QImode, part_bytes_reg));
if (--last_bytes)
--- 5416,5424 ----
while (last_bytes)
{
! mem = adjust_automodify_address (dstbase, QImode,
! plus_constant (dst, last_bytes - 1),
! dstoffset + last_bytes - 1);
emit_move_insn (mem, gen_lowpart (QImode, part_bytes_reg));
if (--last_bytes)
*************** arm_gen_movstrqi (rtx *operands)
*** 5453,5462 ****
{
if (last_bytes > 1)
{
! mem = gen_rtx_MEM (HImode, dst);
! RTX_UNCHANGING_P (mem) = dst_unchanging_p;
! MEM_IN_STRUCT_P (mem) = dst_in_struct_p;
! MEM_SCALAR_P (mem) = dst_scalar_p;
emit_move_insn (mem, gen_lowpart (HImode, part_bytes_reg));
last_bytes -= 2;
if (last_bytes)
--- 5434,5440 ----
{
if (last_bytes > 1)
{
! mem = adjust_automodify_address (dstbase, HImode, dst, dstoffset);
emit_move_insn (mem, gen_lowpart (HImode, part_bytes_reg));
last_bytes -= 2;
if (last_bytes)
*************** arm_gen_movstrqi (rtx *operands)
*** 5466,5480 ****
emit_insn (gen_addsi3 (dst, dst, GEN_INT (2)));
emit_insn (gen_lshrsi3 (tmp, part_bytes_reg, GEN_INT (16)));
part_bytes_reg = tmp;
}
}
if (last_bytes)
{
! mem = gen_rtx_MEM (QImode, dst);
! RTX_UNCHANGING_P (mem) = dst_unchanging_p;
! MEM_IN_STRUCT_P (mem) = dst_in_struct_p;
! MEM_SCALAR_P (mem) = dst_scalar_p;
emit_move_insn (mem, gen_lowpart (QImode, part_bytes_reg));
}
}
--- 5444,5456 ----
emit_insn (gen_addsi3 (dst, dst, GEN_INT (2)));
emit_insn (gen_lshrsi3 (tmp, part_bytes_reg, GEN_INT (16)));
part_bytes_reg = tmp;
+ dstoffset += 2;
}
}
if (last_bytes)
{
! mem = adjust_automodify_address (dstbase, QImode, dst, dstoffset);
emit_move_insn (mem, gen_lowpart (QImode, part_bytes_reg));
}
}
diff -Nrcpad gcc-3.4.4/gcc/config/arm/arm.md gcc-3.4.5/gcc/config/arm/arm.md
*** gcc-3.4.4/gcc/config/arm/arm.md 2005-01-25 12:50:34.000000000 +0000
--- gcc-3.4.5/gcc/config/arm/arm.md 2005-10-01 13:31:38.000000000 +0000
***************
*** 5043,5049 ****
(match_operand:SI 1 "" ""))
(use (match_operand:SI 2 "" ""))])]
"TARGET_ARM"
! "
/* Support only fixed point registers. */
if (GET_CODE (operands[2]) != CONST_INT
|| INTVAL (operands[2]) > 14
--- 5043,5051 ----
(match_operand:SI 1 "" ""))
(use (match_operand:SI 2 "" ""))])]
"TARGET_ARM"
! {
! HOST_WIDE_INT offset = 0;
!
/* Support only fixed point registers. */
if (GET_CODE (operands[2]) != CONST_INT
|| INTVAL (operands[2]) > 14
***************
*** 5057,5067 ****
operands[3]
= arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]),
force_reg (SImode, XEXP (operands[1], 0)),
! TRUE, FALSE, RTX_UNCHANGING_P(operands[1]),
! MEM_IN_STRUCT_P(operands[1]),
! MEM_SCALAR_P (operands[1]));
! "
! )
;; Load multiple with write-back
--- 5059,5067 ----
operands[3]
= arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]),
force_reg (SImode, XEXP (operands[1], 0)),
! TRUE, FALSE, operands[1], &offset);
!
! })
;; Load multiple with write-back
***************
*** 5165,5171 ****
(match_operand:SI 1 "" ""))
(use (match_operand:SI 2 "" ""))])]
"TARGET_ARM"
! "
/* Support only fixed point registers. */
if (GET_CODE (operands[2]) != CONST_INT
|| INTVAL (operands[2]) > 14
--- 5165,5173 ----
(match_operand:SI 1 "" ""))
(use (match_operand:SI 2 "" ""))])]
"TARGET_ARM"
! {
! HOST_WIDE_INT offset = 0;
!
/* Support only fixed point registers. */
if (GET_CODE (operands[2]) != CONST_INT
|| INTVAL (operands[2]) > 14
***************
*** 5179,5189 ****
operands[3]
= arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]),
force_reg (SImode, XEXP (operands[0], 0)),
! TRUE, FALSE, RTX_UNCHANGING_P (operands[0]),
! MEM_IN_STRUCT_P(operands[0]),
! MEM_SCALAR_P (operands[0]));
! "
! )
;; Store multiple with write-back
--- 5181,5188 ----
operands[3]
= arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]),
force_reg (SImode, XEXP (operands[0], 0)),
! TRUE, FALSE, operands[0], &offset);
! })
;; Store multiple with write-back
diff -Nrcpad gcc-3.4.4/gcc/config/arm/arm-protos.h gcc-3.4.5/gcc/config/arm/arm-protos.h
*** gcc-3.4.4/gcc/config/arm/arm-protos.h 2005-02-01 15:07:02.000000000 +0000
--- gcc-3.4.5/gcc/config/arm/arm-protos.h 2005-10-01 13:31:38.000000000 +0000
*************** extern int load_multiple_sequence (rtx *
*** 105,112 ****
extern const char *emit_ldm_seq (rtx *, int);
extern int store_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
extern const char * emit_stm_seq (rtx *, int);
! extern rtx arm_gen_load_multiple (int, int, rtx, int, int, int, int, int);
! extern rtx arm_gen_store_multiple (int, int, rtx, int, int, int, int, int);
extern int arm_gen_movstrqi (rtx *);
extern rtx arm_gen_rotated_half_load (rtx);
extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx);
--- 105,114 ----
extern const char *emit_ldm_seq (rtx *, int);
extern int store_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
extern const char * emit_stm_seq (rtx *, int);
! extern rtx arm_gen_load_multiple (int, int, rtx, int, int,
! rtx, HOST_WIDE_INT *);
! extern rtx arm_gen_store_multiple (int, int, rtx, int, int,
! rtx, HOST_WIDE_INT *);
extern int arm_gen_movstrqi (rtx *);
extern rtx arm_gen_rotated_half_load (rtx);
extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx);
diff -Nrcpad gcc-3.4.4/gcc/config/freebsd-spec.h gcc-3.4.5/gcc/config/freebsd-spec.h
*** gcc-3.4.4/gcc/config/freebsd-spec.h 2005-05-01 21:52:41.000000000 +0000
--- gcc-3.4.5/gcc/config/freebsd-spec.h 2005-07-19 21:08:48.000000000 +0000
*************** Boston, MA 02111-1307, USA. */
*** 51,57 ****
#define FBSD_TARGET_OS_CPP_BUILTINS() \
do \
{ \
! if (FBSD_MAJOR == 6) \
builtin_define ("__FreeBSD__=6"); \
else if (FBSD_MAJOR == 5) \
builtin_define ("__FreeBSD__=5"); \
--- 51,63 ----
#define FBSD_TARGET_OS_CPP_BUILTINS() \
do \
{ \
! if (FBSD_MAJOR == 9) \
! builtin_define ("__FreeBSD__=9"); \
! else if (FBSD_MAJOR == 8) \
! builtin_define ("__FreeBSD__=8"); \
! if (FBSD_MAJOR == 7) \
! builtin_define ("__FreeBSD__=7"); \
! else if (FBSD_MAJOR == 6) \
builtin_define ("__FreeBSD__=6"); \
else if (FBSD_MAJOR == 5) \
builtin_define ("__FreeBSD__=5"); \
diff -Nrcpad gcc-3.4.4/gcc/config/host-linux.c gcc-3.4.5/gcc/config/host-linux.c
*** gcc-3.4.4/gcc/config/host-linux.c 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/host-linux.c 2005-08-02 19:03:45.000000000 +0000
***************
*** 0 ****
--- 1,219 ----
+ /* Linux host-specific hook definitions.
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include
+ #include
+ #include "hosthooks.h"
+ #include "hosthooks-def.h"
+
+
+ /* Linux has a feature called exec-shield-randomize that perturbs the
+ address of non-fixed mapped segments by a (relatively) small amount.
+ The feature is intended to make it harder to attack the system with
+ buffer overflow attacks, since every invocation of a program will
+ have its libraries and data segments at slightly different addresses.
+
+ This feature causes us problems with PCH because it makes it that
+ much harder to acquire a stable location at which to map our PCH
+ data file.
+
+ [ The feature causes other points of non-determinism within the
+ compiler as well, so we'd *really* like to be able to have the
+ driver disable exec-shield-randomize for the process group, but
+ that isn't possible at present. ]
+
+ We're going to try several things:
+
+ * Select an architecture specific address as "likely" and see
+ if that's free. For our 64-bit hosts, we can easily choose
+ an address in Never Never Land.
+
+ * If exec-shield-randomize is disabled, then just use the
+ address chosen by mmap in step one.
+
+ * If exec-shield-randomize is enabled, then temporarily allocate
+ 32M of memory as a buffer, then allocate PCH memory, then
+ free the buffer. The theory here is that the perturbation is
+ no more than 16M, and so by allocating our buffer larger than
+ that we make it considerably more likely that the address will
+ be free when we want to load the data back.
+ */
+
+ #undef HOST_HOOKS_GT_PCH_GET_ADDRESS
+ #define HOST_HOOKS_GT_PCH_GET_ADDRESS linux_gt_pch_get_address
+
+ #undef HOST_HOOKS_GT_PCH_USE_ADDRESS
+ #define HOST_HOOKS_GT_PCH_USE_ADDRESS linux_gt_pch_use_address
+
+ /* For various ports, try to guess a fixed spot in the vm space
+ that's probably free. */
+ #if defined(__alpha)
+ # define TRY_EMPTY_VM_SPACE 0x10000000000
+ #elif defined(__ia64)
+ # define TRY_EMPTY_VM_SPACE 0x2000000100000000
+ #elif defined(__x86_64)
+ # define TRY_EMPTY_VM_SPACE 0x1000000000
+ #elif defined(__i386)
+ # define TRY_EMPTY_VM_SPACE 0x60000000
+ #elif defined(__powerpc__)
+ # define TRY_EMPTY_VM_SPACE 0x60000000
+ #elif defined(__s390x__)
+ # define TRY_EMPTY_VM_SPACE 0x8000000000
+ #elif defined(__s390__)
+ # define TRY_EMPTY_VM_SPACE 0x60000000
+ #elif defined(__sparc__) && defined(__LP64__)
+ # define TRY_EMPTY_VM_SPACE 0x8000000000
+ #elif defined(__sparc__)
+ # define TRY_EMPTY_VM_SPACE 0x60000000
+ #else
+ # define TRY_EMPTY_VM_SPACE 0
+ #endif
+
+ /* Determine a location where we might be able to reliably allocate SIZE
+ bytes. FD is the PCH file, though we should return with the file
+ unmapped. */
+
+ static void *
+ linux_gt_pch_get_address (size_t size, int fd)
+ {
+ size_t buffer_size = 32 * 1024 * 1024;
+ void *addr, *buffer;
+ FILE *f;
+ bool randomize_on;
+
+ addr = mmap ((void *)TRY_EMPTY_VM_SPACE, size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE, fd, 0);
+
+ /* If we failed the map, that means there's *no* free space. */
+ if (addr == (void *) MAP_FAILED)
+ return NULL;
+ /* Unmap the area before returning. */
+ munmap (addr, size);
+
+ /* If we got the exact area we requested, then that's great. */
+ if (TRY_EMPTY_VM_SPACE && addr == (void *) TRY_EMPTY_VM_SPACE)
+ return addr;
+
+ /* If we didn't, then we need to look to see if virtual address
+ randomization is on. That is recorded in
+ kernel.randomize_va_space. An older implementation used
+ kernel.exec-shield-randomize. */
+ f = fopen ("/proc/sys/kernel/randomize_va_space", "r");
+ if (f == NULL)
+ f = fopen ("/proc/sys/kernel/exec-shield-randomize", "r");
+ randomize_on = false;
+ if (f != NULL)
+ {
+ char buf[100];
+ size_t c;
+
+ c = fread (buf, 1, sizeof buf - 1, f);
+ if (c > 0)
+ {
+ buf[c] = '\0';
+ randomize_on = (atoi (buf) > 0);
+ }
+ fclose (f);
+ }
+
+ /* If it isn't, then accept the address that mmap selected as fine. */
+ if (!randomize_on)
+ return addr;
+
+ /* Otherwise, we need to try again with buffer space. */
+ buffer = mmap (0, buffer_size, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ addr = mmap (0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
+ if (buffer != (void *) MAP_FAILED)
+ munmap (buffer, buffer_size);
+ if (addr == (void *) MAP_FAILED)
+ return NULL;
+ munmap (addr, size);
+
+ return addr;
+ }
+
+ /* Map SIZE bytes of FD+OFFSET at BASE. Return 1 if we succeeded at
+ mapping the data at BASE, -1 if we couldn't.
+
+ It's not possibly to reliably mmap a file using MAP_PRIVATE to
+ a specific START address on either hpux or linux. First we see
+ if mmap with MAP_PRIVATE works. If it does, we are off to the
+ races. If it doesn't, we try an anonymous private mmap since the
+ kernel is more likely to honor the BASE address in anonymous maps.
+ We then copy the data to the anonymous private map. This assumes
+ of course that we don't need to change the data in the PCH file
+ after it is created.
+
+ This approach obviously causes a performance penalty but there is
+ little else we can do given the current PCH implementation. */
+
+ static int
+ linux_gt_pch_use_address (void *base, size_t size, int fd, size_t offset)
+ {
+ void *addr;
+
+ /* We're called with size == 0 if we're not planning to load a PCH
+ file at all. This allows the hook to free any static space that
+ we might have allocated at link time. */
+ if (size == 0)
+ return -1;
+
+ /* Try to map the file with MAP_PRIVATE. */
+ addr = mmap (base, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, offset);
+
+ if (addr == base)
+ return 1;
+
+ if (addr != (void *) MAP_FAILED)
+ munmap (addr, size);
+
+ /* Try to make an anonymous private mmap at the desired location. */
+ addr = mmap (base, size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+ if (addr != base)
+ {
+ if (addr != (void *) MAP_FAILED)
+ munmap (addr, size);
+ return -1;
+ }
+
+ if (lseek (fd, offset, SEEK_SET) == (off_t)-1)
+ return -1;
+
+ while (size)
+ {
+ ssize_t nbytes;
+
+ nbytes = read (fd, base, MIN (size, SSIZE_MAX));
+ if (nbytes <= 0)
+ return -1;
+ base = (char *) base + nbytes;
+ size -= nbytes;
+ }
+
+ return 1;
+ }
+
+
+ const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
diff -Nrcpad gcc-3.4.4/gcc/config/host-solaris.c gcc-3.4.5/gcc/config/host-solaris.c
*** gcc-3.4.4/gcc/config/host-solaris.c 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/host-solaris.c 2005-08-02 19:03:45.000000000 +0000
***************
*** 0 ****
--- 1,79 ----
+ /* Solaris host-specific hook definitions.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include
+ #include "hosthooks.h"
+ #include "hosthooks-def.h"
+
+
+ #undef HOST_HOOKS_GT_PCH_USE_ADDRESS
+ #define HOST_HOOKS_GT_PCH_USE_ADDRESS sol_gt_pch_use_address
+
+ /* Map SIZE bytes of FD+OFFSET at BASE. Return 1 if we succeeded at
+ mapping the data at BASE, -1 if we couldn't. */
+
+ static int
+ sol_gt_pch_use_address (void *base, size_t size, int fd, size_t offset)
+ {
+ void *addr;
+
+ /* We're called with size == 0 if we're not planning to load a PCH
+ file at all. This allows the hook to free any static space that
+ we might have allocated at link time. */
+ if (size == 0)
+ return -1;
+
+ addr = mmap (base, size, PROT_READ | PROT_WRITE, MAP_PRIVATE,
+ fd, offset);
+
+ /* Solaris isn't good about honoring the mmap START parameter
+ without MAP_FIXED set. Before we give up, search the desired
+ address space with mincore to see if the space is really free. */
+ if (addr != base)
+ {
+ size_t page_size = getpagesize();
+ char one_byte;
+ size_t i;
+
+ if (addr != (void *) MAP_FAILED)
+ munmap (addr, size);
+
+ errno = 0;
+ for (i = 0; i < size; i += page_size)
+ if (mincore ((char *)base + i, page_size, (void *)&one_byte) == -1
+ && errno == ENOMEM)
+ continue; /* The page is not mapped. */
+ else
+ break;
+
+ if (i >= size)
+ addr = mmap (base, size,
+ PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
+ fd, offset);
+ }
+
+ return addr == base ? 1 : -1;
+ }
+
+
+ const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
diff -Nrcpad gcc-3.4.4/gcc/config/i386/i386.c gcc-3.4.5/gcc/config/i386/i386.c
*** gcc-3.4.4/gcc/config/i386/i386.c 2005-03-16 15:23:40.000000000 +0000
--- gcc-3.4.5/gcc/config/i386/i386.c 2005-08-03 14:15:28.000000000 +0000
*************** output_set_got (rtx dest)
*** 4899,4905 ****
if (!flag_pic || TARGET_DEEP_BRANCH_PREDICTION)
output_asm_insn ("add{l}\t{%1, %0|%0, %1}", xops);
else if (!TARGET_MACHO)
! output_asm_insn ("add{l}\t{%1+[.-%a2], %0|%0, %a1+(.-%a2)}", xops);
return "";
}
--- 4899,4905 ----
if (!flag_pic || TARGET_DEEP_BRANCH_PREDICTION)
output_asm_insn ("add{l}\t{%1, %0|%0, %1}", xops);
else if (!TARGET_MACHO)
! output_asm_insn ("add{l}\t{%1+[.-%a2], %0|%0, %1+(.-%a2)}", xops);
return "";
}
*************** ix86_expand_unop_builtin (enum insn_code
*** 13956,13961 ****
--- 13956,13962 ----
if (! target
|| GET_MODE (target) != tmode
+ || (do_load && GET_CODE (target) == MEM)
|| ! (*insn_data[icode].operand[0].predicate) (target, tmode))
target = gen_reg_rtx (tmode);
if (do_load)
diff -Nrcpad gcc-3.4.4/gcc/config/i386/i386.md gcc-3.4.5/gcc/config/i386/i386.md
*** gcc-3.4.4/gcc/config/i386/i386.md 2005-05-10 21:04:28.000000000 +0000
--- gcc-3.4.5/gcc/config/i386/i386.md 2005-11-10 07:27:47.000000000 +0000
***************
*** 1850,1856 ****
(define_split
[(set (match_operand:DI 0 "push_operand" "")
(match_operand:DI 1 "immediate_operand" ""))]
! "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2))
&& !symbolic_operand (operands[1], DImode)
&& !x86_64_immediate_operand (operands[1], DImode)"
[(set (match_dup 0) (match_dup 1))
--- 1850,1857 ----
(define_split
[(set (match_operand:DI 0 "push_operand" "")
(match_operand:DI 1 "immediate_operand" ""))]
! "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
! ? flow2_completed : reload_completed)
&& !symbolic_operand (operands[1], DImode)
&& !x86_64_immediate_operand (operands[1], DImode)"
[(set (match_dup 0) (match_dup 1))
***************
*** 2105,2111 ****
(define_split
[(set (match_operand:DI 0 "memory_operand" "")
(match_operand:DI 1 "immediate_operand" ""))]
! "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2))
&& !symbolic_operand (operands[1], DImode)
&& !x86_64_immediate_operand (operands[1], DImode)"
[(set (match_dup 2) (match_dup 3))
--- 2106,2113 ----
(define_split
[(set (match_operand:DI 0 "memory_operand" "")
(match_operand:DI 1 "immediate_operand" ""))]
! "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
! ? flow2_completed : reload_completed)
&& !symbolic_operand (operands[1], DImode)
&& !x86_64_immediate_operand (operands[1], DImode)"
[(set (match_dup 2) (match_dup 3))
diff -Nrcpad gcc-3.4.4/gcc/config/ia64/hpux.h gcc-3.4.5/gcc/config/ia64/hpux.h
*** gcc-3.4.4/gcc/config/ia64/hpux.h 2004-07-25 04:19:45.000000000 +0000
--- gcc-3.4.5/gcc/config/ia64/hpux.h 2005-11-16 17:06:52.000000000 +0000
*************** do { \
*** 84,96 ****
%{mlp64:-L/usr/lib/hpux64/libp} -lgprof} \
%{!symbolic:-lc}}"
- #ifndef CROSS_COMPILE
- #undef LIBGCC_SPEC
- #define LIBGCC_SPEC \
- "%{shared-libgcc:%{!mlp64:-lgcc_s}%{mlp64:-lgcc_s_hpux64} -lgcc} \
- %{!shared-libgcc:-lgcc}"
- #endif
-
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{ "ilp32", MASK_ILP32, "Generate ILP32 code" }, \
--- 84,89 ----
diff -Nrcpad gcc-3.4.4/gcc/config/m32r/m32r.c gcc-3.4.5/gcc/config/m32r/m32r.c
*** gcc-3.4.4/gcc/config/m32r/m32r.c 2004-08-26 13:00:13.000000000 +0000
--- gcc-3.4.5/gcc/config/m32r/m32r.c 2005-05-24 09:43:42.000000000 +0000
*************** block_move_call (rtx dest_reg, rtx src_r
*** 2813,2819 ****
operands[2] is the number of bytes to move.
operands[3] is the alignment. */
! void
m32r_expand_block_move (rtx operands[])
{
rtx orig_dst = operands[0];
--- 2813,2819 ----
operands[2] is the number of bytes to move.
operands[3] is the alignment. */
! int
m32r_expand_block_move (rtx operands[])
{
rtx orig_dst = operands[0];
*************** m32r_expand_block_move (rtx operands[])
*** 2828,2834 ****
rtx dst_reg;
if (constp && bytes <= 0)
! return;
/* Move the address into scratch registers. */
dst_reg = copy_addr_to_reg (XEXP (orig_dst, 0));
--- 2828,2834 ----
rtx dst_reg;
if (constp && bytes <= 0)
! return 1;
/* Move the address into scratch registers. */
dst_reg = copy_addr_to_reg (XEXP (orig_dst, 0));
*************** m32r_expand_block_move (rtx operands[])
*** 2843,2849 ****
if (optimize_size || ! constp || align != UNITS_PER_WORD)
{
block_move_call (dst_reg, src_reg, bytes_rtx);
! return;
}
leftover = bytes % MAX_MOVE_BYTES;
--- 2843,2849 ----
if (optimize_size || ! constp || align != UNITS_PER_WORD)
{
block_move_call (dst_reg, src_reg, bytes_rtx);
! return 0;
}
leftover = bytes % MAX_MOVE_BYTES;
*************** m32r_expand_block_move (rtx operands[])
*** 2900,2905 ****
--- 2900,2906 ----
emit_insn (gen_movstrsi_internal (dst_reg, src_reg, GEN_INT (leftover),
gen_reg_rtx (SImode),
gen_reg_rtx (SImode)));
+ return 1;
}
diff -Nrcpad gcc-3.4.4/gcc/config/m32r/m32r.md gcc-3.4.5/gcc/config/m32r/m32r.md
*** gcc-3.4.4/gcc/config/m32r/m32r.md 2004-08-24 09:37:43.000000000 +0000
--- gcc-3.4.5/gcc/config/m32r/m32r.md 2005-05-24 09:43:42.000000000 +0000
***************
*** 2673,2680 ****
{
if (operands[0]) /* avoid unused code messages */
{
! m32r_expand_block_move (operands);
! DONE;
}
}")
--- 2673,2682 ----
{
if (operands[0]) /* avoid unused code messages */
{
! if (m32r_expand_block_move (operands))
! DONE;
! else
! FAIL;
}
}")
diff -Nrcpad gcc-3.4.4/gcc/config/m32r/m32r-protos.h gcc-3.4.5/gcc/config/m32r/m32r-protos.h
*** gcc-3.4.4/gcc/config/m32r/m32r-protos.h 2004-07-07 11:08:37.000000000 +0000
--- gcc-3.4.5/gcc/config/m32r/m32r-protos.h 2005-05-24 09:43:42.000000000 +0000
*************** extern void m32r_initialize_trampoline
*** 51,57 ****
extern int zero_and_one (rtx, rtx);
extern char * emit_cond_move (rtx *, rtx);
extern void m32r_output_block_move (rtx, rtx *);
! extern void m32r_expand_block_move (rtx *);
extern void m32r_print_operand (FILE *, rtx, int);
extern void m32r_print_operand_address (FILE *, rtx);
extern int m32r_not_same_reg (rtx, rtx);
--- 51,57 ----
extern int zero_and_one (rtx, rtx);
extern char * emit_cond_move (rtx *, rtx);
extern void m32r_output_block_move (rtx, rtx *);
! extern int m32r_expand_block_move (rtx *);
extern void m32r_print_operand (FILE *, rtx, int);
extern void m32r_print_operand_address (FILE *, rtx);
extern int m32r_not_same_reg (rtx, rtx);
diff -Nrcpad gcc-3.4.4/gcc/config/m68k/m68k.c gcc-3.4.5/gcc/config/m68k/m68k.c
*** gcc-3.4.4/gcc/config/m68k/m68k.c 2004-10-22 18:42:11.000000000 +0000
--- gcc-3.4.5/gcc/config/m68k/m68k.c 2005-07-26 20:32:25.000000000 +0000
*************** m68k_hard_regno_rename_ok (unsigned int
*** 3541,3543 ****
--- 3541,3576 ----
return 1;
}
+
+ /* Value is true if hard register REGNO can hold a value of machine-mode MODE.
+ On the 68000, the cpu registers can hold any mode except bytes in address
+ registers, but the 68881 registers can hold only SFmode or DFmode. */
+ bool
+ m68k_regno_mode_ok (int regno, enum machine_mode mode)
+ {
+ if (regno < 8)
+ {
+ /* Data Registers, can hold aggregate if fits in. */
+ if (regno + GET_MODE_SIZE (mode) / 4 <= 8)
+ return true;
+ }
+ else if (regno < 16)
+ {
+ /* Address Registers, can't hold bytes, can hold aggregate if
+ fits in. */
+ if (GET_MODE_SIZE (mode) == 1)
+ return false;
+ if (regno + GET_MODE_SIZE (mode) / 4 <= 16)
+ return true;
+ }
+ else if (regno < 24)
+ {
+ /* FPU registers, hold float or complex float of long double or
+ smaller. */
+ if ((GET_MODE_CLASS (mode) == MODE_FLOAT
+ || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
+ && GET_MODE_UNIT_SIZE (mode) <= 12)
+ return true;
+ }
+ return false;
+ }
diff -Nrcpad gcc-3.4.4/gcc/config/m68k/m68k.h gcc-3.4.5/gcc/config/m68k/m68k.h
*** gcc-3.4.4/gcc/config/m68k/m68k.h 2004-10-22 18:42:08.000000000 +0000
--- gcc-3.4.5/gcc/config/m68k/m68k.h 2005-07-26 20:32:25.000000000 +0000
*************** extern int target_flags;
*** 555,571 ****
m68k_hard_regno_rename_ok (OLD_REG, NEW_REG)
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
! On the 68000, the cpu registers can hold any mode but the 68881 registers
! can hold only SFmode or DFmode. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
! (((REGNO) < 16 \
! && !((REGNO) < 8 && (REGNO) + GET_MODE_SIZE (MODE) / 4 > 8)) \
! || ((REGNO) >= 16 && (REGNO) < 24 \
! && (GET_MODE_CLASS (MODE) == MODE_FLOAT \
! || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT) \
! && GET_MODE_UNIT_SIZE (MODE) <= 12))
!
/* Value is 1 if it is a good idea to tie two pseudo registers
when one has mode MODE1 and one has mode MODE2.
--- 555,565 ----
m68k_hard_regno_rename_ok (OLD_REG, NEW_REG)
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
! On the 68000, the cpu registers can hold any mode except bytes in
! address registers, the 68881 registers can hold only SFmode or DFmode. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
! m68k_regno_mode_ok ((REGNO), (MODE))
/* Value is 1 if it is a good idea to tie two pseudo registers
when one has mode MODE1 and one has mode MODE2.
diff -Nrcpad gcc-3.4.4/gcc/config/m68k/m68k.md gcc-3.4.5/gcc/config/m68k/m68k.md
*** gcc-3.4.4/gcc/config/m68k/m68k.md 2004-06-16 22:21:51.000000000 +0000
--- gcc-3.4.5/gcc/config/m68k/m68k.md 2005-07-26 20:32:25.000000000 +0000
***************
*** 1981,1987 ****
(define_insn "*addsi3_5200"
[(set (match_operand:SI 0 "nonimmediate_operand" "=m,?a,?a,r")
(plus:SI (match_operand:SI 1 "general_operand" "%0,a,rJK,0")
! (match_operand:SI 2 "general_src_operand" "d,rJK,a,mrIKLs")))]
"TARGET_COLDFIRE"
"* return output_addsi3 (operands);")
--- 1981,1987 ----
(define_insn "*addsi3_5200"
[(set (match_operand:SI 0 "nonimmediate_operand" "=m,?a,?a,r")
(plus:SI (match_operand:SI 1 "general_operand" "%0,a,rJK,0")
! (match_operand:SI 2 "general_src_operand" "d,rJK,a,mrIKLi")))]
"TARGET_COLDFIRE"
"* return output_addsi3 (operands);")
diff -Nrcpad gcc-3.4.4/gcc/config/m68k/m68k-protos.h gcc-3.4.5/gcc/config/m68k/m68k-protos.h
*** gcc-3.4.4/gcc/config/m68k/m68k-protos.h 2004-10-22 18:42:12.000000000 +0000
--- gcc-3.4.5/gcc/config/m68k/m68k-protos.h 2005-07-26 20:32:25.000000000 +0000
*************** extern rtx legitimize_pic_address (rtx,
*** 62,67 ****
--- 62,68 ----
#endif /* RTX_CODE */
+ extern bool m68k_regno_mode_ok (int, enum machine_mode);
extern int flags_in_68881 (void);
extern bool use_return_insn (void);
extern void override_options (void);
diff -Nrcpad gcc-3.4.4/gcc/config/mips/mips.c gcc-3.4.5/gcc/config/mips/mips.c
*** gcc-3.4.4/gcc/config/mips/mips.c 2005-05-08 12:06:23.000000000 +0000
--- gcc-3.4.5/gcc/config/mips/mips.c 2005-07-31 08:35:15.000000000 +0000
*************** static rtx mips_split_symbol (rtx, rtx);
*** 206,212 ****
static rtx mips_unspec_address (rtx, enum mips_symbol_type);
static rtx mips_unspec_offset_high (rtx, rtx, rtx, enum mips_symbol_type);
static rtx mips_load_got (rtx, rtx, enum mips_symbol_type);
! static rtx mips_add_offset (rtx, HOST_WIDE_INT);
static unsigned int mips_build_shift (struct mips_integer_op *, HOST_WIDE_INT);
static unsigned int mips_build_lower (struct mips_integer_op *,
unsigned HOST_WIDE_INT);
--- 206,212 ----
static rtx mips_unspec_address (rtx, enum mips_symbol_type);
static rtx mips_unspec_offset_high (rtx, rtx, rtx, enum mips_symbol_type);
static rtx mips_load_got (rtx, rtx, enum mips_symbol_type);
! static rtx mips_add_offset (rtx, rtx, HOST_WIDE_INT);
static unsigned int mips_build_shift (struct mips_integer_op *, HOST_WIDE_INT);
static unsigned int mips_build_lower (struct mips_integer_op *,
unsigned HOST_WIDE_INT);
*************** mips_load_got_global (rtx base, rtx addr
*** 1787,1804 ****
}
! /* Return a legitimate address for REG + OFFSET. This function will
! create a temporary register if OFFSET is not a SMALL_OPERAND. */
static rtx
! mips_add_offset (rtx reg, HOST_WIDE_INT offset)
{
if (!SMALL_OPERAND (offset))
! reg = expand_simple_binop (GET_MODE (reg), PLUS,
! GEN_INT (CONST_HIGH_PART (offset)),
! reg, NULL, 0, OPTAB_WIDEN);
!
! return plus_constant (reg, CONST_LOW_PART (offset));
}
--- 1787,1819 ----
}
! /* Return a legitimate address for REG + OFFSET. TEMP is as for
! mips_force_temporary; it is only needed when OFFSET is not a
! SMALL_OPERAND. */
static rtx
! mips_add_offset (rtx temp, rtx reg, HOST_WIDE_INT offset)
{
if (!SMALL_OPERAND (offset))
! {
! rtx high;
! if (TARGET_MIPS16)
! {
! /* Load the full offset into a register so that we can use
! an unextended instruction for the address itself. */
! high = GEN_INT (offset);
! offset = 0;
! }
! else
! {
! /* Leave OFFSET as a 16-bit offset and put the excess in HIGH. */
! high = GEN_INT (CONST_HIGH_PART (offset));
! offset = CONST_LOW_PART (offset);
! }
! high = mips_force_temporary (temp, high);
! reg = mips_force_temporary (temp, gen_rtx_PLUS (Pmode, high, reg));
! }
! return plus_constant (reg, offset);
}
*************** mips_legitimize_address (rtx *xloc, enum
*** 1829,1835 ****
reg = XEXP (*xloc, 0);
if (!mips_valid_base_register_p (reg, mode, 0))
reg = copy_to_mode_reg (Pmode, reg);
! *xloc = mips_add_offset (reg, INTVAL (XEXP (*xloc, 1)));
return true;
}
--- 1844,1850 ----
reg = XEXP (*xloc, 0);
if (!mips_valid_base_register_p (reg, mode, 0))
reg = copy_to_mode_reg (Pmode, reg);
! *xloc = mips_add_offset (0, reg, INTVAL (XEXP (*xloc, 1)));
return true;
}
*************** mips_legitimize_const_move (enum machine
*** 2007,2013 ****
&& (!no_new_pseudos || SMALL_OPERAND (offset)))
{
base = mips_force_temporary (dest, base);
! emit_move_insn (dest, mips_add_offset (base, offset));
return;
}
--- 2022,2028 ----
&& (!no_new_pseudos || SMALL_OPERAND (offset)))
{
base = mips_force_temporary (dest, base);
! emit_move_insn (dest, mips_add_offset (0, base, offset));
return;
}
*************** mips_output_move (rtx dest, rtx src)
*** 2772,2796 ****
abort ();
}
! /* Return an rtx for the gp save slot. Valid only when using o32 or
o64 abicalls. */
! rtx
! mips_gp_save_slot (void)
{
! rtx loc;
if (!TARGET_ABICALLS || TARGET_NEWABI)
abort ();
! if (frame_pointer_needed)
! loc = hard_frame_pointer_rtx;
! else
! loc = stack_pointer_rtx;
! loc = plus_constant (loc, current_function_outgoing_args_size);
! loc = gen_rtx_MEM (Pmode, loc);
! RTX_UNCHANGING_P (loc) = 1;
! return loc;
}
/* Make normal rtx_code into something we can index from an array */
--- 2787,2814 ----
abort ();
}
! /* Restore $gp from its save slot. Valid only when using o32 or
o64 abicalls. */
! void
! mips_restore_gp (void)
{
! rtx address, slot;
if (!TARGET_ABICALLS || TARGET_NEWABI)
abort ();
! address = mips_add_offset (pic_offset_table_rtx,
! frame_pointer_needed
! ? hard_frame_pointer_rtx
! : stack_pointer_rtx,
! current_function_outgoing_args_size);
! slot = gen_rtx_MEM (Pmode, address);
! RTX_UNCHANGING_P (slot) = 1;
!
! emit_move_insn (pic_offset_table_rtx, slot);
! if (!TARGET_EXPLICIT_RELOCS)
! emit_insn (gen_blockage ());
}
/* Make normal rtx_code into something we can index from an array */
*************** mips_emit_fcc_reload (rtx dest, rtx src,
*** 3403,3428 ****
void
mips_set_return_address (rtx address, rtx scratch)
{
! HOST_WIDE_INT gp_offset;
compute_frame_size (get_frame_size ());
if (((cfun->machine->frame.mask >> 31) & 1) == 0)
abort ();
! gp_offset = cfun->machine->frame.gp_sp_offset;
!
! /* Reduce SP + GP_OFSET to a legitimate address and put it in SCRATCH. */
! if (gp_offset < 32768)
! scratch = plus_constant (stack_pointer_rtx, gp_offset);
! else
! {
! emit_move_insn (scratch, GEN_INT (gp_offset));
! if (Pmode == DImode)
! emit_insn (gen_adddi3 (scratch, scratch, stack_pointer_rtx));
! else
! emit_insn (gen_addsi3 (scratch, scratch, stack_pointer_rtx));
! }
! emit_move_insn (gen_rtx_MEM (GET_MODE (address), scratch), address);
}
/* Emit straight-line code to move LENGTH bytes from SRC to DEST.
--- 3421,3435 ----
void
mips_set_return_address (rtx address, rtx scratch)
{
! rtx slot_address;
compute_frame_size (get_frame_size ());
if (((cfun->machine->frame.mask >> 31) & 1) == 0)
abort ();
! slot_address = mips_add_offset (scratch, stack_pointer_rtx,
! cfun->machine->frame.gp_sp_offset);
! emit_move_insn (gen_rtx_MEM (GET_MODE (address), slot_address), address);
}
/* Emit straight-line code to move LENGTH bytes from SRC to DEST.
*************** mips_output_mi_thunk (FILE *file, tree t
*** 7190,7214 ****
emit_move_insn (temp1, gen_rtx_MEM (Pmode, this));
/* Set ADDR to a legitimate address for *THIS + VCALL_OFFSET. */
! if (SMALL_OPERAND (vcall_offset))
! addr = gen_rtx_PLUS (Pmode, temp1, GEN_INT (vcall_offset));
! else if (TARGET_MIPS16)
! {
! /* Load the full offset into a register so that we can use
! an unextended instruction for the load itself. */
! emit_move_insn (temp2, GEN_INT (vcall_offset));
! emit_insn (gen_add3_insn (temp1, temp1, temp2));
! addr = temp1;
! }
! else
! {
! /* Load the high part of the offset into a register and
! leave the low part for the address. */
! emit_move_insn (temp2, GEN_INT (CONST_HIGH_PART (vcall_offset)));
! emit_insn (gen_add3_insn (temp1, temp1, temp2));
! addr = gen_rtx_PLUS (Pmode, temp1,
! GEN_INT (CONST_LOW_PART (vcall_offset)));
! }
/* Load the offset and add it to THIS. */
emit_move_insn (temp1, gen_rtx_MEM (Pmode, addr));
--- 7197,7203 ----
emit_move_insn (temp1, gen_rtx_MEM (Pmode, this));
/* Set ADDR to a legitimate address for *THIS + VCALL_OFFSET. */
! addr = mips_add_offset (temp2, temp1, vcall_offset);
/* Load the offset and add it to THIS. */
emit_move_insn (temp1, gen_rtx_MEM (Pmode, addr));
diff -Nrcpad gcc-3.4.4/gcc/config/mips/mips.md gcc-3.4.5/gcc/config/mips/mips.md
*** gcc-3.4.4/gcc/config/mips/mips.md 2005-05-08 12:06:24.000000000 +0000
--- gcc-3.4.5/gcc/config/mips/mips.md 2005-07-31 08:35:15.000000000 +0000
*************** dsrl\t%3,%3,1\n\
*** 5160,5175 ****
(set_attr "mode" "none")
(set_attr "length" "0")])
! ;; Emit a .cprestore directive, which expands to a single store instruction.
! ;; Note that we continue to use .cprestore for explicit reloc code so that
! ;; jals inside inlines asms will work correctly.
(define_insn "cprestore"
! [(unspec_volatile [(match_operand 0 "const_int_operand" "")]
UNSPEC_CPRESTORE)]
""
! ".cprestore\t%0"
[(set_attr "type" "store")
! (set_attr "length" "4")])
;; Block moves, see mips.c for more details.
;; Argument 0 is the destination
--- 5160,5180 ----
(set_attr "mode" "none")
(set_attr "length" "0")])
! ;; Emit a .cprestore directive, which normally expands to a single store
! ;; instruction. Note that we continue to use .cprestore for explicit reloc
! ;; code so that jals inside inline asms will work correctly.
(define_insn "cprestore"
! [(unspec_volatile [(match_operand 0 "const_int_operand" "I,i")]
UNSPEC_CPRESTORE)]
""
! {
! if (set_nomacro && which_alternative == 1)
! return ".set\tmacro\;.cprestore\t%0\;.set\tnomacro";
! else
! return ".cprestore\t%0";
! }
[(set_attr "type" "store")
! (set_attr "length" "4,12")])
;; Block moves, see mips.c for more details.
;; Argument 0 is the destination
*************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n
*** 8367,8383 ****
DONE;
})
! (define_insn "exception_receiver"
[(set (reg:SI 28)
(unspec_volatile:SI [(const_int 0)] UNSPEC_EH_RECEIVER))]
"TARGET_ABICALLS && (mips_abi == ABI_32 || mips_abi == ABI_O64)"
{
! operands[0] = pic_offset_table_rtx;
! operands[1] = mips_gp_save_slot ();
! return mips_output_move (operands[0], operands[1]);
}
[(set_attr "type" "load")
! (set_attr "length" "8")])
;;
;; ....................
--- 8372,8390 ----
DONE;
})
! (define_insn_and_split "exception_receiver"
[(set (reg:SI 28)
(unspec_volatile:SI [(const_int 0)] UNSPEC_EH_RECEIVER))]
"TARGET_ABICALLS && (mips_abi == ABI_32 || mips_abi == ABI_O64)"
+ "#"
+ "&& reload_completed"
+ [(const_int 0)]
{
! mips_restore_gp ();
! DONE;
}
[(set_attr "type" "load")
! (set_attr "length" "12")])
;;
;; ....................
*************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n
*** 8548,8554 ****
{
emit_call_insn (gen_call_split (operands[0], operands[1]));
if (!find_reg_note (operands[2], REG_NORETURN, 0))
! emit_move_insn (pic_offset_table_rtx, mips_gp_save_slot ());
DONE;
}
[(set_attr "jal" "indirect,direct")
--- 8555,8561 ----
{
emit_call_insn (gen_call_split (operands[0], operands[1]));
if (!find_reg_note (operands[2], REG_NORETURN, 0))
! mips_restore_gp ();
DONE;
}
[(set_attr "jal" "indirect,direct")
*************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n
*** 8589,8595 ****
emit_call_insn (gen_call_value_split (operands[0], operands[1],
operands[2]));
if (!find_reg_note (operands[3], REG_NORETURN, 0))
! emit_move_insn (pic_offset_table_rtx, mips_gp_save_slot ());
DONE;
}
[(set_attr "jal" "indirect,direct")
--- 8596,8602 ----
emit_call_insn (gen_call_value_split (operands[0], operands[1],
operands[2]));
if (!find_reg_note (operands[3], REG_NORETURN, 0))
! mips_restore_gp ();
DONE;
}
[(set_attr "jal" "indirect,direct")
*************** ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n
*** 8622,8628 ****
emit_call_insn (gen_call_value_multiple_split (operands[0], operands[1],
operands[2], operands[3]));
if (!find_reg_note (operands[4], REG_NORETURN, 0))
! emit_move_insn (pic_offset_table_rtx, mips_gp_save_slot ());
DONE;
}
[(set_attr "jal" "indirect,direct")
--- 8629,8635 ----
emit_call_insn (gen_call_value_multiple_split (operands[0], operands[1],
operands[2], operands[3]));
if (!find_reg_note (operands[4], REG_NORETURN, 0))
! mips_restore_gp ();
DONE;
}
[(set_attr "jal" "indirect,direct")
diff -Nrcpad gcc-3.4.4/gcc/config/mips/mips-protos.h gcc-3.4.5/gcc/config/mips/mips-protos.h
*** gcc-3.4.4/gcc/config/mips/mips-protos.h 2004-07-07 19:21:10.000000000 +0000
--- gcc-3.4.5/gcc/config/mips/mips-protos.h 2005-07-31 08:35:15.000000000 +0000
*************** extern rtx mips_subword (rtx, int);
*** 62,68 ****
extern bool mips_split_64bit_move_p (rtx, rtx);
extern void mips_split_64bit_move (rtx, rtx);
extern const char *mips_output_move (rtx, rtx);
! extern rtx mips_gp_save_slot (void);
#ifdef RTX_CODE
extern rtx gen_int_relational (enum rtx_code, rtx, rtx, rtx, int *);
extern void gen_conditional_branch (rtx *, enum rtx_code);
--- 62,68 ----
extern bool mips_split_64bit_move_p (rtx, rtx);
extern void mips_split_64bit_move (rtx, rtx);
extern const char *mips_output_move (rtx, rtx);
! extern void mips_restore_gp (void);
#ifdef RTX_CODE
extern rtx gen_int_relational (enum rtx_code, rtx, rtx, rtx, int *);
extern void gen_conditional_branch (rtx *, enum rtx_code);
diff -Nrcpad gcc-3.4.4/gcc/config/pa/pa32-regs.h gcc-3.4.5/gcc/config/pa/pa32-regs.h
*** gcc-3.4.4/gcc/config/pa/pa32-regs.h 2003-01-31 20:23:23.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/pa32-regs.h 2005-08-03 16:39:02.000000000 +0000
***************
*** 155,186 ****
This is ordinarily the length in words of a value of mode MODE
but can be less for certain modes in special long registers.
! On the HP-PA, ordinary registers hold 32 bits worth;
! The floating point registers are 64 bits wide. Snake fp regs are 32
! bits wide */
#define HARD_REGNO_NREGS(REGNO, MODE) \
(FP_REGNO_P (REGNO) \
! ? (!TARGET_PA_11 ? 1 : (GET_MODE_SIZE (MODE) + 4 - 1) / 4) \
! : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
! On the HP-PA, the cpu registers can hold any mode. For DImode, we
! choose a set of general register that includes the incoming arguments
! and the return value. We specify a set with no overlaps so that we don't
! have to specify that the destination register in patterns using this mode
! is an early clobber. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
((REGNO) == 0 ? (MODE) == CCmode || (MODE) == CCFPmode \
- /* On 1.0 machines, don't allow wide non-fp modes in fp regs. */ \
: !TARGET_PA_11 && FP_REGNO_P (REGNO) \
! ? GET_MODE_SIZE (MODE) <= 4 || GET_MODE_CLASS (MODE) == MODE_FLOAT \
: FP_REGNO_P (REGNO) \
! ? GET_MODE_SIZE (MODE) <= 4 || ((REGNO) & 1) == 0 \
: (GET_MODE_SIZE (MODE) <= UNITS_PER_WORD \
|| (GET_MODE_SIZE (MODE) == 2 * UNITS_PER_WORD \
&& ((((REGNO) & 1) == 1 && (REGNO) <= 25) || (REGNO) == 28)) \
|| (GET_MODE_SIZE (MODE) == 4 * UNITS_PER_WORD \
! && (((REGNO) & 3) == 3 && (REGNO) <= 23))))
/* How to renumber registers for dbx and gdb.
--- 155,223 ----
This is ordinarily the length in words of a value of mode MODE
but can be less for certain modes in special long registers.
! On the HP-PA, general registers are 32 bits wide. The floating
! point registers are 64 bits wide. Snake fp regs are treated as
! 32 bits wide since the left and right parts are independently
! accessible. */
#define HARD_REGNO_NREGS(REGNO, MODE) \
(FP_REGNO_P (REGNO) \
! ? (!TARGET_PA_11 \
! ? COMPLEX_MODE_P (MODE) ? 2 : 1 \
! : (GET_MODE_SIZE (MODE) + 4 - 1) / 4) \
! : (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
!
! /* There are no instructions that use DImode in PA 1.0, so we only
! allow it in PA 1.1 and later. */
! #define VALID_FP_MODE_P(MODE) \
! ((MODE) == SFmode || (MODE) == DFmode \
! || (MODE) == SCmode || (MODE) == DCmode \
! || (MODE) == SImode || (TARGET_PA_11 && (MODE) == DImode))
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
!
! On the HP-PA, the cpu registers can hold any mode that fits in 32 bits.
! For the 64-bit modes, we choose a set of non-overlapping general registers
! that includes the incoming arguments and the return value. We specify a
! set with no overlaps so that we don't have to specify that the destination
! register is an early clobber in patterns using this mode. Except for the
! return value, the starting registers are odd. For 128 and 256 bit modes,
! we similarly specify non-overlapping sets of cpu registers. However,
! there aren't any patterns defined for modes larger than 64 bits at the
! moment.
!
! We limit the modes allowed in the floating point registers to the
! set of modes used in the machine definition. In addition, we allow
! the complex modes SCmode and DCmode. The real and imaginary parts
! of complex modes are allocated to separate registers. This might
! allow patterns to be defined in the future to operate on these values.
!
! The PA 2.0 architecture specifies that quad-precision floating-point
! values should start on an even floating point register. Thus, we
! choose non-overlapping sets of registers starting on even register
! boundaries for large modes. However, there is currently no support
! in the machine definition for modes larger than 64 bits. TFmode is
! supported under HP-UX using libcalls. Since TFmode values are passed
! by reference, they never need to be loaded into the floating-point
! registers. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
((REGNO) == 0 ? (MODE) == CCmode || (MODE) == CCFPmode \
: !TARGET_PA_11 && FP_REGNO_P (REGNO) \
! ? (VALID_FP_MODE_P (MODE) \
! && (GET_MODE_SIZE (MODE) <= 8 \
! || (GET_MODE_SIZE (MODE) == 16 && ((REGNO) & 3) == 0))) \
: FP_REGNO_P (REGNO) \
! ? (VALID_FP_MODE_P (MODE) \
! && (GET_MODE_SIZE (MODE) <= 4 \
! || (GET_MODE_SIZE (MODE) == 8 && ((REGNO) & 1) == 0) \
! || (GET_MODE_SIZE (MODE) == 16 && ((REGNO) & 3) == 0) \
! || (GET_MODE_SIZE (MODE) == 32 && ((REGNO) & 7) == 0))) \
: (GET_MODE_SIZE (MODE) <= UNITS_PER_WORD \
|| (GET_MODE_SIZE (MODE) == 2 * UNITS_PER_WORD \
&& ((((REGNO) & 1) == 1 && (REGNO) <= 25) || (REGNO) == 28)) \
|| (GET_MODE_SIZE (MODE) == 4 * UNITS_PER_WORD \
! && ((REGNO) & 3) == 3 && (REGNO) <= 23) \
! || (GET_MODE_SIZE (MODE) == 8 * UNITS_PER_WORD \
! && ((REGNO) & 7) == 3 && (REGNO) <= 19)))
/* How to renumber registers for dbx and gdb.
*************** enum reg_class { NO_REGS, R1_REGS, GENER
*** 275,281 ****
needed to represent mode MODE in a register of class CLASS. */
#define CLASS_MAX_NREGS(CLASS, MODE) \
((CLASS) == FP_REGS || (CLASS) == FPUPPER_REGS \
! ? (!TARGET_PA_11 ? 1 : (GET_MODE_SIZE (MODE) + 4 - 1) / 4) \
: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
/* 1 if N is a possible register number for function argument passing. */
--- 312,320 ----
needed to represent mode MODE in a register of class CLASS. */
#define CLASS_MAX_NREGS(CLASS, MODE) \
((CLASS) == FP_REGS || (CLASS) == FPUPPER_REGS \
! ? (!TARGET_PA_11 \
! ? COMPLEX_MODE_P (MODE) ? 2 : 1 \
! : (GET_MODE_SIZE (MODE) + 4 - 1) / 4) \
: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
/* 1 if N is a possible register number for function argument passing. */
diff -Nrcpad gcc-3.4.4/gcc/config/pa/pa64-regs.h gcc-3.4.5/gcc/config/pa/pa64-regs.h
*** gcc-3.4.4/gcc/config/pa/pa64-regs.h 2004-04-22 17:56:16.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/pa64-regs.h 2005-08-08 03:41:32.000000000 +0000
*************** Boston, MA 02111-1307, USA. */
*** 106,112 ****
int i; \
if (TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)\
{ \
! for (i = FP_REG_FIRST; i < FP_REG_LAST; i++)\
fixed_regs[i] = call_used_regs[i] = 1; \
} \
if (flag_pic) \
--- 106,112 ----
int i; \
if (TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)\
{ \
! for (i = FP_REG_FIRST; i <= FP_REG_LAST; i++)\
fixed_regs[i] = call_used_regs[i] = 1; \
} \
if (flag_pic) \
*************** Boston, MA 02111-1307, USA. */
*** 149,159 ****
This is ordinarily the length in words of a value of mode MODE
but can be less for certain modes in special long registers.
! For PA64, GPRs and FPRs hold 64 bits worth (we ignore the 32bit
! addressability of the FPRs). ie, we pretend each register holds
! precisely WORD_SIZE bits. */
#define HARD_REGNO_NREGS(REGNO, MODE) \
! ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
On the HP-PA, the cpu registers can hold any mode. We
--- 149,167 ----
This is ordinarily the length in words of a value of mode MODE
but can be less for certain modes in special long registers.
! For PA64, GPRs and FPRs hold 64 bits worth. We ignore the 32-bit
! addressability of the FPRs and pretend each register holds precisely
! WORD_SIZE bits. Note that SCmode values are placed in a single FPR.
! Thus, any patterns defined to operate on these values would have to
! use the 32-bit addressability of the FPR registers. */
#define HARD_REGNO_NREGS(REGNO, MODE) \
! ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
!
! /* These are the valid FP modes. */
! #define VALID_FP_MODE_P(MODE) \
! ((MODE) == SFmode || (MODE) == DFmode \
! || (MODE) == SCmode || (MODE) == DCmode \
! || (MODE) == SImode || (MODE) == DImode)
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
On the HP-PA, the cpu registers can hold any mode. We
*************** Boston, MA 02111-1307, USA. */
*** 162,169 ****
((REGNO) == 0 \
? (MODE) == CCmode || (MODE) == CCFPmode \
/* Make wide modes be in aligned registers. */ \
: (GET_MODE_SIZE (MODE) <= UNITS_PER_WORD \
! || (GET_MODE_SIZE (MODE) <= 2 * UNITS_PER_WORD && ((REGNO) & 1) == 0)))
/* How to renumber registers for dbx and gdb.
--- 170,185 ----
((REGNO) == 0 \
? (MODE) == CCmode || (MODE) == CCFPmode \
/* Make wide modes be in aligned registers. */ \
+ : FP_REGNO_P (REGNO) \
+ ? (VALID_FP_MODE_P (MODE) \
+ && (GET_MODE_SIZE (MODE) <= 8 \
+ || (GET_MODE_SIZE (MODE) == 16 && ((REGNO) & 1) == 0) \
+ || (GET_MODE_SIZE (MODE) == 32 && ((REGNO) & 3) == 0))) \
: (GET_MODE_SIZE (MODE) <= UNITS_PER_WORD \
! || (GET_MODE_SIZE (MODE) == 2 * UNITS_PER_WORD \
! && ((((REGNO) & 1) == 1 && (REGNO) <= 25) || (REGNO) == 28)) \
! || (GET_MODE_SIZE (MODE) == 4 * UNITS_PER_WORD \
! && ((REGNO) & 3) == 3 && (REGNO) <= 23)))
/* How to renumber registers for dbx and gdb.
diff -Nrcpad gcc-3.4.4/gcc/config/pa/pa.c gcc-3.4.5/gcc/config/pa/pa.c
*** gcc-3.4.4/gcc/config/pa/pa.c 2004-12-28 04:51:33.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/pa.c 2005-08-05 20:32:49.000000000 +0000
*************** function_value (tree valtype, tree func
*** 8800,8823 ****
{
enum machine_mode valmode;
! /* Aggregates with a size less than or equal to 128 bits are returned
! in GR 28(-29). They are left justified. The pad bits are undefined.
! Larger aggregates are returned in memory. */
! if (TARGET_64BIT && AGGREGATE_TYPE_P (valtype))
{
! rtx loc[2];
! int i, offset = 0;
! int ub = int_size_in_bytes (valtype) <= UNITS_PER_WORD ? 1 : 2;
! for (i = 0; i < ub; i++)
{
! loc[i] = gen_rtx_EXPR_LIST (VOIDmode,
! gen_rtx_REG (DImode, 28 + i),
! GEN_INT (offset));
! offset += 8;
}
-
- return gen_rtx_PARALLEL (BLKmode, gen_rtvec_v (ub, loc));
}
if ((INTEGRAL_TYPE_P (valtype)
--- 8800,8839 ----
{
enum machine_mode valmode;
! if (AGGREGATE_TYPE_P (valtype))
{
! if (TARGET_64BIT)
! {
! /* Aggregates with a size less than or equal to 128 bits are
! returned in GR 28(-29). They are left justified. The pad
! bits are undefined. Larger aggregates are returned in
! memory. */
! rtx loc[2];
! int i, offset = 0;
! int ub = int_size_in_bytes (valtype) <= UNITS_PER_WORD ? 1 : 2;
! for (i = 0; i < ub; i++)
! {
! loc[i] = gen_rtx_EXPR_LIST (VOIDmode,
! gen_rtx_REG (DImode, 28 + i),
! GEN_INT (offset));
! offset += 8;
! }
!
! return gen_rtx_PARALLEL (BLKmode, gen_rtvec_v (ub, loc));
! }
! else if (int_size_in_bytes (valtype) > UNITS_PER_WORD)
{
! /* Aggregates 5 to 8 bytes in size are returned in general
! registers r28-r29 in the same manner as other non
! floating-point objects. The data is right-justified and
! zero-extended to 64 bits. This is opposite to the normal
! justification used on big endian targets and requires
! special treatment. */
! rtx loc = gen_rtx_EXPR_LIST (VOIDmode,
! gen_rtx_REG (DImode, 28), const0_rtx);
! return gen_rtx_PARALLEL (BLKmode, gen_rtvec (1, loc));
}
}
if ((INTEGRAL_TYPE_P (valtype)
*************** function_value (tree valtype, tree func
*** 8828,8833 ****
--- 8844,8850 ----
valmode = TYPE_MODE (valtype);
if (TREE_CODE (valtype) == REAL_TYPE
+ && !AGGREGATE_TYPE_P (valtype)
&& TYPE_MODE (valtype) != TFmode
&& !TARGET_SOFT_FLOAT)
return gen_rtx_REG (valmode, 32);
*************** function_arg (CUMULATIVE_ARGS *cum, enum
*** 8965,8976 ****
justification of BLKmode data when it has a size greater
than one word. Splitting the operation into two SImode loads
or returning a DImode REG results in left justified data. */
! if (mode == BLKmode)
{
rtx loc = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (DImode, gpr_reg_base),
const0_rtx);
! return gen_rtx_PARALLEL (mode, gen_rtvec (1, loc));
}
}
else
--- 8982,8993 ----
justification of BLKmode data when it has a size greater
than one word. Splitting the operation into two SImode loads
or returning a DImode REG results in left justified data. */
! if (mode == BLKmode || (type && AGGREGATE_TYPE_P (type)))
{
rtx loc = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (DImode, gpr_reg_base),
const0_rtx);
! return gen_rtx_PARALLEL (BLKmode, gen_rtvec (1, loc));
}
}
else
*************** function_arg (CUMULATIVE_ARGS *cum, enum
*** 9031,9037 ****
&& cum->indirect)
/* If the parameter is not a floating point parameter, then
it belongs in GPRs. */
! || !FLOAT_MODE_P (mode))
retval = gen_rtx_REG (mode, gpr_reg_base);
else
retval = gen_rtx_REG (mode, fpr_reg_base);
--- 9048,9056 ----
&& cum->indirect)
/* If the parameter is not a floating point parameter, then
it belongs in GPRs. */
! || !FLOAT_MODE_P (mode)
! /* Structure with single SFmode field belongs in GPR. */
! || (type && AGGREGATE_TYPE_P (type)))
retval = gen_rtx_REG (mode, gpr_reg_base);
else
retval = gen_rtx_REG (mode, fpr_reg_base);
diff -Nrcpad gcc-3.4.4/gcc/config/pa/pa-host.c gcc-3.4.5/gcc/config/pa/pa-host.c
*** gcc-3.4.4/gcc/config/pa/pa-host.c 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/pa-host.c 2005-08-07 02:48:04.000000000 +0000
***************
*** 0 ****
--- 1,136 ----
+ /* PA host-specific hook definitions.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING. If not, write to the
+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include
+ #include
+ #include "hosthooks.h"
+ #include "hosthooks-def.h"
+
+ #ifndef MAP_FAILED
+ #define MAP_FAILED (void *)-1L
+ #endif
+
+ static void *pa_gt_pch_get_address (size_t, int);
+ static int pa_gt_pch_use_address (void *, size_t, int, size_t);
+
+ #undef HOST_HOOKS_GT_PCH_GET_ADDRESS
+ #define HOST_HOOKS_GT_PCH_GET_ADDRESS pa_gt_pch_get_address
+ #undef HOST_HOOKS_GT_PCH_USE_ADDRESS
+ #define HOST_HOOKS_GT_PCH_USE_ADDRESS pa_gt_pch_use_address
+
+ /* For various ports, try to guess a fixed spot in the vm space
+ that's probably free. */
+ #if defined(__hppa__) && defined(__LP64__)
+ # define TRY_EMPTY_VM_SPACE 0x8000000000000000
+ #elif defined(__hppa__)
+ # define TRY_EMPTY_VM_SPACE 0x60000000
+ #else
+ # define TRY_EMPTY_VM_SPACE 0
+ #endif
+
+ /* Determine a location where we might be able to reliably allocate
+ SIZE bytes. FD is the PCH file, though we should return with the
+ file unmapped. */
+
+ static void *
+ pa_gt_pch_get_address (size_t size, int fd)
+ {
+ void *addr;
+
+ addr = mmap ((void *)TRY_EMPTY_VM_SPACE, size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE, fd, 0);
+
+ /* If we failed the map, that means there's *no* free space. */
+ if (addr == (void *) MAP_FAILED)
+ return NULL;
+ /* Unmap the area before returning. */
+ munmap (addr, size);
+
+ return addr;
+ }
+
+ /* Map SIZE bytes of FD+OFFSET at BASE. Return 1 if we succeeded at
+ mapping the data at BASE, -1 if we couldn't.
+
+ It's not possibly to reliably mmap a file using MAP_PRIVATE to
+ a specific START address on either hpux or linux. First we see
+ if mmap with MAP_PRIVATE works. If it does, we are off to the
+ races. If it doesn't, we try an anonymous private mmap since the
+ kernel is more likely to honor the BASE address in anonymous maps.
+ We then copy the data to the anonymous private map. This assumes
+ of course that we don't need to change the data in the PCH file
+ after it is created.
+
+ This approach obviously causes a performance penalty but there is
+ little else we can do given the current PCH implementation. */
+
+ static int
+ pa_gt_pch_use_address (void *base, size_t size, int fd, size_t offset)
+ {
+ void *addr;
+
+ /* We're called with size == 0 if we're not planning to load a PCH
+ file at all. This allows the hook to free any static space that
+ we might have allocated at link time. */
+ if (size == 0)
+ return -1;
+
+ /* Try to map the file with MAP_PRIVATE. */
+ addr = mmap (base, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, offset);
+
+ if (addr == base)
+ return 1;
+
+ if (addr != (void *) MAP_FAILED)
+ munmap (addr, size);
+
+ /* Try to make an anonymous private mmap at the desired location. */
+ addr = mmap (base, size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+ if (addr != base)
+ {
+ if (addr != (void *) MAP_FAILED)
+ munmap (addr, size);
+ return -1;
+ }
+
+ if (lseek (fd, offset, SEEK_SET) == (off_t)-1)
+ return -1;
+
+ while (size)
+ {
+ ssize_t nbytes;
+
+ nbytes = read (fd, base, MIN (size, SSIZE_MAX));
+ if (nbytes <= 0)
+ return -1;
+ base = (char *) base + nbytes;
+ size -= nbytes;
+ }
+
+ return 1;
+ }
+
+
+ const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
diff -Nrcpad gcc-3.4.4/gcc/config/pa/pa.md gcc-3.4.5/gcc/config/pa/pa.md
*** gcc-3.4.4/gcc/config/pa/pa.md 2005-02-27 17:14:31.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/pa.md 2005-08-03 16:39:02.000000000 +0000
***************
*** 2877,2885 ****
(define_insn ""
[(set (match_operand:HI 0 "move_dest_operand"
! "=r,r,r,r,r,Q,!*q,!r,!*f")
(match_operand:HI 1 "move_src_operand"
! "r,J,N,K,RQ,rM,!rM,!*q,!*fM"))]
"register_operand (operands[0], HImode)
|| reg_or_0_operand (operands[1], HImode)"
"@
--- 2877,2885 ----
(define_insn ""
[(set (match_operand:HI 0 "move_dest_operand"
! "=r,r,r,r,r,Q,!*q,!r")
(match_operand:HI 1 "move_src_operand"
! "r,J,N,K,RQ,rM,!rM,!*q"))]
"register_operand (operands[0], HImode)
|| reg_or_0_operand (operands[1], HImode)"
"@
***************
*** 2890,2900 ****
ldh%M1 %1,%0
sth%M0 %r1,%0
mtsar %r1
! {mfctl|mfctl,w} %sar,%0
! fcpy,sgl %f1,%0"
! [(set_attr "type" "move,move,move,shift,load,store,move,move,fpalu")
(set_attr "pa_combine_type" "addmove")
! (set_attr "length" "4,4,4,4,4,4,4,4,4")])
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
--- 2890,2899 ----
ldh%M1 %1,%0
sth%M0 %r1,%0
mtsar %r1
! {mfctl|mfctl,w} %sar,%0"
! [(set_attr "type" "move,move,move,shift,load,store,move,move")
(set_attr "pa_combine_type" "addmove")
! (set_attr "length" "4,4,4,4,4,4,4,4")])
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
***************
*** 3002,3010 ****
(define_insn ""
[(set (match_operand:QI 0 "move_dest_operand"
! "=r,r,r,r,r,Q,!*q,!r,!*f")
(match_operand:QI 1 "move_src_operand"
! "r,J,N,K,RQ,rM,!rM,!*q,!*fM"))]
"register_operand (operands[0], QImode)
|| reg_or_0_operand (operands[1], QImode)"
"@
--- 3001,3009 ----
(define_insn ""
[(set (match_operand:QI 0 "move_dest_operand"
! "=r,r,r,r,r,Q,!*q,!r")
(match_operand:QI 1 "move_src_operand"
! "r,J,N,K,RQ,rM,!rM,!*q"))]
"register_operand (operands[0], QImode)
|| reg_or_0_operand (operands[1], QImode)"
"@
***************
*** 3015,3025 ****
ldb%M1 %1,%0
stb%M0 %r1,%0
mtsar %r1
! {mfctl|mfctl,w} %%sar,%0
! fcpy,sgl %f1,%0"
! [(set_attr "type" "move,move,move,shift,load,store,move,move,fpalu")
(set_attr "pa_combine_type" "addmove")
! (set_attr "length" "4,4,4,4,4,4,4,4,4")])
(define_insn ""
[(set (match_operand:QI 0 "register_operand" "=r")
--- 3014,3023 ----
ldb%M1 %1,%0
stb%M0 %r1,%0
mtsar %r1
! {mfctl|mfctl,w} %%sar,%0"
! [(set_attr "type" "move,move,move,shift,load,store,move,move")
(set_attr "pa_combine_type" "addmove")
! (set_attr "length" "4,4,4,4,4,4,4,4")])
(define_insn ""
[(set (match_operand:QI 0 "register_operand" "=r")
diff -Nrcpad gcc-3.4.4/gcc/config/pa/som.h gcc-3.4.5/gcc/config/pa/som.h
*** gcc-3.4.4/gcc/config/pa/som.h 2004-12-28 04:51:33.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/som.h 2005-08-05 19:20:53.000000000 +0000
*************** do { \
*** 312,321 ****
cannot be moved after installation using a symlink. */
#define ALWAYS_STRIP_DOTDOT 1
- /* Aggregates with a single float or double field should be passed and
- returned in the general registers. */
- #define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) (MODE==SFmode || MODE==DFmode)
-
/* If GAS supports weak, we can support weak when we have working linker
support for secondary definitions and are generating code for GAS. */
#ifdef HAVE_GAS_WEAK
--- 312,317 ----
diff -Nrcpad gcc-3.4.4/gcc/config/pa/x-hpux gcc-3.4.5/gcc/config/pa/x-hpux
*** gcc-3.4.4/gcc/config/pa/x-hpux 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/x-hpux 2005-08-07 02:48:04.000000000 +0000
***************
*** 0 ****
--- 1,9 ----
+ # The ada virtual array implementation requires that indexing be disabled on
+ # hosts such as hpux that use a segmented memory architecture. Both the c
+ # and ada files need to be compiled with this option for correct operation.
+ X_ADA_CFLAGS=-mdisable-indexing
+
+ pa-host.o : $(srcdir)/config/pa/pa-host.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h hosthooks.h hosthooks-def.h $(HOOKS_H)
+ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/pa/pa-host.c
diff -Nrcpad gcc-3.4.4/gcc/config/pa/x-linux gcc-3.4.5/gcc/config/pa/x-linux
*** gcc-3.4.4/gcc/config/pa/x-linux 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/pa/x-linux 2005-08-07 02:48:04.000000000 +0000
***************
*** 0 ****
--- 1,4 ----
+ pa-host.o : $(srcdir)/config/pa/pa-host.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h hosthooks.h hosthooks-def.h $(HOOKS_H)
+ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/pa/pa-host.c
diff -Nrcpad gcc-3.4.4/gcc/config/rs6000/aix51.h gcc-3.4.5/gcc/config/rs6000/aix51.h
*** gcc-3.4.4/gcc/config/rs6000/aix51.h 2003-07-04 12:42:01.000000000 +0000
--- gcc-3.4.5/gcc/config/rs6000/aix51.h 2005-07-08 18:33:45.000000000 +0000
*************** do { \
*** 197,203 ****
#undef LD_INIT_SWITCH
#define LD_INIT_SWITCH "-binitfini"
- /* AIX 5.1 has the float and long double forms of math functions. */
- #undef TARGET_C99_FUNCTIONS
- #define TARGET_C99_FUNCTIONS 1
-
--- 197,199 ----
diff -Nrcpad gcc-3.4.4/gcc/config/rs6000/host-darwin.c gcc-3.4.5/gcc/config/rs6000/host-darwin.c
*** gcc-3.4.4/gcc/config/rs6000/host-darwin.c 2003-07-29 23:36:53.000000000 +0000
--- gcc-3.4.5/gcc/config/rs6000/host-darwin.c 2005-08-02 19:03:45.000000000 +0000
***************
*** 1,5 ****
/* Darwin/powerpc host-specific hook definitions.
! Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GCC.
--- 1,5 ----
/* Darwin/powerpc host-specific hook definitions.
! Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
*************** darwin_rs6000_extra_signals (void)
*** 137,158 ****
fatal_error ("While setting up signal handler: %m");
}
- static void * darwin_rs6000_gt_pch_get_address (size_t);
- static bool darwin_rs6000_gt_pch_use_address (void *, size_t);
-
#undef HOST_HOOKS_GT_PCH_GET_ADDRESS
#define HOST_HOOKS_GT_PCH_GET_ADDRESS darwin_rs6000_gt_pch_get_address
#undef HOST_HOOKS_GT_PCH_USE_ADDRESS
#define HOST_HOOKS_GT_PCH_USE_ADDRESS darwin_rs6000_gt_pch_use_address
-
/* Yes, this is really supposed to work. */
static char pch_address_space[1024*1024*1024] __attribute__((aligned (4096)));
/* Return the address of the PCH address space, if the PCH will fit in it. */
static void *
! darwin_rs6000_gt_pch_get_address (size_t sz)
{
if (sz <= sizeof (pch_address_space))
return pch_address_space;
--- 137,154 ----
fatal_error ("While setting up signal handler: %m");
}
#undef HOST_HOOKS_GT_PCH_GET_ADDRESS
#define HOST_HOOKS_GT_PCH_GET_ADDRESS darwin_rs6000_gt_pch_get_address
#undef HOST_HOOKS_GT_PCH_USE_ADDRESS
#define HOST_HOOKS_GT_PCH_USE_ADDRESS darwin_rs6000_gt_pch_use_address
/* Yes, this is really supposed to work. */
static char pch_address_space[1024*1024*1024] __attribute__((aligned (4096)));
/* Return the address of the PCH address space, if the PCH will fit in it. */
static void *
! darwin_rs6000_gt_pch_get_address (size_t sz, int fd ATTRIBUTE_UNUSED)
{
if (sz <= sizeof (pch_address_space))
return pch_address_space;
*************** darwin_rs6000_gt_pch_get_address (size_t
*** 163,180 ****
/* Check ADDR and SZ for validity, and deallocate (using munmap) that part of
pch_address_space beyond SZ. */
! static bool
! darwin_rs6000_gt_pch_use_address (void *addr, size_t sz)
{
const size_t pagesize = getpagesize();
! bool result;
if ((size_t)pch_address_space % pagesize != 0
|| sizeof (pch_address_space) % pagesize != 0)
abort ();
! result = (addr == pch_address_space && sz <= sizeof (pch_address_space));
! if (! result)
sz = 0;
/* Round the size to a whole page size. Normally this is a no-op. */
--- 159,177 ----
/* Check ADDR and SZ for validity, and deallocate (using munmap) that part of
pch_address_space beyond SZ. */
! static int
! darwin_rs6000_gt_pch_use_address (void *addr, size_t sz, int fd, size_t off)
{
const size_t pagesize = getpagesize();
! void *mmap_result;
! int ret;
if ((size_t)pch_address_space % pagesize != 0
|| sizeof (pch_address_space) % pagesize != 0)
abort ();
! ret = (addr == pch_address_space && sz <= sizeof (pch_address_space));
! if (! ret)
sz = 0;
/* Round the size to a whole page size. Normally this is a no-op. */
*************** darwin_rs6000_gt_pch_use_address (void *
*** 183,189 ****
if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
fatal_error ("couldn't unmap pch_address_space: %m\n");
! return result;
}
const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
--- 180,201 ----
if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
fatal_error ("couldn't unmap pch_address_space: %m\n");
! if (ret)
! {
! mmap_result = mmap (addr, sz,
! PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
! fd, off);
!
! /* The file might not be mmap-able. */
! ret = mmap_result != (void *) MAP_FAILED;
!
! /* Sanity check for broken MAP_FIXED. */
! if (ret && mmap_result != addr)
! abort ();
! }
!
! return ret;
}
+
const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
diff -Nrcpad gcc-3.4.4/gcc/config/rs6000/rs6000.c gcc-3.4.5/gcc/config/rs6000/rs6000.c
*** gcc-3.4.4/gcc/config/rs6000/rs6000.c 2005-04-29 00:32:00.000000000 +0000
--- gcc-3.4.5/gcc/config/rs6000/rs6000.c 2005-10-29 22:35:37.000000000 +0000
*************** rs6000_legitimize_tls_address (rtx addr,
*** 2989,2995 ****
rtx r3, got, tga, tmp1, tmp2, eqv;
if (TARGET_64BIT)
! got = gen_rtx_REG (Pmode, TOC_REGISTER);
else
{
if (flag_pic == 1)
--- 2989,2995 ----
rtx r3, got, tga, tmp1, tmp2, eqv;
if (TARGET_64BIT)
! got = gen_rtx_REG (Pmode, 2);
else
{
if (flag_pic == 1)
*************** function_arg (CUMULATIVE_ARGS *cum, enum
*** 4369,4377 ****
if (mode == VOIDmode)
{
if (abi == ABI_V4
- && cum->nargs_prototype < 0
&& (cum->call_cookie & CALL_LIBCALL) == 0
! && (cum->prototype || TARGET_NO_PROTOTYPE))
{
/* For the SPE, we need to crxor CR6 always. */
if (TARGET_SPE_ABI)
--- 4369,4378 ----
if (mode == VOIDmode)
{
if (abi == ABI_V4
&& (cum->call_cookie & CALL_LIBCALL) == 0
! && (cum->stdarg
! || (cum->nargs_prototype < 0
! && (cum->prototype || TARGET_NO_PROTOTYPE))))
{
/* For the SPE, we need to crxor CR6 always. */
if (TARGET_SPE_ABI)
*************** expand_block_move (rtx operands[])
*** 7856,7862 ****
mode = SImode;
gen_func.mov = gen_movsi;
}
! else if (bytes == 2 && (align >= 2 || ! STRICT_ALIGNMENT))
{ /* move 2 bytes */
move_bytes = 2;
mode = HImode;
--- 7857,7863 ----
mode = SImode;
gen_func.mov = gen_movsi;
}
! else if (bytes >= 2 && (align >= 2 || ! STRICT_ALIGNMENT))
{ /* move 2 bytes */
move_bytes = 2;
mode = HImode;
diff -Nrcpad gcc-3.4.4/gcc/config/rs6000/rs6000.md gcc-3.4.5/gcc/config/rs6000/rs6000.md
*** gcc-3.4.4/gcc/config/rs6000/rs6000.md 2005-03-31 11:45:47.000000000 +0000
--- gcc-3.4.5/gcc/config/rs6000/rs6000.md 2005-09-29 04:48:44.000000000 +0000
***************
*** 5236,5242 ****
(set (match_dup 0) (plus:DI (match_dup 0)
(const_int 2047)))
(set (match_dup 4) (compare:CCUNS (match_dup 3)
! (const_int 3)))
(set (match_dup 0) (ior:DI (match_dup 0)
(match_dup 1)))
(parallel [(set (match_dup 0) (and:DI (match_dup 0)
--- 5236,5242 ----
(set (match_dup 0) (plus:DI (match_dup 0)
(const_int 2047)))
(set (match_dup 4) (compare:CCUNS (match_dup 3)
! (const_int 2)))
(set (match_dup 0) (ior:DI (match_dup 0)
(match_dup 1)))
(parallel [(set (match_dup 0) (and:DI (match_dup 0)
***************
*** 7839,7846 ****
}")
(define_insn "*movsf_hardfloat"
! [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,!cl,!q,!r,!r,!r")
! (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,r,h,G,Fn"))]
"(gpc_reg_operand (operands[0], SFmode)
|| gpc_reg_operand (operands[1], SFmode))
&& (TARGET_HARD_FLOAT && TARGET_FPRS)"
--- 7839,7846 ----
}")
(define_insn "*movsf_hardfloat"
! [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,!cl,!q,!r,!h,!r,!r")
! (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,r,h,0,G,Fn"))]
"(gpc_reg_operand (operands[0], SFmode)
|| gpc_reg_operand (operands[1], SFmode))
&& (TARGET_HARD_FLOAT && TARGET_FPRS)"
***************
*** 7854,7863 ****
mt%0 %1
mt%0 %1
mf%1 %0
#
#"
! [(set_attr "type" "*,load,store,fp,fpload,fpstore,*,mtjmpr,*,*,*")
! (set_attr "length" "4,4,4,4,4,4,4,4,4,4,8")])
(define_insn "*movsf_softfloat"
[(set (match_operand:SF 0 "nonimmediate_operand" "=r,cl,q,r,r,m,r,r,r,r,r,*h")
--- 7854,7864 ----
mt%0 %1
mt%0 %1
mf%1 %0
+ {cror 0,0,0|nop}
#
#"
! [(set_attr "type" "*,load,store,fp,fpload,fpstore,*,mtjmpr,*,*,*,*")
! (set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,8")])
(define_insn "*movsf_softfloat"
[(set (match_operand:SF 0 "nonimmediate_operand" "=r,cl,q,r,r,m,r,r,r,r,r,*h")
***************
*** 8114,8121 ****
; ld/std require word-aligned displacements -> 'Y' constraint.
; List Y->r and r->Y before r->r for reload.
(define_insn "*movdf_hardfloat64"
! [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,b,!r,f,f,m,!cl,!r,!r,!r,!r")
! (match_operand:DF 1 "input_operand" "r,Y,m,r,f,m,f,r,h,G,H,F"))]
"TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
--- 8115,8122 ----
; ld/std require word-aligned displacements -> 'Y' constraint.
; List Y->r and r->Y before r->r for reload.
(define_insn "*movdf_hardfloat64"
! [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,b,!r,f,f,m,!cl,!r,!h,!r,!r,!r")
! (match_operand:DF 1 "input_operand" "r,Y,m,r,f,m,f,r,h,0,G,H,F"))]
"TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
***************
*** 8129,8139 ****
stfd%U0%X0 %1,%0
mt%0 %1
mf%1 %0
#
#
#"
! [(set_attr "type" "store,load,load,*,fp,fpload,fpstore,mtjmpr,*,*,*,*")
! (set_attr "length" "4,4,8,4,4,4,4,4,4,8,12,16")])
(define_split
[(set (match_operand:DF 0 "base_reg_operand" "")
--- 8130,8141 ----
stfd%U0%X0 %1,%0
mt%0 %1
mf%1 %0
+ {cror 0,0,0|nop}
#
#
#"
! [(set_attr "type" "store,load,load,*,fp,fpload,fpstore,mtjmpr,*,*,*,*,*")
! (set_attr "length" "4,4,8,4,4,4,4,4,4,4,8,12,16")])
(define_split
[(set (match_operand:DF 0 "base_reg_operand" "")
***************
*** 8191,8197 ****
#
#
#
! nop"
[(set_attr "type" "load,store,*,*,*,*,*,*,*")
(set_attr "length" "4,4,4,4,4,8,12,16,4")])
--- 8193,8199 ----
#
#
#
! {cror 0,0,0|nop}"
[(set_attr "type" "load,store,*,*,*,*,*,*,*")
(set_attr "length" "4,4,4,4,4,8,12,16,4")])
diff -Nrcpad gcc-3.4.4/gcc/config/rs6000/sysv4.h gcc-3.4.5/gcc/config/rs6000/sysv4.h
*** gcc-3.4.4/gcc/config/rs6000/sysv4.h 2005-02-11 21:06:45.000000000 +0000
--- gcc-3.4.5/gcc/config/rs6000/sysv4.h 2005-10-29 22:35:37.000000000 +0000
***************
*** 1,6 ****
/* Target definitions for GNU compiler for PowerPC running System V.4
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
! 2004 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GCC.
--- 1,6 ----
/* Target definitions for GNU compiler for PowerPC running System V.4
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
! 2004, 2005 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GCC.
*************** extern const char *rs6000_tls_size_strin
*** 123,130 ****
{ "no-toc", 0, N_("no description yet") }, \
{ "toc", MASK_MINIMAL_TOC, N_("no description yet") }, \
{ "full-toc", MASK_MINIMAL_TOC, N_("no description yet") }, \
! { "prototype", MASK_PROTOTYPE, N_("no description yet") }, \
! { "no-prototype", -MASK_PROTOTYPE, N_("no description yet") }, \
{ "no-traceback", 0, N_("no description yet") }, \
{ "eabi", MASK_EABI, N_("Use EABI") }, \
{ "no-eabi", -MASK_EABI, N_("Don't use EABI") }, \
--- 123,132 ----
{ "no-toc", 0, N_("no description yet") }, \
{ "toc", MASK_MINIMAL_TOC, N_("no description yet") }, \
{ "full-toc", MASK_MINIMAL_TOC, N_("no description yet") }, \
! { "prototype", MASK_PROTOTYPE, \
! N_("Assume all variable arg functions are prototyped") }, \
! { "no-prototype", -MASK_PROTOTYPE, \
! N_("Non-prototyped functions might take a variable number of args") }, \
{ "no-traceback", 0, N_("no description yet") }, \
{ "eabi", MASK_EABI, N_("Use EABI") }, \
{ "no-eabi", -MASK_EABI, N_("Don't use EABI") }, \
*************** ncrtn.o%s"
*** 1354,1361 ****
? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) \
: DW_EH_PE_absptr)
- #define TARGET_ASM_EXCEPTION_SECTION readonly_data_section
-
#define DOUBLE_INT_ASM_OP "\t.quad\t"
/* Generate entries in .fixup for relocatable addresses. */
--- 1356,1361 ----
diff -Nrcpad gcc-3.4.4/gcc/config/sparc/gmon-sol2.c gcc-3.4.5/gcc/config/sparc/gmon-sol2.c
*** gcc-3.4.4/gcc/config/sparc/gmon-sol2.c 2003-01-13 16:23:31.000000000 +0000
--- gcc-3.4.5/gcc/config/sparc/gmon-sol2.c 2005-10-09 12:36:09.000000000 +0000
*************** _mcleanup(void)
*** 267,274 ****
* -- [eichin:19920702.1107EST]
*/
! static void internal_mcount (char *, unsigned short *)
! __attribute__ ((__unused__));
/* i7 == last ret, -> frompcindex */
/* o7 == current ret, -> selfpc */
--- 267,273 ----
* -- [eichin:19920702.1107EST]
*/
! static void internal_mcount (char *, unsigned short *) __attribute__ ((used));
/* i7 == last ret, -> frompcindex */
/* o7 == current ret, -> selfpc */
diff -Nrcpad gcc-3.4.4/gcc/config/sparc/sol2-gas-bi.h gcc-3.4.5/gcc/config/sparc/sol2-gas-bi.h
*** gcc-3.4.4/gcc/config/sparc/sol2-gas-bi.h 2003-06-17 01:00:43.000000000 +0000
--- gcc-3.4.5/gcc/config/sparc/sol2-gas-bi.h 2005-06-08 20:52:34.000000000 +0000
***************
*** 3,5 ****
--- 3,11 ----
#undef AS_SPARC64_FLAG
#define AS_SPARC64_FLAG "-TSO -64 -Av9"
+
+ /* Emit a DTP-relative reference to a TLS variable. */
+ #ifdef HAVE_AS_TLS
+ #define ASM_OUTPUT_DWARF_DTPREL(FILE, SIZE, X) \
+ sparc_output_dwarf_dtprel (FILE, SIZE, X)
+ #endif
diff -Nrcpad gcc-3.4.4/gcc/config/sparc/sol2.h gcc-3.4.5/gcc/config/sparc/sol2.h
*** gcc-3.4.4/gcc/config/sparc/sol2.h 2004-04-01 16:13:07.000000000 +0000
--- gcc-3.4.5/gcc/config/sparc/sol2.h 2005-06-14 13:15:01.000000000 +0000
*************** Boston, MA 02111-1307, USA. */
*** 84,90 ****
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
! sprintf ((LABEL), "*.L%s%ld", (PREFIX), (long)(NUM))
/* The native TLS-enabled assembler requires the directive #tls_object
to be put on objects in TLS sections (as of v7.1). This is not
--- 84,90 ----
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
! sprintf ((LABEL), "*.L%s%lu", (PREFIX), (unsigned long)(NUM))
/* The native TLS-enabled assembler requires the directive #tls_object
to be put on objects in TLS sections (as of v7.1). This is not
*************** Boston, MA 02111-1307, USA. */
*** 113,118 ****
--- 113,124 ----
} \
while (0)
+ /* The Solaris assembler cannot grok r_tls_dtpoff. This is
+ a kludge as ASM_OUTPUT_DWARF_DTPREL is defined in sparc.h,
+ undefined here and defined again in sol2-gas-bi.h. */
+ #ifdef HAVE_AS_TLS
+ #undef ASM_OUTPUT_DWARF_DTPREL
+ #endif
#undef ENDFILE_SPEC
diff -Nrcpad gcc-3.4.4/gcc/config/sparc/sparc.h gcc-3.4.5/gcc/config/sparc/sparc.h
*** gcc-3.4.4/gcc/config/sparc/sparc.h 2004-05-31 21:40:19.000000000 +0000
--- gcc-3.4.5/gcc/config/sparc/sparc.h 2005-08-06 12:57:24.000000000 +0000
*************** extern GTY(()) rtx sparc_compare_op1;
*** 1892,1898 ****
case of a global register variable occupying more than one register
we prefix the second and following registers with .gnu.part1. etc. */
! extern char sparc_hard_reg_printed[8];
#ifdef HAVE_AS_REGISTER_PSEUDO_OP
#define ASM_DECLARE_REGISTER_GLOBAL(FILE, DECL, REGNO, NAME) \
--- 1892,1898 ----
case of a global register variable occupying more than one register
we prefix the second and following registers with .gnu.part1. etc. */
! extern GTY(()) char sparc_hard_reg_printed[8];
#ifdef HAVE_AS_REGISTER_PSEUDO_OP
#define ASM_DECLARE_REGISTER_GLOBAL(FILE, DECL, REGNO, NAME) \
diff -Nrcpad gcc-3.4.4/gcc/config/x-linux gcc-3.4.5/gcc/config/x-linux
*** gcc-3.4.4/gcc/config/x-linux 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/x-linux 2005-08-02 19:03:45.000000000 +0000
***************
*** 0 ****
--- 1,4 ----
+ host-linux.o : $(srcdir)/config/host-linux.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h hosthooks.h hosthooks-def.h
+ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/host-linux.c
diff -Nrcpad gcc-3.4.4/gcc/config/x-solaris gcc-3.4.5/gcc/config/x-solaris
*** gcc-3.4.4/gcc/config/x-solaris 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/config/x-solaris 2005-08-02 19:03:45.000000000 +0000
***************
*** 0 ****
--- 1,4 ----
+ host-solaris.o : $(srcdir)/config/host-solaris.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h hosthooks.h hosthooks-def.h
+ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/host-solaris.c
diff -Nrcpad gcc-3.4.4/gcc/config.gcc gcc-3.4.5/gcc/config.gcc
*** gcc-3.4.4/gcc/config.gcc 2005-04-25 04:47:59.000000000 +0000
--- gcc-3.4.5/gcc/config.gcc 2005-07-19 21:08:48.000000000 +0000
*************** case ${target} in
*** 406,411 ****
--- 406,417 ----
tm_defines="${tm_defines} FBSD_MAJOR=5" ;;
*-*-freebsd6 | *-*-freebsd[6].*)
tm_defines="${tm_defines} FBSD_MAJOR=6" ;;
+ *-*-freebsd7 | *-*-freebsd[7].*)
+ tm_defines="${tm_defines} FBSD_MAJOR=7" ;;
+ *-*-freebsd8 | *-*-freebsd[8].*)
+ tm_defines="${tm_defines} FBSD_MAJOR=8" ;;
+ *-*-freebsd9 | *-*-freebsd[9].*)
+ tm_defines="${tm_defines} FBSD_MAJOR=9" ;;
*)
echo 'Please update *-*-freebsd* in gcc/config.gcc'
exit 1
diff -Nrcpad gcc-3.4.4/gcc/config.host gcc-3.4.5/gcc/config.host
*** gcc-3.4.4/gcc/config.host 2003-10-14 03:41:41.000000000 +0000
--- gcc-3.4.5/gcc/config.host 2005-08-07 02:48:04.000000000 +0000
*************** case ${host} in
*** 103,109 ****
hppa1.0-*-hpux10* | hppa1.1-*-hpux10* | hppa2*-*-hpux10* | \
hppa1.0-*-hpux11* | hppa1.1-*-hpux11* | hppa2*-*-hpux11* | \
hppa*64*-*-hpux11*)
! host_xmake_file="pa/x-ada"
;;
i370-*-opened* | i370-*-mvs* ) # IBM 360/370/390 Architecture
host_xm_defines='FATAL_EXIT_CODE=12'
--- 103,114 ----
hppa1.0-*-hpux10* | hppa1.1-*-hpux10* | hppa2*-*-hpux10* | \
hppa1.0-*-hpux11* | hppa1.1-*-hpux11* | hppa2*-*-hpux11* | \
hppa*64*-*-hpux11*)
! out_host_hook_obj=pa-host.o
! host_xmake_file=pa/x-hpux
! ;;
! hppa*-*-linux*)
! out_host_hook_obj=pa-host.o
! host_xmake_file=pa/x-linux
;;
i370-*-opened* | i370-*-mvs* ) # IBM 360/370/390 Architecture
host_xm_defines='FATAL_EXIT_CODE=12'
*************** case ${host} in
*** 113,118 ****
--- 118,125 ----
;;
i[34567]86-*-solaris2*)
host_xm_defines="SMALL_ARG_MAX"
+ out_host_hook_obj=host-solaris.o
+ host_xmake_file=x-solaris
;;
i[34567]86-*-sysv4*) # Intel 80386's running System V Release 4
host_xm_defines="SMALL_ARG_MAX"
*************** case ${host} in
*** 152,155 ****
--- 159,170 ----
out_host_hook_obj=host-darwin.o
host_xmake_file=rs6000/x-darwin
;;
+ *-*-solaris2*)
+ out_host_hook_obj=host-solaris.o
+ host_xmake_file=x-solaris
+ ;;
+ *-*-linux*)
+ out_host_hook_obj=host-linux.o
+ host_xmake_file=x-linux
+ ;;
esac
diff -Nrcpad gcc-3.4.4/gcc/config.in gcc-3.4.5/gcc/config.in
*** gcc-3.4.4/gcc/config.in 2005-05-19 09:58:00.000000000 +0000
--- gcc-3.4.5/gcc/config.in 2005-12-01 03:48:24.000000000 +0000
***************
*** 97,102 ****
--- 97,105 ----
/* Define if your assembler supports the Sun syntax for cmov. */
#undef HAVE_AS_IX86_CMOV_SUN_SYNTAX
+ /* Define if your assembler supports the lituse_jsrdirect relocation. */
+ #undef HAVE_AS_JSRDIRECT_RELOCS
+
/* Define if your assembler supports .sleb128 and .uleb128. */
#undef HAVE_AS_LEB128
diff -Nrcpad gcc-3.4.4/gcc/configure gcc-3.4.5/gcc/configure
*** gcc-3.4.4/gcc/configure 2005-01-08 01:20:19.000000000 +0000
--- gcc-3.4.5/gcc/configure 2005-06-01 16:32:31.000000000 +0000
*************** cat >>confdefs.h <<\_ACEOF
*** 11091,11096 ****
--- 11091,11135 ----
_ACEOF
fi
+ echo "$as_me:$LINENO: checking assembler for jsrdirect relocation support" >&5
+ echo $ECHO_N "checking assembler for jsrdirect relocation support... $ECHO_C" >&6
+ if test "${gcc_cv_as_alpha_jsrdirect_relocs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ gcc_cv_as_alpha_jsrdirect_relocs=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 16 \) \* 1000 + 90`
+ then gcc_cv_as_alpha_jsrdirect_relocs=yes
+ fi
+ elif test x$gcc_cv_as != x; then
+ echo ' .set nomacro
+ .text
+ ldq $27, a($29) !literal!1
+ jsr $26, ($27), a !lituse_jsrdirect!1' > conftest.s
+ if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ then
+ gcc_cv_as_alpha_jsrdirect_relocs=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+ fi
+ echo "$as_me:$LINENO: result: $gcc_cv_as_alpha_jsrdirect_relocs" >&5
+ echo "${ECHO_T}$gcc_cv_as_alpha_jsrdirect_relocs" >&6
+ if test $gcc_cv_as_alpha_jsrdirect_relocs = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_AS_JSRDIRECT_RELOCS 1
+ _ACEOF
+
+ fi
;;
cris-*-*)
diff -Nrcpad gcc-3.4.4/gcc/configure.ac gcc-3.4.5/gcc/configure.ac
*** gcc-3.4.4/gcc/configure.ac 2005-01-08 01:20:19.000000000 +0000
--- gcc-3.4.5/gcc/configure.ac 2005-06-01 16:32:31.000000000 +0000
*************** case "$target" in
*** 2327,2332 ****
--- 2327,2340 ----
lda $29, 0($29) !gpdisp!3],,
[AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
[Define if your assembler supports explicit relocations.])])
+ gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
+ gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
+ [ .set nomacro
+ .text
+ ldq $27, a($29) !literal!1
+ jsr $26, ($27), a !lituse_jsrdirect!1],,
+ [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
+ [Define if your assembler supports the lituse_jsrdirect relocation.])])
;;
cris-*-*)
diff -Nrcpad gcc-3.4.4/gcc/c-parse.c gcc-3.4.5/gcc/c-parse.c
*** gcc-3.4.4/gcc/c-parse.c 2005-05-19 09:59:12.000000000 +0000
--- gcc-3.4.5/gcc/c-parse.c 2005-12-01 03:50:44.000000000 +0000
***************
*** 1,81 ****
! /* A Bison parser, made from c-parse.y
! by GNU bison 1.35. */
- #define YYBISON 1 /* Identify Bison output. */
- # define IDENTIFIER 257
- # define TYPENAME 258
- # define SCSPEC 259
- # define STATIC 260
- # define TYPESPEC 261
- # define TYPE_QUAL 262
- # define CONSTANT 263
- # define STRING 264
- # define ELLIPSIS 265
- # define SIZEOF 266
- # define ENUM 267
- # define STRUCT 268
- # define UNION 269
- # define IF 270
- # define ELSE 271
- # define WHILE 272
- # define DO 273
- # define FOR 274
- # define SWITCH 275
- # define CASE 276
- # define DEFAULT 277
- # define BREAK 278
- # define CONTINUE 279
- # define RETURN 280
- # define GOTO 281
- # define ASM_KEYWORD 282
- # define TYPEOF 283
- # define ALIGNOF 284
- # define ATTRIBUTE 285
- # define EXTENSION 286
- # define LABEL 287
- # define REALPART 288
- # define IMAGPART 289
- # define VA_ARG 290
- # define CHOOSE_EXPR 291
- # define TYPES_COMPATIBLE_P 292
- # define PTR_VALUE 293
- # define PTR_BASE 294
- # define PTR_EXTENT 295
- # define FUNC_NAME 296
- # define ASSIGN 297
- # define OROR 298
- # define ANDAND 299
- # define EQCOMPARE 300
- # define ARITHCOMPARE 301
- # define LSHIFT 302
- # define RSHIFT 303
- # define UNARY 304
- # define PLUSPLUS 305
- # define MINUSMINUS 306
- # define HYPERUNARY 307
- # define POINTSAT 308
- # define INTERFACE 309
- # define IMPLEMENTATION 310
- # define END 311
- # define SELECTOR 312
- # define DEFS 313
- # define ENCODE 314
- # define CLASSNAME 315
- # define PUBLIC 316
- # define PRIVATE 317
- # define PROTECTED 318
- # define PROTOCOL 319
- # define OBJECTNAME 320
- # define CLASS 321
- # define ALIAS 322
- # define AT_THROW 323
- # define AT_TRY 324
- # define AT_CATCH 325
- # define AT_FINALLY 326
- # define AT_SYNCHRONIZED 327
- # define OBJC_STRING 328
#line 34 "c-parse.y"
#include "config.h"
--- 1,209 ----
! /* A Bison parser, made by GNU Bison 1.875. */
!
! /* Skeleton parser for Yacc-like parsing with Bison,
! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2, or (at your option)
! any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 59 Temple Place - Suite 330,
! Boston, MA 02111-1307, USA. */
!
! /* As a special exception, when this file is copied by Bison into a
! Bison output file, you may use that output file without restriction.
! This special exception was added by the Free Software Foundation
! in version 1.24 of Bison. */
!
! /* Written by Richard Stallman by simplifying the original so called
! ``semantic'' parser. */
!
! /* All symbols defined below should begin with yy or YY, to avoid
! infringing on user name space. This should be done even for local
! variables, as they might otherwise be expanded by user macros.
! There are some unavoidable exceptions within include files to
! define necessary library symbols; they are noted "INFRINGES ON
! USER NAME SPACE" below. */
!
! /* Identify Bison output. */
! #define YYBISON 1
!
! /* Skeleton name. */
! #define YYSKELETON_NAME "yacc.c"
!
! /* Pure parsers. */
! #define YYPURE 0
!
! /* Using locations. */
! #define YYLSP_NEEDED 0
!
!
!
! /* Tokens. */
! #ifndef YYTOKENTYPE
! # define YYTOKENTYPE
! /* Put the tokens into the symbol table, so that GDB and other debuggers
! know about them. */
! enum yytokentype {
! IDENTIFIER = 258,
! TYPENAME = 259,
! SCSPEC = 260,
! STATIC = 261,
! TYPESPEC = 262,
! TYPE_QUAL = 263,
! CONSTANT = 264,
! STRING = 265,
! ELLIPSIS = 266,
! SIZEOF = 267,
! ENUM = 268,
! STRUCT = 269,
! UNION = 270,
! IF = 271,
! ELSE = 272,
! WHILE = 273,
! DO = 274,
! FOR = 275,
! SWITCH = 276,
! CASE = 277,
! DEFAULT = 278,
! BREAK = 279,
! CONTINUE = 280,
! RETURN = 281,
! GOTO = 282,
! ASM_KEYWORD = 283,
! TYPEOF = 284,
! ALIGNOF = 285,
! ATTRIBUTE = 286,
! EXTENSION = 287,
! LABEL = 288,
! REALPART = 289,
! IMAGPART = 290,
! VA_ARG = 291,
! CHOOSE_EXPR = 292,
! TYPES_COMPATIBLE_P = 293,
! PTR_VALUE = 294,
! PTR_BASE = 295,
! PTR_EXTENT = 296,
! FUNC_NAME = 297,
! ASSIGN = 298,
! OROR = 299,
! ANDAND = 300,
! EQCOMPARE = 301,
! ARITHCOMPARE = 302,
! RSHIFT = 303,
! LSHIFT = 304,
! MINUSMINUS = 305,
! PLUSPLUS = 306,
! UNARY = 307,
! HYPERUNARY = 308,
! POINTSAT = 309,
! INTERFACE = 310,
! IMPLEMENTATION = 311,
! END = 312,
! SELECTOR = 313,
! DEFS = 314,
! ENCODE = 315,
! CLASSNAME = 316,
! PUBLIC = 317,
! PRIVATE = 318,
! PROTECTED = 319,
! PROTOCOL = 320,
! OBJECTNAME = 321,
! CLASS = 322,
! ALIAS = 323,
! AT_THROW = 324,
! AT_TRY = 325,
! AT_CATCH = 326,
! AT_FINALLY = 327,
! AT_SYNCHRONIZED = 328,
! OBJC_STRING = 329
! };
! #endif
! #define IDENTIFIER 258
! #define TYPENAME 259
! #define SCSPEC 260
! #define STATIC 261
! #define TYPESPEC 262
! #define TYPE_QUAL 263
! #define CONSTANT 264
! #define STRING 265
! #define ELLIPSIS 266
! #define SIZEOF 267
! #define ENUM 268
! #define STRUCT 269
! #define UNION 270
! #define IF 271
! #define ELSE 272
! #define WHILE 273
! #define DO 274
! #define FOR 275
! #define SWITCH 276
! #define CASE 277
! #define DEFAULT 278
! #define BREAK 279
! #define CONTINUE 280
! #define RETURN 281
! #define GOTO 282
! #define ASM_KEYWORD 283
! #define TYPEOF 284
! #define ALIGNOF 285
! #define ATTRIBUTE 286
! #define EXTENSION 287
! #define LABEL 288
! #define REALPART 289
! #define IMAGPART 290
! #define VA_ARG 291
! #define CHOOSE_EXPR 292
! #define TYPES_COMPATIBLE_P 293
! #define PTR_VALUE 294
! #define PTR_BASE 295
! #define PTR_EXTENT 296
! #define FUNC_NAME 297
! #define ASSIGN 298
! #define OROR 299
! #define ANDAND 300
! #define EQCOMPARE 301
! #define ARITHCOMPARE 302
! #define RSHIFT 303
! #define LSHIFT 304
! #define MINUSMINUS 305
! #define PLUSPLUS 306
! #define UNARY 307
! #define HYPERUNARY 308
! #define POINTSAT 309
! #define INTERFACE 310
! #define IMPLEMENTATION 311
! #define END 312
! #define SELECTOR 313
! #define DEFS 314
! #define ENCODE 315
! #define CLASSNAME 316
! #define PUBLIC 317
! #define PRIVATE 318
! #define PROTECTED 319
! #define PROTOCOL 320
! #define OBJECTNAME 321
! #define CLASS 322
! #define ALIAS 323
! #define AT_THROW 324
! #define AT_TRY 325
! #define AT_CATCH 326
! #define AT_FINALLY 327
! #define AT_SYNCHRONIZED 328
! #define OBJC_STRING 329
!
+ /* Copy the first part of user declarations. */
#line 34 "c-parse.y"
#include "config.h"
*************** do { \
*** 140,152 ****
malloced_yyvs = (void *) newvs; \
} while (0)
#line 100 "c-parse.y"
! #ifndef YYSTYPE
! typedef union {long itype; tree ttype; enum tree_code code;
! location_t location; } yystype;
! # define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
#line 234 "c-parse.y"
/* Number of statements (loosely speaking) and compound statements
--- 268,301 ----
malloced_yyvs = (void *) newvs; \
} while (0)
+
+ /* Enabling traces. */
+ #ifndef YYDEBUG
+ # define YYDEBUG 0
+ #endif
+
+ /* Enabling verbose error messages. */
+ #ifdef YYERROR_VERBOSE
+ # undef YYERROR_VERBOSE
+ # define YYERROR_VERBOSE 1
+ #else
+ # define YYERROR_VERBOSE 0
+ #endif
+
+ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
#line 100 "c-parse.y"
! typedef union YYSTYPE {long itype; tree ttype; enum tree_code code;
! location_t location; } YYSTYPE;
! /* Line 191 of yacc.c. */
! #line 290 "c-parse.c"
! # define yystype YYSTYPE /* obsolescent; will be withdrawn */
! # define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
+
+
+
+ /* Copy the second part of user declarations. */
#line 234 "c-parse.y"
/* Number of statements (loosely speaking) and compound statements
*************** c_parse_init (void)
*** 229,260 ****
init_reswords ();
}
! #ifndef YYDEBUG
! # define YYDEBUG 0
#endif
! #define YYFINAL 881
! #define YYFLAG -32768
! #define YYNTBASE 97
! /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
! #define YYTRANSLATE(x) ((unsigned)(x) <= 328 ? yytranslate[x] : 297)
! /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
! static const char yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 93, 2, 2, 2, 60, 51, 2,
! 67, 89, 58, 56, 94, 57, 66, 59, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 46, 90,
! 2, 44, 2, 45, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 68, 2, 96, 50, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 95, 49, 91, 92, 2, 2, 2,
--- 378,516 ----
init_reswords ();
}
!
!
! /* Line 214 of yacc.c. */
! #line 384 "c-parse.c"
!
! #if ! defined (yyoverflow) || YYERROR_VERBOSE
!
! /* The parser invokes alloca or malloc; define the necessary symbols. */
!
! # if YYSTACK_USE_ALLOCA
! # define YYSTACK_ALLOC alloca
! # else
! # ifndef YYSTACK_USE_ALLOCA
! # if defined (alloca) || defined (_ALLOCA_H)
! # define YYSTACK_ALLOC alloca
! # else
! # ifdef __GNUC__
! # define YYSTACK_ALLOC __builtin_alloca
! # endif
! # endif
! # endif
! # endif
!
! # ifdef YYSTACK_ALLOC
! /* Pacify GCC's `empty if-body' warning. */
! # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
! # else
! # if defined (__STDC__) || defined (__cplusplus)
! # include /* INFRINGES ON USER NAME SPACE */
! # define YYSIZE_T size_t
! # endif
! # define YYSTACK_ALLOC malloc
! # define YYSTACK_FREE free
! # endif
! #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
!
!
! #if (! defined (yyoverflow) \
! && (! defined (__cplusplus) \
! || (YYSTYPE_IS_TRIVIAL)))
!
! /* A type that is properly aligned for any stack member. */
! union yyalloc
! {
! short yyss;
! YYSTYPE yyvs;
! };
!
! /* The size of the maximum gap between one aligned stack and the next. */
! # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
!
! /* The size of an array large to enough to hold all stacks, each with
! N elements. */
! # define YYSTACK_BYTES(N) \
! ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
! + YYSTACK_GAP_MAXIMUM)
!
! /* Copy COUNT objects from FROM to TO. The source and destination do
! not overlap. */
! # ifndef YYCOPY
! # if 1 < __GNUC__
! # define YYCOPY(To, From, Count) \
! __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
! # else
! # define YYCOPY(To, From, Count) \
! do \
! { \
! register YYSIZE_T yyi; \
! for (yyi = 0; yyi < (Count); yyi++) \
! (To)[yyi] = (From)[yyi]; \
! } \
! while (0)
! # endif
! # endif
!
! /* Relocate STACK from its old location to the new one. The
! local variables YYSIZE and YYSTACKSIZE give the old and new number of
! elements in the stack, and YYPTR gives the new location of the
! stack. Advance YYPTR to a properly aligned location for the next
! stack. */
! # define YYSTACK_RELOCATE(Stack) \
! do \
! { \
! YYSIZE_T yynewbytes; \
! YYCOPY (&yyptr->Stack, Stack, yysize); \
! Stack = &yyptr->Stack; \
! yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
! yyptr += yynewbytes / sizeof (*yyptr); \
! } \
! while (0)
!
#endif
+ #if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+ #else
+ typedef short yysigned_char;
+ #endif
+ /* YYFINAL -- State number of the termination state. */
+ #define YYFINAL 4
+ /* YYLAST -- Last index in YYTABLE. */
+ #define YYLAST 3335
! /* YYNTOKENS -- Number of terminals. */
! #define YYNTOKENS 97
! /* YYNNTS -- Number of nonterminals. */
! #define YYNNTS 201
! /* YYNRULES -- Number of rules. */
! #define YYNRULES 557
! /* YYNRULES -- Number of states. */
! #define YYNSTATES 881
! /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
! #define YYUNDEFTOK 2
! #define YYMAXUTOK 329
! #define YYTRANSLATE(YYX) \
! ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
!
! /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
! static const unsigned char yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 93, 2, 2, 2, 60, 51, 2,
! 66, 89, 58, 56, 94, 57, 65, 59, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 46, 90,
! 2, 43, 2, 45, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 67, 2, 96, 50, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 95, 49, 91, 92, 2, 2, 2,
*************** static const char yytranslate[] =
*** 270,623 ****
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
! 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
! 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
! 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
! 36, 37, 38, 39, 40, 41, 42, 43, 47, 48,
! 52, 53, 54, 55, 61, 62, 63, 64, 65, 69,
! 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
! 80, 81, 82, 83, 84, 85, 86, 87, 88
};
#if YYDEBUG
! static const short yyprhs[] =
{
! 0, 0, 1, 3, 4, 7, 8, 12, 14, 16,
! 18, 24, 27, 31, 36, 41, 44, 47, 50, 52,
! 53, 54, 63, 68, 69, 70, 79, 84, 85, 86,
! 94, 98, 100, 102, 104, 106, 108, 110, 112, 114,
! 116, 118, 119, 121, 123, 127, 129, 132, 135, 138,
! 141, 144, 149, 152, 157, 160, 163, 165, 167, 169,
! 171, 176, 178, 182, 186, 190, 194, 198, 202, 206,
! 210, 214, 218, 222, 226, 227, 232, 233, 238, 239,
! 240, 248, 249, 255, 259, 263, 265, 267, 269, 271,
! 272, 280, 284, 288, 292, 296, 301, 308, 317, 324,
! 329, 333, 337, 340, 343, 345, 346, 348, 351, 353,
! 355, 358, 361, 366, 371, 374, 377, 380, 381, 383,
! 388, 393, 397, 401, 404, 407, 409, 412, 415, 418,
! 421, 424, 426, 429, 431, 434, 437, 440, 443, 446,
! 449, 451, 454, 457, 460, 463, 466, 469, 472, 475,
! 478, 481, 484, 487, 490, 493, 496, 499, 501, 504,
507, 510, 513, 516, 519, 522, 525, 528, 531, 534,
537, 540, 543, 546, 549, 552, 555, 558, 561, 564,
567, 570, 573, 576, 579, 582, 585, 588, 591, 594,
597, 600, 603, 606, 609, 612, 615, 618, 621, 624,
! 627, 630, 633, 635, 637, 639, 641, 643, 645, 647,
! 649, 651, 653, 655, 657, 659, 661, 663, 665, 667,
! 669, 671, 673, 675, 677, 679, 681, 683, 685, 687,
! 689, 691, 693, 695, 697, 699, 701, 703, 705, 707,
! 709, 711, 713, 715, 717, 719, 721, 723, 725, 727,
! 729, 731, 733, 735, 737, 739, 741, 743, 745, 746,
! 748, 750, 752, 754, 756, 758, 760, 762, 767, 772,
! 774, 779, 781, 786, 787, 792, 793, 800, 804, 805,
! 812, 816, 817, 819, 821, 824, 831, 833, 837, 838,
! 840, 845, 852, 857, 859, 861, 863, 865, 867, 869,
! 871, 872, 877, 879, 880, 883, 885, 889, 893, 896,
! 897, 902, 904, 905, 910, 912, 914, 916, 919, 922,
! 928, 932, 933, 934, 941, 942, 943, 950, 952, 954,
! 959, 963, 966, 970, 972, 974, 976, 980, 983, 985,
! 989, 992, 996, 1000, 1005, 1009, 1014, 1018, 1021, 1023,
! 1025, 1028, 1030, 1033, 1035, 1038, 1039, 1047, 1053, 1054,
! 1062, 1068, 1069, 1078, 1079, 1087, 1090, 1093, 1096, 1097,
! 1099, 1100, 1102, 1104, 1107, 1108, 1112, 1115, 1119, 1122,
! 1126, 1128, 1130, 1133, 1135, 1140, 1142, 1147, 1150, 1155,
! 1159, 1162, 1167, 1171, 1173, 1177, 1179, 1181, 1185, 1186,
! 1190, 1191, 1193, 1194, 1196, 1199, 1201, 1203, 1205, 1209,
! 1212, 1216, 1221, 1225, 1228, 1231, 1233, 1238, 1242, 1247,
! 1253, 1259, 1261, 1263, 1265, 1267, 1269, 1272, 1275, 1278,
! 1281, 1283, 1286, 1289, 1292, 1294, 1297, 1300, 1303, 1306,
! 1308, 1311, 1313, 1315, 1317, 1319, 1322, 1323, 1324, 1325,
! 1326, 1327, 1329, 1331, 1334, 1338, 1340, 1343, 1345, 1347,
! 1353, 1355, 1357, 1360, 1363, 1366, 1369, 1370, 1376, 1377,
! 1382, 1383, 1385, 1388, 1392, 1395, 1398, 1399, 1404, 1406,
! 1410, 1411, 1412, 1420, 1426, 1429, 1430, 1431, 1432, 1433,
! 1446, 1447, 1454, 1457, 1459, 1461, 1464, 1468, 1471, 1474,
! 1477, 1481, 1488, 1497, 1508, 1521, 1525, 1530, 1532, 1536,
! 1542, 1545, 1550, 1551, 1553, 1554, 1556, 1557, 1559, 1561,
! 1565, 1570, 1578, 1580, 1584, 1585, 1589, 1592, 1593, 1594,
! 1601, 1604, 1605, 1607, 1609, 1613, 1615, 1619, 1624, 1629,
! 1633, 1638, 1642, 1647, 1652, 1656, 1661, 1665, 1667, 1668,
! 1672, 1674, 1677, 1679, 1683, 1685, 1689
};
static const short yyrhs[] =
{
! -1, 98, 0, 0, 99, 101, 0, 0, 98, 100,
! 101, 0, 102, 0, 104, 0, 103, 0, 28, 67,
! 113, 89, 90, 0, 296, 101, 0, 135, 169, 90,
! 0, 155, 135, 169, 90, 0, 154, 135, 168, 90,
! 0, 161, 90, 0, 1, 90, 0, 1, 91, 0,
! 90, 0, 0, 0, 154, 135, 198, 105, 129, 258,
! 106, 247, 0, 154, 135, 198, 1, 0, 0, 0,
! 155, 135, 203, 107, 129, 258, 108, 247, 0, 155,
! 135, 203, 1, 0, 0, 0, 135, 203, 109, 129,
! 258, 110, 247, 0, 135, 203, 1, 0, 3, 0,
! 4, 0, 51, 0, 57, 0, 56, 0, 62, 0,
! 63, 0, 92, 0, 93, 0, 115, 0, 0, 115,
! 0, 121, 0, 115, 94, 121, 0, 127, 0, 58,
! 120, 0, 296, 120, 0, 112, 120, 0, 48, 111,
! 0, 117, 116, 0, 117, 67, 224, 89, 0, 118,
! 116, 0, 118, 67, 224, 89, 0, 34, 120, 0,
! 35, 120, 0, 12, 0, 30, 0, 29, 0, 116,
! 0, 67, 224, 89, 120, 0, 120, 0, 121, 56,
! 121, 0, 121, 57, 121, 0, 121, 58, 121, 0,
! 121, 59, 121, 0, 121, 60, 121, 0, 121, 54,
! 121, 0, 121, 55, 121, 0, 121, 53, 121, 0,
! 121, 52, 121, 0, 121, 51, 121, 0, 121, 49,
! 121, 0, 121, 50, 121, 0, 0, 121, 48, 122,
! 121, 0, 0, 121, 47, 123, 121, 0, 0, 0,
! 121, 45, 124, 113, 46, 125, 121, 0, 0, 121,
! 45, 126, 46, 121, 0, 121, 44, 121, 0, 121,
! 43, 121, 0, 3, 0, 9, 0, 10, 0, 42,
! 0, 0, 67, 224, 89, 95, 128, 184, 91, 0,
! 67, 113, 89, 0, 67, 1, 89, 0, 251, 249,
! 89, 0, 251, 1, 89, 0, 127, 67, 114, 89,
! 0, 36, 67, 121, 94, 224, 89, 0, 37, 67,
! 121, 94, 121, 94, 121, 89, 0, 38, 67, 224,
! 94, 224, 89, 0, 127, 68, 113, 96, 0, 127,
! 66, 111, 0, 127, 65, 111, 0, 127, 62, 0,
! 127, 63, 0, 130, 0, 0, 132, 0, 258, 133,
! 0, 131, 0, 239, 0, 132, 131, 0, 131, 239,
! 0, 156, 135, 168, 90, 0, 157, 135, 169, 90,
! 0, 156, 90, 0, 157, 90, 0, 258, 137, 0,
! 0, 175, 0, 154, 135, 168, 90, 0, 155, 135,
! 169, 90, 0, 154, 135, 192, 0, 155, 135, 195,
! 0, 161, 90, 0, 296, 137, 0, 8, 0, 138,
! 8, 0, 139, 8, 0, 138, 176, 0, 140, 8,
! 0, 141, 8, 0, 176, 0, 140, 176, 0, 163,
! 0, 142, 8, 0, 143, 8, 0, 142, 165, 0,
! 143, 165, 0, 138, 163, 0, 139, 163, 0, 164,
! 0, 142, 176, 0, 142, 166, 0, 143, 166, 0,
! 138, 164, 0, 139, 164, 0, 144, 8, 0, 145,
! 8, 0, 144, 165, 0, 145, 165, 0, 140, 163,
! 0, 141, 163, 0, 144, 176, 0, 144, 166, 0,
! 145, 166, 0, 140, 164, 0, 141, 164, 0, 181,
! 0, 146, 8, 0, 147, 8, 0, 138, 181, 0,
! 139, 181, 0, 146, 181, 0, 147, 181, 0, 146,
! 176, 0, 148, 8, 0, 149, 8, 0, 140, 181,
! 0, 141, 181, 0, 148, 181, 0, 149, 181, 0,
! 148, 176, 0, 150, 8, 0, 151, 8, 0, 150,
! 165, 0, 151, 165, 0, 146, 163, 0, 147, 163,
! 0, 142, 181, 0, 143, 181, 0, 150, 181, 0,
! 151, 181, 0, 150, 176, 0, 150, 166, 0, 151,
! 166, 0, 146, 164, 0, 147, 164, 0, 152, 8,
! 0, 153, 8, 0, 152, 165, 0, 153, 165, 0,
! 148, 163, 0, 149, 163, 0, 144, 181, 0, 145,
! 181, 0, 152, 181, 0, 153, 181, 0, 152, 176,
! 0, 152, 166, 0, 153, 166, 0, 148, 164, 0,
! 149, 164, 0, 142, 0, 143, 0, 144, 0, 145,
! 0, 150, 0, 151, 0, 152, 0, 153, 0, 138,
! 0, 139, 0, 140, 0, 141, 0, 146, 0, 147,
! 0, 148, 0, 149, 0, 142, 0, 143, 0, 150,
! 0, 151, 0, 138, 0, 139, 0, 146, 0, 147,
! 0, 142, 0, 143, 0, 144, 0, 145, 0, 138,
! 0, 139, 0, 140, 0, 141, 0, 142, 0, 143,
! 0, 144, 0, 145, 0, 138, 0, 139, 0, 140,
! 0, 141, 0, 138, 0, 139, 0, 140, 0, 141,
! 0, 142, 0, 143, 0, 144, 0, 145, 0, 146,
! 0, 147, 0, 148, 0, 149, 0, 150, 0, 151,
! 0, 152, 0, 153, 0, 0, 159, 0, 165, 0,
! 167, 0, 166, 0, 7, 0, 212, 0, 207, 0,
! 4, 0, 119, 67, 113, 89, 0, 119, 67, 224,
! 89, 0, 171, 0, 168, 94, 136, 171, 0, 173,
! 0, 169, 94, 136, 173, 0, 0, 28, 67, 10,
! 89, 0, 0, 198, 170, 175, 44, 172, 182, 0,
! 198, 170, 175, 0, 0, 203, 170, 175, 44, 174,
! 182, 0, 203, 170, 175, 0, 0, 176, 0, 177,
! 0, 176, 177, 0, 31, 67, 67, 178, 89, 89,
! 0, 179, 0, 178, 94, 179, 0, 0, 180, 0,
! 180, 67, 3, 89, 0, 180, 67, 3, 94, 115,
! 89, 0, 180, 67, 114, 89, 0, 111, 0, 181,
! 0, 7, 0, 8, 0, 6, 0, 5, 0, 121,
! 0, 0, 95, 183, 184, 91, 0, 1, 0, 0,
! 185, 213, 0, 186, 0, 185, 94, 186, 0, 190,
! 44, 188, 0, 191, 188, 0, 0, 111, 46, 187,
! 188, 0, 188, 0, 0, 95, 189, 184, 91, 0,
! 121, 0, 1, 0, 191, 0, 190, 191, 0, 66,
! 111, 0, 68, 121, 11, 121, 96, 0, 68, 121,
! 96, 0, 0, 0, 198, 193, 129, 258, 194, 252,
! 0, 0, 0, 203, 196, 129, 258, 197, 252, 0,
! 199, 0, 203, 0, 67, 175, 199, 89, 0, 199,
! 67, 291, 0, 199, 232, 0, 58, 162, 199, 0,
! 4, 0, 201, 0, 202, 0, 201, 67, 291, 0,
! 201, 232, 0, 4, 0, 202, 67, 291, 0, 202,
! 232, 0, 58, 162, 201, 0, 58, 162, 202, 0,
! 67, 175, 202, 89, 0, 203, 67, 291, 0, 67,
! 175, 203, 89, 0, 58, 162, 203, 0, 203, 232,
! 0, 3, 0, 14, 0, 14, 176, 0, 15, 0,
! 15, 176, 0, 13, 0, 13, 176, 0, 0, 204,
! 111, 95, 208, 215, 91, 175, 0, 204, 95, 215,
! 91, 175, 0, 0, 205, 111, 95, 209, 215, 91,
! 175, 0, 205, 95, 215, 91, 175, 0, 0, 206,
! 111, 95, 210, 222, 214, 91, 175, 0, 0, 206,
! 95, 211, 222, 214, 91, 175, 0, 204, 111, 0,
! 205, 111, 0, 206, 111, 0, 0, 94, 0, 0,
! 94, 0, 216, 0, 216, 217, 0, 0, 216, 217,
! 90, 0, 216, 90, 0, 158, 135, 218, 0, 158,
! 135, 0, 159, 135, 219, 0, 159, 0, 1, 0,
! 296, 217, 0, 220, 0, 218, 94, 136, 220, 0,
! 221, 0, 219, 94, 136, 221, 0, 198, 175, 0,
! 198, 46, 121, 175, 0, 46, 121, 175, 0, 203,
! 175, 0, 203, 46, 121, 175, 0, 46, 121, 175,
! 0, 223, 0, 222, 94, 223, 0, 1, 0, 111,
! 0, 111, 44, 121, 0, 0, 160, 225, 226, 0,
! 0, 228, 0, 0, 228, 0, 229, 176, 0, 230,
! 0, 229, 0, 231, 0, 58, 162, 229, 0, 58,
! 162, 0, 58, 162, 230, 0, 67, 175, 228, 89,
! 0, 231, 67, 281, 0, 231, 232, 0, 67, 281,
! 0, 232, 0, 68, 162, 121, 96, 0, 68, 162,
! 96, 0, 68, 162, 58, 96, 0, 68, 6, 162,
! 121, 96, 0, 68, 159, 6, 121, 96, 0, 234,
! 0, 235, 0, 236, 0, 237, 0, 261, 0, 234,
! 261, 0, 235, 261, 0, 236, 261, 0, 237, 261,
! 0, 134, 0, 234, 134, 0, 235, 134, 0, 237,
! 134, 0, 262, 0, 234, 262, 0, 235, 262, 0,
! 236, 262, 0, 237, 262, 0, 239, 0, 238, 239,
! 0, 234, 0, 235, 0, 236, 0, 237, 0, 1,
! 90, 0, 0, 0, 0, 0, 0, 245, 0, 246,
! 0, 245, 246, 0, 33, 295, 90, 0, 252, 0,
! 1, 252, 0, 95, 0, 91, 0, 240, 244, 250,
! 91, 241, 0, 233, 0, 1, 0, 67, 95, 0,
! 248, 249, 0, 254, 260, 0, 254, 1, 0, 0,
! 16, 255, 67, 113, 89, 0, 0, 19, 257, 260,
! 18, 0, 0, 261, 0, 262, 259, 0, 242, 259,
! 243, 0, 258, 273, 0, 258, 274, 0, 0, 253,
! 17, 264, 260, 0, 253, 0, 253, 17, 1, 0,
! 0, 0, 18, 265, 67, 113, 89, 266, 260, 0,
! 256, 67, 113, 89, 90, 0, 256, 1, 0, 0,
! 0, 0, 0, 20, 267, 67, 272, 268, 276, 90,
! 269, 276, 89, 270, 260, 0, 0, 21, 67, 113,
! 89, 271, 260, 0, 276, 90, 0, 137, 0, 252,
! 0, 113, 90, 0, 242, 263, 243, 0, 24, 90,
! 0, 25, 90, 0, 26, 90, 0, 26, 113, 90,
! 0, 28, 275, 67, 113, 89, 90, 0, 28, 275,
! 67, 113, 46, 277, 89, 90, 0, 28, 275, 67,
! 113, 46, 277, 46, 277, 89, 90, 0, 28, 275,
! 67, 113, 46, 277, 46, 277, 46, 280, 89, 90,
! 0, 27, 111, 90, 0, 27, 58, 113, 90, 0,
! 90, 0, 22, 121, 46, 0, 22, 121, 11, 121,
! 46, 0, 23, 46, 0, 111, 258, 46, 175, 0,
! 0, 8, 0, 0, 113, 0, 0, 278, 0, 279,
! 0, 278, 94, 279, 0, 10, 67, 113, 89, 0,
! 68, 111, 96, 10, 67, 113, 89, 0, 10, 0,
! 280, 94, 10, 0, 0, 175, 282, 283, 0, 286,
! 89, 0, 0, 0, 287, 90, 284, 175, 285, 283,
! 0, 1, 89, 0, 0, 11, 0, 287, 0, 287,
! 94, 11, 0, 289, 0, 287, 94, 288, 0, 154,
! 135, 200, 175, 0, 154, 135, 203, 175, 0, 154,
! 135, 227, 0, 155, 135, 203, 175, 0, 155, 135,
! 227, 0, 156, 290, 200, 175, 0, 156, 290, 203,
! 175, 0, 156, 290, 227, 0, 157, 290, 203, 175,
! 0, 157, 290, 227, 0, 135, 0, 0, 175, 292,
! 293, 0, 283, 0, 294, 89, 0, 3, 0, 294,
! 94, 3, 0, 111, 0, 295, 94, 111, 0, 32,
! 0
};
! #endif
!
! #if YYDEBUG
! /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
! static const short yyrline[] =
{
! 0, 318, 322, 329, 329, 331, 331, 334, 339, 341,
! 342, 350, 354, 362, 364, 366, 368, 369, 370, 375,
! 375, 375, 387, 389, 389, 389, 400, 402, 402, 402,
! 413, 417, 419, 422, 424, 426, 431, 433, 435, 437,
! 441, 445, 448, 451, 454, 458, 460, 463, 466, 470,
! 472, 478, 481, 484, 487, 489, 493, 497, 501, 505,
! 507, 511, 513, 515, 517, 519, 521, 523, 525, 527,
! 529, 531, 533, 535, 537, 537, 544, 544, 551, 551,
! 551, 561, 561, 572, 579, 590, 597, 598, 599, 601,
! 601, 614, 619, 621, 635, 641, 643, 646, 656, 666,
! 668, 672, 678, 680, 684, 691, 702, 712, 717, 719,
! 720, 721, 728, 731, 733, 736, 744, 753, 763, 768,
! 771, 773, 775, 777, 779, 835, 839, 842, 847, 853,
! 857, 862, 866, 871, 875, 878, 881, 884, 887, 890,
! 895, 899, 902, 905, 908, 911, 916, 920, 923, 926,
! 929, 932, 937, 941, 944, 947, 950, 955, 959, 962,
! 965, 971, 977, 983, 991, 997, 1001, 1004, 1010, 1016,
! 1022, 1030, 1036, 1040, 1043, 1046, 1049, 1052, 1055, 1061,
! 1067, 1073, 1081, 1085, 1088, 1091, 1094, 1099, 1103, 1106,
! 1109, 1112, 1115, 1118, 1124, 1130, 1136, 1144, 1148, 1151,
! 1154, 1157, 1163, 1165, 1166, 1167, 1168, 1169, 1170, 1171,
! 1174, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1185, 1187,
! 1188, 1189, 1192, 1194, 1195, 1196, 1199, 1201, 1202, 1203,
! 1206, 1208, 1209, 1210, 1213, 1215, 1216, 1217, 1218, 1219,
! 1220, 1221, 1224, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
! 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1244, 1247,
! 1272, 1274, 1277, 1281, 1284, 1287, 1291, 1296, 1302, 1308,
! 1310, 1313, 1315, 1318, 1321, 1325, 1325, 1334, 1341, 1341,
! 1350, 1357, 1360, 1364, 1367, 1371, 1376, 1379, 1383, 1386,
! 1388, 1390, 1392, 1399, 1401, 1402, 1403, 1406, 1408, 1413,
! 1415, 1415, 1419, 1424, 1428, 1431, 1433, 1438, 1442, 1445,
! 1445, 1451, 1454, 1454, 1459, 1461, 1464, 1466, 1469, 1472,
! 1476, 1480, 1480, 1480, 1511, 1511, 1511, 1545, 1547, 1552,
! 1555, 1560, 1562, 1564, 1571, 1573, 1576, 1582, 1584, 1587,
! 1593, 1595, 1597, 1599, 1606, 1612, 1614, 1616, 1618, 1621,
! 1624, 1628, 1631, 1635, 1638, 1648, 1648, 1656, 1660, 1660,
! 1665, 1669, 1669, 1674, 1674, 1681, 1684, 1686, 1694, 1696,
! 1699, 1701, 1718, 1721, 1726, 1728, 1730, 1735, 1739, 1749,
! 1752, 1757, 1759, 1764, 1766, 1770, 1772, 1776, 1781, 1785,
! 1791, 1796, 1800, 1809, 1811, 1816, 1821, 1824, 1828, 1828,
! 1836, 1839, 1842, 1847, 1851, 1857, 1859, 1862, 1864, 1868,
! 1871, 1875, 1878, 1880, 1882, 1884, 1890, 1893, 1895, 1897,
! 1900, 1910, 1912, 1913, 1917, 1920, 1922, 1923, 1924, 1925,
! 1928, 1930, 1936, 1937, 1940, 1942, 1943, 1944, 1945, 1948,
! 1950, 1953, 1955, 1956, 1957, 1960, 1963, 1970, 1977, 1993,
! 2008, 2010, 2015, 2017, 2020, 2034, 2037, 2040, 2044, 2046,
! 2053, 2055, 2058, 2076, 2083, 2089, 2092, 2092, 2113, 2113,
! 2136, 2142, 2144, 2148, 2154, 2168, 2177, 2177, 2186, 2198,
! 2208, 2208, 2208, 2220, 2223, 2225, 2225, 2225, 2225, 2225,
! 2242, 2242, 2251, 2254, 2259, 2262, 2265, 2269, 2278, 2287,
! 2290, 2293, 2297, 2301, 2306, 2310, 2322, 2328, 2336, 2339,
! 2342, 2345, 2360, 2363, 2367, 2370, 2375, 2377, 2380, 2382,
! 2386, 2389, 2395, 2398, 2407, 2407, 2416, 2418, 2418, 2418,
! 2425, 2431, 2433, 2444, 2448, 2454, 2457, 2463, 2469, 2474,
! 2477, 2483, 2490, 2496, 2501, 2504, 2510, 2515, 2524, 2524,
! 2533, 2535, 2552, 2555, 2560, 2563, 2567
};
#endif
!
! #if (YYDEBUG) || defined YYERROR_VERBOSE
!
! /* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
static const char *const yytname[] =
{
! "$", "error", "$undefined.", "IDENTIFIER", "TYPENAME", "SCSPEC", "STATIC",
! "TYPESPEC", "TYPE_QUAL", "CONSTANT", "STRING", "ELLIPSIS", "SIZEOF",
! "ENUM", "STRUCT", "UNION", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH",
! "CASE", "DEFAULT", "BREAK", "CONTINUE", "RETURN", "GOTO", "ASM_KEYWORD",
! "TYPEOF", "ALIGNOF", "ATTRIBUTE", "EXTENSION", "LABEL", "REALPART",
! "IMAGPART", "VA_ARG", "CHOOSE_EXPR", "TYPES_COMPATIBLE_P", "PTR_VALUE",
! "PTR_BASE", "PTR_EXTENT", "FUNC_NAME", "ASSIGN", "'='", "'?'", "':'",
! "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQCOMPARE", "ARITHCOMPARE",
! "LSHIFT", "RSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY",
! "PLUSPLUS", "MINUSMINUS", "HYPERUNARY", "POINTSAT", "'.'", "'('", "'['",
! "INTERFACE", "IMPLEMENTATION", "END", "SELECTOR", "DEFS", "ENCODE",
! "CLASSNAME", "PUBLIC", "PRIVATE", "PROTECTED", "PROTOCOL", "OBJECTNAME",
! "CLASS", "ALIAS", "AT_THROW", "AT_TRY", "AT_CATCH", "AT_FINALLY",
! "AT_SYNCHRONIZED", "OBJC_STRING", "')'", "';'", "'}'", "'~'", "'!'",
! "','", "'{'", "']'", "program", "extdefs", "@1", "@2", "extdef",
! "extdef_1", "datadef", "fndef", "@3", "@4", "@5", "@6", "@7", "@8",
! "identifier", "unop", "expr", "exprlist", "nonnull_exprlist",
! "unary_expr", "sizeof", "alignof", "typeof", "cast_expr",
! "expr_no_commas", "@9", "@10", "@11", "@12", "@13", "primary", "@14",
! "old_style_parm_decls", "old_style_parm_decls_1", "lineno_datadecl",
! "datadecls", "datadecl", "lineno_decl", "setspecs", "maybe_resetattrs",
! "decl", "declspecs_nosc_nots_nosa_noea", "declspecs_nosc_nots_nosa_ea",
! "declspecs_nosc_nots_sa_noea", "declspecs_nosc_nots_sa_ea",
! "declspecs_nosc_ts_nosa_noea", "declspecs_nosc_ts_nosa_ea",
! "declspecs_nosc_ts_sa_noea", "declspecs_nosc_ts_sa_ea",
! "declspecs_sc_nots_nosa_noea", "declspecs_sc_nots_nosa_ea",
! "declspecs_sc_nots_sa_noea", "declspecs_sc_nots_sa_ea",
! "declspecs_sc_ts_nosa_noea", "declspecs_sc_ts_nosa_ea",
! "declspecs_sc_ts_sa_noea", "declspecs_sc_ts_sa_ea", "declspecs_ts",
! "declspecs_nots", "declspecs_ts_nosa", "declspecs_nots_nosa",
! "declspecs_nosc_ts", "declspecs_nosc_nots", "declspecs_nosc",
! "declspecs", "maybe_type_quals_attrs", "typespec_nonattr",
! "typespec_attr", "typespec_reserved_nonattr", "typespec_reserved_attr",
"typespec_nonreserved_nonattr", "initdecls", "notype_initdecls",
"maybeasm", "initdcl", "@15", "notype_initdcl", "@16",
"maybe_attribute", "attributes", "attribute", "attribute_list",
--- 526,880 ----
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
! 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
! 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
! 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
! 35, 36, 37, 38, 39, 40, 41, 42, 44, 47,
! 48, 52, 53, 54, 55, 61, 62, 63, 64, 68,
! 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
! 79, 80, 81, 82, 83, 84, 85, 86, 87, 88
};
#if YYDEBUG
! /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
! YYRHS. */
! static const unsigned short yyprhs[] =
{
! 0, 0, 3, 4, 6, 7, 10, 11, 15, 17,
! 19, 21, 27, 30, 34, 39, 44, 47, 50, 53,
! 55, 56, 57, 66, 71, 72, 73, 82, 87, 88,
! 89, 97, 101, 103, 105, 107, 109, 111, 113, 115,
! 117, 119, 121, 122, 124, 126, 130, 132, 135, 138,
! 141, 144, 147, 152, 155, 160, 163, 166, 168, 170,
! 172, 174, 179, 181, 185, 189, 193, 197, 201, 205,
! 209, 213, 217, 221, 225, 229, 230, 235, 236, 241,
! 242, 243, 251, 252, 258, 262, 266, 268, 270, 272,
! 274, 275, 283, 287, 291, 295, 299, 304, 311, 320,
! 327, 332, 336, 340, 343, 346, 348, 349, 351, 354,
! 356, 358, 361, 364, 369, 374, 377, 380, 383, 384,
! 386, 391, 396, 400, 404, 407, 410, 412, 415, 418,
! 421, 424, 427, 429, 432, 434, 437, 440, 443, 446,
! 449, 452, 454, 457, 460, 463, 466, 469, 472, 475,
! 478, 481, 484, 487, 490, 493, 496, 499, 502, 504,
507, 510, 513, 516, 519, 522, 525, 528, 531, 534,
537, 540, 543, 546, 549, 552, 555, 558, 561, 564,
567, 570, 573, 576, 579, 582, 585, 588, 591, 594,
597, 600, 603, 606, 609, 612, 615, 618, 621, 624,
! 627, 630, 633, 636, 638, 640, 642, 644, 646, 648,
! 650, 652, 654, 656, 658, 660, 662, 664, 666, 668,
! 670, 672, 674, 676, 678, 680, 682, 684, 686, 688,
! 690, 692, 694, 696, 698, 700, 702, 704, 706, 708,
! 710, 712, 714, 716, 718, 720, 722, 724, 726, 728,
! 730, 732, 734, 736, 738, 740, 742, 744, 746, 748,
! 749, 751, 753, 755, 757, 759, 761, 763, 765, 770,
! 775, 777, 782, 784, 789, 790, 795, 796, 803, 807,
! 808, 815, 819, 820, 822, 824, 827, 834, 836, 840,
! 841, 843, 848, 855, 860, 862, 864, 866, 868, 870,
! 872, 874, 875, 880, 882, 883, 886, 888, 892, 896,
! 899, 900, 905, 907, 908, 913, 915, 917, 919, 922,
! 925, 931, 935, 936, 937, 944, 945, 946, 953, 955,
! 957, 962, 966, 969, 973, 975, 977, 979, 983, 986,
! 988, 992, 995, 999, 1003, 1008, 1012, 1017, 1021, 1024,
! 1026, 1028, 1031, 1033, 1036, 1038, 1041, 1042, 1050, 1056,
! 1057, 1065, 1071, 1072, 1081, 1082, 1090, 1093, 1096, 1099,
! 1100, 1102, 1103, 1105, 1107, 1110, 1111, 1115, 1118, 1122,
! 1125, 1129, 1131, 1133, 1136, 1138, 1143, 1145, 1150, 1153,
! 1158, 1162, 1165, 1170, 1174, 1176, 1180, 1182, 1184, 1188,
! 1189, 1193, 1194, 1196, 1197, 1199, 1202, 1204, 1206, 1208,
! 1212, 1215, 1219, 1224, 1228, 1231, 1234, 1236, 1241, 1245,
! 1250, 1256, 1262, 1264, 1266, 1268, 1270, 1272, 1275, 1278,
! 1281, 1284, 1286, 1289, 1292, 1295, 1297, 1300, 1303, 1306,
! 1309, 1311, 1314, 1316, 1318, 1320, 1322, 1325, 1326, 1327,
! 1328, 1329, 1330, 1332, 1334, 1337, 1341, 1343, 1346, 1348,
! 1350, 1356, 1358, 1360, 1363, 1366, 1369, 1372, 1373, 1379,
! 1380, 1385, 1386, 1388, 1391, 1395, 1398, 1401, 1402, 1407,
! 1409, 1413, 1414, 1415, 1423, 1429, 1432, 1433, 1434, 1435,
! 1436, 1449, 1450, 1457, 1460, 1462, 1464, 1467, 1471, 1474,
! 1477, 1480, 1484, 1491, 1500, 1511, 1524, 1528, 1533, 1535,
! 1539, 1545, 1548, 1553, 1554, 1556, 1557, 1559, 1560, 1562,
! 1564, 1568, 1573, 1581, 1583, 1587, 1588, 1592, 1595, 1596,
! 1597, 1604, 1607, 1608, 1610, 1612, 1616, 1618, 1622, 1627,
! 1632, 1636, 1641, 1645, 1650, 1655, 1659, 1664, 1668, 1670,
! 1671, 1675, 1677, 1680, 1682, 1686, 1688, 1692
};
+
+ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const short yyrhs[] =
{
! 98, 0, -1, -1, 99, -1, -1, 100, 102, -1,
! -1, 99, 101, 102, -1, 103, -1, 105, -1, 104,
! -1, 28, 66, 114, 89, 90, -1, 297, 102, -1,
! 136, 170, 90, -1, 156, 136, 170, 90, -1, 155,
! 136, 169, 90, -1, 162, 90, -1, 1, 90, -1,
! 1, 91, -1, 90, -1, -1, -1, 155, 136, 199,
! 106, 130, 259, 107, 248, -1, 155, 136, 199, 1,
! -1, -1, -1, 156, 136, 204, 108, 130, 259, 109,
! 248, -1, 156, 136, 204, 1, -1, -1, -1, 136,
! 204, 110, 130, 259, 111, 248, -1, 136, 204, 1,
! -1, 3, -1, 4, -1, 51, -1, 57, -1, 56,
! -1, 62, -1, 61, -1, 92, -1, 93, -1, 116,
! -1, -1, 116, -1, 122, -1, 116, 94, 122, -1,
! 128, -1, 58, 121, -1, 297, 121, -1, 113, 121,
! -1, 48, 112, -1, 118, 117, -1, 118, 66, 225,
! 89, -1, 119, 117, -1, 119, 66, 225, 89, -1,
! 34, 121, -1, 35, 121, -1, 12, -1, 30, -1,
! 29, -1, 117, -1, 66, 225, 89, 121, -1, 121,
! -1, 122, 56, 122, -1, 122, 57, 122, -1, 122,
! 58, 122, -1, 122, 59, 122, -1, 122, 60, 122,
! -1, 122, 55, 122, -1, 122, 54, 122, -1, 122,
! 53, 122, -1, 122, 52, 122, -1, 122, 51, 122,
! -1, 122, 49, 122, -1, 122, 50, 122, -1, -1,
! 122, 48, 123, 122, -1, -1, 122, 47, 124, 122,
! -1, -1, -1, 122, 45, 125, 114, 46, 126, 122,
! -1, -1, 122, 45, 127, 46, 122, -1, 122, 43,
! 122, -1, 122, 44, 122, -1, 3, -1, 9, -1,
! 10, -1, 42, -1, -1, 66, 225, 89, 95, 129,
! 185, 91, -1, 66, 114, 89, -1, 66, 1, 89,
! -1, 252, 250, 89, -1, 252, 1, 89, -1, 128,
! 66, 115, 89, -1, 36, 66, 122, 94, 225, 89,
! -1, 37, 66, 122, 94, 122, 94, 122, 89, -1,
! 38, 66, 225, 94, 225, 89, -1, 128, 67, 114,
! 96, -1, 128, 65, 112, -1, 128, 68, 112, -1,
! 128, 62, -1, 128, 61, -1, 131, -1, -1, 133,
! -1, 259, 134, -1, 132, -1, 240, -1, 133, 132,
! -1, 132, 240, -1, 157, 136, 169, 90, -1, 158,
! 136, 170, 90, -1, 157, 90, -1, 158, 90, -1,
! 259, 138, -1, -1, 176, -1, 155, 136, 169, 90,
! -1, 156, 136, 170, 90, -1, 155, 136, 193, -1,
! 156, 136, 196, -1, 162, 90, -1, 297, 138, -1,
! 8, -1, 139, 8, -1, 140, 8, -1, 139, 177,
! -1, 141, 8, -1, 142, 8, -1, 177, -1, 141,
! 177, -1, 164, -1, 143, 8, -1, 144, 8, -1,
! 143, 166, -1, 144, 166, -1, 139, 164, -1, 140,
! 164, -1, 165, -1, 143, 177, -1, 143, 167, -1,
! 144, 167, -1, 139, 165, -1, 140, 165, -1, 145,
! 8, -1, 146, 8, -1, 145, 166, -1, 146, 166,
! -1, 141, 164, -1, 142, 164, -1, 145, 177, -1,
! 145, 167, -1, 146, 167, -1, 141, 165, -1, 142,
! 165, -1, 182, -1, 147, 8, -1, 148, 8, -1,
! 139, 182, -1, 140, 182, -1, 147, 182, -1, 148,
! 182, -1, 147, 177, -1, 149, 8, -1, 150, 8,
! -1, 141, 182, -1, 142, 182, -1, 149, 182, -1,
! 150, 182, -1, 149, 177, -1, 151, 8, -1, 152,
! 8, -1, 151, 166, -1, 152, 166, -1, 147, 164,
! -1, 148, 164, -1, 143, 182, -1, 144, 182, -1,
! 151, 182, -1, 152, 182, -1, 151, 177, -1, 151,
! 167, -1, 152, 167, -1, 147, 165, -1, 148, 165,
! -1, 153, 8, -1, 154, 8, -1, 153, 166, -1,
! 154, 166, -1, 149, 164, -1, 150, 164, -1, 145,
! 182, -1, 146, 182, -1, 153, 182, -1, 154, 182,
! -1, 153, 177, -1, 153, 167, -1, 154, 167, -1,
! 149, 165, -1, 150, 165, -1, 143, -1, 144, -1,
! 145, -1, 146, -1, 151, -1, 152, -1, 153, -1,
! 154, -1, 139, -1, 140, -1, 141, -1, 142, -1,
! 147, -1, 148, -1, 149, -1, 150, -1, 143, -1,
! 144, -1, 151, -1, 152, -1, 139, -1, 140, -1,
! 147, -1, 148, -1, 143, -1, 144, -1, 145, -1,
! 146, -1, 139, -1, 140, -1, 141, -1, 142, -1,
! 143, -1, 144, -1, 145, -1, 146, -1, 139, -1,
! 140, -1, 141, -1, 142, -1, 139, -1, 140, -1,
! 141, -1, 142, -1, 143, -1, 144, -1, 145, -1,
! 146, -1, 147, -1, 148, -1, 149, -1, 150, -1,
! 151, -1, 152, -1, 153, -1, 154, -1, -1, 160,
! -1, 166, -1, 168, -1, 167, -1, 7, -1, 213,
! -1, 208, -1, 4, -1, 120, 66, 114, 89, -1,
! 120, 66, 225, 89, -1, 172, -1, 169, 94, 137,
! 172, -1, 174, -1, 170, 94, 137, 174, -1, -1,
! 28, 66, 10, 89, -1, -1, 199, 171, 176, 43,
! 173, 183, -1, 199, 171, 176, -1, -1, 204, 171,
! 176, 43, 175, 183, -1, 204, 171, 176, -1, -1,
! 177, -1, 178, -1, 177, 178, -1, 31, 66, 66,
! 179, 89, 89, -1, 180, -1, 179, 94, 180, -1,
! -1, 181, -1, 181, 66, 3, 89, -1, 181, 66,
! 3, 94, 116, 89, -1, 181, 66, 115, 89, -1,
! 112, -1, 182, -1, 7, -1, 8, -1, 6, -1,
! 5, -1, 122, -1, -1, 95, 184, 185, 91, -1,
! 1, -1, -1, 186, 214, -1, 187, -1, 186, 94,
! 187, -1, 191, 43, 189, -1, 192, 189, -1, -1,
! 112, 46, 188, 189, -1, 189, -1, -1, 95, 190,
! 185, 91, -1, 122, -1, 1, -1, 192, -1, 191,
! 192, -1, 65, 112, -1, 67, 122, 11, 122, 96,
! -1, 67, 122, 96, -1, -1, -1, 199, 194, 130,
! 259, 195, 253, -1, -1, -1, 204, 197, 130, 259,
! 198, 253, -1, 200, -1, 204, -1, 66, 176, 200,
! 89, -1, 200, 66, 292, -1, 200, 233, -1, 58,
! 163, 200, -1, 4, -1, 202, -1, 203, -1, 202,
! 66, 292, -1, 202, 233, -1, 4, -1, 203, 66,
! 292, -1, 203, 233, -1, 58, 163, 202, -1, 58,
! 163, 203, -1, 66, 176, 203, 89, -1, 204, 66,
! 292, -1, 66, 176, 204, 89, -1, 58, 163, 204,
! -1, 204, 233, -1, 3, -1, 14, -1, 14, 177,
! -1, 15, -1, 15, 177, -1, 13, -1, 13, 177,
! -1, -1, 205, 112, 95, 209, 216, 91, 176, -1,
! 205, 95, 216, 91, 176, -1, -1, 206, 112, 95,
! 210, 216, 91, 176, -1, 206, 95, 216, 91, 176,
! -1, -1, 207, 112, 95, 211, 223, 215, 91, 176,
! -1, -1, 207, 95, 212, 223, 215, 91, 176, -1,
! 205, 112, -1, 206, 112, -1, 207, 112, -1, -1,
! 94, -1, -1, 94, -1, 217, -1, 217, 218, -1,
! -1, 217, 218, 90, -1, 217, 90, -1, 159, 136,
! 219, -1, 159, 136, -1, 160, 136, 220, -1, 160,
! -1, 1, -1, 297, 218, -1, 221, -1, 219, 94,
! 137, 221, -1, 222, -1, 220, 94, 137, 222, -1,
! 199, 176, -1, 199, 46, 122, 176, -1, 46, 122,
! 176, -1, 204, 176, -1, 204, 46, 122, 176, -1,
! 46, 122, 176, -1, 224, -1, 223, 94, 224, -1,
! 1, -1, 112, -1, 112, 43, 122, -1, -1, 161,
! 226, 227, -1, -1, 229, -1, -1, 229, -1, 230,
! 177, -1, 231, -1, 230, -1, 232, -1, 58, 163,
! 230, -1, 58, 163, -1, 58, 163, 231, -1, 66,
! 176, 229, 89, -1, 232, 66, 282, -1, 232, 233,
! -1, 66, 282, -1, 233, -1, 67, 163, 122, 96,
! -1, 67, 163, 96, -1, 67, 163, 58, 96, -1,
! 67, 6, 163, 122, 96, -1, 67, 160, 6, 122,
! 96, -1, 235, -1, 236, -1, 237, -1, 238, -1,
! 262, -1, 235, 262, -1, 236, 262, -1, 237, 262,
! -1, 238, 262, -1, 135, -1, 235, 135, -1, 236,
! 135, -1, 238, 135, -1, 263, -1, 235, 263, -1,
! 236, 263, -1, 237, 263, -1, 238, 263, -1, 240,
! -1, 239, 240, -1, 235, -1, 236, -1, 237, -1,
! 238, -1, 1, 90, -1, -1, -1, -1, -1, -1,
! 246, -1, 247, -1, 246, 247, -1, 33, 296, 90,
! -1, 253, -1, 1, 253, -1, 95, -1, 91, -1,
! 241, 245, 251, 91, 242, -1, 234, -1, 1, -1,
! 66, 95, -1, 249, 250, -1, 255, 261, -1, 255,
! 1, -1, -1, 16, 256, 66, 114, 89, -1, -1,
! 19, 258, 261, 18, -1, -1, 262, -1, 263, 260,
! -1, 243, 260, 244, -1, 259, 274, -1, 259, 275,
! -1, -1, 254, 17, 265, 261, -1, 254, -1, 254,
! 17, 1, -1, -1, -1, 18, 266, 66, 114, 89,
! 267, 261, -1, 257, 66, 114, 89, 90, -1, 257,
! 1, -1, -1, -1, -1, -1, 20, 268, 66, 273,
! 269, 277, 90, 270, 277, 89, 271, 261, -1, -1,
! 21, 66, 114, 89, 272, 261, -1, 277, 90, -1,
! 138, -1, 253, -1, 114, 90, -1, 243, 264, 244,
! -1, 24, 90, -1, 25, 90, -1, 26, 90, -1,
! 26, 114, 90, -1, 28, 276, 66, 114, 89, 90,
! -1, 28, 276, 66, 114, 46, 278, 89, 90, -1,
! 28, 276, 66, 114, 46, 278, 46, 278, 89, 90,
! -1, 28, 276, 66, 114, 46, 278, 46, 278, 46,
! 281, 89, 90, -1, 27, 112, 90, -1, 27, 58,
! 114, 90, -1, 90, -1, 22, 122, 46, -1, 22,
! 122, 11, 122, 46, -1, 23, 46, -1, 112, 259,
! 46, 176, -1, -1, 8, -1, -1, 114, -1, -1,
! 279, -1, 280, -1, 279, 94, 280, -1, 10, 66,
! 114, 89, -1, 67, 112, 96, 10, 66, 114, 89,
! -1, 10, -1, 281, 94, 10, -1, -1, 176, 283,
! 284, -1, 287, 89, -1, -1, -1, 288, 90, 285,
! 176, 286, 284, -1, 1, 89, -1, -1, 11, -1,
! 288, -1, 288, 94, 11, -1, 290, -1, 288, 94,
! 289, -1, 155, 136, 201, 176, -1, 155, 136, 204,
! 176, -1, 155, 136, 228, -1, 156, 136, 204, 176,
! -1, 156, 136, 228, -1, 157, 291, 201, 176, -1,
! 157, 291, 204, 176, -1, 157, 291, 228, -1, 158,
! 291, 204, 176, -1, 158, 291, 228, -1, 136, -1,
! -1, 176, 293, 294, -1, 284, -1, 295, 89, -1,
! 3, -1, 295, 94, 3, -1, 112, -1, 296, 94,
! 112, -1, 32, -1
};
! /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
! static const unsigned short yyrline[] =
{
! 0, 319, 319, 322, 330, 330, 331, 331, 335, 340,
! 341, 342, 350, 355, 362, 364, 366, 368, 369, 370,
! 377, 382, 376, 387, 390, 395, 389, 400, 403, 408,
! 402, 413, 418, 419, 422, 424, 426, 431, 433, 435,
! 437, 441, 447, 448, 452, 454, 459, 460, 463, 466,
! 470, 472, 478, 481, 484, 487, 489, 494, 498, 502,
! 506, 507, 512, 513, 515, 517, 519, 521, 523, 525,
! 527, 529, 531, 533, 535, 538, 537, 545, 544, 552,
! 556, 551, 562, 561, 572, 579, 591, 597, 598, 599,
! 602, 601, 614, 619, 621, 635, 641, 643, 646, 656,
! 666, 668, 672, 678, 680, 685, 693, 702, 713, 718,
! 719, 720, 721, 729, 731, 733, 736, 745, 754, 764,
! 769, 771, 773, 775, 777, 779, 836, 839, 842, 848,
! 854, 857, 863, 866, 872, 875, 878, 881, 884, 887,
! 890, 896, 899, 902, 905, 908, 911, 917, 920, 923,
! 926, 929, 932, 938, 941, 944, 947, 950, 956, 959,
! 962, 965, 971, 977, 983, 992, 998, 1001, 1004, 1010,
! 1016, 1022, 1031, 1037, 1040, 1043, 1046, 1049, 1052, 1055,
! 1061, 1067, 1073, 1082, 1085, 1088, 1091, 1094, 1100, 1103,
! 1106, 1109, 1112, 1115, 1118, 1124, 1130, 1136, 1145, 1148,
! 1151, 1154, 1157, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
! 1171, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1186,
! 1187, 1188, 1189, 1193, 1194, 1195, 1196, 1200, 1201, 1202,
! 1203, 1207, 1208, 1209, 1210, 1214, 1215, 1216, 1217, 1218,
! 1219, 1220, 1221, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
! 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1246,
! 1247, 1273, 1274, 1278, 1282, 1284, 1288, 1292, 1296, 1302,
! 1309, 1310, 1314, 1315, 1320, 1321, 1327, 1326, 1334, 1343,
! 1342, 1350, 1359, 1360, 1365, 1367, 1372, 1377, 1379, 1385,
! 1386, 1388, 1390, 1392, 1400, 1401, 1402, 1403, 1407, 1408,
! 1414, 1416, 1415, 1419, 1426, 1428, 1432, 1433, 1439, 1442,
! 1446, 1445, 1451, 1456, 1455, 1459, 1461, 1465, 1466, 1470,
! 1472, 1476, 1482, 1495, 1481, 1513, 1526, 1512, 1546, 1547,
! 1553, 1555, 1560, 1562, 1564, 1572, 1573, 1577, 1582, 1584,
! 1588, 1593, 1595, 1597, 1599, 1607, 1612, 1614, 1616, 1618,
! 1622, 1624, 1629, 1631, 1636, 1638, 1650, 1649, 1656, 1661,
! 1660, 1665, 1670, 1669, 1675, 1674, 1682, 1684, 1686, 1694,
! 1696, 1699, 1701, 1719, 1721, 1727, 1728, 1730, 1736, 1739,
! 1749, 1752, 1757, 1759, 1765, 1766, 1771, 1772, 1777, 1781,
! 1785, 1792, 1796, 1800, 1810, 1811, 1816, 1822, 1824, 1830,
! 1829, 1838, 1839, 1844, 1847, 1851, 1858, 1859, 1863, 1864,
! 1869, 1871, 1876, 1878, 1880, 1882, 1884, 1891, 1893, 1895,
! 1897, 1900, 1911, 1912, 1913, 1917, 1921, 1922, 1923, 1924,
! 1925, 1929, 1930, 1936, 1937, 1941, 1942, 1943, 1944, 1945,
! 1949, 1950, 1954, 1955, 1956, 1957, 1960, 1964, 1971, 1978,
! 1994, 2008, 2010, 2016, 2017, 2021, 2035, 2037, 2040, 2044,
! 2046, 2054, 2055, 2059, 2076, 2084, 2089, 2102, 2101, 2115,
! 2114, 2137, 2143, 2144, 2149, 2155, 2169, 2179, 2178, 2186,
! 2198, 2209, 2212, 2208, 2220, 2223, 2226, 2230, 2233, 2237,
! 2225, 2243, 2242, 2252, 2254, 2260, 2262, 2265, 2269, 2278,
! 2287, 2290, 2293, 2297, 2301, 2306, 2310, 2322, 2328, 2336,
! 2339, 2342, 2345, 2362, 2363, 2369, 2370, 2376, 2377, 2381,
! 2382, 2387, 2389, 2396, 2398, 2409, 2408, 2417, 2419, 2421,
! 2418, 2425, 2432, 2433, 2444, 2448, 2455, 2457, 2464, 2469,
! 2474, 2477, 2483, 2491, 2496, 2501, 2504, 2510, 2516, 2526,
! 2525, 2534, 2535, 2553, 2555, 2561, 2563, 2568
};
#endif
! #if YYDEBUG || YYERROR_VERBOSE
! /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
! First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
! "$end", "error", "$undefined", "IDENTIFIER", "TYPENAME", "SCSPEC",
! "STATIC", "TYPESPEC", "TYPE_QUAL", "CONSTANT", "STRING", "ELLIPSIS",
! "SIZEOF", "ENUM", "STRUCT", "UNION", "IF", "ELSE", "WHILE", "DO", "FOR",
! "SWITCH", "CASE", "DEFAULT", "BREAK", "CONTINUE", "RETURN", "GOTO",
! "ASM_KEYWORD", "TYPEOF", "ALIGNOF", "ATTRIBUTE", "EXTENSION", "LABEL",
! "REALPART", "IMAGPART", "VA_ARG", "CHOOSE_EXPR", "TYPES_COMPATIBLE_P",
! "PTR_VALUE", "PTR_BASE", "PTR_EXTENT", "FUNC_NAME", "'='", "ASSIGN",
! "'?'", "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQCOMPARE",
! "ARITHCOMPARE", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'",
! "MINUSMINUS", "PLUSPLUS", "UNARY", "HYPERUNARY", "'.'", "'('", "'['",
! "POINTSAT", "INTERFACE", "IMPLEMENTATION", "END", "SELECTOR", "DEFS",
! "ENCODE", "CLASSNAME", "PUBLIC", "PRIVATE", "PROTECTED", "PROTOCOL",
! "OBJECTNAME", "CLASS", "ALIAS", "AT_THROW", "AT_TRY", "AT_CATCH",
! "AT_FINALLY", "AT_SYNCHRONIZED", "OBJC_STRING", "')'", "';'", "'}'",
! "'~'", "'!'", "','", "'{'", "']'", "$accept", "program", "extdefs",
! "@1", "@2", "extdef", "extdef_1", "datadef", "fndef", "@3", "@4", "@5",
! "@6", "@7", "@8", "identifier", "unop", "expr", "exprlist",
! "nonnull_exprlist", "unary_expr", "sizeof", "alignof", "typeof",
! "cast_expr", "expr_no_commas", "@9", "@10", "@11", "@12", "@13",
! "primary", "@14", "old_style_parm_decls", "old_style_parm_decls_1",
! "lineno_datadecl", "datadecls", "datadecl", "lineno_decl", "setspecs",
! "maybe_resetattrs", "decl", "declspecs_nosc_nots_nosa_noea",
! "declspecs_nosc_nots_nosa_ea", "declspecs_nosc_nots_sa_noea",
! "declspecs_nosc_nots_sa_ea", "declspecs_nosc_ts_nosa_noea",
! "declspecs_nosc_ts_nosa_ea", "declspecs_nosc_ts_sa_noea",
! "declspecs_nosc_ts_sa_ea", "declspecs_sc_nots_nosa_noea",
! "declspecs_sc_nots_nosa_ea", "declspecs_sc_nots_sa_noea",
! "declspecs_sc_nots_sa_ea", "declspecs_sc_ts_nosa_noea",
! "declspecs_sc_ts_nosa_ea", "declspecs_sc_ts_sa_noea",
! "declspecs_sc_ts_sa_ea", "declspecs_ts", "declspecs_nots",
! "declspecs_ts_nosa", "declspecs_nots_nosa", "declspecs_nosc_ts",
! "declspecs_nosc_nots", "declspecs_nosc", "declspecs",
! "maybe_type_quals_attrs", "typespec_nonattr", "typespec_attr",
! "typespec_reserved_nonattr", "typespec_reserved_attr",
"typespec_nonreserved_nonattr", "initdecls", "notype_initdecls",
"maybeasm", "initdcl", "@15", "notype_initdcl", "@16",
"maybe_attribute", "attributes", "attribute", "attribute_list",
*************** static const char *const yytname[] =
*** 654,1829 ****
};
#endif
! /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
! static const short yyr1[] =
{
! 0, 97, 97, 99, 98, 100, 98, 101, 102, 102,
! 102, 102, 103, 103, 103, 103, 103, 103, 103, 105,
! 106, 104, 104, 107, 108, 104, 104, 109, 110, 104,
! 104, 111, 111, 112, 112, 112, 112, 112, 112, 112,
! 113, 114, 114, 115, 115, 116, 116, 116, 116, 116,
! 116, 116, 116, 116, 116, 116, 117, 118, 119, 120,
! 120, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 121, 121, 121, 121, 122, 121, 123, 121, 124, 125,
! 121, 126, 121, 121, 121, 127, 127, 127, 127, 128,
! 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
! 127, 127, 127, 127, 129, 130, 130, 131, 132, 132,
! 132, 132, 133, 133, 133, 133, 134, 135, 136, 137,
! 137, 137, 137, 137, 137, 138, 138, 138, 139, 140,
! 140, 141, 141, 142, 142, 142, 142, 142, 142, 142,
! 143, 143, 143, 143, 143, 143, 144, 144, 144, 144,
! 144, 144, 145, 145, 145, 145, 145, 146, 146, 146,
! 146, 146, 146, 146, 147, 148, 148, 148, 148, 148,
! 148, 149, 150, 150, 150, 150, 150, 150, 150, 150,
! 150, 150, 151, 151, 151, 151, 151, 152, 152, 152,
! 152, 152, 152, 152, 152, 152, 152, 153, 153, 153,
! 153, 153, 154, 154, 154, 154, 154, 154, 154, 154,
! 155, 155, 155, 155, 155, 155, 155, 155, 156, 156,
! 156, 156, 157, 157, 157, 157, 158, 158, 158, 158,
! 159, 159, 159, 159, 160, 160, 160, 160, 160, 160,
! 160, 160, 161, 161, 161, 161, 161, 161, 161, 161,
! 161, 161, 161, 161, 161, 161, 161, 161, 162, 162,
! 163, 163, 164, 165, 165, 166, 167, 167, 167, 168,
! 168, 169, 169, 170, 170, 172, 171, 171, 174, 173,
! 173, 175, 175, 176, 176, 177, 178, 178, 179, 179,
! 179, 179, 179, 180, 180, 180, 180, 181, 181, 182,
! 183, 182, 182, 184, 184, 185, 185, 186, 186, 187,
! 186, 186, 189, 188, 188, 188, 190, 190, 191, 191,
! 191, 193, 194, 192, 196, 197, 195, 198, 198, 199,
! 199, 199, 199, 199, 200, 200, 201, 201, 201, 202,
! 202, 202, 202, 202, 203, 203, 203, 203, 203, 204,
! 204, 205, 205, 206, 206, 208, 207, 207, 209, 207,
! 207, 210, 207, 211, 207, 212, 212, 212, 213, 213,
! 214, 214, 215, 215, 216, 216, 216, 217, 217, 217,
! 217, 217, 217, 218, 218, 219, 219, 220, 220, 220,
! 221, 221, 221, 222, 222, 222, 223, 223, 225, 224,
! 226, 226, 227, 227, 227, 228, 228, 229, 229, 230,
! 230, 231, 231, 231, 231, 231, 232, 232, 232, 232,
! 232, 233, 233, 233, 233, 234, 234, 234, 234, 234,
! 235, 235, 235, 235, 236, 236, 236, 236, 236, 237,
! 237, 238, 238, 238, 238, 239, 240, 241, 242, 243,
! 244, 244, 245, 245, 246, 247, 247, 248, 249, 249,
! 250, 250, 251, 252, 253, 253, 255, 254, 257, 256,
! 258, 259, 259, 260, 261, 262, 264, 263, 263, 263,
! 265, 266, 263, 263, 263, 267, 268, 269, 270, 263,
! 271, 263, 272, 272, 273, 273, 273, 273, 273, 273,
! 273, 273, 273, 273, 273, 273, 273, 273, 274, 274,
! 274, 274, 275, 275, 276, 276, 277, 277, 278, 278,
! 279, 279, 280, 280, 282, 281, 283, 284, 285, 283,
! 283, 286, 286, 286, 286, 287, 287, 288, 288, 288,
! 288, 288, 289, 289, 289, 289, 289, 290, 292, 291,
! 293, 293, 294, 294, 295, 295, 296
};
! /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
! static const short yyr2[] =
{
! 0, 0, 1, 0, 2, 0, 3, 1, 1, 1,
! 5, 2, 3, 4, 4, 2, 2, 2, 1, 0,
! 0, 8, 4, 0, 0, 8, 4, 0, 0, 7,
! 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 1, 0, 1, 1, 3, 1, 2, 2, 2, 2,
! 2, 4, 2, 4, 2, 2, 1, 1, 1, 1,
! 4, 1, 3, 3, 3, 3, 3, 3, 3, 3,
! 3, 3, 3, 3, 0, 4, 0, 4, 0, 0,
! 7, 0, 5, 3, 3, 1, 1, 1, 1, 0,
! 7, 3, 3, 3, 3, 4, 6, 8, 6, 4,
! 3, 3, 2, 2, 1, 0, 1, 2, 1, 1,
! 2, 2, 4, 4, 2, 2, 2, 0, 1, 4,
! 4, 3, 3, 2, 2, 1, 2, 2, 2, 2,
! 2, 1, 2, 1, 2, 2, 2, 2, 2, 2,
! 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
! 1, 1, 1, 1, 1, 1, 1, 4, 4, 1,
! 4, 1, 4, 0, 4, 0, 6, 3, 0, 6,
! 3, 0, 1, 1, 2, 6, 1, 3, 0, 1,
! 4, 6, 4, 1, 1, 1, 1, 1, 1, 1,
! 0, 4, 1, 0, 2, 1, 3, 3, 2, 0,
! 4, 1, 0, 4, 1, 1, 1, 2, 2, 5,
! 3, 0, 0, 6, 0, 0, 6, 1, 1, 4,
! 3, 2, 3, 1, 1, 1, 3, 2, 1, 3,
! 2, 3, 3, 4, 3, 4, 3, 2, 1, 1,
! 2, 1, 2, 1, 2, 0, 7, 5, 0, 7,
! 5, 0, 8, 0, 7, 2, 2, 2, 0, 1,
! 0, 1, 1, 2, 0, 3, 2, 3, 2, 3,
! 1, 1, 2, 1, 4, 1, 4, 2, 4, 3,
! 2, 4, 3, 1, 3, 1, 1, 3, 0, 3,
! 0, 1, 0, 1, 2, 1, 1, 1, 3, 2,
! 3, 4, 3, 2, 2, 1, 4, 3, 4, 5,
! 5, 1, 1, 1, 1, 1, 2, 2, 2, 2,
! 1, 2, 2, 2, 1, 2, 2, 2, 2, 1,
! 2, 1, 1, 1, 1, 2, 0, 0, 0, 0,
! 0, 1, 1, 2, 3, 1, 2, 1, 1, 5,
! 1, 1, 2, 2, 2, 2, 0, 5, 0, 4,
! 0, 1, 2, 3, 2, 2, 0, 4, 1, 3,
! 0, 0, 7, 5, 2, 0, 0, 0, 0, 12,
! 0, 6, 2, 1, 1, 2, 3, 2, 2, 2,
! 3, 6, 8, 10, 12, 3, 4, 1, 3, 5,
! 2, 4, 0, 1, 0, 1, 0, 1, 1, 3,
! 4, 7, 1, 3, 0, 3, 2, 0, 0, 6,
! 2, 0, 1, 1, 3, 1, 3, 4, 4, 3,
! 4, 3, 4, 4, 3, 4, 3, 1, 0, 3,
! 1, 2, 1, 3, 1, 3, 1
};
! /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
! doesn't specify something else to do. Zero means the default is an
! error. */
! static const short yydefact[] =
{
! 3, 5, 0, 0, 0, 266, 298, 297, 263, 125,
! 353, 349, 351, 0, 58, 0, 556, 18, 4, 7,
! 9, 8, 0, 0, 210, 211, 212, 213, 202, 203,
! 204, 205, 214, 215, 216, 217, 206, 207, 208, 209,
! 117, 117, 0, 133, 140, 260, 262, 261, 131, 283,
! 157, 0, 0, 0, 265, 264, 0, 6, 16, 17,
! 354, 350, 352, 0, 0, 0, 348, 258, 281, 0,
! 271, 0, 126, 138, 144, 128, 160, 127, 139, 145,
! 161, 129, 150, 155, 132, 167, 130, 151, 156, 168,
! 134, 136, 142, 141, 178, 135, 137, 143, 179, 146,
! 148, 153, 152, 193, 147, 149, 154, 194, 158, 176,
! 185, 164, 162, 159, 177, 186, 163, 165, 191, 200,
! 171, 169, 166, 192, 201, 170, 172, 174, 183, 182,
! 180, 173, 175, 184, 181, 187, 189, 198, 197, 195,
! 188, 190, 199, 196, 0, 0, 15, 284, 31, 32,
! 374, 365, 374, 366, 363, 367, 11, 85, 86, 87,
! 56, 57, 0, 0, 0, 0, 0, 88, 0, 33,
! 35, 34, 0, 36, 37, 0, 38, 39, 0, 0,
! 40, 59, 0, 0, 61, 43, 45, 0, 0, 288,
! 0, 238, 239, 240, 241, 234, 235, 236, 237, 398,
! 0, 230, 231, 232, 233, 259, 0, 0, 282, 12,
! 281, 30, 0, 281, 258, 0, 281, 347, 333, 258,
! 281, 0, 269, 0, 327, 328, 0, 0, 0, 0,
! 355, 0, 358, 0, 361, 54, 55, 0, 0, 0,
! 49, 46, 0, 462, 0, 0, 48, 0, 0, 0,
! 50, 0, 52, 0, 0, 78, 76, 74, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
! 102, 103, 0, 0, 41, 0, 0, 458, 450, 0,
! 47, 295, 296, 293, 0, 286, 289, 294, 267, 400,
! 268, 346, 0, 0, 118, 0, 548, 344, 258, 259,
! 0, 0, 470, 104, 0, 470, 109, 0, 280, 0,
! 0, 14, 281, 22, 0, 281, 281, 331, 13, 26,
! 0, 281, 381, 376, 230, 231, 232, 233, 226, 227,
! 228, 229, 117, 117, 373, 0, 374, 281, 374, 395,
! 396, 370, 393, 0, 0, 0, 0, 92, 91, 0,
! 10, 44, 0, 0, 84, 83, 0, 0, 0, 0,
! 72, 73, 71, 70, 69, 67, 68, 62, 63, 64,
! 65, 66, 101, 100, 0, 42, 0, 94, 0, 0,
! 451, 452, 93, 0, 288, 41, 258, 281, 399, 401,
! 406, 405, 407, 415, 345, 272, 273, 0, 0, 0,
! 0, 0, 417, 0, 445, 28, 111, 110, 107, 222,
! 223, 218, 219, 224, 225, 220, 221, 117, 117, 278,
! 332, 0, 0, 470, 277, 330, 470, 357, 378, 0,
! 375, 382, 0, 360, 0, 0, 371, 0, 370, 0,
! 0, 0, 89, 60, 51, 53, 0, 0, 77, 75,
! 95, 99, 554, 0, 461, 430, 460, 470, 470, 470,
! 470, 0, 439, 0, 448, 425, 434, 453, 285, 287,
! 85, 0, 409, 524, 414, 281, 413, 274, 0, 552,
! 532, 117, 117, 550, 0, 533, 535, 549, 0, 0,
! 0, 418, 416, 0, 114, 0, 115, 0, 0, 329,
! 270, 273, 20, 275, 24, 0, 281, 377, 383, 0,
! 281, 379, 385, 281, 281, 397, 394, 281, 0, 0,
! 0, 0, 0, 79, 82, 454, 0, 431, 426, 435,
! 432, 427, 436, 448, 428, 437, 433, 429, 438, 440,
! 447, 85, 266, 0, 0, 0, 0, 0, 0, 512,
! 507, 457, 470, 0, 116, 117, 117, 0, 0, 446,
! 494, 474, 475, 0, 290, 0, 292, 408, 410, 0,
! 0, 524, 412, 530, 547, 402, 402, 526, 527, 0,
! 551, 0, 419, 420, 0, 29, 455, 0, 0, 302,
! 300, 299, 279, 0, 0, 0, 281, 0, 387, 281,
! 281, 0, 390, 281, 356, 359, 364, 281, 96, 0,
! 98, 315, 0, 0, 312, 0, 314, 0, 368, 305,
! 311, 0, 0, 0, 555, 459, 0, 510, 497, 498,
! 499, 0, 0, 0, 513, 0, 0, 495, 0, 0,
! 123, 466, 480, 468, 485, 0, 478, 0, 0, 449,
! 463, 124, 0, 411, 525, 338, 258, 281, 281, 334,
! 335, 281, 544, 403, 406, 258, 281, 281, 546, 281,
! 534, 210, 211, 212, 213, 202, 203, 204, 205, 214,
! 215, 216, 217, 206, 207, 208, 209, 117, 117, 536,
! 553, 456, 112, 113, 0, 21, 276, 25, 389, 281,
! 0, 392, 281, 0, 362, 0, 318, 0, 0, 309,
! 90, 0, 304, 0, 317, 308, 80, 0, 508, 500,
! 0, 505, 0, 281, 0, 121, 321, 0, 122, 324,
! 0, 0, 448, 0, 0, 0, 465, 470, 464, 484,
! 0, 496, 291, 409, 524, 542, 281, 337, 281, 340,
! 543, 404, 409, 524, 545, 528, 402, 402, 0, 388,
! 384, 391, 386, 97, 0, 320, 0, 0, 306, 307,
! 0, 506, 0, 511, 119, 0, 120, 0, 0, 0,
! 0, 514, 0, 479, 448, 449, 471, 470, 0, 341,
! 342, 0, 336, 339, 0, 281, 281, 539, 281, 541,
! 301, 0, 313, 310, 509, 516, 0, 470, 470, 0,
! 0, 469, 515, 493, 486, 0, 490, 477, 473, 472,
! 0, 343, 529, 537, 538, 540, 319, 0, 0, 0,
! 517, 518, 501, 322, 325, 467, 481, 514, 492, 448,
! 483, 0, 0, 516, 0, 0, 0, 0, 448, 0,
! 491, 0, 0, 0, 502, 519, 323, 326, 482, 487,
! 520, 0, 0, 0, 514, 0, 522, 0, 503, 0,
! 0, 0, 0, 488, 521, 504, 523, 448, 489, 0,
! 0, 0
};
static const short yydefgoto[] =
{
! 879, 1, 2, 3, 18, 19, 20, 21, 314, 593,
! 320, 595, 215, 493, 615, 178, 244, 374, 180, 181,
! 182, 183, 22, 184, 185, 359, 358, 356, 623, 357,
! 186, 522, 302, 303, 304, 305, 408, 455, 23, 293,
! 554, 191, 192, 193, 194, 195, 196, 197, 198, 32,
! 33, 34, 35, 36, 37, 38, 39, 40, 41, 481,
! 482, 332, 205, 199, 42, 206, 43, 44, 45, 46,
! 47, 221, 69, 216, 222, 594, 70, 498, 294, 208,
! 49, 284, 285, 286, 50, 592, 694, 617, 618, 619,
! 767, 620, 708, 621, 622, 725, 775, 846, 728, 777,
! 847, 501, 224, 658, 659, 660, 225, 51, 52, 53,
! 54, 336, 338, 343, 233, 55, 712, 437, 228, 229,
! 334, 507, 511, 508, 512, 341, 342, 200, 289, 388,
! 662, 663, 390, 391, 392, 217, 456, 457, 458, 459,
! 460, 461, 306, 278, 625, 737, 741, 379, 380, 381,
! 585, 559, 279, 463, 187, 586, 646, 647, 730, 648,
! 732, 307, 785, 738, 786, 787, 649, 784, 731, 848,
! 733, 837, 864, 877, 839, 814, 561, 562, 635, 815,
! 829, 830, 831, 867, 474, 570, 483, 669, 794, 484,
! 485, 689, 486, 575, 297, 398, 487, 488, 453, 188
};
static const short yypact[] =
{
! 73, 94, 2813, 2813, 291,-32768,-32768,-32768,-32768,-32768,
! 88, 88, 88, 35,-32768, 56,-32768,-32768,-32768,-32768,
! -32768,-32768, 70, 92, 612, 1168, 1296, 2041, 1008, 390,
! 1300, 898, 1603, 2103, 1696, 2214, 1607, 958, 2010, 1329,
! -32768,-32768, 105,-32768,-32768,-32768,-32768,-32768, 88,-32768,
! -32768, 48, 50, 63,-32768,-32768, 2813,-32768,-32768,-32768,
! 88, 88, 88, 2601, 90, 2496,-32768, 62, 88, 186,
! -32768, 1202,-32768,-32768,-32768, 88,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768, 88,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768, 88,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768, 88,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768, 88,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! 88,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 88,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 88,-32768,
! -32768,-32768,-32768,-32768, 327, 92,-32768,-32768,-32768,-32768,
! -32768, 74,-32768, 119,-32768, 136,-32768,-32768,-32768,-32768,
! -32768,-32768, 2601, 2601, 134, 199, 202,-32768, 526,-32768,
! -32768,-32768, 2601,-32768,-32768, 1787,-32768,-32768, 2601, 164,
! 190,-32768, 2641, 2706,-32768, 3219, 641, 1345, 2601, 952,
! 207, 807, 2232, 1471, 3214, 615, 682, 741, 924,-32768,
! 209, 100, 312, 147, 315,-32768, 92, 92, 88,-32768,
! 88,-32768, 273, 88, 349, 894, 88,-32768,-32768, 62,
! 88, 343,-32768, 939, 115, 356, 368, 2070, 279, 851,
! -32768, 281,-32768, 532,-32768,-32768,-32768, 2601, 2601, 2167,
! -32768,-32768, 302,-32768, 311, 317,-32768, 340, 2601, 1787,
! -32768, 1787,-32768, 2601, 2601, 410,-32768,-32768, 2601, 2601,
! 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601,
! -32768,-32768, 526, 526, 2601, 2601, 350,-32768, 442, 407,
! -32768,-32768,-32768,-32768, 32,-32768, 322,-32768,-32768, 107,
! -32768, 356, 299, 92,-32768, 510,-32768,-32768, 62, 543,
! 2110, 461,-32768,-32768, 1039, 43,-32768, 421, 488, 327,
! 327,-32768, 88,-32768, 894, 88, 88,-32768,-32768,-32768,
! 894, 88,-32768,-32768, 807, 2232, 1471, 3214, 615, 682,
! 741, 924,-32768, 433, 483, 3095,-32768, 88,-32768,-32768,
! 524, 484,-32768, 532, 2934, 2961, 487,-32768,-32768, 2364,
! -32768, 3219, 496, 535, 3219, 3219, 2601, 541, 2601, 2601,
! 2462, 1857, 2395, 2892, 673, 503, 503, 481, 481,-32768,
! -32768,-32768,-32768,-32768, 546, 190, 501,-32768, 526, 1534,
! 442,-32768,-32768, 547, 952, 2746, 62, 88,-32768,-32768,
! -32768,-32768, 498,-32768,-32768,-32768, 179, 551, 1234, 2601,
! 2601, 2175,-32768, 2834,-32768,-32768,-32768,-32768,-32768, 2120,
! 990, 1700, 1453, 3142, 1666, 2074, 1759, 552, 554,-32768,
! 115, 375, 327,-32768, 601,-32768,-32768,-32768, 374, 193,
! -32768,-32768, 557,-32768, 560, 2601, 526, 561, 484, 2167,
! 2601, 2167,-32768,-32768, 558, 558, 608, 2601, 3248, 2994,
! -32768,-32768,-32768, 373, 461,-32768,-32768, 71, 79, 80,
! 81, 655,-32768, 567, 2250,-32768,-32768,-32768,-32768,-32768,
! 165, 572, 107, 107,-32768, 88,-32768,-32768, 573,-32768,
! -32768,-32768,-32768,-32768, 574, 387,-32768,-32768, 168, 2861,
! 2884,-32768,-32768, 44,-32768, 327,-32768, 92, 1935,-32768,
! -32768, 636,-32768,-32768,-32768, 2601, 203, 576,-32768, 2601,
! 239, 578,-32768, 88, 88, 3219,-32768, 88, 577, 584,
! 2982, 585, 1414,-32768, 3235,-32768, 526,-32768,-32768,-32768,
! -32768,-32768,-32768, 2324,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768, 629, 630, 2601, 632, 590, 596, 2536, 103, 679,
! -32768,-32768,-32768, 603,-32768,-32768,-32768, 604, 575, 600,
! -32768,-32768,-32768, 2431,-32768, 2601,-32768,-32768,-32768, 609,
! 1116,-32768,-32768,-32768,-32768, 325, 301,-32768,-32768, 2716,
! -32768, 696,-32768,-32768, 605,-32768,-32768, 395, 396,-32768,
! -32768, 3219,-32768, 44, 1935, 44, 3085, 2601,-32768, 88,
! 3085, 2601,-32768, 88,-32768,-32768,-32768, 88,-32768, 2601,
! -32768,-32768, 526, 2601,-32768, 664, 3219, 626, 625,-32768,
! -32768, 251, 1895, 2601,-32768,-32768, 3013,-32768,-32768,-32768,
! -32768, 631, 2601, 634,-32768, 653, 690,-32768, 327, 92,
! -32768,-32768,-32768,-32768,-32768, 670, 723, 1627, 77,-32768,
! -32768,-32768, 254,-32768,-32768,-32768, 62, 88, 88, 508,
! 533, 142,-32768,-32768, 88, 62, 88, 142,-32768, 88,
! -32768, 2120, 990, 3154, 3185, 1700, 1453, 2470, 2316, 3142,
! 1666, 3173, 3202, 2074, 1759, 2609, 2817,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768, 1414,-32768,-32768,-32768,-32768, 3085,
! 374,-32768, 3085, 193,-32768, 3034,-32768, 2804, 1414,-32768,
! -32768, 1827,-32768, 2002,-32768,-32768, 3235, 2601,-32768,-32768,
! 651,-32768, 2601, 88, 398,-32768, 188, 404,-32768, 196,
! 676, 685,-32768, 691, 2601, 1720,-32768,-32768,-32768,-32768,
! 2601,-32768,-32768, 325, 307,-32768, 88,-32768, 88,-32768,
! -32768, 88, 301, 301,-32768,-32768, 325, 301, 669,-32768,
! -32768,-32768,-32768,-32768, 2601,-32768, 671, 2002,-32768,-32768,
! 3201,-32768, 28,-32768,-32768, 894,-32768, 894, 2601, 2601,
! 746, 2431, 677,-32768,-32768,-32768,-32768,-32768, 681, 508,
! 533, 393,-32768,-32768, 1116, 88, 142,-32768, 142,-32768,
! -32768, 2911,-32768,-32768,-32768, 67, 678,-32768,-32768, 684,
! 686,-32768,-32768,-32768,-32768, 687,-32768,-32768,-32768,-32768,
! 689,-32768,-32768,-32768,-32768,-32768,-32768, 713, 526, 41,
! 695,-32768,-32768,-32768,-32768,-32768,-32768, 2601,-32768,-32768,
! -32768, 2601, 688, 67, 693, 67, 605, 605,-32768, 701,
! -32768, 692, 782, 58,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768, 727, 786, 707, 2601, 2601,-32768, 319,-32768, 710,
! 716, 717, 796,-32768,-32768,-32768,-32768,-32768,-32768, 809,
! 816,-32768
};
static const short yypgoto[] =
{
! -32768,-32768,-32768,-32768, 53,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768, -5,-32768, -63, 427, -256, 422,
! -32768,-32768,-32768, 14, 819,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768, -301,-32768, 514,-32768,-32768, -9, 305, -250,
! -540, 1, 4, 23, 36, 9, 19, 27, 29, -257,
! -252, 246, 247, -246, -238, 248, 258, -431, -430, 549,
! 556,-32768, -171,-32768, -429, -199, 420, 520, 812, 840,
! -32768, -453, -121, -207, 417,-32768, 579,-32768, 318, 86,
! 106,-32768, 469,-32768, 478, 260,-32768, -608,-32768, 162,
! -32768, -573,-32768,-32768, 253,-32768,-32768,-32768,-32768,-32768,
! -32768, -116, 300, 125, 132, -112, -18,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 446, -125,-32768,
! 550,-32768,-32768, 197, 183, 553, 474, -138,-32768,-32768,
! -535, -275, -396, -455,-32768, 529,-32768,-32768,-32768,-32768,
! -32768,-32768, -264,-32768,-32768, -405, 130,-32768,-32768, 536,
! -350,-32768, 358,-32768,-32768, -428,-32768,-32768,-32768,-32768,
! -32768, 224, 133, -648, -254, -186,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -773,
! 76,-32768, 82,-32768, 447,-32768, -569,-32768,-32768,-32768,
! -32768,-32768,-32768, 444, -308,-32768,-32768,-32768,-32768, 7
};
!
! #define YYLAST 3308
!
!
static const short yytable[] =
{
! 179, 654, 190, 24, 24, 71, 25, 25, 425, 56,
! 56, 28, 28, 423, 389, 300, 315, 568, 375, 426,
! 309, 29, 29, 651, 226, 26, 26, 231, 223, 30,
! 30, 31, 31, 555, 556, 557, 560, 245, 27, 27,
! 406, 668, 587, 299, -106, 584, 151, 153, 155, 715,
! 413, 148, 149, 148, 149, 414, 57, 24, 333, 558,
! 25, 415, 422, 56, 849, 28, 148, 149, 201, 416,
! 9, 202, -441, -1, 805, 29, 567, 827, 739, 26,
! -442, -443, -444, 30, 780, 31, 758, 843, 48, 48,
! 203, 869, 27, 15, -2, 66, 60, 61, 62, 399,
! 766, 346, 63, 204, 862, 560, 148, 149, 72, 156,
! 75, 352, 84, 353, 93, 462, 102, 806, 111, 15,
! 120, 383, 129, 64, 138, 465, 384, 227, 558, 375,
! 844, 15, 555, 556, 557, 828, 817, 65, -106, 551,
! 769, 413, 48, 150, 740, 152, 414, 863, 687, 688,
! 67, 48, 415, 48, 147, 81, 691, 189, 154, 68,
! 416, 632, -421, 240, 333, 386, 147, 147, 147, 230,
! -422, -423, -424, 15, 387, 214, 235, 236, 15, 664,
! 664, 147, 316, 214, 283, 724, 241, 472, 291, 292,
! 147, 850, 246, 466, 803, 146, 66, 539, 569, 147,
! 858, 237, 280, 528, 531, 534, 537, 212, 147, 213,
! 214, 432, 376, 434, 232, 201, 212, 147, 202, -273,
! 201, 797, 799, 202, 212, 822, 147, -273, 340, 878,
! 324, 234, -273, 325, 15, 147, 335, 203, 328, 509,
! -273, 813, 203, 695, 147, 697, 213, 214, 329, 597,
! 204, 67, 326, 247, 564, 204, 330, 580, 331, 565,
! 68, 48, 581, 213, 214, 327, 238, 372, 373, 239,
! 15, 529, 532, 535, 538, 396, 209, 75, -273, 84,
! 210, 93, -273, 102, 248, 601, -273, 75, 568, 84,
! -273, 291, 292, 446, 315, 713, 288, 568, 290, 201,
! 48, 519, 202, 521, 66, 48, 213, 214, 409, 652,
! 66, 410, 506, 413, 147, 48, 411, 612, 414, 613,
! 77, 203, 679, 86, 415, 48, 412, 680, 66, 655,
! 66, 218, 416, 683, 204, 48, 324, 48, 340, 325,
! 295, 684, 335, 742, 328, 144, 145, 567, 248, 700,
! 555, 556, 557, 703, 329, 298, 567, 9, 326, 665,
! 664, 664, 330, 443, 331, 656, 213, 214, 666, 214,
! 321, 327, 337, 452, 657, 214, 588, 66, 218, 283,
! 15, 58, 59, 656, 48, 219, 207, 201, 394, 385,
! 202, 347, 657, 214, 220, 6, 7, 8, 95, 409,
! 348, 553, 410, 10, 11, 12, 349, 411, 871, 203,
! 75, 510, 84, 872, 93, 241, 102, 412, 856, 857,
! 505, 48, 204, 213, 214, 5, 6, 7, 8, 9,
! 350, 340, 219, 311, 10, 11, 12, 312, 792, 377,
! 793, 220, 316, 214, 73, 78, 82, 87, 527, 530,
! 14, 536, 109, 114, 118, 123, -81, 743, 318, 552,
! 748, 214, 210, 525, 499, 24, 752, 526, 25, 569,
! 553, 563, 48, 28, 807, 378, 808, 578, 569, 396,
! -247, 579, 821, 29, 631, 692, 693, 26, 774, 312,
! 210, 30, 312, 31, 776, 75, 382, 93, 210, 111,
! 27, 129, 76, 80, 85, 89, 94, 98, 103, 107,
! 112, 116, 121, 125, 130, 134, 139, 143, 727, 315,
! 397, 624, 726, -380, -380, 48, 405, 48, 552, 148,
! 149, 296, 419, 339, 308, 148, 149, 413, 310, 267,
! 268, 269, 414, 633, 74, 79, 83, 88, 415, 400,
! 48, 404, 110, 115, 119, 124, 416, 661, 667, 265,
! 266, 267, 268, 269, 24, 475, 214, 25, 435, 720,
! 563, 409, 28, 430, 410, 746, 214, 280, 436, 411,
! 671, 441, 29, 672, 506, 444, 26, 447, 675, 412,
! 30, 641, 31, 642, 643, 644, 645, 451, 676, 27,
! 748, 214, 673, 464, 250, 252, 677, 706, 678, 420,
! 421, 73, 78, 82, 87, 674, 5, 6, 7, 8,
! 72, 729, 8, 90, 445, 10, 11, 12, 10, 11,
! 12, 790, 791, 424, 296, 450, 468, 428, 429, 427,
! 477, 14, 494, 15, 496, 503, 15, 502, 513, 48,
! 504, 514, 517, 442, 523, 433, 301, 201, 540, 772,
! 202, 566, 573, 577, 212, 48, 201, 287, 607, 202,
! 599, 782, 603, 608, 610, -31, -32, 788, 627, 203,
! 628, 464, 464, 533, 464, 510, 629, 634, 203, 8,
! 95, 277, 204, 637, 640, 10, 11, 12, 653, 690,
! 551, 204, -242, 270, 271, 473, 272, 273, 274, 275,
! 709, 74, 79, 83, 88, 809, 810, 710, 812, 711,
! 722, 719, 495, 497, 721, 291, 292, 263, 264, 265,
! 266, 267, 268, 269, 291, 292, 723, 734, 796, 798,
! 735, 771, 48, 778, 73, 78, 82, 87, 8, 99,
! 751, 48, 779, 317, 10, 11, 12, 75, 781, 84,
! 800, 93, 802, 102, 811, 111, 816, 120, 832, 129,
! 820, 138, 15, 835, 812, 836, 636, 838, 851, 840,
! 841, 860, 24, 854, 852, 25, 574, 574, 563, 845,
! 28, 859, 861, 571, 865, 409, 866, 868, 410, 873,
! 29, 812, 870, 411, 26, 874, 876, 875, 30, 880,
! 31, 5, 471, 412, 8, 72, 881, 27, 393, 407,
! 10, 11, 12, 842, 598, 681, 682, 685, 602, 73,
! 78, 604, 605, 109, 114, 606, 14, 686, 15, 500,
! 91, 96, 100, 105, 74, 79, 83, 88, 127, 132,
! 136, 141, 322, 469, 696, 5, 417, 147, 8, 9,
! 638, 639, 287, 418, 10, 11, 12, 48, 92, 97,
! 101, 106, 395, 768, 714, 789, 128, 133, 137, 142,
! 14, 795, 15, 16, 518, 431, 762, 76, 80, 94,
! 98, 112, 116, 130, 134, 301, 438, 760, -470, -470,
! -470, -470, -470, 6, 7, 8, 104, -470, -470, -470,
! 516, 10, 11, 12, 698, 818, 467, 650, 701, 853,
! 819, 476, 572, -470, 0, 704, 576, 855, 0, 74,
! 79, 8, 104, 110, 115, 0, 0, 10, 11, 12,
! 313, 323, -372, -19, -19, -19, -19, -19, 0, 317,
! 317, 0, -19, -19, -19, 148, 149, 6, 7, 281,
! 282, 533, 0, 6, 7, 8, 131, 212, -19, 0,
! -273, 10, 11, 12, 0, 744, 745, 0, 0, 750,
! 0, 0, 0, -273, 753, 754, 0, 755, -249, -105,
! 0, 0, 756, 757, 5, 6, 7, 8, 77, 0,
! 0, 393, 393, 10, 11, 12, 0, 91, 96, 100,
! 105, 533, 0, 6, 7, 8, 90, 759, 0, 14,
! 761, 10, 11, 12, 0, 0, 0, 0, 0, -273,
! 0, 833, 834, -273, -19, 92, 97, 101, 106, 15,
! 301, 773, 0, -108, -108, -108, -108, -108, -255, 0,
! 0, 0, -108, -108, -108, 0, 344, 345, 0, 0,
! 0, 0, 0, 0, 296, 0, 296, 351, -108, 0,
! 0, 0, 354, 355, 0, 0, 0, 360, 361, 362,
! 363, 364, 365, 366, 367, 368, 369, 370, 371, 0,
! 0, 73, 78, 82, 87, 0, 0, 0, -246, 109,
! 114, 118, 123, 0, 393, 393, 0, 0, 0, 0,
! 0, 0, 0, 823, 824, 0, 825, 478, 0, 403,
! 5, 6, 7, 8, 9, 0, 0, 480, 0, 10,
! 11, 12, 0, 0, -108, 0, 0, 0, 0, 0,
! 91, 96, 100, 105, 0, 14, 0, 0, 0, 76,
! 80, 85, 89, 94, 98, 103, 107, 112, 116, 121,
! 125, 130, 134, 139, 143, 0, 0, 0, 92, 97,
! 101, 106, 5, 6, 7, 8, 77, 448, 449, 0,
! 0, 10, 11, 12, 0, 0, 0, 0, 747, 749,
! 0, 74, 79, 83, 88, 0, 0, 14, 0, 110,
! 115, 119, 124, 211, 0, -531, -27, -27, -27, -27,
! -27, 0, 0, 0, 0, -27, -27, -27, 489, 490,
! 0, 0, 0, 91, 96, 0, 0, 127, 132, 0,
! 212, -27, 0, -273, 0, 478, 0, 479, 5, 6,
! 7, 8, 9, 0, 0, 480, -273, 10, 11, 12,
! 0, 92, 97, 0, 515, 128, 133, 0, -243, 520,
! 0, 0, 0, 14, 0, 0, 524, 0, 0, 213,
! 214, 0, 393, 393, 0, 0, 0, 0, 0, 0,
! 0, 393, 393, 0, 0, 393, 393, 0, 0, 0,
! 0, 0, -273, 0, 0, 0, -273, -27, 0, 0,
! 5, 6, 7, 8, 81, 6, 7, 8, 99, 10,
! 11, 12, 0, 10, 11, 12, 0, 591, 747, 749,
! 749, 0, 0, -531, 596, 14, 0, 15, 600, 0,
! 0, 15, 0, 0, 6, 7, 8, 140, 0, 0,
! 0, 616, 10, 11, 12, 0, 276, 0, -446, -446,
! -446, -446, -446, -446, -446, -446, 0, -446, -446, -446,
! -446, -446, 626, -446, -446, -446, -446, -446, -446, -446,
! -446, -446, -446, -446, -446, -446, -446, -446, -446, -446,
! -446, -446, -446, -446, 0, 0, -244, -446, 0, 0,
! -248, 0, 0, -446, 0, 0, -446, 0, 0, 0,
! 0, -446, -446, -446, 0, 0, 0, -446, -446, 0,
! 0, 0, -446, 591, 0, 611, 699, 541, 149, -257,
! 702, 0, 0, 158, 159, 0, 160, 0, 705, 0,
! 0, 0, 707, 0, 0, -446, 277, -446, -446, 0,
! -446, 616, 716, 0, 161, 0, 16, 0, 162, 163,
! 164, 165, 166, 0, 0, 0, 167, 0, 6, 7,
! 8, 95, 168, 0, 0, 169, 10, 11, 12, 0,
! 170, 171, 172, 0, 0, 5, 173, 174, 8, 81,
! 612, 175, 613, 0, 10, 11, 12, 91, 96, 100,
! 105, 0, 0, 0, 0, 127, 132, 136, 141, 0,
! 14, 0, 15, 0, 0, -303, 176, 177, 0, 614,
! 0, 0, 0, 616, 0, 92, 97, 101, 106, 0,
! 0, 0, 0, 128, 133, 137, 142, 616, 0, 0,
! 616, 0, 616, 0, 0, 454, 770, -470, -470, -470,
! -470, -470, -470, -470, -470, 0, -470, -470, -470, -470,
! -470, 0, -470, -470, -470, -470, -470, -470, -470, -470,
! -470, -470, -470, -470, -470, -470, -470, 0, -470, -470,
! -470, -470, -470, 0, 0, 0, -470, 0, 0, 0,
! 0, 0, -470, 801, 0, -470, 616, 0, 0, 0,
! -470, -470, -470, 0, 0, 0, -470, -470, 0, 0,
! 0, -470, 0, 0, 0, 0, 0, 5, 6, 7,
! 8, 108, 6, 7, 8, 126, 10, 11, 12, 0,
! 10, 11, 12, 0, -470, 0, -470, -470, 736, -470,
! -448, -448, 14, 0, 15, 0, -448, -448, 15, -448,
! 0, 0, 0, -448, 0, -448, -448, -448, -448, -448,
! -448, -448, -448, -448, -448, -448, 0, -448, 0, -448,
! 0, -448, -448, -448, -448, -448, 0, 0, 0, -448,
! 5, 6, 7, 8, 113, -448, 0, 0, -448, 10,
! 11, 12, 0, -448, -448, -448, 0, 0, 0, -448,
! -448, 0, 0, -250, -448, 14, 0, -254, 0, 0,
! 5, 6, 7, 8, 117, 6, 7, 8, 90, 10,
! 11, 12, 0, 10, 11, 12, 0, -448, 0, -448,
! -448, 783, -448, -476, -476, 14, 0, 15, 0, -476,
! -476, 15, -476, 0, 0, 0, -476, 0, -476, -476,
! -476, -476, -476, -476, -476, -476, -476, -476, -476, 0,
! -476, 0, -476, 0, -476, -476, -476, -476, -476, 0,
! 0, 0, -476, 0, 6, 7, 8, 131, -476, 0,
! 0, -476, 10, 11, 12, 0, -476, -476, -476, 0,
! 0, 0, -476, -476, 0, 0, -252, -476, 242, 0,
! 157, 5, 0, 0, 8, 9, 158, 159, 0, 160,
! 10, 11, 12, 0, 0, 0, 0, 0, 0, 0,
! -476, 0, -476, -476, 0, -476, 14, 161, 15, 16,
! 0, 162, 163, 164, 165, 166, 0, 0, 611, 167,
! 541, 149, 0, 0, 0, 168, 158, 159, 169, 160,
! 0, 0, 0, 170, 171, 172, 0, 0, 0, 173,
! 174, 0, 0, 0, 175, 0, 0, 161, 0, 16,
! 0, 162, 163, 164, 165, 166, 0, 0, 0, 167,
! 0, 0, 0, 0, 0, 168, 0, 0, 169, 176,
! 177, 0, 243, 170, 171, 172, 0, 0, 0, 173,
! 174, 0, 0, 612, 175, 613, 611, 0, 157, 0,
! 0, 0, 0, 0, 158, 159, 0, 160, 260, 261,
! 262, 263, 264, 265, 266, 267, 268, 269, -369, 176,
! 177, 0, 614, 0, 0, 161, 0, 16, 0, 162,
! 163, 164, 165, 166, 0, 0, 589, 167, 157, -316,
! 0, 0, 0, 168, 158, 159, 169, 160, 0, 0,
! 0, 170, 171, 172, 0, 0, 0, 173, 174, 0,
! 0, -316, 175, -316, 0, 161, 0, 16, 0, 162,
! 163, 164, 165, 166, 0, 0, 0, 167, 0, 0,
! 0, 0, 0, 168, 0, 0, 169, 176, 177, 0,
! 614, 170, 171, 172, 0, 0, 0, 173, 174, 0,
! 0, 0, 175, 611, 0, 157, 0, 0, 0, 0,
! 0, 158, 159, 0, 160, 6, 7, 8, 135, 0,
! 0, 0, 0, 10, 11, 12, 0, 176, 177, 0,
! 590, 0, 161, 0, 16, 0, 162, 163, 164, 165,
! 166, 15, 0, 0, 167, 5, 6, 7, 8, 86,
! 168, 0, 0, 169, 10, 11, 12, 0, 170, 171,
! 172, 0, 0, 0, 173, 174, 0, 0, 0, 175,
! 14, 319, 0, 0, -23, -23, -23, -23, -23, 6,
! 7, 8, 126, -23, -23, -23, 0, 10, 11, 12,
! 0, 0, 0, 0, 176, 177, 0, 614, 212, -23,
! -256, -273, 0, 0, 0, 15, 0, 5, 6, 7,
! 8, 113, 0, 157, -273, 0, 10, 11, 12, 158,
! 159, 0, 160, 0, 5, 6, 7, 8, 72, 0,
! 0, -245, 14, 10, 11, 12, 0, 213, 214, 0,
! 161, 0, 16, 0, 162, 163, 164, 165, 166, 14,
! 0, 15, 167, 0, 0, 0, 0, 0, 168, 0,
! -273, 169, 0, 0, -273, -23, 170, 171, 401, 0,
! 0, 5, 173, 174, 8, 9, 0, 175, 157, 0,
! 10, 11, 12, 0, 158, 159, 0, 160, 0, 0,
! 0, 0, 0, -251, 0, 0, 14, 0, 15, 0,
! 0, 0, 176, 177, 0, 161, 402, 16, 0, 162,
! 163, 164, 165, 166, 0, 0, 0, 167, 5, 6,
! 7, 8, 122, 168, 0, 0, 169, 10, 11, 12,
! 0, 170, 171, 172, 0, 0, 5, 173, 174, 8,
! 77, 0, 175, 14, 0, 10, 11, 12, 0, 0,
! 0, 0, 0, 541, 542, 6, 7, 8, 9, 158,
! 159, 14, 160, 10, 11, 12, 0, 176, 177, 0,
! 0, 491, 543, 544, 545, 546, 547, 548, 549, 14,
! 161, 15, 16, 0, 162, 163, 164, 165, 166, 0,
! 0, 0, 167, 0, 0, 0, 0, 0, 168, 0,
! 0, 169, 0, 0, -253, 0, 170, 171, 172, 0,
! 0, 0, 173, 174, 0, 0, 0, 175, 0, 0,
! 0, 6, 7, 8, 104, 0, 0, 541, 149, 10,
! 11, 12, 0, 158, 159, 0, 160, 0, 0, 0,
! 550, 0, 176, 177, 0, 551, 543, 544, 545, 546,
! 547, 548, 549, 0, 161, 0, 16, 0, 162, 163,
! 164, 165, 166, 0, 0, 0, 167, 157, 0, 0,
! 0, 0, 168, 158, 159, 169, 160, 0, 0, 0,
! 170, 171, 172, 0, 0, 0, 173, 174, 0, 0,
! 0, 175, 0, 0, 161, 0, 16, 0, 162, 163,
! 164, 165, 166, 0, 0, 0, 167, 0, 0, 0,
! 0, 0, 168, 0, 550, 169, 176, 177, 0, 551,
! 170, 171, 172, 0, 0, 0, 173, 174, 0, 0,
! 0, 175, 0, 0, 157, 5, 6, 7, 8, 9,
! 158, 159, 0, 160, 10, 11, 12, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 176, 177, 0, 442,
! 14, 161, 15, 16, 0, 162, 163, 164, 165, 166,
! 0, 0, 0, 167, 0, 6, 7, 8, 99, 168,
! 0, 0, 169, 10, 11, 12, 0, 170, 171, 172,
! 0, 0, 0, 173, 174, 0, 0, 0, 175, 157,
! 5, 15, 0, 8, 9, 158, 159, 0, 160, 10,
! 11, 12, 259, 260, 261, 262, 263, 264, 265, 266,
! 267, 268, 269, 176, 177, 14, 161, 15, 16, 0,
! 162, 163, 164, 165, 166, 0, 0, 0, 167, 157,
! 0, 0, 0, 0, 168, 158, 159, 169, 160, 0,
! 0, 0, 170, 171, 172, 0, 0, 0, 173, 174,
! 0, 0, 0, 175, 0, 0, 161, 0, 16, 0,
! 162, 163, 164, 165, 166, 0, 0, 0, 167, 0,
! 0, 0, 0, 0, 168, 0, 0, 169, 176, 177,
! 0, 0, 170, 171, 172, 0, 0, 0, 173, 174,
! 0, 0, 0, 175, 157, 0, 0, 0, 0, 0,
! 158, 159, 0, 160, 6, 7, 8, 135, 0, 0,
! 0, 0, 10, 11, 12, 0, 630, 0, 176, 177,
! 0, 161, 0, 16, 0, 162, 163, 164, 165, 166,
! 15, 0, 0, 167, 157, 0, 0, 0, 0, 168,
! 158, 159, 169, 160, 0, 0, 0, 170, 171, 172,
! 0, 0, 0, 173, 174, 0, 0, 0, 175, 0,
! 0, 161, 0, 16, 0, 162, 163, 164, 165, 166,
! 0, 0, 0, 167, 0, 0, 0, 0, 0, 168,
! 0, 0, 169, 176, 177, 0, 0, 170, 171, 172,
! 0, 0, 0, 173, 174, 0, 0, 0, 249, 157,
! 0, 0, 0, 0, 0, 158, 159, 0, 160, 0,
! 5, 6, 7, 8, 9, 0, 0, 670, 0, 10,
! 11, 12, 0, 176, 177, 0, 161, 0, 16, 0,
! 162, 163, 164, 165, 166, 14, 0, 15, 167, 470,
! 0, 0, 0, 0, 168, 158, 159, 169, 160, 0,
! 0, 0, 170, 171, 172, 0, 0, 0, 173, 174,
! 0, 0, 0, 251, 0, 0, 161, 0, 16, 0,
! 162, 163, 164, 165, 166, 0, 0, 0, 167, 0,
! 0, 0, 0, 0, 168, 0, 0, 169, 176, 177,
! 0, 0, 170, 171, 172, 0, 0, 0, 173, 174,
! 0, 0, 0, 175, 4, 764, -117, 5, 6, 7,
! 8, 9, 6, 7, 8, 140, 10, 11, 12, 0,
! 10, 11, 12, 0, 0, 0, 0, 0, 176, 177,
! 0, 13, 14, 0, 15, 16, 0, 253, 254, 255,
! 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 0, 0, 0, 0, 0,
! 0, -117, 0, 0, 0, 0, 0, 253, 254, 255,
! -117, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 0, 0, 0, 0, 0,
! 765, 0, 0, 17, 253, 254, 255, 0, 256, 257,
! 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
! 268, 269, 0, 0, 0, 0, 0, 253, 254, 255,
! 492, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 262, 263, 264, 265, 266,
! 267, 268, 269, 0, 253, 254, 255, 582, 256, 257,
! 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
! 268, 269, 0, 0, 0, 0, 0, 253, 254, 255,
! 583, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 253, 254, 255, 826, 256, 257,
! 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
! 268, 269, 0, 0, 717, 253, 254, 255, 439, 256,
! 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
! 267, 268, 269, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 440, 253, 254, 255, 718,
! 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 268, 269, 0, 0, 609, 253, 254, 255,
! 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 0, 322, 0, 0, 5,
! 0, 0, 8, 9, 0, 0, 0, 0, 10, 11,
! 12, 0, 0, 0, 0, 0, 15, 0, 0, 0,
! 0, 0, 0, 763, 14, 0, 15, 16, 253, 254,
! 255, 0, 256, 257, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 5, 6, 7, 8,
! 108, 0, 0, 0, 0, 10, 11, 12, 5, 6,
! 7, 8, 81, 0, 0, 0, 0, 10, 11, 12,
! 0, 14, 0, 15, 0, 0, 0, 5, 6, 7,
! 8, 117, 0, 14, 0, 15, 10, 11, 12, 5,
! 6, 7, 8, 86, 0, 0, 0, 0, 10, 11,
! 12, 0, 14, 0, 15, 0, 5, 6, 7, 8,
! 122, 0, 0, 0, 14, 10, 11, 12, 5, 0,
! 0, 8, 86, 0, 0, 0, 0, 10, 11, 12,
! 0, 14, 0, 0, 0, 0, 0, 0, 0, 0,
! 0, 0, 0, 14, 253, 254, 255, 804, 256, 257,
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
! 268, 269, 253, 254, 255, 0, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
! 255, 0, 256, 257, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 257, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 267, 268, 269
};
static const short yycheck[] =
{
! 63, 570, 65, 2, 3, 23, 2, 3, 316, 2,
! 3, 2, 3, 314, 289, 214, 223, 472, 274, 320,
! 219, 2, 3, 563, 145, 2, 3, 152, 144, 2,
! 3, 2, 3, 464, 464, 464, 464, 175, 2, 3,
! 304, 576, 495, 214, 1, 1, 51, 52, 53, 622,
! 307, 3, 4, 3, 4, 307, 3, 56, 229, 464,
! 56, 307, 312, 56, 837, 56, 3, 4, 67, 307,
! 8, 67, 1, 0, 46, 56, 472, 10, 1, 56,
! 1, 1, 1, 56, 732, 56, 694, 46, 2, 3,
! 67, 864, 56, 31, 0, 3, 10, 11, 12, 298,
! 708, 239, 67, 67, 46, 533, 3, 4, 8, 56,
! 24, 249, 26, 251, 28, 379, 30, 89, 32, 31,
! 34, 89, 36, 67, 38, 379, 94, 145, 533, 385,
! 89, 31, 563, 563, 563, 68, 784, 67, 95, 95,
! 713, 398, 56, 95, 67, 95, 398, 89, 579, 579,
! 58, 65, 398, 67, 48, 8, 584, 67, 95, 67,
! 398, 58, 91, 168, 335, 58, 60, 61, 62, 95,
! 91, 91, 91, 31, 67, 68, 162, 163, 31, 575,
! 576, 75, 67, 68, 189, 638, 172, 386, 206, 207,
! 84, 839, 178, 379, 767, 90, 3, 461, 473, 93,
! 848, 67, 188, 457, 458, 459, 460, 28, 102, 67,
! 68, 336, 275, 338, 95, 214, 28, 111, 214, 31,
! 219, 756, 757, 219, 28, 794, 120, 31, 233, 877,
! 229, 95, 44, 229, 31, 129, 229, 214, 229, 46,
! 44, 781, 219, 593, 138, 595, 67, 68, 229, 46,
! 214, 58, 229, 89, 89, 219, 229, 89, 229, 94,
! 67, 175, 94, 67, 68, 229, 67, 272, 273, 67,
! 31, 457, 458, 459, 460, 293, 90, 191, 90, 193,
! 94, 195, 94, 197, 94, 46, 90, 201, 743, 203,
! 94, 309, 310, 356, 501, 44, 89, 752, 89, 298,
! 214, 439, 298, 441, 3, 219, 67, 68, 307, 565,
! 3, 307, 428, 570, 208, 229, 307, 66, 570, 68,
! 8, 298, 579, 8, 570, 239, 307, 579, 3, 4,
! 3, 4, 570, 579, 298, 249, 335, 251, 343, 335,
! 67, 579, 335, 89, 335, 40, 41, 743, 94, 599,
! 781, 781, 781, 603, 335, 6, 752, 8, 335, 58,
! 756, 757, 335, 349, 335, 58, 67, 68, 67, 68,
! 91, 335, 91, 378, 67, 68, 497, 3, 4, 384,
! 31, 90, 91, 58, 298, 58, 68, 386, 89, 67,
! 386, 89, 67, 68, 67, 5, 6, 7, 8, 398,
! 89, 464, 398, 13, 14, 15, 89, 398, 89, 386,
! 324, 429, 326, 94, 328, 401, 330, 398, 846, 847,
! 46, 335, 386, 67, 68, 4, 5, 6, 7, 8,
! 90, 436, 58, 90, 13, 14, 15, 94, 746, 89,
! 748, 67, 67, 68, 24, 25, 26, 27, 457, 458,
! 29, 460, 32, 33, 34, 35, 46, 656, 90, 464,
! 67, 68, 94, 90, 89, 464, 665, 94, 464, 744,
! 533, 464, 386, 464, 775, 33, 777, 90, 753, 497,
! 90, 94, 89, 464, 547, 90, 90, 464, 90, 94,
! 94, 464, 94, 464, 90, 409, 89, 411, 94, 413,
! 464, 415, 24, 25, 26, 27, 28, 29, 30, 31,
! 32, 33, 34, 35, 36, 37, 38, 39, 639, 726,
! 10, 526, 638, 90, 91, 439, 302, 441, 533, 3,
! 4, 213, 44, 1, 216, 3, 4, 794, 220, 58,
! 59, 60, 794, 548, 24, 25, 26, 27, 794, 6,
! 464, 90, 32, 33, 34, 35, 794, 575, 576, 56,
! 57, 58, 59, 60, 563, 67, 68, 563, 44, 632,
! 563, 570, 563, 90, 570, 67, 68, 563, 94, 570,
! 579, 94, 563, 579, 700, 89, 563, 46, 579, 570,
! 563, 16, 563, 18, 19, 20, 21, 96, 579, 563,
! 67, 68, 579, 379, 182, 183, 579, 612, 579, 309,
! 310, 191, 192, 193, 194, 579, 4, 5, 6, 7,
! 8, 639, 7, 8, 89, 13, 14, 15, 13, 14,
! 15, 743, 744, 315, 316, 89, 89, 332, 333, 321,
! 89, 29, 90, 31, 90, 44, 31, 423, 91, 563,
! 426, 91, 91, 95, 46, 337, 1, 656, 91, 722,
! 656, 89, 89, 89, 28, 579, 665, 189, 91, 665,
! 94, 734, 94, 89, 89, 46, 46, 740, 46, 656,
! 90, 457, 458, 459, 460, 703, 90, 8, 665, 7,
! 8, 91, 656, 90, 90, 13, 14, 15, 89, 3,
! 95, 665, 90, 62, 63, 387, 65, 66, 67, 68,
! 46, 191, 192, 193, 194, 778, 779, 91, 781, 94,
! 67, 90, 417, 418, 90, 743, 744, 54, 55, 56,
! 57, 58, 59, 60, 752, 753, 46, 67, 756, 757,
! 17, 90, 656, 67, 324, 325, 326, 327, 7, 8,
! 664, 665, 67, 224, 13, 14, 15, 671, 67, 673,
! 91, 675, 91, 677, 18, 679, 89, 681, 90, 683,
! 89, 685, 31, 89, 837, 89, 552, 90, 841, 90,
! 67, 89, 781, 90, 96, 781, 481, 482, 781, 94,
! 781, 90, 10, 475, 67, 794, 10, 90, 794, 89,
! 781, 864, 865, 794, 781, 89, 10, 90, 781, 0,
! 781, 4, 385, 794, 7, 8, 0, 781, 289, 305,
! 13, 14, 15, 828, 506, 579, 579, 579, 510, 409,
! 410, 513, 514, 413, 414, 517, 29, 579, 31, 422,
! 28, 29, 30, 31, 324, 325, 326, 327, 36, 37,
! 38, 39, 1, 384, 594, 4, 307, 751, 7, 8,
! 555, 556, 384, 307, 13, 14, 15, 781, 28, 29,
! 30, 31, 293, 711, 621, 743, 36, 37, 38, 39,
! 29, 756, 31, 32, 438, 335, 703, 409, 410, 411,
! 412, 413, 414, 415, 416, 1, 343, 700, 4, 5,
! 6, 7, 8, 5, 6, 7, 8, 13, 14, 15,
! 436, 13, 14, 15, 596, 785, 380, 559, 600, 843,
! 787, 392, 475, 29, -1, 607, 482, 845, -1, 409,
! 410, 7, 8, 413, 414, -1, -1, 13, 14, 15,
! 1, 90, 91, 4, 5, 6, 7, 8, -1, 420,
! 421, -1, 13, 14, 15, 3, 4, 5, 6, 7,
! 8, 737, -1, 5, 6, 7, 8, 28, 29, -1,
! 31, 13, 14, 15, -1, 657, 658, -1, -1, 661,
! -1, -1, -1, 44, 666, 667, -1, 669, 90, 95,
! -1, -1, 687, 688, 4, 5, 6, 7, 8, -1,
! -1, 472, 473, 13, 14, 15, -1, 195, 196, 197,
! 198, 787, -1, 5, 6, 7, 8, 699, -1, 29,
! 702, 13, 14, 15, -1, -1, -1, -1, -1, 90,
! -1, 807, 808, 94, 95, 195, 196, 197, 198, 31,
! 1, 723, -1, 4, 5, 6, 7, 8, 90, -1,
! -1, -1, 13, 14, 15, -1, 237, 238, -1, -1,
! -1, -1, -1, -1, 746, -1, 748, 248, 29, -1,
! -1, -1, 253, 254, -1, -1, -1, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 267, 268, 269, -1,
! -1, 671, 672, 673, 674, -1, -1, -1, 90, 679,
! 680, 681, 682, -1, 575, 576, -1, -1, -1, -1,
! -1, -1, -1, 795, 796, -1, 798, 1, -1, 300,
! 4, 5, 6, 7, 8, -1, -1, 11, -1, 13,
! 14, 15, -1, -1, 95, -1, -1, -1, -1, -1,
! 328, 329, 330, 331, -1, 29, -1, -1, -1, 671,
! 672, 673, 674, 675, 676, 677, 678, 679, 680, 681,
! 682, 683, 684, 685, 686, -1, -1, -1, 328, 329,
! 330, 331, 4, 5, 6, 7, 8, 358, 359, -1,
! -1, 13, 14, 15, -1, -1, -1, -1, 659, 660,
! -1, 671, 672, 673, 674, -1, -1, 29, -1, 679,
! 680, 681, 682, 1, -1, 89, 4, 5, 6, 7,
! 8, -1, -1, -1, -1, 13, 14, 15, 399, 400,
! -1, -1, -1, 411, 412, -1, -1, 415, 416, -1,
! 28, 29, -1, 31, -1, 1, -1, 3, 4, 5,
! 6, 7, 8, -1, -1, 11, 44, 13, 14, 15,
! -1, 411, 412, -1, 435, 415, 416, -1, 90, 440,
! -1, -1, -1, 29, -1, -1, 447, -1, -1, 67,
! 68, -1, 743, 744, -1, -1, -1, -1, -1, -1,
! -1, 752, 753, -1, -1, 756, 757, -1, -1, -1,
! -1, -1, 90, -1, -1, -1, 94, 95, -1, -1,
! 4, 5, 6, 7, 8, 5, 6, 7, 8, 13,
! 14, 15, -1, 13, 14, 15, -1, 498, 789, 790,
! 791, -1, -1, 89, 505, 29, -1, 31, 509, -1,
! -1, 31, -1, -1, 5, 6, 7, 8, -1, -1,
! -1, 522, 13, 14, 15, -1, 1, -1, 3, 4,
! 5, 6, 7, 8, 9, 10, -1, 12, 13, 14,
! 15, 16, 543, 18, 19, 20, 21, 22, 23, 24,
! 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
! 35, 36, 37, 38, -1, -1, 90, 42, -1, -1,
! 90, -1, -1, 48, -1, -1, 51, -1, -1, -1,
! -1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
! -1, -1, 67, 594, -1, 1, 597, 3, 4, 90,
! 601, -1, -1, 9, 10, -1, 12, -1, 609, -1,
! -1, -1, 613, -1, -1, 90, 91, 92, 93, -1,
! 95, 622, 623, -1, 30, -1, 32, -1, 34, 35,
! 36, 37, 38, -1, -1, -1, 42, -1, 5, 6,
7, 8, 48, -1, -1, 51, 13, 14, 15, -1,
! 56, 57, 58, -1, -1, 4, 62, 63, 7, 8,
! 66, 67, 68, -1, 13, 14, 15, 675, 676, 677,
! 678, -1, -1, -1, -1, 683, 684, 685, 686, -1,
! 29, -1, 31, -1, -1, 91, 92, 93, -1, 95,
! -1, -1, -1, 694, -1, 675, 676, 677, 678, -1,
! -1, -1, -1, 683, 684, 685, 686, 708, -1, -1,
! 711, -1, 713, -1, -1, 1, 717, 3, 4, 5,
! 6, 7, 8, 9, 10, -1, 12, 13, 14, 15,
! 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
! 26, 27, 28, 29, 30, 31, 32, -1, 34, 35,
! 36, 37, 38, -1, -1, -1, 42, -1, -1, -1,
! -1, -1, 48, 764, -1, 51, 767, -1, -1, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, -1, -1, -1, -1, -1, 4, 5, 6,
! 7, 8, 5, 6, 7, 8, 13, 14, 15, -1,
! 13, 14, 15, -1, 90, -1, 92, 93, 1, 95,
! 3, 4, 29, -1, 31, -1, 9, 10, 31, 12,
! -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
! 23, 24, 25, 26, 27, 28, -1, 30, -1, 32,
! -1, 34, 35, 36, 37, 38, -1, -1, -1, 42,
! 4, 5, 6, 7, 8, 48, -1, -1, 51, 13,
! 14, 15, -1, 56, 57, 58, -1, -1, -1, 62,
! 63, -1, -1, 90, 67, 29, -1, 90, -1, -1,
! 4, 5, 6, 7, 8, 5, 6, 7, 8, 13,
! 14, 15, -1, 13, 14, 15, -1, 90, -1, 92,
! 93, 1, 95, 3, 4, 29, -1, 31, -1, 9,
! 10, 31, 12, -1, -1, -1, 16, -1, 18, 19,
! 20, 21, 22, 23, 24, 25, 26, 27, 28, -1,
! 30, -1, 32, -1, 34, 35, 36, 37, 38, -1,
! -1, -1, 42, -1, 5, 6, 7, 8, 48, -1,
! -1, 51, 13, 14, 15, -1, 56, 57, 58, -1,
! -1, -1, 62, 63, -1, -1, 90, 67, 1, -1,
! 3, 4, -1, -1, 7, 8, 9, 10, -1, 12,
! 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
! 90, -1, 92, 93, -1, 95, 29, 30, 31, 32,
! -1, 34, 35, 36, 37, 38, -1, -1, 1, 42,
! 3, 4, -1, -1, -1, 48, 9, 10, 51, 12,
! -1, -1, -1, 56, 57, 58, -1, -1, -1, 62,
! 63, -1, -1, -1, 67, -1, -1, 30, -1, 32,
! -1, 34, 35, 36, 37, 38, -1, -1, -1, 42,
! -1, -1, -1, -1, -1, 48, -1, -1, 51, 92,
! 93, -1, 95, 56, 57, 58, -1, -1, -1, 62,
! 63, -1, -1, 66, 67, 68, 1, -1, 3, -1,
! -1, -1, -1, -1, 9, 10, -1, 12, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 91, 92,
! 93, -1, 95, -1, -1, 30, -1, 32, -1, 34,
! 35, 36, 37, 38, -1, -1, 1, 42, 3, 44,
-1, -1, -1, 48, 9, 10, 51, 12, -1, -1,
! -1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
! -1, 66, 67, 68, -1, 30, -1, 32, -1, 34,
35, 36, 37, 38, -1, -1, -1, 42, -1, -1,
-1, -1, -1, 48, -1, -1, 51, 92, 93, -1,
! 95, 56, 57, 58, -1, -1, -1, 62, 63, -1,
! -1, -1, 67, 1, -1, 3, -1, -1, -1, -1,
-1, 9, 10, -1, 12, 5, 6, 7, 8, -1,
! -1, -1, -1, 13, 14, 15, -1, 92, 93, -1,
95, -1, 30, -1, 32, -1, 34, 35, 36, 37,
! 38, 31, -1, -1, 42, 4, 5, 6, 7, 8,
48, -1, -1, 51, 13, 14, 15, -1, 56, 57,
! 58, -1, -1, -1, 62, 63, -1, -1, -1, 67,
! 29, 1, -1, -1, 4, 5, 6, 7, 8, 5,
! 6, 7, 8, 13, 14, 15, -1, 13, 14, 15,
! -1, -1, -1, -1, 92, 93, -1, 95, 28, 29,
! 90, 31, -1, -1, -1, 31, -1, 4, 5, 6,
! 7, 8, -1, 3, 44, -1, 13, 14, 15, 9,
! 10, -1, 12, -1, 4, 5, 6, 7, 8, -1,
! -1, 90, 29, 13, 14, 15, -1, 67, 68, -1,
! 30, -1, 32, -1, 34, 35, 36, 37, 38, 29,
! -1, 31, 42, -1, -1, -1, -1, -1, 48, -1,
! 90, 51, -1, -1, 94, 95, 56, 57, 58, -1,
! -1, 4, 62, 63, 7, 8, -1, 67, 3, -1,
! 13, 14, 15, -1, 9, 10, -1, 12, -1, -1,
! -1, -1, -1, 90, -1, -1, 29, -1, 31, -1,
! -1, -1, 92, 93, -1, 30, 96, 32, -1, 34,
! 35, 36, 37, 38, -1, -1, -1, 42, 4, 5,
! 6, 7, 8, 48, -1, -1, 51, 13, 14, 15,
! -1, 56, 57, 58, -1, -1, 4, 62, 63, 7,
! 8, -1, 67, 29, -1, 13, 14, 15, -1, -1,
! -1, -1, -1, 3, 4, 5, 6, 7, 8, 9,
! 10, 29, 12, 13, 14, 15, -1, 92, 93, -1,
! -1, 96, 22, 23, 24, 25, 26, 27, 28, 29,
! 30, 31, 32, -1, 34, 35, 36, 37, 38, -1,
! -1, -1, 42, -1, -1, -1, -1, -1, 48, -1,
! -1, 51, -1, -1, 90, -1, 56, 57, 58, -1,
! -1, -1, 62, 63, -1, -1, -1, 67, -1, -1,
! -1, 5, 6, 7, 8, -1, -1, 3, 4, 13,
! 14, 15, -1, 9, 10, -1, 12, -1, -1, -1,
! 90, -1, 92, 93, -1, 95, 22, 23, 24, 25,
! 26, 27, 28, -1, 30, -1, 32, -1, 34, 35,
! 36, 37, 38, -1, -1, -1, 42, 3, -1, -1,
! -1, -1, 48, 9, 10, 51, 12, -1, -1, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, -1, -1, 30, -1, 32, -1, 34, 35,
! 36, 37, 38, -1, -1, -1, 42, -1, -1, -1,
! -1, -1, 48, -1, 90, 51, 92, 93, -1, 95,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, -1, -1, 3, 4, 5, 6, 7, 8,
! 9, 10, -1, 12, 13, 14, 15, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, 92, 93, -1, 95,
! 29, 30, 31, 32, -1, 34, 35, 36, 37, 38,
! -1, -1, -1, 42, -1, 5, 6, 7, 8, 48,
! -1, -1, 51, 13, 14, 15, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, -1, -1, 67, 3,
! 4, 31, -1, 7, 8, 9, 10, -1, 12, 13,
! 14, 15, 50, 51, 52, 53, 54, 55, 56, 57,
! 58, 59, 60, 92, 93, 29, 30, 31, 32, -1,
! 34, 35, 36, 37, 38, -1, -1, -1, 42, 3,
! -1, -1, -1, -1, 48, 9, 10, 51, 12, -1,
! -1, -1, 56, 57, 58, -1, -1, -1, 62, 63,
! -1, -1, -1, 67, -1, -1, 30, -1, 32, -1,
! 34, 35, 36, 37, 38, -1, -1, -1, 42, -1,
! -1, -1, -1, -1, 48, -1, -1, 51, 92, 93,
! -1, -1, 56, 57, 58, -1, -1, -1, 62, 63,
! -1, -1, -1, 67, 3, -1, -1, -1, -1, -1,
! 9, 10, -1, 12, 5, 6, 7, 8, -1, -1,
! -1, -1, 13, 14, 15, -1, 90, -1, 92, 93,
! -1, 30, -1, 32, -1, 34, 35, 36, 37, 38,
! 31, -1, -1, 42, 3, -1, -1, -1, -1, 48,
! 9, 10, 51, 12, -1, -1, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, -1, -1, 67, -1,
! -1, 30, -1, 32, -1, 34, 35, 36, 37, 38,
! -1, -1, -1, 42, -1, -1, -1, -1, -1, 48,
! -1, -1, 51, 92, 93, -1, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, -1, -1, 67, 3,
! -1, -1, -1, -1, -1, 9, 10, -1, 12, -1,
! 4, 5, 6, 7, 8, -1, -1, 11, -1, 13,
! 14, 15, -1, 92, 93, -1, 30, -1, 32, -1,
! 34, 35, 36, 37, 38, 29, -1, 31, 42, 3,
! -1, -1, -1, -1, 48, 9, 10, 51, 12, -1,
! -1, -1, 56, 57, 58, -1, -1, -1, 62, 63,
! -1, -1, -1, 67, -1, -1, 30, -1, 32, -1,
! 34, 35, 36, 37, 38, -1, -1, -1, 42, -1,
! -1, -1, -1, -1, 48, -1, -1, 51, 92, 93,
! -1, -1, 56, 57, 58, -1, -1, -1, 62, 63,
! -1, -1, -1, 67, 1, 11, 3, 4, 5, 6,
! 7, 8, 5, 6, 7, 8, 13, 14, 15, -1,
! 13, 14, 15, -1, -1, -1, -1, -1, 92, 93,
! -1, 28, 29, -1, 31, 32, -1, 43, 44, 45,
! -1, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, -1, -1, -1, -1, -1,
! -1, 58, -1, -1, -1, -1, -1, 43, 44, 45,
! 67, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, -1, -1, -1, -1, -1,
! 96, -1, -1, 90, 43, 44, 45, -1, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, -1, -1, -1, -1, -1, 43, 44, 45,
! 96, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, 53, 54, 55, 56, 57,
! 58, 59, 60, -1, 43, 44, 45, 96, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, -1, -1, -1, -1, -1, 43, 44, 45,
! 96, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, -1, -1, -1, -1, -1,
! -1, -1, -1, -1, 43, 44, 45, 96, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, -1, -1, 11, 43, 44, 45, 94, 47,
! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
! 58, 59, 60, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, 94, 43, 44, 45, 46,
! 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
! 57, 58, 59, 60, -1, -1, 94, 43, 44, 45,
! -1, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, -1, 1, -1, -1, 4,
! -1, -1, 7, 8, -1, -1, -1, -1, 13, 14,
! 15, -1, -1, -1, -1, -1, 31, -1, -1, -1,
! -1, -1, -1, 89, 29, -1, 31, 32, 43, 44,
45, -1, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, 4, 5, 6, 7,
! 8, -1, -1, -1, -1, 13, 14, 15, 4, 5,
6, 7, 8, -1, -1, -1, -1, 13, 14, 15,
! -1, 29, -1, 31, -1, -1, -1, 4, 5, 6,
! 7, 8, -1, 29, -1, 31, 13, 14, 15, 4,
! 5, 6, 7, 8, -1, -1, -1, -1, 13, 14,
! 15, -1, 29, -1, 31, -1, 4, 5, 6, 7,
! 8, -1, -1, -1, 29, 13, 14, 15, 4, -1,
! -1, 7, 8, -1, -1, -1, -1, 13, 14, 15,
! -1, 29, -1, -1, -1, -1, -1, -1, -1, -1,
! -1, -1, -1, 29, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 43, 44, 45, -1, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
45, -1, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, 48, 49, 50, 51,
! 52, 53, 54, 55, 56, 57, 58, 59, 60
};
- /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
- #line 3 "/usr/share/bison/bison.simple"
! /* Skeleton output parser for bison,
!
! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
! Foundation, Inc.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2, or (at your option)
! any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 59 Temple Place - Suite 330,
! Boston, MA 02111-1307, USA. */
!
! /* As a special exception, when this file is copied by Bison into a
! Bison output file, you may use that output file without restriction.
! This special exception was added by the Free Software Foundation
! in version 1.24 of Bison. */
!
! /* This is the parser code that is written into each bison parser when
! the %semantic_parser declaration is not specified in the grammar.
! It was written by Richard Stallman by simplifying the hairy parser
! used when %semantic_parser is specified. */
!
! /* All symbols defined below should begin with yy or YY, to avoid
! infringing on user name space. This should be done even for local
! variables, as they might otherwise be expanded by user macros.
! There are some unavoidable exceptions within include files to
! define necessary library symbols; they are noted "INFRINGES ON
! USER NAME SPACE" below. */
!
! #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
!
! /* The parser invokes alloca or malloc; define the necessary symbols. */
!
! # if YYSTACK_USE_ALLOCA
! # define YYSTACK_ALLOC alloca
! # else
! # ifndef YYSTACK_USE_ALLOCA
! # if defined (alloca) || defined (_ALLOCA_H)
! # define YYSTACK_ALLOC alloca
! # else
! # ifdef __GNUC__
! # define YYSTACK_ALLOC __builtin_alloca
! # endif
! # endif
! # endif
! # endif
!
! # ifdef YYSTACK_ALLOC
! /* Pacify GCC's `empty if-body' warning. */
! # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
! # else
! # if defined (__STDC__) || defined (__cplusplus)
! # include /* INFRINGES ON USER NAME SPACE */
! # define YYSIZE_T size_t
! # endif
! # define YYSTACK_ALLOC malloc
! # define YYSTACK_FREE free
! # endif
! #endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
!
!
! #if (! defined (yyoverflow) \
! && (! defined (__cplusplus) \
! || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
!
! /* A type that is properly aligned for any stack member. */
! union yyalloc
{
! short yyss;
! YYSTYPE yyvs;
! # if YYLSP_NEEDED
! YYLTYPE yyls;
! # endif
};
- /* The size of the maximum gap between one aligned stack and the next. */
- # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
-
- /* The size of an array large to enough to hold all stacks, each with
- N elements. */
- # if YYLSP_NEEDED
- # define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
- + 2 * YYSTACK_GAP_MAX)
- # else
- # define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAX)
- # endif
-
- /* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
- # ifndef YYCOPY
- # if 1 < __GNUC__
- # define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- # else
- # define YYCOPY(To, From, Count) \
- do \
- { \
- register YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (0)
- # endif
- # endif
-
- /* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
- # define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
- #endif
-
-
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
#endif
--- 911,2076 ----
};
#endif
! # ifdef YYPRINT
! /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
! token YYLEX-NUM. */
! static const unsigned short yytoknum[] =
{
! 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
! 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
! 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
! 295, 296, 297, 61, 298, 63, 58, 299, 300, 124,
! 94, 38, 301, 302, 303, 304, 43, 45, 42, 47,
! 37, 305, 306, 307, 308, 46, 40, 91, 309, 310,
! 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
! 321, 322, 323, 324, 325, 326, 327, 328, 329, 41,
! 59, 125, 126, 33, 44, 123, 93
};
+ # endif
! /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
! static const unsigned short yyr1[] =
{
! 0, 97, 98, 98, 100, 99, 101, 99, 102, 103,
! 103, 103, 103, 104, 104, 104, 104, 104, 104, 104,
! 106, 107, 105, 105, 108, 109, 105, 105, 110, 111,
! 105, 105, 112, 112, 113, 113, 113, 113, 113, 113,
! 113, 114, 115, 115, 116, 116, 117, 117, 117, 117,
! 117, 117, 117, 117, 117, 117, 117, 118, 119, 120,
! 121, 121, 122, 122, 122, 122, 122, 122, 122, 122,
! 122, 122, 122, 122, 122, 123, 122, 124, 122, 125,
! 126, 122, 127, 122, 122, 122, 128, 128, 128, 128,
! 129, 128, 128, 128, 128, 128, 128, 128, 128, 128,
! 128, 128, 128, 128, 128, 130, 131, 131, 132, 133,
! 133, 133, 133, 134, 134, 134, 134, 135, 136, 137,
! 138, 138, 138, 138, 138, 138, 139, 139, 139, 140,
! 141, 141, 142, 142, 143, 143, 143, 143, 143, 143,
! 143, 144, 144, 144, 144, 144, 144, 145, 145, 145,
! 145, 145, 145, 146, 146, 146, 146, 146, 147, 147,
! 147, 147, 147, 147, 147, 148, 149, 149, 149, 149,
! 149, 149, 150, 151, 151, 151, 151, 151, 151, 151,
! 151, 151, 151, 152, 152, 152, 152, 152, 153, 153,
! 153, 153, 153, 153, 153, 153, 153, 153, 154, 154,
! 154, 154, 154, 155, 155, 155, 155, 155, 155, 155,
! 155, 156, 156, 156, 156, 156, 156, 156, 156, 157,
! 157, 157, 157, 158, 158, 158, 158, 159, 159, 159,
! 159, 160, 160, 160, 160, 161, 161, 161, 161, 161,
! 161, 161, 161, 162, 162, 162, 162, 162, 162, 162,
! 162, 162, 162, 162, 162, 162, 162, 162, 162, 163,
! 163, 164, 164, 165, 166, 166, 167, 168, 168, 168,
! 169, 169, 170, 170, 171, 171, 173, 172, 172, 175,
! 174, 174, 176, 176, 177, 177, 178, 179, 179, 180,
! 180, 180, 180, 180, 181, 181, 181, 181, 182, 182,
! 183, 184, 183, 183, 185, 185, 186, 186, 187, 187,
! 188, 187, 187, 190, 189, 189, 189, 191, 191, 192,
! 192, 192, 194, 195, 193, 197, 198, 196, 199, 199,
! 200, 200, 200, 200, 200, 201, 201, 202, 202, 202,
! 203, 203, 203, 203, 203, 204, 204, 204, 204, 204,
! 205, 205, 206, 206, 207, 207, 209, 208, 208, 210,
! 208, 208, 211, 208, 212, 208, 213, 213, 213, 214,
! 214, 215, 215, 216, 216, 217, 217, 217, 218, 218,
! 218, 218, 218, 218, 219, 219, 220, 220, 221, 221,
! 221, 222, 222, 222, 223, 223, 223, 224, 224, 226,
! 225, 227, 227, 228, 228, 228, 229, 229, 230, 230,
! 231, 231, 232, 232, 232, 232, 232, 233, 233, 233,
! 233, 233, 234, 234, 234, 234, 235, 235, 235, 235,
! 235, 236, 236, 236, 236, 237, 237, 237, 237, 237,
! 238, 238, 239, 239, 239, 239, 240, 241, 242, 243,
! 244, 245, 245, 246, 246, 247, 248, 248, 249, 250,
! 250, 251, 251, 252, 253, 254, 254, 256, 255, 258,
! 257, 259, 260, 260, 261, 262, 263, 265, 264, 264,
! 264, 266, 267, 264, 264, 264, 268, 269, 270, 271,
! 264, 272, 264, 273, 273, 274, 274, 274, 274, 274,
! 274, 274, 274, 274, 274, 274, 274, 274, 274, 275,
! 275, 275, 275, 276, 276, 277, 277, 278, 278, 279,
! 279, 280, 280, 281, 281, 283, 282, 284, 285, 286,
! 284, 284, 287, 287, 287, 287, 288, 288, 289, 289,
! 289, 289, 289, 290, 290, 290, 290, 290, 291, 293,
! 292, 294, 294, 295, 295, 296, 296, 297
! };
!
! /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
! static const unsigned char yyr2[] =
! {
! 0, 2, 0, 1, 0, 2, 0, 3, 1, 1,
! 1, 5, 2, 3, 4, 4, 2, 2, 2, 1,
! 0, 0, 8, 4, 0, 0, 8, 4, 0, 0,
! 7, 3, 1, 1, 1, 1, 1, 1, 1, 1,
! 1, 1, 0, 1, 1, 3, 1, 2, 2, 2,
! 2, 2, 4, 2, 4, 2, 2, 1, 1, 1,
! 1, 4, 1, 3, 3, 3, 3, 3, 3, 3,
! 3, 3, 3, 3, 3, 0, 4, 0, 4, 0,
! 0, 7, 0, 5, 3, 3, 1, 1, 1, 1,
! 0, 7, 3, 3, 3, 3, 4, 6, 8, 6,
! 4, 3, 3, 2, 2, 1, 0, 1, 2, 1,
! 1, 2, 2, 4, 4, 2, 2, 2, 0, 1,
! 4, 4, 3, 3, 2, 2, 1, 2, 2, 2,
! 2, 2, 1, 2, 1, 2, 2, 2, 2, 2,
! 2, 1, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
! 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
! 1, 4, 1, 4, 0, 4, 0, 6, 3, 0,
! 6, 3, 0, 1, 1, 2, 6, 1, 3, 0,
! 1, 4, 6, 4, 1, 1, 1, 1, 1, 1,
! 1, 0, 4, 1, 0, 2, 1, 3, 3, 2,
! 0, 4, 1, 0, 4, 1, 1, 1, 2, 2,
! 5, 3, 0, 0, 6, 0, 0, 6, 1, 1,
! 4, 3, 2, 3, 1, 1, 1, 3, 2, 1,
! 3, 2, 3, 3, 4, 3, 4, 3, 2, 1,
! 1, 2, 1, 2, 1, 2, 0, 7, 5, 0,
! 7, 5, 0, 8, 0, 7, 2, 2, 2, 0,
! 1, 0, 1, 1, 2, 0, 3, 2, 3, 2,
! 3, 1, 1, 2, 1, 4, 1, 4, 2, 4,
! 3, 2, 4, 3, 1, 3, 1, 1, 3, 0,
! 3, 0, 1, 0, 1, 2, 1, 1, 1, 3,
! 2, 3, 4, 3, 2, 2, 1, 4, 3, 4,
! 5, 5, 1, 1, 1, 1, 1, 2, 2, 2,
! 2, 1, 2, 2, 2, 1, 2, 2, 2, 2,
! 1, 2, 1, 1, 1, 1, 2, 0, 0, 0,
! 0, 0, 1, 1, 2, 3, 1, 2, 1, 1,
! 5, 1, 1, 2, 2, 2, 2, 0, 5, 0,
! 4, 0, 1, 2, 3, 2, 2, 0, 4, 1,
! 3, 0, 0, 7, 5, 2, 0, 0, 0, 0,
! 12, 0, 6, 2, 1, 1, 2, 3, 2, 2,
! 2, 3, 6, 8, 10, 12, 3, 4, 1, 3,
! 5, 2, 4, 0, 1, 0, 1, 0, 1, 1,
! 3, 4, 7, 1, 3, 0, 3, 2, 0, 0,
! 6, 2, 0, 1, 1, 3, 1, 3, 4, 4,
! 3, 4, 3, 4, 4, 3, 4, 3, 1, 0,
! 3, 1, 2, 1, 3, 1, 3, 1
};
! /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
! STATE-NUM when YYTABLE doesn't specify something else to do. Zero
! means the default is an error. */
! static const unsigned short yydefact[] =
{
! 4, 0, 6, 0, 1, 0, 0, 267, 299, 298,
! 264, 126, 354, 350, 352, 0, 59, 0, 557, 19,
! 5, 8, 10, 9, 0, 0, 211, 212, 213, 214,
! 203, 204, 205, 206, 215, 216, 217, 218, 207, 208,
! 209, 210, 118, 118, 0, 134, 141, 261, 263, 262,
! 132, 284, 158, 0, 0, 0, 266, 265, 0, 7,
! 17, 18, 355, 351, 353, 0, 0, 0, 349, 259,
! 282, 0, 272, 0, 127, 139, 145, 129, 161, 128,
! 140, 146, 162, 130, 151, 156, 133, 168, 131, 152,
! 157, 169, 135, 137, 143, 142, 179, 136, 138, 144,
! 180, 147, 149, 154, 153, 194, 148, 150, 155, 195,
! 159, 177, 186, 165, 163, 160, 178, 187, 164, 166,
! 192, 201, 172, 170, 167, 193, 202, 171, 173, 175,
! 184, 183, 181, 174, 176, 185, 182, 188, 190, 199,
! 198, 196, 189, 191, 200, 197, 0, 0, 16, 285,
! 32, 33, 375, 366, 375, 367, 364, 368, 12, 86,
! 87, 88, 57, 58, 0, 0, 0, 0, 0, 89,
! 0, 34, 36, 35, 0, 38, 37, 0, 39, 40,
! 0, 0, 41, 60, 0, 0, 62, 44, 46, 0,
! 0, 289, 0, 239, 240, 241, 242, 235, 236, 237,
! 238, 399, 0, 231, 232, 233, 234, 260, 0, 0,
! 283, 13, 282, 31, 0, 282, 259, 0, 282, 348,
! 334, 259, 282, 0, 270, 0, 328, 329, 0, 0,
! 0, 0, 356, 0, 359, 0, 362, 55, 56, 0,
! 0, 0, 50, 47, 0, 463, 0, 0, 49, 0,
! 0, 0, 51, 0, 53, 0, 0, 79, 77, 75,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
! 0, 0, 104, 103, 0, 42, 0, 0, 0, 459,
! 451, 0, 48, 296, 297, 294, 0, 287, 290, 295,
! 268, 401, 269, 347, 0, 0, 119, 0, 549, 345,
! 259, 260, 0, 0, 471, 105, 0, 471, 110, 0,
! 281, 0, 0, 15, 282, 23, 0, 282, 282, 332,
! 14, 27, 0, 282, 382, 377, 231, 232, 233, 234,
! 227, 228, 229, 230, 118, 118, 374, 0, 375, 282,
! 375, 396, 397, 371, 394, 0, 0, 0, 0, 93,
! 92, 0, 11, 45, 0, 0, 84, 85, 0, 0,
! 0, 0, 73, 74, 72, 71, 70, 69, 68, 63,
! 64, 65, 66, 67, 101, 0, 43, 0, 102, 95,
! 0, 0, 452, 453, 94, 0, 289, 42, 259, 282,
! 400, 402, 407, 406, 408, 416, 346, 273, 274, 0,
! 0, 0, 0, 0, 418, 0, 446, 29, 112, 111,
! 108, 223, 224, 219, 220, 225, 226, 221, 222, 118,
! 118, 279, 333, 0, 0, 471, 278, 331, 471, 358,
! 379, 0, 376, 383, 0, 361, 0, 0, 372, 0,
! 371, 0, 0, 0, 90, 61, 52, 54, 0, 0,
! 78, 76, 96, 100, 555, 0, 462, 431, 461, 471,
! 471, 471, 471, 0, 440, 0, 449, 426, 435, 454,
! 286, 288, 86, 0, 410, 525, 415, 282, 414, 275,
! 0, 553, 533, 118, 118, 551, 0, 534, 536, 550,
! 0, 0, 0, 419, 417, 0, 115, 0, 116, 0,
! 0, 330, 271, 274, 21, 276, 25, 0, 282, 378,
! 384, 0, 282, 380, 386, 282, 282, 398, 395, 282,
! 0, 0, 0, 0, 0, 80, 83, 455, 0, 432,
! 427, 436, 433, 428, 437, 449, 429, 438, 434, 430,
! 439, 441, 448, 86, 267, 0, 0, 0, 0, 0,
! 0, 513, 508, 458, 471, 0, 117, 118, 118, 0,
! 0, 447, 495, 475, 476, 0, 291, 0, 293, 409,
! 411, 0, 0, 525, 413, 531, 548, 403, 403, 527,
! 528, 0, 552, 0, 420, 421, 0, 30, 456, 0,
! 0, 303, 301, 300, 280, 0, 0, 0, 282, 0,
! 388, 282, 282, 0, 391, 282, 357, 360, 365, 282,
! 97, 0, 99, 316, 0, 0, 313, 0, 315, 0,
! 369, 306, 312, 0, 0, 0, 556, 460, 0, 511,
! 498, 499, 500, 0, 0, 0, 514, 0, 0, 496,
! 0, 0, 124, 467, 481, 469, 486, 0, 479, 0,
! 0, 450, 464, 125, 0, 412, 526, 339, 259, 282,
! 282, 335, 336, 282, 545, 404, 407, 259, 282, 282,
! 547, 282, 535, 211, 212, 213, 214, 203, 204, 205,
! 206, 215, 216, 217, 218, 207, 208, 209, 210, 118,
! 118, 537, 554, 457, 113, 114, 0, 22, 277, 26,
! 390, 282, 0, 393, 282, 0, 363, 0, 319, 0,
! 0, 310, 91, 0, 305, 0, 318, 309, 81, 0,
! 509, 501, 0, 506, 0, 282, 0, 122, 322, 0,
! 123, 325, 0, 0, 449, 0, 0, 0, 466, 471,
! 465, 485, 0, 497, 292, 410, 525, 543, 282, 338,
! 282, 341, 544, 405, 410, 525, 546, 529, 403, 403,
! 0, 389, 385, 392, 387, 98, 0, 321, 0, 0,
! 307, 308, 0, 507, 0, 512, 120, 0, 121, 0,
! 0, 0, 0, 515, 0, 480, 449, 450, 472, 471,
! 0, 342, 343, 0, 337, 340, 0, 282, 282, 540,
! 282, 542, 302, 0, 314, 311, 510, 517, 0, 471,
! 471, 0, 0, 470, 516, 494, 487, 0, 491, 478,
! 474, 473, 0, 344, 530, 538, 539, 541, 320, 0,
! 0, 0, 518, 519, 502, 323, 326, 468, 482, 515,
! 493, 449, 484, 0, 0, 517, 0, 0, 0, 0,
! 449, 0, 492, 0, 0, 0, 503, 520, 324, 327,
! 483, 488, 521, 0, 0, 0, 515, 0, 523, 0,
! 504, 0, 0, 0, 0, 489, 522, 505, 524, 449,
! 490
};
+ /* YYDEFGOTO[NTERM-NUM]. */
static const short yydefgoto[] =
{
! -1, 1, 2, 3, 5, 20, 21, 22, 23, 316,
! 595, 322, 597, 217, 495, 617, 180, 246, 375, 182,
! 183, 184, 185, 24, 186, 187, 361, 360, 358, 625,
! 359, 188, 524, 304, 305, 306, 307, 410, 457, 25,
! 295, 556, 193, 194, 195, 196, 197, 198, 199, 200,
! 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
! 483, 484, 334, 207, 201, 44, 208, 45, 46, 47,
! 48, 49, 223, 71, 218, 224, 596, 72, 500, 296,
! 210, 51, 286, 287, 288, 52, 594, 696, 619, 620,
! 621, 769, 622, 710, 623, 624, 727, 777, 848, 730,
! 779, 849, 503, 226, 660, 661, 662, 227, 53, 54,
! 55, 56, 338, 340, 345, 235, 57, 714, 439, 230,
! 231, 336, 509, 513, 510, 514, 343, 344, 202, 291,
! 390, 664, 665, 392, 393, 394, 219, 458, 459, 460,
! 461, 462, 463, 308, 280, 627, 739, 743, 381, 382,
! 383, 587, 561, 281, 465, 189, 588, 648, 649, 732,
! 650, 734, 309, 787, 740, 788, 789, 651, 786, 733,
! 850, 735, 839, 866, 879, 841, 816, 563, 564, 637,
! 817, 831, 832, 833, 869, 476, 572, 485, 671, 796,
! 486, 487, 691, 488, 577, 299, 400, 489, 490, 455,
! 190
};
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+ #define YYPACT_NINF -736
static const short yypact[] =
{
! 84, 87, 94, 2827, -736, 2827, 150, -736, -736, -736,
! -736, -736, 71, 71, 71, 60, -736, 129, -736, -736,
! -736, -736, -736, -736, 138, 300, 1044, 433, 1235, 1148,
! 606, 807, 619, 941, 1785, 2593, 2272, 2697, 1990, 1485,
! 2453, 1591, -736, -736, 70, -736, -736, -736, -736, -736,
! 71, -736, -736, 69, 73, 75, -736, -736, 2827, -736,
! -736, -736, 71, 71, 71, 2583, 155, 2479, -736, 97,
! 71, -20, -736, 1271, -736, -736, -736, 71, -736, -736,
! -736, -736, -736, -736, -736, -736, 71, -736, -736, -736,
! -736, -736, -736, -736, -736, 71, -736, -736, -736, -736,
! -736, -736, -736, -736, 71, -736, -736, -736, -736, -736,
! -736, -736, -736, 71, -736, -736, -736, -736, -736, -736,
! -736, -736, 71, -736, -736, -736, -736, -736, -736, -736,
! -736, 71, -736, -736, -736, -736, -736, -736, -736, -736,
! 71, -736, -736, -736, -736, -736, 103, 300, -736, -736,
! -736, -736, -736, 154, -736, 157, -736, 175, -736, -736,
! -736, -736, -736, -736, 2583, 2583, 211, 225, 231, -736,
! 334, -736, -736, -736, 2583, -736, -736, 1875, -736, -736,
! 2583, 216, 219, -736, 2623, 2687, -736, 3259, 529, 1529,
! 2583, 880, 260, 659, 911, 1057, 1026, 436, 506, 472,
! 668, -736, 268, 184, 355, 277, 374, -736, 300, 300,
! 71, -736, 71, -736, 323, 71, 312, 1094, 71, -736,
! -736, 97, 71, 18, -736, 995, 475, 481, 134, 2088,
! 301, 2793, -736, 303, -736, 451, -736, -736, -736, 2583,
! 2583, 3196, -736, -736, 332, -736, 339, 346, -736, 322,
! 2583, 1875, -736, 1875, -736, 2583, 2583, 399, -736, -736,
! 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
! 2583, 2583, -736, -736, 334, 2583, 2583, 334, 368, -736,
! 439, 377, -736, -736, -736, -736, -31, -736, 409, -736,
! -736, 366, -736, 481, 180, 300, -736, 467, -736, -736,
! 97, 484, 2115, 402, -736, -736, 1165, 63, -736, 1661,
! 454, 103, 103, -736, 71, -736, 1094, 71, 71, -736,
! -736, -736, 1094, 71, -736, -736, 659, 911, 1057, 1026,
! 436, 506, 472, 668, -736, 427, 416, 1433, -736, 71,
! -736, -736, 465, 417, -736, 451, 2947, 2975, 435, -736,
! -736, 2347, -736, 3259, 443, 446, 3259, 3259, 2583, 504,
! 2583, 2583, 1164, 2174, 2080, 1128, 1237, 878, 878, 497,
! 497, -736, -736, -736, -736, 469, 219, 468, -736, -736,
! 334, 1622, 439, -736, -736, 482, 880, 2727, 97, 71,
! -736, -736, -736, -736, 510, -736, -736, -736, 146, 492,
! 1691, 2583, 2583, 2158, -736, 2847, -736, -736, -736, -736,
! -736, 3134, 3208, 1275, 602, 3146, 3225, 1470, 1789, 496,
! 512, -736, 475, 207, 103, -736, 575, -736, -736, -736,
! 205, 341, -736, -736, 514, -736, 532, 2583, 334, 547,
! 417, 3196, 2583, 3196, -736, -736, 550, 550, 596, 2583,
! 3222, 2794, -736, -736, -736, 291, 402, -736, -736, 54,
! 64, 92, 99, 646, -736, 558, 2233, -736, -736, -736,
! -736, -736, 232, 563, 366, 366, -736, 71, -736, -736,
! 564, -736, -736, -736, -736, -736, 566, 328, -736, -736,
! 290, 2875, 2897, -736, -736, 68, -736, 103, -736, 300,
! 1394, -736, -736, 623, -736, -736, -736, 2583, 142, 567,
! -736, 2583, 330, 568, -736, 71, 71, 3259, -736, 71,
! 577, 581, 2995, 589, 1915, -736, 3275, -736, 334, -736,
! -736, -736, -736, -736, -736, 2307, -736, -736, -736, -736,
! -736, -736, -736, 633, 638, 2583, 639, 597, 601, 2519,
! 79, 678, -736, -736, -736, 607, -736, -736, -736, 608,
! 701, 613, -736, -736, -736, 2414, -736, 2583, -736, -736,
! -736, 616, 722, -736, -736, -736, -736, 223, 139, -736,
! -736, 1754, -736, 703, -736, -736, 636, -736, -736, 336,
! 401, -736, -736, 3259, -736, 68, 1394, 68, 3077, 2583,
! -736, 71, 3077, 2583, -736, 71, -736, -736, -736, 71,
! -736, 2583, -736, -736, 334, 2583, -736, 686, 3259, 643,
! 620, -736, -736, 310, 1321, 2583, -736, -736, 3047, -736,
! -736, -736, -736, 648, 2583, 649, -736, 674, 696, -736,
! 103, 300, -736, -736, -736, -736, -736, 677, 731, 1715,
! 56, -736, -736, -736, 306, -736, -736, -736, 97, 71,
! 71, 533, 562, 109, -736, -736, 71, 97, 71, 109,
! -736, 71, -736, 3134, 3208, 3165, 3237, 1275, 602, 1602,
! 1847, 3146, 3225, 3177, 3254, 1470, 1789, 2057, 2021, -736,
! -736, -736, -736, -736, -736, -736, 1915, -736, -736, -736,
! -736, 3077, 205, -736, 3077, 341, -736, 3023, -736, 2818,
! 1915, -736, -736, 1982, -736, 2049, -736, -736, 3275, 2583,
! -736, -736, 667, -736, 2583, 71, 415, -736, 337, 437,
! -736, 189, 693, 697, -736, 699, 2583, 1808, -736, -736,
! -736, -736, 2583, -736, -736, 223, 178, -736, 71, -736,
! 71, -736, -736, 71, 139, 139, -736, -736, 223, 139,
! 676, -736, -736, -736, -736, -736, 2583, -736, 682, 2049,
! -736, -736, 3241, -736, 44, -736, -736, 1094, -736, 1094,
! 2583, 2583, 751, 2414, 687, -736, -736, -736, -736, -736,
! 688, 533, 562, 285, -736, -736, 722, 71, 109, -736,
! 109, -736, -736, 2925, -736, -736, -736, 49, 685, -736,
! -736, 690, 691, -736, -736, -736, -736, 692, -736, -736,
! -736, -736, 694, -736, -736, -736, -736, -736, -736, 717,
! 334, 90, 698, -736, -736, -736, -736, -736, -736, 2583,
! -736, -736, -736, 2583, 700, 49, 707, 49, 636, 636,
! -736, 713, -736, 704, 777, 110, -736, -736, -736, -736,
! -736, -736, -736, 741, 798, 719, 2583, 2583, -736, 325,
! -736, 727, 729, 733, 809, -736, -736, -736, -736, -736,
! -736
};
+ /* YYPGOTO[NTERM-NUM]. */
static const short yypgoto[] =
{
! -736, -736, -736, -736, -736, 96, -736, -736, -736, -736,
! -736, -736, -736, -736, -736, -13, -736, -65, 438, -258,
! 354, -736, -736, -736, 20, 702, -736, -736, -736, -736,
! -736, -736, -736, -301, -736, 520, -736, -736, 1, 82,
! -278, -541, -2, 2, 22, 41, 3, 8, 17, 23,
! -297, -280, 247, 248, -266, -262, 250, 251, -435, -414,
! 526, 527, -736, -178, -736, -433, -202, 517, 666, 714,
! 817, -736, -463, -137, -216, 429, -736, 545, -736, 318,
! 83, 85, -736, 477, -736, 841, 255, -736, -642, -736,
! 141, -736, -576, -736, -736, 241, -736, -736, -736, -736,
! -736, -736, -130, 319, 107, 145, -102, 147, -736, -736,
! -736, -736, -736, -736, -736, -736, -736, -736, 455, -103,
! -736, 554, -736, -736, 192, 191, 553, 461, -50, -736,
! -736, -528, -273, -412, -429, -736, 367, -736, -736, -736,
! -736, -736, -736, -267, -736, -736, -417, 113, -736, -736,
! 521, -225, -736, 343, -736, -736, -443, -736, -736, -736,
! -736, -736, 100, 118, -697, -194, -131, -736, -736, -736,
! -736, -736, -736, -736, -736, -736, -736, -736, -736, -736,
! -735, 72, -736, 61, -736, 444, -736, -537, -736, -736,
! -736, -736, -736, -736, 447, -314, -736, -736, -736, -736,
! 27
};
! /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
! positive, shift that token. If negative, reduce the rule which
! number is the opposite. If zero, do what YYDEFACT says.
! If YYTABLE_NINF, syntax error. */
! #define YYTABLE_NINF -533
static const short yytable[] =
{
! 181, 26, 192, 26, 427, 27, 30, 27, 30, 317,
! 228, 31, 415, 31, 302, 425, 225, 376, 391, 311,
! 32, 428, 32, 562, 653, 28, 33, 28, 33, 416,
! 58, 557, 58, 559, 589, 656, 424, 782, 301, 408,
! 153, 155, 157, 417, 29, 570, 29, 418, 717, 560,
! 670, 233, 558, 335, 760, -442, 26, 741, 385, 829,
! 27, 30, 569, 386, -107, -443, 31, 203, 768, 586,
! 211, 204, 150, 151, 212, 32, 150, 151, 150, 151,
! 28, 33, 150, 151, -2, 58, 50, 4, 50, 819,
! 807, 205, 562, -444, -3, 62, 63, 64, 401, 29,
! -445, 59, 17, 415, 851, 11, 68, 220, 313, 77,
! 206, 86, 314, 95, 464, 104, 830, 113, 560, 122,
! 416, 131, 742, 140, 146, 147, 65, 247, 17, 376,
! 557, 871, 559, 808, 417, 149, 845, 634, 418, 771,
! 17, 50, 68, 693, 852, -422, 689, 149, 149, 149,
! 50, 558, 50, 860, 158, -423, 864, 242, -107, 335,
! 148, 221, 149, 553, 152, 666, 666, 690, 154, 222,
! 156, 149, 73, 17, 214, 215, 216, 726, 285, 846,
! 149, 68, 880, -424, 237, 238, 474, 467, 599, 149,
! -425, 348, 74, 805, 243, 66, 541, 667, 149, 865,
! 248, 354, 571, 355, 67, 668, 216, 149, 68, 220,
! 282, 377, 215, 216, 203, 17, 149, 214, 204, 203,
! -274, 191, 342, 204, 320, 149, 68, 657, 212, 326,
! 799, 801, -274, 327, 330, 434, 658, 436, 205, 331,
! 60, 61, 815, 205, 659, 216, 215, 216, 332, 232,
! 468, 507, 234, 328, 333, 215, 216, 206, 337, 824,
! 50, 374, 206, 221, 378, 530, 533, 536, 539, 396,
! 236, 222, 329, 318, 216, 415, 77, 239, 86, -274,
! 95, 658, 104, -274, 681, 83, 77, 317, 86, 659,
! 216, 240, 416, 448, 229, 149, 501, 241, 203, 50,
! 508, 682, 204, 68, 50, 249, 417, 411, 17, 654,
! 418, 412, 413, 250, 50, 685, 570, 414, 300, 686,
! 11, 566, 205, 702, 50, 570, 567, 705, 531, 534,
! 537, 540, 342, 569, 50, 326, 50, 150, 151, 327,
! 330, 206, 569, 17, 68, 331, 666, 666, 557, 290,
! 559, 750, 216, 715, 332, 293, 294, 292, 69, 328,
! 333, 17, 590, 79, 337, 214, 70, 454, -274, 558,
! 697, 445, 699, 285, 823, 614, 603, 615, 329, 582,
! -274, 527, 88, 50, 583, 528, 203, 511, 209, 297,
! 204, 521, 323, 523, 339, 744, 215, 216, 411, 69,
! 250, 555, 412, 413, 407, 858, 859, 70, 414, 77,
! 205, 86, 352, 95, 873, 104, 430, 431, 580, 874,
! 50, 349, 581, 243, 388, 342, 694, -274, 350, 206,
! 314, -274, 389, 216, 794, 351, 795, 7, 8, 9,
! 10, 79, 398, 10, 92, -82, 12, 13, 14, 12,
! 13, 14, 341, 554, 150, 151, 745, 379, 293, 294,
! 529, 532, 16, 538, 26, 754, 384, 17, 27, 30,
! 555, 50, 380, 571, 31, 387, 809, 399, 810, 10,
! 101, 466, 571, 32, 633, 12, 13, 14, 28, 33,
! 402, 695, 406, 565, 77, 212, 95, 421, 113, 415,
! 131, 497, 499, 17, 729, 776, 432, 29, 437, 314,
! 728, 438, 317, 10, 97, 626, 416, -381, -381, 12,
! 13, 14, 554, -244, 50, 504, 50, 778, 506, 443,
! 417, 212, 446, 298, 418, 447, 310, 635, 252, 254,
! 312, 318, 216, 75, 80, 84, 89, 215, 216, 50,
! 449, 111, 116, 120, 125, 269, 270, 271, 452, 466,
! 466, 535, 466, 26, 453, 576, 576, 27, 30, 722,
! 411, 470, 508, 31, 412, 413, 477, 216, 512, 673,
! 414, 479, 32, 674, 677, 282, 496, 28, 33, 678,
! 272, 273, 565, 319, 274, 275, 276, 277, 679, 748,
! 216, 708, 498, 675, 680, 515, 29, 8, 9, 10,
! 97, 8, 9, 10, 92, 12, 13, 14, 505, 12,
! 13, 14, 676, 516, 8, 9, 10, 101, 750, 216,
! 422, 423, 12, 13, 14, 426, 298, 17, 519, 640,
! 641, 429, 525, 792, 793, 444, 398, 303, 50, 542,
! 17, 214, 568, 575, 638, 579, 203, 435, 395, 774,
! 204, 601, 605, 7, 50, 203, 10, 74, 609, 204,
! 610, 784, 12, 13, 14, 10, 106, 790, 612, -32,
! 205, 12, 13, 14, -33, 629, 636, 630, 16, 205,
! 17, 631, 76, 81, 85, 90, -247, 639, 642, 206,
! 112, 117, 121, 126, 279, 655, 692, 475, 206, -249,
! 75, 80, 84, 89, 713, 811, 812, 643, 814, 644,
! 645, 646, 647, 480, 663, 669, 7, 8, 9, 10,
! 11, 553, 711, 482, 712, 12, 13, 14, 721, 723,
! 724, 50, 725, 736, 93, 98, 102, 107, 737, 753,
! 50, 16, 129, 134, 138, 143, 77, 773, 86, 780,
! 95, 478, 104, 781, 113, 783, 122, 802, 131, 813,
! 140, 758, 759, 804, 814, 834, 818, 822, 853, 837,
! 838, 26, 840, 843, 842, 27, 30, 863, 731, 319,
! 319, 31, 847, 862, 411, 573, 854, 856, 412, 413,
! 32, 814, 872, 861, 414, 28, 33, 867, 868, 870,
! 565, -532, 8, 9, 10, 97, 875, 844, 876, 878,
! 12, 13, 14, 877, 29, 473, 600, 409, 683, 684,
! 604, 687, 688, 606, 607, 419, 420, 608, 149, 535,
! 397, 395, 395, 75, 80, 84, 89, 94, 99, 103,
! 108, 698, 512, 502, 770, 130, 135, 139, 144, 76,
! 81, 85, 90, 471, 716, 797, 50, 78, 82, 87,
! 91, 96, 100, 105, 109, 114, 118, 123, 127, 132,
! 136, 141, 145, 150, 151, 8, 9, 283, 284, 535,
! 791, 433, 293, 294, 762, 520, 764, -248, 440, 518,
! 820, 293, 294, 469, 652, 798, 800, 821, 857, 835,
! 836, 93, 98, 102, 107, 7, 700, 855, 10, 79,
! 703, 574, 0, 0, 12, 13, 14, 706, 75, 80,
! 0, 578, 111, 116, 267, 268, 269, 270, 271, 0,
! 16, 346, 347, 0, 395, 395, 8, 9, 10, 106,
! 0, 0, 353, 0, 12, 13, 14, 356, 357, 0,
! 0, 0, 362, 363, 364, 365, 366, 367, 368, 369,
! 370, 371, 372, 373, 0, 0, 0, 746, 747, 0,
! 0, 752, 0, 0, 0, 0, 755, 756, 0, 757,
! 0, 0, 76, 81, 85, 90, 315, 0, 0, -20,
! -20, -20, -20, -20, 405, 0, 0, 0, -20, -20,
! -20, 0, 0, 0, 94, 99, 103, 108, 0, 761,
! 0, 0, 763, 214, -20, 0, -274, 0, 749, 751,
! 7, -250, 289, 10, 88, 0, 0, 0, -274, 12,
! 13, 14, 0, 775, 93, 98, 102, 107, 7, 8,
! 9, 10, 74, 0, 0, 16, 0, 12, 13, 14,
! 0, 7, 450, 451, 10, 83, 298, 0, 298, 0,
! 12, 13, 14, 16, 0, 17, 0, 76, 81, 0,
! 0, 112, 117, 0, 0, -274, 16, 0, 17, -274,
! -20, 0, 0, 0, 0, 303, 0, 0, -471, -471,
! -471, -471, -471, 491, 492, 0, 0, -471, -471, -471,
! 0, 0, 395, 395, 0, 825, 826, 0, 827, 0,
! 0, 395, 395, -471, 0, 395, 395, 93, 98, 0,
! 0, 129, 134, 0, -243, 0, 0, 0, 0, 517,
! 0, 0, 0, 0, 522, 0, 0, 94, 99, 103,
! 108, 526, 7, 8, 9, 10, 88, 0, 749, 751,
! 751, 12, 13, 14, 0, 0, 303, 0, 0, -109,
! -109, -109, -109, -109, 0, 0, 0, 16, -109, -109,
! -109, 264, 265, 266, 267, 268, 269, 270, 271, -106,
! 75, 80, 84, 89, -109, 0, 0, 0, 111, 116,
! 120, 125, 593, 0, 0, 0, 0, 0, 0, 598,
! 0, 0, 0, 602, 261, 262, 263, 264, 265, 266,
! 267, 268, 269, 270, 271, 0, 618, 289, 0, 0,
! 94, 99, 0, 0, 130, 135, 0, 0, -246, 7,
! 8, 9, 10, 83, 0, 0, 0, 628, 12, 13,
! 14, 0, 78, 82, 96, 100, 114, 118, 132, 136,
! -109, 0, 0, 0, 16, 0, 17, 0, 0, 0,
! 0, 0, 213, 0, 0, -28, -28, -28, -28, -28,
! 8, 9, 10, 92, -28, -28, -28, 0, 12, 13,
! 14, 265, 266, 267, 268, 269, 270, 271, 593, 214,
! -28, 701, -274, 0, 0, 704, 17, 0, 0, 0,
! 0, 0, 0, 707, -274, 0, 0, 709, 0, 0,
! 0, 0, 613, 0, 159, -245, 618, 718, 0, 0,
! 160, 161, 0, 162, 0, 0, 0, 215, 216, 76,
! 81, 85, 90, 0, 0, 0, 0, 112, 117, 121,
! 126, 163, 0, 18, 0, 164, 165, 166, 167, 168,
! 0, -274, 0, 169, -317, -274, -28, 0, 0, 170,
! 0, 0, 171, 0, 0, 0, 0, 172, 173, 174,
! 0, 0, 175, 176, 0, 0, -317, 177, -317, 0,
! 0, 93, 98, 102, 107, 591, 0, 159, 618, 129,
! 134, 138, 143, 160, 161, 0, 162, 0, 0, 0,
! 0, 0, 618, 178, 179, 618, 616, 618, 0, 0,
! 0, 772, 0, 0, 163, 0, 18, 0, 164, 165,
! 166, 167, 168, 0, 324, 0, 169, 7, 0, 0,
! 10, 11, 170, 0, 0, 171, 12, 13, 14, 0,
! 172, 173, 174, 0, 0, 175, 176, 0, 0, 0,
! 177, 0, 16, 0, 17, 18, 0, 0, 803, 0,
! 0, 618, 0, 0, 0, 8, 9, 10, 128, 0,
! 0, 0, 0, 12, 13, 14, 178, 179, 0, 592,
! 8, 9, 10, 133, 94, 99, 103, 108, 12, 13,
! 14, 17, 130, 135, 139, 144, 0, 0, 0, 0,
! 0, 0, 0, 0, 78, 82, 87, 91, 96, 100,
! 105, 109, 114, 118, 123, 127, 132, 136, 141, 145,
! 278, 0, -447, -447, -447, -447, -447, -447, -447, -447,
! 0, -447, -447, -447, -447, -447, 0, -447, -447, -447,
! -447, -447, -447, -447, -447, -447, -447, -447, -447, -447,
! -447, -447, -447, -447, -447, -447, -447, -447, 0, 0,
! 0, -447, 0, 0, 0, -256, 0, -447, 0, 0,
! -447, 0, 0, 0, 0, -447, -447, -447, 0, 0,
! -447, -447, 0, 0, 0, -447, 8, 9, 10, 142,
! 0, 0, 0, 0, 12, 13, 14, 8, 9, 10,
! 101, 0, 0, 0, 0, 12, 13, 14, 0, -447,
! 279, -447, -447, 456, -447, -471, -471, -471, -471, -471,
! -471, -471, -471, 17, -471, -471, -471, -471, -471, 0,
! -471, -471, -471, -471, -471, -471, -471, -471, -471, -471,
! -471, -471, -471, -471, -471, 0, -471, -471, -471, -471,
! -471, 0, 0, 0, -471, 7, 8, 9, 10, 11,
! -471, 0, 0, -471, 12, 13, 14, 0, -471, -471,
! -471, -258, 0, -471, -471, 0, 0, 0, -471, 0,
! 16, 0, 480, 0, 481, 7, 8, 9, 10, 11,
! 0, 0, 482, 0, 12, 13, 14, 0, 0, 0,
! 0, 0, -471, 0, -471, -471, 738, -471, -449, -449,
! 16, 0, 0, 0, -449, -449, 0, -449, 0, 0,
! 0, -449, 0, -449, -449, -449, -449, -449, -449, -449,
! -449, -449, -449, -449, 0, -449, 0, -449, 0, -449,
! -449, -449, -449, -449, 0, 0, 0, -449, 7, 8,
! 9, 10, 11, -449, 0, 672, -449, 12, 13, 14,
! 0, -449, -449, -449, 0, 0, -449, -449, 0, 0,
! -532, -449, 0, 16, 0, 17, 0, 0, 0, 7,
! 8, 9, 10, 110, 8, 9, 10, 133, 12, 13,
! 14, 0, 12, 13, 14, -449, 0, -449, -449, 785,
! -449, -477, -477, 0, 16, 0, 17, -477, -477, 0,
! -477, 0, 0, 0, -477, 0, -477, -477, -477, -477,
! -477, -477, -477, -477, -477, -477, -477, 0, -477, 0,
! -477, 0, -477, -477, -477, -477, -477, 0, 0, 0,
! -477, 0, 8, 9, 10, 106, -477, 0, 0, -477,
! 12, 13, 14, 0, -477, -477, -477, 0, 0, -477,
! -477, 0, 0, 0, -477, -251, 244, 0, 159, 7,
! 0, 0, 10, 11, 160, 161, 0, 162, 12, 13,
! 14, 0, 0, 0, 0, 0, 0, 0, -477, 0,
! -477, -477, 0, -477, 16, 163, 17, 18, 0, 164,
! 165, 166, 167, 168, 0, 0, 613, 169, 543, 151,
! 0, 0, 0, 170, 160, 161, 171, 162, 0, 0,
! 0, 172, 173, 174, 0, 0, 175, 176, 0, 0,
! 0, 177, 0, 0, 0, 163, 0, 18, 0, 164,
! 165, 166, 167, 168, 0, 0, 0, 169, 0, 0,
! 0, 0, 0, 170, 0, 0, 171, 178, 179, 0,
! 245, 172, 173, 174, 0, 0, 175, 176, 0, 0,
! 614, 177, 615, 613, 0, 543, 151, 0, 0, 0,
! 0, 160, 161, 0, 162, 8, 9, 10, 128, 0,
! 0, 0, 0, 12, 13, 14, -304, 178, 179, 0,
! 616, 0, 163, 0, 18, 0, 164, 165, 166, 167,
! 168, 17, 0, 0, 169, 0, 8, 9, 10, 142,
! 170, 0, 0, 171, 12, 13, 14, 0, 172, 173,
! 174, 0, 0, 175, 176, 0, 0, 614, 177, 615,
! 613, 0, 159, 0, 0, 0, 0, 0, 160, 161,
! 0, 162, 8, 9, 10, 137, 0, 0, 0, 0,
! 12, 13, 14, -370, 178, 179, 0, 616, 0, 163,
! -255, 18, 0, 164, 165, 166, 167, 168, 17, 321,
! 0, 169, -24, -24, -24, -24, -24, 170, 0, 0,
! 171, -24, -24, -24, 0, 172, 173, 174, 0, 0,
! 175, 176, 0, 0, 0, 177, 214, -24, 159, -274,
! 0, 0, 0, 0, 160, 161, 0, 162, 0, 0,
! 0, -274, 263, 264, 265, 266, 267, 268, 269, 270,
! 271, 178, 179, 0, 616, 163, 0, 18, 0, 164,
! 165, 166, 167, 168, 215, 216, 0, 169, 0, 0,
! 0, 159, 0, 170, 0, 0, 171, 160, 161, 0,
! 162, 172, 173, 403, 0, 0, 175, 176, -274, 0,
! 0, 177, -274, -24, 0, 0, 0, 0, 163, 0,
! 18, 0, 164, 165, 166, 167, 168, 0, 0, 0,
! 169, 0, 0, 0, 0, 0, 170, 178, 179, 171,
! 0, 404, 0, 0, 172, 173, 174, 0, 0, 175,
! 176, 0, 0, 0, 177, 262, 263, 264, 265, 266,
! 267, 268, 269, 270, 271, 0, 543, 544, 8, 9,
! 10, 11, 160, 161, 0, 162, 12, 13, 14, 0,
! 178, 179, 0, 0, 493, 545, 546, 547, 548, 549,
! 550, 551, 16, 163, 17, 18, 0, 164, 165, 166,
! 167, 168, 0, 0, 0, 169, 7, 8, 9, 10,
! 119, 170, 0, 0, 171, 12, 13, 14, 0, 172,
! 173, 174, 0, 0, 175, 176, 0, 0, 0, 177,
! 0, 16, 0, 17, 0, 0, 0, 0, 0, 0,
! 543, 151, 0, 0, 0, 0, 160, 161, 0, 162,
! 0, 0, 0, 552, 0, 178, 179, 0, 553, 545,
! 546, 547, 548, 549, 550, 551, 0, 163, 0, 18,
! 0, 164, 165, 166, 167, 168, 0, 0, 0, 169,
! 159, 0, 0, 0, 0, 170, 160, 161, 171, 162,
! 0, 0, -253, 172, 173, 174, 0, 0, 175, 176,
! 0, 0, 0, 177, 0, 0, 0, 163, 0, 18,
! 0, 164, 165, 166, 167, 168, 0, 0, 0, 169,
! 0, 0, 0, 0, 0, 170, 0, 552, 171, 178,
! 179, 0, 553, 172, 173, 174, 0, 0, 175, 176,
! 0, 0, 0, 177, 0, 0, 0, 159, 7, 8,
! 9, 10, 11, 160, 161, 0, 162, 12, 13, 14,
! 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
! 179, 0, 444, 16, 163, 17, 18, 0, 164, 165,
! 166, 167, 168, 0, 0, 0, 169, 0, 8, 9,
! 10, 137, 170, 0, 0, 171, 12, 13, 14, 0,
! 172, 173, 174, 0, 0, 175, 176, 0, 0, 0,
! 177, 0, 159, 7, 17, 0, 10, 11, 160, 161,
! 0, 162, 12, 13, 14, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 0, 0, 178, 179, 16, 163,
! 17, 18, 0, 164, 165, 166, 167, 168, 0, 0,
! 0, 169, 159, 0, 0, 0, 0, 170, 160, 161,
! 171, 162, 0, 0, 0, 172, 173, 174, 0, 0,
! 175, 176, 0, -257, 0, 177, 0, 0, 0, 163,
! 0, 18, 0, 164, 165, 166, 167, 168, 0, 0,
! 0, 169, 0, 0, 0, 0, 0, 170, 0, 0,
! 171, 178, 179, 0, 0, 172, 173, 174, 0, 0,
! 175, 176, 0, 0, 0, 177, 159, 0, 0, 0,
! 0, 0, 160, 161, 0, 162, 0, 7, 8, 9,
! 10, 115, 0, 0, 0, 0, 12, 13, 14, 632,
! 0, 178, 179, 163, 0, 18, 0, 164, 165, 166,
! 167, 168, 16, 0, 0, 169, 159, 0, 0, 0,
! 0, 170, 160, 161, 171, 162, 0, 0, 0, 172,
! 173, 174, 0, 0, 175, 176, 0, 0, 0, 177,
! 0, 0, 0, 163, 0, 18, 0, 164, 165, 166,
! 167, 168, 0, 0, 0, 169, 0, 0, 0, 0,
! 0, 170, 0, 0, 171, 178, 179, 0, 0, 172,
! 173, 174, 0, -252, 175, 176, 0, 0, 0, 251,
! 159, 0, 0, 0, 0, 0, 160, 161, 0, 162,
! 0, 7, 8, 9, 10, 124, 0, 0, 0, 0,
! 12, 13, 14, 0, 0, 178, 179, 163, 0, 18,
! 0, 164, 165, 166, 167, 168, 16, 0, 0, 169,
! 472, 0, 0, 0, 0, 170, 160, 161, 171, 162,
! 0, 0, 0, 172, 173, 174, 0, 0, 175, 176,
! 0, 0, 0, 253, 0, 0, 0, 163, 0, 18,
! 0, 164, 165, 166, 167, 168, 0, 0, 0, 169,
! 0, 0, 0, 0, 0, 170, 0, 0, 171, 178,
! 179, 0, 0, 172, 173, 174, 0, -254, 175, 176,
! 0, 0, 0, 177, 324, 0, 0, 7, 0, 0,
! 10, 11, 0, 0, 0, 0, 12, 13, 14, 0,
! 0, 0, 0, 0, 0, 0, 0, 0, 0, 178,
! 179, 0, 16, 0, 17, 18, 0, 0, 6, 766,
! -118, 7, 8, 9, 10, 11, 0, 0, 0, 0,
! 12, 13, 14, 260, 261, 262, 263, 264, 265, 266,
! 267, 268, 269, 270, 271, 15, 16, 0, 17, 18,
! 0, 255, 256, 257, 0, 258, 259, 260, 261, 262,
! 263, 264, 265, 266, 267, 268, 269, 270, 271, 0,
! 0, 0, 0, 325, -373, -118, 0, 0, 0, 0,
! 255, 256, 257, -118, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 270, 271, 0, 0,
! 0, 0, 0, 0, 767, 0, 0, 19, 255, 256,
! 257, 0, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 268, 269, 270, 271, 0, 0, 0, 0,
! 255, 256, 257, 494, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 270, 271, 0, 0,
! 0, 0, 0, 0, 0, 0, 0, 0, 255, 256,
! 257, 584, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 268, 269, 270, 271, 0, 0, 0, 0,
! 255, 256, 257, 585, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 270, 271, 0, 0,
! 0, 0, 0, 0, 0, 0, 0, 0, 255, 256,
! 257, 828, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 268, 269, 270, 271, 0, 0, 255, 256,
! 257, 441, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 268, 269, 270, 271, 0, 0, 719, 0,
! 0, 0, 0, 0, 0, 0, 255, 256, 257, 442,
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
! 268, 269, 270, 271, 0, 0, 0, 0, 0, 611,
! 255, 256, 257, 720, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 270, 271, 17, 0,
! 0, 0, 765, 0, 0, 0, 0, 0, 0, 0,
! 255, 256, 257, 0, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 268, 269, 270, 271, 7, 8,
! 9, 10, 74, 0, 0, 0, 0, 12, 13, 14,
! 7, 8, 9, 10, 110, 0, 0, 0, 0, 12,
! 13, 14, 0, 16, 0, 17, 0, 0, 0, 7,
! 8, 9, 10, 83, 0, 16, 0, 17, 12, 13,
! 14, 7, 8, 9, 10, 119, 0, 0, 0, 0,
! 12, 13, 14, 0, 16, 0, 17, 0, 0, 0,
! 7, 0, 0, 10, 11, 0, 16, 0, 17, 12,
! 13, 14, 7, 8, 9, 10, 79, 0, 0, 0,
! 0, 12, 13, 14, 0, 16, 0, 17, 0, 7,
! 8, 9, 10, 115, 0, 0, 0, 16, 12, 13,
! 14, 7, 8, 9, 10, 88, 0, 0, 0, 0,
! 12, 13, 14, 0, 16, 0, 0, 0, 7, 8,
! 9, 10, 124, 0, 0, 0, 16, 12, 13, 14,
! 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
! 269, 270, 271, 16, 255, 256, 257, 806, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
! 270, 271, 255, 256, 257, 0, 258, 259, 260, 261,
! 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
! 257, 0, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 268, 269, 270, 271
};
static const short yycheck[] =
{
! 65, 3, 67, 5, 318, 3, 3, 5, 5, 225,
! 147, 3, 309, 5, 216, 316, 146, 275, 291, 221,
! 3, 322, 5, 466, 565, 3, 3, 5, 5, 309,
! 3, 466, 5, 466, 497, 572, 314, 734, 216, 306,
! 53, 54, 55, 309, 3, 474, 5, 309, 624, 466,
! 578, 154, 466, 231, 696, 1, 58, 1, 89, 10,
! 58, 58, 474, 94, 1, 1, 58, 69, 710, 1,
! 90, 69, 3, 4, 94, 58, 3, 4, 3, 4,
! 58, 58, 3, 4, 0, 58, 3, 0, 5, 786,
! 46, 69, 535, 1, 0, 12, 13, 14, 300, 58,
! 1, 5, 31, 400, 839, 8, 3, 4, 90, 26,
! 69, 28, 94, 30, 381, 32, 67, 34, 535, 36,
! 400, 38, 66, 40, 42, 43, 66, 177, 31, 387,
! 565, 866, 565, 89, 400, 50, 46, 58, 400, 715,
! 31, 58, 3, 586, 841, 91, 581, 62, 63, 64,
! 67, 565, 69, 850, 58, 91, 46, 170, 95, 337,
! 90, 58, 77, 95, 95, 577, 578, 581, 95, 66,
! 95, 86, 25, 31, 28, 66, 67, 640, 191, 89,
! 95, 3, 879, 91, 164, 165, 388, 381, 46, 104,
! 91, 241, 8, 769, 174, 66, 463, 58, 113, 89,
! 180, 251, 475, 253, 66, 66, 67, 122, 3, 4,
! 190, 276, 66, 67, 216, 31, 131, 28, 216, 221,
! 31, 66, 235, 221, 90, 140, 3, 4, 94, 231,
! 758, 759, 43, 231, 231, 338, 58, 340, 216, 231,
! 90, 91, 783, 221, 66, 67, 66, 67, 231, 95,
! 381, 46, 95, 231, 231, 66, 67, 216, 231, 796,
! 177, 274, 221, 58, 277, 459, 460, 461, 462, 89,
! 95, 66, 231, 66, 67, 572, 193, 66, 195, 90,
! 197, 58, 199, 94, 581, 8, 203, 503, 205, 66,
! 67, 66, 572, 358, 147, 210, 89, 66, 300, 216,
! 430, 581, 300, 3, 221, 89, 572, 309, 31, 567,
! 572, 309, 309, 94, 231, 581, 745, 309, 6, 581,
! 8, 89, 300, 601, 241, 754, 94, 605, 459, 460,
! 461, 462, 345, 745, 251, 337, 253, 3, 4, 337,
! 337, 300, 754, 31, 3, 337, 758, 759, 783, 89,
! 783, 66, 67, 43, 337, 208, 209, 89, 58, 337,
! 337, 31, 499, 8, 337, 28, 66, 380, 31, 783,
! 595, 351, 597, 386, 89, 65, 46, 67, 337, 89,
! 43, 90, 8, 300, 94, 94, 388, 46, 70, 66,
! 388, 441, 91, 443, 91, 89, 66, 67, 400, 58,
! 94, 466, 400, 400, 304, 848, 849, 66, 400, 326,
! 388, 328, 90, 330, 89, 332, 334, 335, 90, 94,
! 337, 89, 94, 403, 58, 438, 90, 90, 89, 388,
! 94, 94, 66, 67, 748, 89, 750, 4, 5, 6,
! 7, 8, 295, 7, 8, 46, 13, 14, 15, 13,
! 14, 15, 1, 466, 3, 4, 658, 89, 311, 312,
! 459, 460, 29, 462, 466, 667, 89, 31, 466, 466,
! 535, 388, 33, 746, 466, 66, 777, 10, 779, 7,
! 8, 381, 755, 466, 549, 13, 14, 15, 466, 466,
! 6, 90, 90, 466, 411, 94, 413, 43, 415, 796,
! 417, 419, 420, 31, 641, 90, 90, 466, 43, 94,
! 640, 94, 728, 7, 8, 528, 796, 90, 91, 13,
! 14, 15, 535, 90, 441, 425, 443, 90, 428, 94,
! 796, 94, 89, 215, 796, 89, 218, 550, 184, 185,
! 222, 66, 67, 26, 27, 28, 29, 66, 67, 466,
! 46, 34, 35, 36, 37, 58, 59, 60, 89, 459,
! 460, 461, 462, 565, 96, 483, 484, 565, 565, 634,
! 572, 89, 702, 565, 572, 572, 66, 67, 431, 581,
! 572, 89, 565, 581, 581, 565, 90, 565, 565, 581,
! 61, 62, 565, 226, 65, 66, 67, 68, 581, 66,
! 67, 614, 90, 581, 581, 91, 565, 5, 6, 7,
! 8, 5, 6, 7, 8, 13, 14, 15, 43, 13,
! 14, 15, 581, 91, 5, 6, 7, 8, 66, 67,
! 311, 312, 13, 14, 15, 317, 318, 31, 91, 557,
! 558, 323, 46, 745, 746, 95, 499, 1, 565, 91,
! 31, 28, 89, 89, 554, 89, 658, 339, 291, 724,
! 658, 94, 94, 4, 581, 667, 7, 8, 91, 667,
! 89, 736, 13, 14, 15, 7, 8, 742, 89, 46,
! 658, 13, 14, 15, 46, 46, 8, 90, 29, 667,
! 31, 90, 26, 27, 28, 29, 90, 90, 90, 658,
! 34, 35, 36, 37, 91, 89, 3, 389, 667, 90,
! 193, 194, 195, 196, 94, 780, 781, 16, 783, 18,
! 19, 20, 21, 1, 577, 578, 4, 5, 6, 7,
! 8, 95, 46, 11, 91, 13, 14, 15, 90, 90,
! 66, 658, 46, 66, 30, 31, 32, 33, 17, 666,
! 667, 29, 38, 39, 40, 41, 673, 90, 675, 66,
! 677, 394, 679, 66, 681, 66, 683, 91, 685, 18,
! 687, 689, 690, 91, 839, 90, 89, 89, 843, 89,
! 89, 783, 90, 66, 90, 783, 783, 10, 641, 422,
! 423, 783, 94, 89, 796, 477, 96, 90, 796, 796,
! 783, 866, 867, 90, 796, 783, 783, 66, 10, 90,
! 783, 89, 5, 6, 7, 8, 89, 830, 89, 10,
! 13, 14, 15, 90, 783, 387, 508, 307, 581, 581,
! 512, 581, 581, 515, 516, 309, 309, 519, 753, 739,
! 295, 474, 475, 326, 327, 328, 329, 30, 31, 32,
! 33, 596, 705, 424, 713, 38, 39, 40, 41, 193,
! 194, 195, 196, 386, 623, 758, 783, 26, 27, 28,
! 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
! 39, 40, 41, 3, 4, 5, 6, 7, 8, 789,
! 745, 337, 745, 746, 702, 440, 705, 90, 345, 438,
! 787, 754, 755, 382, 561, 758, 759, 789, 847, 809,
! 810, 197, 198, 199, 200, 4, 598, 845, 7, 8,
! 602, 477, -1, -1, 13, 14, 15, 609, 411, 412,
! -1, 484, 415, 416, 56, 57, 58, 59, 60, -1,
! 29, 239, 240, -1, 577, 578, 5, 6, 7, 8,
! -1, -1, 250, -1, 13, 14, 15, 255, 256, -1,
! -1, -1, 260, 261, 262, 263, 264, 265, 266, 267,
! 268, 269, 270, 271, -1, -1, -1, 659, 660, -1,
! -1, 663, -1, -1, -1, -1, 668, 669, -1, 671,
! -1, -1, 326, 327, 328, 329, 1, -1, -1, 4,
! 5, 6, 7, 8, 302, -1, -1, -1, 13, 14,
! 15, -1, -1, -1, 197, 198, 199, 200, -1, 701,
! -1, -1, 704, 28, 29, -1, 31, -1, 661, 662,
! 4, 90, 191, 7, 8, -1, -1, -1, 43, 13,
! 14, 15, -1, 725, 330, 331, 332, 333, 4, 5,
! 6, 7, 8, -1, -1, 29, -1, 13, 14, 15,
! -1, 4, 360, 361, 7, 8, 748, -1, 750, -1,
! 13, 14, 15, 29, -1, 31, -1, 411, 412, -1,
! -1, 415, 416, -1, -1, 90, 29, -1, 31, 94,
! 95, -1, -1, -1, -1, 1, -1, -1, 4, 5,
! 6, 7, 8, 401, 402, -1, -1, 13, 14, 15,
! -1, -1, 745, 746, -1, 797, 798, -1, 800, -1,
! -1, 754, 755, 29, -1, 758, 759, 413, 414, -1,
! -1, 417, 418, -1, 90, -1, -1, -1, -1, 437,
! -1, -1, -1, -1, 442, -1, -1, 330, 331, 332,
! 333, 449, 4, 5, 6, 7, 8, -1, 791, 792,
! 793, 13, 14, 15, -1, -1, 1, -1, -1, 4,
! 5, 6, 7, 8, -1, -1, -1, 29, 13, 14,
! 15, 53, 54, 55, 56, 57, 58, 59, 60, 95,
! 673, 674, 675, 676, 29, -1, -1, -1, 681, 682,
! 683, 684, 500, -1, -1, -1, -1, -1, -1, 507,
! -1, -1, -1, 511, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, -1, 524, 386, -1, -1,
! 413, 414, -1, -1, 417, 418, -1, -1, 90, 4,
! 5, 6, 7, 8, -1, -1, -1, 545, 13, 14,
! 15, -1, 411, 412, 413, 414, 415, 416, 417, 418,
! 95, -1, -1, -1, 29, -1, 31, -1, -1, -1,
! -1, -1, 1, -1, -1, 4, 5, 6, 7, 8,
! 5, 6, 7, 8, 13, 14, 15, -1, 13, 14,
! 15, 54, 55, 56, 57, 58, 59, 60, 596, 28,
! 29, 599, 31, -1, -1, 603, 31, -1, -1, -1,
! -1, -1, -1, 611, 43, -1, -1, 615, -1, -1,
! -1, -1, 1, -1, 3, 90, 624, 625, -1, -1,
! 9, 10, -1, 12, -1, -1, -1, 66, 67, 673,
! 674, 675, 676, -1, -1, -1, -1, 681, 682, 683,
! 684, 30, -1, 32, -1, 34, 35, 36, 37, 38,
! -1, 90, -1, 42, 43, 94, 95, -1, -1, 48,
! -1, -1, 51, -1, -1, -1, -1, 56, 57, 58,
! -1, -1, 61, 62, -1, -1, 65, 66, 67, -1,
! -1, 677, 678, 679, 680, 1, -1, 3, 696, 685,
! 686, 687, 688, 9, 10, -1, 12, -1, -1, -1,
! -1, -1, 710, 92, 93, 713, 95, 715, -1, -1,
! -1, 719, -1, -1, 30, -1, 32, -1, 34, 35,
! 36, 37, 38, -1, 1, -1, 42, 4, -1, -1,
7, 8, 48, -1, -1, 51, 13, 14, 15, -1,
! 56, 57, 58, -1, -1, 61, 62, -1, -1, -1,
! 66, -1, 29, -1, 31, 32, -1, -1, 766, -1,
! -1, 769, -1, -1, -1, 5, 6, 7, 8, -1,
! -1, -1, -1, 13, 14, 15, 92, 93, -1, 95,
! 5, 6, 7, 8, 677, 678, 679, 680, 13, 14,
! 15, 31, 685, 686, 687, 688, -1, -1, -1, -1,
! -1, -1, -1, -1, 673, 674, 675, 676, 677, 678,
! 679, 680, 681, 682, 683, 684, 685, 686, 687, 688,
! 1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
! -1, 12, 13, 14, 15, 16, -1, 18, 19, 20,
! 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
! 31, 32, 33, 34, 35, 36, 37, 38, -1, -1,
! -1, 42, -1, -1, -1, 90, -1, 48, -1, -1,
! 51, -1, -1, -1, -1, 56, 57, 58, -1, -1,
! 61, 62, -1, -1, -1, 66, 5, 6, 7, 8,
! -1, -1, -1, -1, 13, 14, 15, 5, 6, 7,
! 8, -1, -1, -1, -1, 13, 14, 15, -1, 90,
! 91, 92, 93, 1, 95, 3, 4, 5, 6, 7,
! 8, 9, 10, 31, 12, 13, 14, 15, 16, -1,
! 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
! 28, 29, 30, 31, 32, -1, 34, 35, 36, 37,
! 38, -1, -1, -1, 42, 4, 5, 6, 7, 8,
! 48, -1, -1, 51, 13, 14, 15, -1, 56, 57,
! 58, 90, -1, 61, 62, -1, -1, -1, 66, -1,
! 29, -1, 1, -1, 3, 4, 5, 6, 7, 8,
! -1, -1, 11, -1, 13, 14, 15, -1, -1, -1,
! -1, -1, 90, -1, 92, 93, 1, 95, 3, 4,
! 29, -1, -1, -1, 9, 10, -1, 12, -1, -1,
! -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
! 25, 26, 27, 28, -1, 30, -1, 32, -1, 34,
! 35, 36, 37, 38, -1, -1, -1, 42, 4, 5,
! 6, 7, 8, 48, -1, 11, 51, 13, 14, 15,
! -1, 56, 57, 58, -1, -1, 61, 62, -1, -1,
! 89, 66, -1, 29, -1, 31, -1, -1, -1, 4,
! 5, 6, 7, 8, 5, 6, 7, 8, 13, 14,
! 15, -1, 13, 14, 15, 90, -1, 92, 93, 1,
! 95, 3, 4, -1, 29, -1, 31, 9, 10, -1,
! 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
! 22, 23, 24, 25, 26, 27, 28, -1, 30, -1,
! 32, -1, 34, 35, 36, 37, 38, -1, -1, -1,
! 42, -1, 5, 6, 7, 8, 48, -1, -1, 51,
! 13, 14, 15, -1, 56, 57, 58, -1, -1, 61,
! 62, -1, -1, -1, 66, 90, 1, -1, 3, 4,
! -1, -1, 7, 8, 9, 10, -1, 12, 13, 14,
! 15, -1, -1, -1, -1, -1, -1, -1, 90, -1,
! 92, 93, -1, 95, 29, 30, 31, 32, -1, 34,
! 35, 36, 37, 38, -1, -1, 1, 42, 3, 4,
-1, -1, -1, 48, 9, 10, 51, 12, -1, -1,
! -1, 56, 57, 58, -1, -1, 61, 62, -1, -1,
! -1, 66, -1, -1, -1, 30, -1, 32, -1, 34,
35, 36, 37, 38, -1, -1, -1, 42, -1, -1,
-1, -1, -1, 48, -1, -1, 51, 92, 93, -1,
! 95, 56, 57, 58, -1, -1, 61, 62, -1, -1,
! 65, 66, 67, 1, -1, 3, 4, -1, -1, -1,
-1, 9, 10, -1, 12, 5, 6, 7, 8, -1,
! -1, -1, -1, 13, 14, 15, 91, 92, 93, -1,
95, -1, 30, -1, 32, -1, 34, 35, 36, 37,
! 38, 31, -1, -1, 42, -1, 5, 6, 7, 8,
48, -1, -1, 51, 13, 14, 15, -1, 56, 57,
! 58, -1, -1, 61, 62, -1, -1, 65, 66, 67,
! 1, -1, 3, -1, -1, -1, -1, -1, 9, 10,
! -1, 12, 5, 6, 7, 8, -1, -1, -1, -1,
! 13, 14, 15, 91, 92, 93, -1, 95, -1, 30,
! 90, 32, -1, 34, 35, 36, 37, 38, 31, 1,
! -1, 42, 4, 5, 6, 7, 8, 48, -1, -1,
! 51, 13, 14, 15, -1, 56, 57, 58, -1, -1,
! 61, 62, -1, -1, -1, 66, 28, 29, 3, 31,
! -1, -1, -1, -1, 9, 10, -1, 12, -1, -1,
! -1, 43, 52, 53, 54, 55, 56, 57, 58, 59,
! 60, 92, 93, -1, 95, 30, -1, 32, -1, 34,
! 35, 36, 37, 38, 66, 67, -1, 42, -1, -1,
! -1, 3, -1, 48, -1, -1, 51, 9, 10, -1,
! 12, 56, 57, 58, -1, -1, 61, 62, 90, -1,
! -1, 66, 94, 95, -1, -1, -1, -1, 30, -1,
! 32, -1, 34, 35, 36, 37, 38, -1, -1, -1,
! 42, -1, -1, -1, -1, -1, 48, 92, 93, 51,
! -1, 96, -1, -1, 56, 57, 58, -1, -1, 61,
! 62, -1, -1, -1, 66, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, -1, 3, 4, 5, 6,
! 7, 8, 9, 10, -1, 12, 13, 14, 15, -1,
! 92, 93, -1, -1, 96, 22, 23, 24, 25, 26,
! 27, 28, 29, 30, 31, 32, -1, 34, 35, 36,
! 37, 38, -1, -1, -1, 42, 4, 5, 6, 7,
! 8, 48, -1, -1, 51, 13, 14, 15, -1, 56,
! 57, 58, -1, -1, 61, 62, -1, -1, -1, 66,
! -1, 29, -1, 31, -1, -1, -1, -1, -1, -1,
! 3, 4, -1, -1, -1, -1, 9, 10, -1, 12,
! -1, -1, -1, 90, -1, 92, 93, -1, 95, 22,
! 23, 24, 25, 26, 27, 28, -1, 30, -1, 32,
! -1, 34, 35, 36, 37, 38, -1, -1, -1, 42,
! 3, -1, -1, -1, -1, 48, 9, 10, 51, 12,
! -1, -1, 90, 56, 57, 58, -1, -1, 61, 62,
! -1, -1, -1, 66, -1, -1, -1, 30, -1, 32,
! -1, 34, 35, 36, 37, 38, -1, -1, -1, 42,
! -1, -1, -1, -1, -1, 48, -1, 90, 51, 92,
! 93, -1, 95, 56, 57, 58, -1, -1, 61, 62,
! -1, -1, -1, 66, -1, -1, -1, 3, 4, 5,
! 6, 7, 8, 9, 10, -1, 12, 13, 14, 15,
! -1, -1, -1, -1, -1, -1, -1, -1, -1, 92,
! 93, -1, 95, 29, 30, 31, 32, -1, 34, 35,
! 36, 37, 38, -1, -1, -1, 42, -1, 5, 6,
! 7, 8, 48, -1, -1, 51, 13, 14, 15, -1,
! 56, 57, 58, -1, -1, 61, 62, -1, -1, -1,
! 66, -1, 3, 4, 31, -1, 7, 8, 9, 10,
! -1, 12, 13, 14, 15, -1, -1, -1, -1, -1,
! -1, -1, -1, -1, -1, -1, 92, 93, 29, 30,
! 31, 32, -1, 34, 35, 36, 37, 38, -1, -1,
! -1, 42, 3, -1, -1, -1, -1, 48, 9, 10,
! 51, 12, -1, -1, -1, 56, 57, 58, -1, -1,
! 61, 62, -1, 90, -1, 66, -1, -1, -1, 30,
! -1, 32, -1, 34, 35, 36, 37, 38, -1, -1,
! -1, 42, -1, -1, -1, -1, -1, 48, -1, -1,
! 51, 92, 93, -1, -1, 56, 57, 58, -1, -1,
! 61, 62, -1, -1, -1, 66, 3, -1, -1, -1,
! -1, -1, 9, 10, -1, 12, -1, 4, 5, 6,
! 7, 8, -1, -1, -1, -1, 13, 14, 15, 90,
! -1, 92, 93, 30, -1, 32, -1, 34, 35, 36,
! 37, 38, 29, -1, -1, 42, 3, -1, -1, -1,
! -1, 48, 9, 10, 51, 12, -1, -1, -1, 56,
! 57, 58, -1, -1, 61, 62, -1, -1, -1, 66,
! -1, -1, -1, 30, -1, 32, -1, 34, 35, 36,
! 37, 38, -1, -1, -1, 42, -1, -1, -1, -1,
! -1, 48, -1, -1, 51, 92, 93, -1, -1, 56,
! 57, 58, -1, 90, 61, 62, -1, -1, -1, 66,
! 3, -1, -1, -1, -1, -1, 9, 10, -1, 12,
! -1, 4, 5, 6, 7, 8, -1, -1, -1, -1,
! 13, 14, 15, -1, -1, 92, 93, 30, -1, 32,
! -1, 34, 35, 36, 37, 38, 29, -1, -1, 42,
! 3, -1, -1, -1, -1, 48, 9, 10, 51, 12,
! -1, -1, -1, 56, 57, 58, -1, -1, 61, 62,
! -1, -1, -1, 66, -1, -1, -1, 30, -1, 32,
! -1, 34, 35, 36, 37, 38, -1, -1, -1, 42,
! -1, -1, -1, -1, -1, 48, -1, -1, 51, 92,
! 93, -1, -1, 56, 57, 58, -1, 90, 61, 62,
! -1, -1, -1, 66, 1, -1, -1, 4, -1, -1,
! 7, 8, -1, -1, -1, -1, 13, 14, 15, -1,
! -1, -1, -1, -1, -1, -1, -1, -1, -1, 92,
! 93, -1, 29, -1, 31, 32, -1, -1, 1, 11,
! 3, 4, 5, 6, 7, 8, -1, -1, -1, -1,
! 13, 14, 15, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, 28, 29, -1, 31, 32,
! -1, 43, 44, 45, -1, 47, 48, 49, 50, 51,
! 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
! -1, -1, -1, 90, 91, 58, -1, -1, -1, -1,
! 43, 44, 45, 66, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, -1, -1,
! -1, -1, -1, -1, 96, -1, -1, 90, 43, 44,
45, -1, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
! 43, 44, 45, 96, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, -1, -1,
! -1, -1, -1, -1, -1, -1, -1, -1, 43, 44,
! 45, 96, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
! 43, 44, 45, 96, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, -1, -1,
! -1, -1, -1, -1, -1, -1, -1, -1, 43, 44,
! 45, 96, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, -1, -1, 43, 44,
! 45, 94, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, -1, -1, 11, -1,
! -1, -1, -1, -1, -1, -1, 43, 44, 45, 94,
! 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
! 57, 58, 59, 60, -1, -1, -1, -1, -1, 94,
! 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 31, -1,
! -1, -1, 89, -1, -1, -1, -1, -1, -1, -1,
! 43, 44, 45, -1, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 4, 5,
6, 7, 8, -1, -1, -1, -1, 13, 14, 15,
! 4, 5, 6, 7, 8, -1, -1, -1, -1, 13,
! 14, 15, -1, 29, -1, 31, -1, -1, -1, 4,
! 5, 6, 7, 8, -1, 29, -1, 31, 13, 14,
! 15, 4, 5, 6, 7, 8, -1, -1, -1, -1,
! 13, 14, 15, -1, 29, -1, 31, -1, -1, -1,
! 4, -1, -1, 7, 8, -1, 29, -1, 31, 13,
! 14, 15, 4, 5, 6, 7, 8, -1, -1, -1,
! -1, 13, 14, 15, -1, 29, -1, 31, -1, 4,
! 5, 6, 7, 8, -1, -1, -1, 29, 13, 14,
! 15, 4, 5, 6, 7, 8, -1, -1, -1, -1,
! 13, 14, 15, -1, 29, -1, -1, -1, 4, 5,
! 6, 7, 8, -1, -1, -1, 29, 13, 14, 15,
! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
! 58, 59, 60, 29, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 43, 44, 45, -1, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
45, -1, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60
};
! /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
! symbol of state STATE-NUM. */
! static const unsigned short yystos[] =
{
! 0, 98, 99, 100, 0, 101, 1, 4, 5, 6,
! 7, 8, 13, 14, 15, 28, 29, 31, 32, 90,
! 102, 103, 104, 105, 120, 136, 139, 140, 141, 142,
! 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
! 153, 154, 155, 156, 162, 164, 165, 166, 167, 168,
! 177, 178, 182, 205, 206, 207, 208, 213, 297, 102,
! 90, 91, 177, 177, 177, 66, 66, 66, 3, 58,
! 66, 170, 174, 204, 8, 164, 165, 177, 182, 8,
! 164, 165, 182, 8, 164, 165, 177, 182, 8, 164,
! 165, 182, 8, 166, 167, 177, 182, 8, 166, 167,
! 182, 8, 166, 167, 177, 182, 8, 166, 167, 182,
! 8, 164, 165, 177, 182, 8, 164, 165, 182, 8,
! 164, 165, 177, 182, 8, 164, 165, 182, 8, 166,
! 167, 177, 182, 8, 166, 167, 182, 8, 166, 167,
! 177, 182, 8, 166, 167, 182, 136, 136, 90, 178,
! 3, 4, 95, 112, 95, 112, 95, 112, 102, 3,
! 9, 10, 12, 30, 34, 35, 36, 37, 38, 42,
! 48, 51, 56, 57, 58, 61, 62, 66, 92, 93,
! 113, 114, 116, 117, 118, 119, 121, 122, 128, 252,
! 297, 66, 114, 139, 140, 141, 142, 143, 144, 145,
! 146, 161, 225, 139, 140, 141, 142, 160, 163, 176,
! 177, 90, 94, 1, 28, 66, 67, 110, 171, 233,
! 4, 58, 66, 169, 172, 199, 200, 204, 170, 204,
! 216, 217, 95, 216, 95, 212, 95, 121, 121, 66,
! 66, 66, 112, 121, 1, 95, 114, 225, 121, 89,
! 94, 66, 117, 66, 117, 43, 44, 45, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, 61, 62, 65, 66, 67, 68, 1, 91,
! 241, 250, 121, 7, 8, 112, 179, 180, 181, 182,
! 89, 226, 89, 204, 204, 137, 176, 66, 176, 292,
! 6, 160, 163, 1, 130, 131, 132, 133, 240, 259,
! 176, 163, 176, 90, 94, 1, 106, 171, 66, 233,
! 90, 1, 108, 91, 1, 90, 139, 140, 141, 142,
! 143, 144, 145, 146, 159, 160, 218, 297, 209, 91,
! 210, 1, 112, 223, 224, 211, 122, 122, 225, 89,
! 89, 89, 90, 122, 225, 225, 122, 122, 125, 127,
! 124, 123, 122, 122, 122, 122, 122, 122, 122, 122,
! 122, 122, 122, 122, 112, 115, 116, 114, 112, 89,
! 33, 245, 246, 247, 89, 89, 94, 66, 58, 66,
! 227, 229, 230, 231, 232, 233, 89, 174, 204, 10,
! 293, 163, 6, 58, 96, 122, 90, 259, 240, 132,
! 134, 139, 140, 143, 144, 147, 148, 151, 152, 157,
! 158, 43, 200, 200, 137, 130, 176, 292, 130, 176,
! 136, 136, 90, 218, 216, 176, 216, 43, 94, 215,
! 223, 94, 94, 94, 95, 121, 89, 89, 114, 46,
! 122, 122, 89, 96, 112, 296, 1, 135, 234, 235,
! 236, 237, 238, 239, 240, 251, 259, 262, 263, 247,
! 89, 180, 3, 115, 163, 176, 282, 66, 233, 89,
! 1, 3, 11, 157, 158, 284, 287, 288, 290, 294,
! 295, 122, 122, 96, 96, 111, 90, 136, 90, 136,
! 175, 89, 172, 199, 259, 43, 259, 46, 199, 219,
! 221, 46, 204, 220, 222, 91, 91, 122, 224, 91,
! 215, 225, 122, 225, 129, 46, 122, 90, 94, 135,
! 262, 263, 135, 262, 263, 259, 262, 263, 135, 262,
! 263, 240, 91, 3, 4, 22, 23, 24, 25, 26,
! 27, 28, 90, 95, 112, 114, 138, 155, 156, 162,
! 243, 249, 253, 274, 275, 297, 89, 94, 89, 230,
! 231, 229, 283, 176, 282, 89, 136, 291, 291, 89,
! 90, 94, 89, 94, 96, 96, 1, 248, 253, 169,
! 170, 1, 95, 122, 183, 107, 173, 109, 122, 46,
! 176, 94, 122, 46, 176, 94, 176, 176, 176, 91,
! 89, 94, 89, 1, 65, 67, 95, 112, 122, 185,
! 186, 187, 189, 191, 192, 126, 112, 242, 122, 46,
! 90, 90, 90, 114, 58, 112, 8, 276, 259, 90,
! 136, 136, 90, 16, 18, 19, 20, 21, 254, 255,
! 257, 264, 250, 138, 116, 89, 284, 4, 58, 66,
! 201, 202, 203, 204, 228, 229, 230, 58, 66, 204,
! 228, 285, 11, 139, 140, 141, 142, 143, 144, 145,
! 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
! 156, 289, 3, 253, 90, 90, 184, 248, 183, 248,
! 176, 122, 137, 176, 122, 137, 176, 122, 112, 122,
! 190, 46, 91, 94, 214, 43, 192, 189, 122, 11,
! 46, 90, 114, 90, 66, 46, 169, 193, 199, 170,
! 196, 204, 256, 266, 258, 268, 66, 17, 1, 243,
! 261, 1, 66, 244, 89, 163, 176, 176, 66, 233,
! 66, 233, 176, 177, 163, 176, 176, 176, 136, 136,
! 185, 176, 221, 176, 222, 89, 11, 96, 185, 188,
! 187, 189, 122, 90, 114, 176, 90, 194, 90, 197,
! 66, 66, 261, 66, 114, 1, 265, 260, 262, 263,
! 114, 202, 203, 203, 292, 292, 286, 201, 204, 228,
! 204, 228, 91, 122, 91, 189, 46, 46, 89, 130,
! 130, 114, 114, 18, 114, 138, 273, 277, 89, 261,
! 244, 260, 89, 89, 284, 176, 176, 176, 96, 10,
! 67, 278, 279, 280, 90, 259, 259, 89, 89, 269,
! 90, 272, 90, 66, 112, 46, 89, 94, 195, 198,
! 267, 277, 261, 114, 96, 278, 90, 280, 253, 253,
! 261, 90, 89, 10, 46, 89, 270, 66, 10, 281,
! 90, 277, 114, 89, 94, 89, 89, 90, 10, 271,
! 261
};
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
#endif
*************** union yyalloc
*** 1842,1870 ****
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
! #define YYEMPTY -2
#define YYEOF 0
#define YYACCEPT goto yyacceptlab
! #define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
#define YYFAIL goto yyerrlab
#define YYRECOVERING() (!!yyerrstatus)
#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
yylval = (Value); \
! yychar1 = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
! yyerror ("syntax error: cannot back up"); \
YYERROR; \
} \
while (0)
--- 2089,2122 ----
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
! #define YYEMPTY (-2)
#define YYEOF 0
+
#define YYACCEPT goto yyacceptlab
! #define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
+
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
+
#define YYFAIL goto yyerrlab
+
#define YYRECOVERING() (!!yyerrstatus)
+
#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
yylval = (Value); \
! yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
! yyerror ("syntax error: cannot back up");\
YYERROR; \
} \
while (0)
*************** while (0)
*** 1872,1912 ****
#define YYTERROR 1
#define YYERRCODE 256
-
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
! are run).
!
! When YYLLOC_DEFAULT is run, CURRENT is set the location of the
! first token. By default, to implement support for ranges, extend
! its range to the last symbol. */
#ifndef YYLLOC_DEFAULT
! # define YYLLOC_DEFAULT(Current, Rhs, N) \
! Current.last_line = Rhs[N].last_line; \
! Current.last_column = Rhs[N].last_column;
#endif
-
/* YYLEX -- calling `yylex' with the right arguments. */
! #if YYPURE
! # if YYLSP_NEEDED
! # ifdef YYLEX_PARAM
! # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
! # else
! # define YYLEX yylex (&yylval, &yylloc)
! # endif
! # else /* !YYLSP_NEEDED */
! # ifdef YYLEX_PARAM
! # define YYLEX yylex (&yylval, YYLEX_PARAM)
! # else
! # define YYLEX yylex (&yylval)
! # endif
! # endif /* !YYLSP_NEEDED */
! #else /* !YYPURE */
! # define YYLEX yylex ()
! #endif /* !YYPURE */
!
/* Enable debugging if requested. */
#if YYDEBUG
--- 2124,2147 ----
#define YYTERROR 1
#define YYERRCODE 256
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
! are run). */
#ifndef YYLLOC_DEFAULT
! # define YYLLOC_DEFAULT(Current, Rhs, N) \
! Current.first_line = Rhs[1].first_line; \
! Current.first_column = Rhs[1].first_column; \
! Current.last_line = Rhs[N].last_line; \
! Current.last_column = Rhs[N].last_column;
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
! #ifdef YYLEX_PARAM
! # define YYLEX yylex (YYLEX_PARAM)
! #else
! # define YYLEX yylex ()
! #endif
/* Enable debugging if requested. */
#if YYDEBUG
*************** do { \
*** 1921,1933 ****
--- 2156,2248 ----
if (yydebug) \
YYFPRINTF Args; \
} while (0)
+
+ # define YYDSYMPRINT(Args) \
+ do { \
+ if (yydebug) \
+ yysymprint Args; \
+ } while (0)
+
+ # define YYDSYMPRINTF(Title, Token, Value, Location) \
+ do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Token, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+ } while (0)
+
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (cinluded). |
+ `------------------------------------------------------------------*/
+
+ #if defined (__STDC__) || defined (__cplusplus)
+ static void
+ yy_stack_print (short *bottom, short *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+ short *bottom;
+ short *top;
+ #endif
+ {
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+ }
+
+ # define YY_STACK_PRINT(Bottom, Top) \
+ do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+ } while (0)
+
+
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced. |
+ `------------------------------------------------*/
+
+ #if defined (__STDC__) || defined (__cplusplus)
+ static void
+ yy_reduce_print (int yyrule)
+ #else
+ static void
+ yy_reduce_print (yyrule)
+ int yyrule;
+ #endif
+ {
+ int yyi;
+ unsigned int yylineno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+ yyrule - 1, yylineno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+ }
+
+ # define YY_REDUCE_PRINT(Rule) \
+ do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+ } while (0)
+
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
+ # define YYDSYMPRINT(Args)
+ # define YYDSYMPRINTF(Title, Token, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
+
/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
*************** int yydebug;
*** 1947,1954 ****
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
! #ifdef YYERROR_VERBOSE
# ifndef yystrlen
# if defined (__GLIBC__) && defined (_STRING_H)
--- 2262,2271 ----
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
+
!
! #if YYERROR_VERBOSE
# ifndef yystrlen
# if defined (__GLIBC__) && defined (_STRING_H)
*************** yystpcpy (yydest, yysrc)
*** 1998,2083 ****
}
# endif
# endif
! #endif
- #line 315 "/usr/share/bison/bison.simple"
! /* The user can define YYPARSE_PARAM as the name of an argument to be passed
! into yyparse. The argument should have type void *.
! It should actually point to an object.
! Grammar actions can access the variable by casting it
! to the proper pointer type. */
#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
! # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
! # define YYPARSE_PARAM_DECL
# else
! # define YYPARSE_PARAM_ARG YYPARSE_PARAM
! # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
# endif
! #else /* !YYPARSE_PARAM */
! # define YYPARSE_PARAM_ARG
! # define YYPARSE_PARAM_DECL
! #endif /* !YYPARSE_PARAM */
!
! /* Prevent warning if -Wstrict-prototypes. */
! #ifdef __GNUC__
! # ifdef YYPARSE_PARAM
! int yyparse (void *);
! # else
int yyparse (void);
! # endif
#endif
- /* YY_DECL_VARIABLES -- depending whether we use a pure parser,
- variables are global, or local to YYPARSE. */
- #define YY_DECL_NON_LSP_VARIABLES \
- /* The lookahead symbol. */ \
- int yychar; \
- \
- /* The semantic value of the lookahead symbol. */ \
- YYSTYPE yylval; \
- \
- /* Number of parse errors so far. */ \
- int yynerrs;
! #if YYLSP_NEEDED
! # define YY_DECL_VARIABLES \
! YY_DECL_NON_LSP_VARIABLES \
! \
! /* Location data for the lookahead symbol. */ \
! YYLTYPE yylloc;
! #else
! # define YY_DECL_VARIABLES \
! YY_DECL_NON_LSP_VARIABLES
! #endif
- /* If nonreentrant, generate the variables here. */
- #if !YYPURE
- YY_DECL_VARIABLES
- #endif /* !YYPURE */
int
! yyparse (YYPARSE_PARAM_ARG)
! YYPARSE_PARAM_DECL
! {
! /* If reentrant, generate the variables here. */
! #if YYPURE
! YY_DECL_VARIABLES
! #endif /* !YYPURE */
register int yystate;
register int yyn;
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */
! int yychar1 = 0;
/* Three stacks and their tools:
`yyss': related to states,
--- 2315,2448 ----
}
# endif
# endif
!
! #endif /* !YYERROR_VERBOSE */
!
+ #if YYDEBUG
+ /*--------------------------------.
+ | Print this symbol on YYOUTPUT. |
+ `--------------------------------*/
! #if defined (__STDC__) || defined (__cplusplus)
! static void
! yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
! #else
! static void
! yysymprint (yyoutput, yytype, yyvaluep)
! FILE *yyoutput;
! int yytype;
! YYSTYPE *yyvaluep;
! #endif
! {
! /* Pacify ``unused variable'' warnings. */
! (void) yyvaluep;
!
! if (yytype < YYNTOKENS)
! {
! YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
! # ifdef YYPRINT
! YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
! # endif
! }
! else
! YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
!
! switch (yytype)
! {
! default:
! break;
! }
! YYFPRINTF (yyoutput, ")");
! }
!
! #endif /* ! YYDEBUG */
! /*-----------------------------------------------.
! | Release the memory associated to this symbol. |
! `-----------------------------------------------*/
!
! #if defined (__STDC__) || defined (__cplusplus)
! static void
! yydestruct (int yytype, YYSTYPE *yyvaluep)
! #else
! static void
! yydestruct (yytype, yyvaluep)
! int yytype;
! YYSTYPE *yyvaluep;
! #endif
! {
! /* Pacify ``unused variable'' warnings. */
! (void) yyvaluep;
!
! switch (yytype)
! {
!
! default:
! break;
! }
! }
!
!
! /* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
! int yyparse (void *YYPARSE_PARAM);
# else
! int yyparse ();
# endif
! #else /* ! YYPARSE_PARAM */
! #if defined (__STDC__) || defined (__cplusplus)
int yyparse (void);
! #else
! int yyparse ();
#endif
+ #endif /* ! YYPARSE_PARAM */
! /* The lookahead symbol. */
! int yychar;
+ /* The semantic value of the lookahead symbol. */
+ YYSTYPE yylval;
+
+ /* Number of syntax errors so far. */
+ int yynerrs;
+ /*----------.
+ | yyparse. |
+ `----------*/
+
+ #ifdef YYPARSE_PARAM
+ # if defined (__STDC__) || defined (__cplusplus)
+ int yyparse (void *YYPARSE_PARAM)
+ # else
+ int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+ # endif
+ #else /* ! YYPARSE_PARAM */
+ #if defined (__STDC__) || defined (__cplusplus)
int
! yyparse (void)
! #else
! int
! yyparse ()
+ #endif
+ #endif
+ {
+
register int yystate;
register int yyn;
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */
! int yytoken = 0;
/* Three stacks and their tools:
`yyss': related to states,
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2087,2093 ****
Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
! /* The state stack. */
short yyssa[YYINITDEPTH];
short *yyss = yyssa;
register short *yyssp;
--- 2452,2458 ----
Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
! /* The state stack. */
short yyssa[YYINITDEPTH];
short *yyss = yyssa;
register short *yyssp;
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2097,2127 ****
YYSTYPE *yyvs = yyvsa;
register YYSTYPE *yyvsp;
- #if YYLSP_NEEDED
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
- #endif
- #if YYLSP_NEEDED
- # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
- #else
- # define YYPOPSTACK (yyvsp--, yyssp--)
- #endif
! YYSIZE_T yystacksize = YYINITDEPTH;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
! #if YYLSP_NEEDED
! YYLTYPE yyloc;
! #endif
/* When reducing, the number of symbols on the RHS of the reduced
! rule. */
int yylen;
YYDPRINTF ((stderr, "Starting parse\n"));
--- 2462,2480 ----
YYSTYPE *yyvs = yyvsa;
register YYSTYPE *yyvsp;
! #define YYPOPSTACK (yyvsp--, yyssp--)
+ YYSIZE_T yystacksize = YYINITDEPTH;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
!
/* When reducing, the number of symbols on the RHS of the reduced
! rule. */
int yylen;
YYDPRINTF ((stderr, "Starting parse\n"));
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2138,2146 ****
yyssp = yyss;
yyvsp = yyvs;
! #if YYLSP_NEEDED
! yylsp = yyls;
! #endif
goto yysetstate;
/*------------------------------------------------------------.
--- 2491,2497 ----
yyssp = yyss;
yyvsp = yyvs;
!
goto yysetstate;
/*------------------------------------------------------------.
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2155,2161 ****
yysetstate:
*yyssp = yystate;
! if (yyssp >= yyss + yystacksize - 1)
{
/* Get the current used size of the three stacks, in elements. */
YYSIZE_T yysize = yyssp - yyss + 1;
--- 2506,2512 ----
yysetstate:
*yyssp = yystate;
! if (yyss + yystacksize - 1 <= yyssp)
{
/* Get the current used size of the three stacks, in elements. */
YYSIZE_T yysize = yyssp - yyss + 1;
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2168,2191 ****
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
! data in use in that stack, in bytes. */
! # if YYLSP_NEEDED
! YYLTYPE *yyls1 = yyls;
! /* This used to be a conditional around just the two extra args,
! but that might be undefined if yyoverflow is a macro. */
! yyoverflow ("parser stack overflow",
! &yyss1, yysize * sizeof (*yyssp),
! &yyvs1, yysize * sizeof (*yyvsp),
! &yyls1, yysize * sizeof (*yylsp),
! &yystacksize);
! yyls = yyls1;
! # else
yyoverflow ("parser stack overflow",
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
&yystacksize);
! # endif
yyss = yyss1;
yyvs = yyvs1;
}
--- 2519,2535 ----
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
+
/* Each stack pointer address is followed by the size of the
! data in use in that stack, in bytes. This used to be a
! conditional around just the two extra args, but that might
! be undefined if yyoverflow is a macro. */
yyoverflow ("parser stack overflow",
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
+
&yystacksize);
!
yyss = yyss1;
yyvs = yyvs1;
}
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2194,2203 ****
goto yyoverflowlab;
# else
/* Extend the stack our own way. */
! if (yystacksize >= YYMAXDEPTH)
goto yyoverflowlab;
yystacksize *= 2;
! if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
{
--- 2538,2547 ----
goto yyoverflowlab;
# else
/* Extend the stack our own way. */
! if (YYMAXDEPTH <= yystacksize)
goto yyoverflowlab;
yystacksize *= 2;
! if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
{
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2208,2217 ****
goto yyoverflowlab;
YYSTACK_RELOCATE (yyss);
YYSTACK_RELOCATE (yyvs);
! # if YYLSP_NEEDED
! YYSTACK_RELOCATE (yyls);
! # endif
! # undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
--- 2552,2559 ----
goto yyoverflowlab;
YYSTACK_RELOCATE (yyss);
YYSTACK_RELOCATE (yyvs);
!
! # undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2220,2233 ****
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
! #if YYLSP_NEEDED
! yylsp = yyls + yysize - 1;
! #endif
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
! if (yyssp >= yyss + yystacksize - 1)
YYABORT;
}
--- 2562,2573 ----
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
!
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
! if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
*************** yyparse (YYPARSE_PARAM_ARG)
*** 2235,2241 ****
goto yybackup;
-
/*-----------.
| yybackup. |
`-----------*/
--- 2575,2580 ----
*************** yybackup:
*** 2248,2335 ****
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
! if (yyn == YYFLAG)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
! /* yychar is either YYEMPTY or YYEOF
! or a valid token in external form. */
!
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
! /* Convert token to internal form (in yychar1) for indexing tables with */
!
! if (yychar <= 0) /* This means end of input. */
{
! yychar1 = 0;
! yychar = YYEOF; /* Don't call YYLEX any more */
!
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
! yychar1 = YYTRANSLATE (yychar);
!
! #if YYDEBUG
! /* We have to keep this `#if YYDEBUG', since we use variables
! which are defined only if `YYDEBUG' is set. */
! if (yydebug)
! {
! YYFPRINTF (stderr, "Next token is %d (%s",
! yychar, yytname[yychar1]);
! /* Give the individual parser a way to print the precise
! meaning of a token, for further debugging info. */
! # ifdef YYPRINT
! YYPRINT (stderr, yychar, yylval);
! # endif
! YYFPRINTF (stderr, ")\n");
! }
! #endif
}
! yyn += yychar1;
! if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
goto yydefault;
-
yyn = yytable[yyn];
!
! /* yyn is what to do for this token type in this state.
! Negative => reduce, -yyn is rule number.
! Positive => shift, yyn is new state.
! New state is final state => don't bother to shift,
! just return success.
! 0, or most negative number => error. */
!
! if (yyn < 0)
{
! if (yyn == YYFLAG)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
- else if (yyn == 0)
- goto yyerrlab;
if (yyn == YYFINAL)
YYACCEPT;
/* Shift the lookahead token. */
! YYDPRINTF ((stderr, "Shifting token %d (%s), ",
! yychar, yytname[yychar1]));
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
! #if YYLSP_NEEDED
! *++yylsp = yylloc;
! #endif
/* Count tokens shifted since error; after three, turn off error
status. */
--- 2587,2641 ----
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
! if (yyn == YYPACT_NINF)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
! /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
! if (yychar <= YYEOF)
{
! yychar = yytoken = YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
! yytoken = YYTRANSLATE (yychar);
! YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
}
! /* If the proper action on seeing token YYTOKEN is to reduce or to
! detect an error, take that action. */
! yyn += yytoken;
! if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
goto yydefault;
yyn = yytable[yyn];
! if (yyn <= 0)
{
! if (yyn == 0 || yyn == YYTABLE_NINF)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
if (yyn == YYFINAL)
YYACCEPT;
/* Shift the lookahead token. */
! YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
!
/* Count tokens shifted since error; after three, turn off error
status. */
*************** yyreduce:
*** 2360,2795 ****
/* If YYLEN is nonzero, implement the default value of the action:
`$$ = $1'.
! Otherwise, the following line sets YYVAL to the semantic value of
! the lookahead token. This behavior is undocumented and Bison
users should not rely upon it. Assigning to YYVAL
unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen];
- #if YYLSP_NEEDED
- /* Similarly for the default location. Let the user run additional
- commands if for instance locations are ranges. */
- yyloc = yylsp[1-yylen];
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
- #endif
! #if YYDEBUG
! /* We have to keep this `#if YYDEBUG', since we use variables which
! are defined only if `YYDEBUG' is set. */
! if (yydebug)
{
! int yyi;
!
! YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
! yyn, yyrline[yyn]);
!
! /* Print the symbols being reduced, and their result. */
! for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
! YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
! YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
! }
! #endif
!
! switch (yyn) {
!
! case 1:
#line 319 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids an empty source file");
! ;
! break;}
! case 3:
#line 330 "c-parse.y"
! {yyval.ttype = NULL_TREE; ;
! break;}
! case 5:
#line 331 "c-parse.y"
! {yyval.ttype = NULL_TREE; ggc_collect(); ;
! break;}
! case 7:
#line 336 "c-parse.y"
! { parsing_iso_function_signature = false; ;
! break;}
! case 10:
#line 343 "c-parse.y"
! { STRIP_NOPS (yyvsp[-2].ttype);
if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
|| TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
assemble_asm (yyvsp[-2].ttype);
else
! error ("argument of `asm' is not a constant string"); ;
! break;}
! case 11:
#line 351 "c-parse.y"
! { RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
! break;}
! case 12:
#line 356 "c-parse.y"
! { if (pedantic)
error ("ISO C forbids data definition with no type or storage class");
else
warning ("data definition has no type or storage class");
! POP_DECLSPEC_STACK; ;
! break;}
! case 13:
#line 363 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 14:
#line 365 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 15:
#line 367 "c-parse.y"
! { shadow_tag (yyvsp[-1].ttype); ;
! break;}
! case 18:
#line 371 "c-parse.y"
! { if (pedantic)
! pedwarn ("ISO C does not allow extra `;' outside of a function"); ;
! break;}
! case 19:
#line 377 "c-parse.y"
! { if (! start_function (current_declspecs, yyvsp[0].ttype,
all_prefix_attributes))
YYERROR1;
! ;
! break;}
! case 20:
#line 382 "c-parse.y"
! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
! store_parm_decls (); ;
! break;}
! case 21:
#line 385 "c-parse.y"
! { finish_function ();
! POP_DECLSPEC_STACK; ;
! break;}
! case 22:
#line 388 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 23:
#line 390 "c-parse.y"
! { if (! start_function (current_declspecs, yyvsp[0].ttype,
all_prefix_attributes))
YYERROR1;
! ;
! break;}
! case 24:
#line 395 "c-parse.y"
! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
! store_parm_decls (); ;
! break;}
! case 25:
#line 398 "c-parse.y"
! { finish_function ();
! POP_DECLSPEC_STACK; ;
! break;}
! case 26:
#line 401 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 27:
#line 403 "c-parse.y"
! { if (! start_function (NULL_TREE, yyvsp[0].ttype,
all_prefix_attributes))
YYERROR1;
! ;
! break;}
! case 28:
#line 408 "c-parse.y"
! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
! store_parm_decls (); ;
! break;}
! case 29:
#line 411 "c-parse.y"
! { finish_function ();
! POP_DECLSPEC_STACK; ;
! break;}
! case 30:
#line 414 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 33:
#line 423 "c-parse.y"
! { yyval.code = ADDR_EXPR; ;
! break;}
! case 34:
#line 425 "c-parse.y"
! { yyval.code = NEGATE_EXPR; ;
! break;}
! case 35:
#line 427 "c-parse.y"
! { yyval.code = CONVERT_EXPR;
if (warn_traditional && !in_system_header)
warning ("traditional C rejects the unary plus operator");
! ;
! break;}
! case 36:
#line 432 "c-parse.y"
! { yyval.code = PREINCREMENT_EXPR; ;
! break;}
! case 37:
#line 434 "c-parse.y"
! { yyval.code = PREDECREMENT_EXPR; ;
! break;}
! case 38:
#line 436 "c-parse.y"
! { yyval.code = BIT_NOT_EXPR; ;
! break;}
! case 39:
#line 438 "c-parse.y"
! { yyval.code = TRUTH_NOT_EXPR; ;
! break;}
! case 40:
#line 442 "c-parse.y"
! { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
! break;}
! case 41:
#line 447 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 43:
#line 453 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
! break;}
! case 44:
#line 455 "c-parse.y"
! { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
! break;}
! case 46:
#line 461 "c-parse.y"
! { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
! break;}
! case 47:
#line 464 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
! break;}
! case 48:
#line 467 "c-parse.y"
! { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
! overflow_warning (yyval.ttype); ;
! break;}
! case 49:
#line 471 "c-parse.y"
! { yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); ;
! break;}
! case 50:
#line 473 "c-parse.y"
! { skip_evaluation--;
if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
&& DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
error ("`sizeof' applied to a bit-field");
! yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
! break;}
! case 51:
#line 479 "c-parse.y"
! { skip_evaluation--;
! yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
! break;}
! case 52:
#line 482 "c-parse.y"
! { skip_evaluation--;
! yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
! break;}
! case 53:
#line 485 "c-parse.y"
! { skip_evaluation--;
! yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
! break;}
! case 54:
#line 488 "c-parse.y"
! { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
! break;}
! case 55:
#line 490 "c-parse.y"
! { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
! break;}
! case 56:
#line 494 "c-parse.y"
! { skip_evaluation++; ;
! break;}
! case 57:
#line 498 "c-parse.y"
! { skip_evaluation++; ;
! break;}
! case 58:
#line 502 "c-parse.y"
! { skip_evaluation++; ;
! break;}
! case 60:
#line 508 "c-parse.y"
! { yyval.ttype = c_cast_expr (yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 62:
#line 514 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 63:
#line 516 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 64:
#line 518 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 65:
#line 520 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 66:
#line 522 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 67:
#line 524 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 68:
#line 526 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 69:
#line 528 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 70:
#line 530 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 71:
#line 532 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 72:
#line 534 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 73:
#line 536 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 74:
#line 538 "c-parse.y"
! { yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[-1].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_false_node; ;
! break;}
! case 75:
#line 542 "c-parse.y"
! { skip_evaluation -= yyvsp[-3].ttype == truthvalue_false_node;
! yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
! break;}
! case 76:
#line 545 "c-parse.y"
! { yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[-1].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_true_node; ;
! break;}
! case 77:
#line 549 "c-parse.y"
! { skip_evaluation -= yyvsp[-3].ttype == truthvalue_true_node;
! yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
! break;}
! case 78:
#line 552 "c-parse.y"
! { yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[-1].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_false_node; ;
! break;}
! case 79:
#line 556 "c-parse.y"
! { skip_evaluation += ((yyvsp[-4].ttype == truthvalue_true_node)
! - (yyvsp[-4].ttype == truthvalue_false_node)); ;
! break;}
! case 80:
#line 559 "c-parse.y"
! { skip_evaluation -= yyvsp[-6].ttype == truthvalue_true_node;
! yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
! break;}
! case 81:
#line 562 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids omitting the middle term of a ?: expression");
/* Make sure first operand is calculated only once. */
yyvsp[0].ttype = save_expr (yyvsp[-1].ttype);
yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[0].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_true_node; ;
! break;}
! case 82:
#line 570 "c-parse.y"
! { skip_evaluation -= yyvsp[-4].ttype == truthvalue_true_node;
! yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
! break;}
! case 83:
#line 573 "c-parse.y"
! { char class;
yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR);
! ;
! break;}
! case 84:
#line 580 "c-parse.y"
! { char class;
yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
/* This inhibits warnings in
c_common_truthvalue_conversion. */
class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK);
! ;
! break;}
! case 85:
#line 592 "c-parse.y"
! {
if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.ttype = build_external_ref (yyvsp[0].ttype, yychar == '(');
! ;
! break;}
! case 88:
#line 600 "c-parse.y"
! { yyval.ttype = fname_decl (C_RID_CODE (yyval.ttype), yyval.ttype); ;
! break;}
! case 89:
#line 602 "c-parse.y"
! { start_init (NULL_TREE, NULL, 0);
yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
! really_start_incremental_init (yyvsp[-2].ttype); ;
! break;}
! case 90:
#line 606 "c-parse.y"
! { tree constructor = pop_init_level (0);
tree type = yyvsp[-5].ttype;
finish_init ();
if (pedantic && ! flag_isoc99)
pedwarn ("ISO C90 forbids compound literals");
yyval.ttype = build_compound_literal (type, constructor);
! ;
! break;}
! case 91:
#line 615 "c-parse.y"
! { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
! yyval.ttype = yyvsp[-1].ttype; ;
! break;}
! case 92:
#line 620 "c-parse.y"
! { yyval.ttype = error_mark_node; ;
! break;}
! case 93:
#line 622 "c-parse.y"
! { tree saved_last_tree;
if (pedantic)
pedwarn ("ISO C forbids braced-groups within expressions");
--- 2666,3156 ----
/* If YYLEN is nonzero, implement the default value of the action:
`$$ = $1'.
! Otherwise, the following line sets YYVAL to garbage.
! This behavior is undocumented and Bison
users should not rely upon it. Assigning to YYVAL
unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen];
! YY_REDUCE_PRINT (yyn);
! switch (yyn)
{
! case 2:
#line 319 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids an empty source file");
! ;}
! break;
!
! case 4:
#line 330 "c-parse.y"
! {yyval.ttype = NULL_TREE; ;}
! break;
!
! case 6:
#line 331 "c-parse.y"
! {yyval.ttype = NULL_TREE; ggc_collect(); ;}
! break;
!
! case 8:
#line 336 "c-parse.y"
! { parsing_iso_function_signature = false; ;}
! break;
!
! case 11:
#line 343 "c-parse.y"
! { STRIP_NOPS (yyvsp[-2].ttype);
if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
|| TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
assemble_asm (yyvsp[-2].ttype);
else
! error ("argument of `asm' is not a constant string"); ;}
! break;
!
! case 12:
#line 351 "c-parse.y"
! { RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;}
! break;
!
! case 13:
#line 356 "c-parse.y"
! { if (pedantic)
error ("ISO C forbids data definition with no type or storage class");
else
warning ("data definition has no type or storage class");
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 14:
#line 363 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 15:
#line 365 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 16:
#line 367 "c-parse.y"
! { shadow_tag (yyvsp[-1].ttype); ;}
! break;
!
! case 19:
#line 371 "c-parse.y"
! { if (pedantic)
! pedwarn ("ISO C does not allow extra `;' outside of a function"); ;}
! break;
!
! case 20:
#line 377 "c-parse.y"
! { if (! start_function (current_declspecs, yyvsp[0].ttype,
all_prefix_attributes))
YYERROR1;
! ;}
! break;
!
! case 21:
#line 382 "c-parse.y"
! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
! store_parm_decls (); ;}
! break;
!
! case 22:
#line 385 "c-parse.y"
! { finish_function ();
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 23:
#line 388 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 24:
#line 390 "c-parse.y"
! { if (! start_function (current_declspecs, yyvsp[0].ttype,
all_prefix_attributes))
YYERROR1;
! ;}
! break;
!
! case 25:
#line 395 "c-parse.y"
! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
! store_parm_decls (); ;}
! break;
!
! case 26:
#line 398 "c-parse.y"
! { finish_function ();
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 27:
#line 401 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 28:
#line 403 "c-parse.y"
! { if (! start_function (NULL_TREE, yyvsp[0].ttype,
all_prefix_attributes))
YYERROR1;
! ;}
! break;
!
! case 29:
#line 408 "c-parse.y"
! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
! store_parm_decls (); ;}
! break;
!
! case 30:
#line 411 "c-parse.y"
! { finish_function ();
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 31:
#line 414 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 34:
#line 423 "c-parse.y"
! { yyval.code = ADDR_EXPR; ;}
! break;
!
! case 35:
#line 425 "c-parse.y"
! { yyval.code = NEGATE_EXPR; ;}
! break;
!
! case 36:
#line 427 "c-parse.y"
! { yyval.code = CONVERT_EXPR;
if (warn_traditional && !in_system_header)
warning ("traditional C rejects the unary plus operator");
! ;}
! break;
!
! case 37:
#line 432 "c-parse.y"
! { yyval.code = PREINCREMENT_EXPR; ;}
! break;
!
! case 38:
#line 434 "c-parse.y"
! { yyval.code = PREDECREMENT_EXPR; ;}
! break;
!
! case 39:
#line 436 "c-parse.y"
! { yyval.code = BIT_NOT_EXPR; ;}
! break;
!
! case 40:
#line 438 "c-parse.y"
! { yyval.code = TRUTH_NOT_EXPR; ;}
! break;
!
! case 41:
#line 442 "c-parse.y"
! { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;}
! break;
!
! case 42:
#line 447 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 44:
#line 453 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;}
! break;
!
! case 45:
#line 455 "c-parse.y"
! { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;}
! break;
!
! case 47:
#line 461 "c-parse.y"
! { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;}
! break;
!
! case 48:
#line 464 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;}
! break;
!
! case 49:
#line 467 "c-parse.y"
! { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
! overflow_warning (yyval.ttype); ;}
! break;
!
! case 50:
#line 471 "c-parse.y"
! { yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); ;}
! break;
!
! case 51:
#line 473 "c-parse.y"
! { skip_evaluation--;
if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
&& DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
error ("`sizeof' applied to a bit-field");
! yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;}
! break;
!
! case 52:
#line 479 "c-parse.y"
! { skip_evaluation--;
! yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;}
! break;
!
! case 53:
#line 482 "c-parse.y"
! { skip_evaluation--;
! yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;}
! break;
!
! case 54:
#line 485 "c-parse.y"
! { skip_evaluation--;
! yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;}
! break;
!
! case 55:
#line 488 "c-parse.y"
! { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;}
! break;
!
! case 56:
#line 490 "c-parse.y"
! { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;}
! break;
!
! case 57:
#line 494 "c-parse.y"
! { skip_evaluation++; ;}
! break;
!
! case 58:
#line 498 "c-parse.y"
! { skip_evaluation++; ;}
! break;
!
! case 59:
#line 502 "c-parse.y"
! { skip_evaluation++; ;}
! break;
!
! case 61:
#line 508 "c-parse.y"
! { yyval.ttype = c_cast_expr (yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 63:
#line 514 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 64:
#line 516 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 65:
#line 518 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 66:
#line 520 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 67:
#line 522 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 68:
#line 524 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 69:
#line 526 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 70:
#line 528 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 71:
#line 530 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 72:
#line 532 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 73:
#line 534 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 74:
#line 536 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 75:
#line 538 "c-parse.y"
! { yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[-1].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_false_node; ;}
! break;
!
! case 76:
#line 542 "c-parse.y"
! { skip_evaluation -= yyvsp[-3].ttype == truthvalue_false_node;
! yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 77:
#line 545 "c-parse.y"
! { yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[-1].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_true_node; ;}
! break;
!
! case 78:
#line 549 "c-parse.y"
! { skip_evaluation -= yyvsp[-3].ttype == truthvalue_true_node;
! yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 79:
#line 552 "c-parse.y"
! { yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[-1].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_false_node; ;}
! break;
!
! case 80:
#line 556 "c-parse.y"
! { skip_evaluation += ((yyvsp[-4].ttype == truthvalue_true_node)
! - (yyvsp[-4].ttype == truthvalue_false_node)); ;}
! break;
!
! case 81:
#line 559 "c-parse.y"
! { skip_evaluation -= yyvsp[-6].ttype == truthvalue_true_node;
! yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 82:
#line 562 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids omitting the middle term of a ?: expression");
/* Make sure first operand is calculated only once. */
yyvsp[0].ttype = save_expr (yyvsp[-1].ttype);
yyvsp[-1].ttype = c_common_truthvalue_conversion
(default_conversion (yyvsp[0].ttype));
! skip_evaluation += yyvsp[-1].ttype == truthvalue_true_node; ;}
! break;
!
! case 83:
#line 570 "c-parse.y"
! { skip_evaluation -= yyvsp[-4].ttype == truthvalue_true_node;
! yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 84:
#line 573 "c-parse.y"
! { char class;
yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR);
! ;}
! break;
!
! case 85:
#line 580 "c-parse.y"
! { char class;
yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
/* This inhibits warnings in
c_common_truthvalue_conversion. */
class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK);
! ;}
! break;
!
! case 86:
#line 592 "c-parse.y"
! {
if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.ttype = build_external_ref (yyvsp[0].ttype, yychar == '(');
! ;}
! break;
!
! case 89:
#line 600 "c-parse.y"
! { yyval.ttype = fname_decl (C_RID_CODE (yyval.ttype), yyval.ttype); ;}
! break;
!
! case 90:
#line 602 "c-parse.y"
! { start_init (NULL_TREE, NULL, 0);
yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
! really_start_incremental_init (yyvsp[-2].ttype); ;}
! break;
!
! case 91:
#line 606 "c-parse.y"
! { tree constructor = pop_init_level (0);
tree type = yyvsp[-5].ttype;
finish_init ();
if (pedantic && ! flag_isoc99)
pedwarn ("ISO C90 forbids compound literals");
yyval.ttype = build_compound_literal (type, constructor);
! ;}
! break;
!
! case 92:
#line 615 "c-parse.y"
! { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
! yyval.ttype = yyvsp[-1].ttype; ;}
! break;
!
! case 93:
#line 620 "c-parse.y"
! { yyval.ttype = error_mark_node; ;}
! break;
!
! case 94:
#line 622 "c-parse.y"
! { tree saved_last_tree;
if (pedantic)
pedwarn ("ISO C forbids braced-groups within expressions");
*************** case 93:
*** 2801,2827 ****
last_expr_type = void_type_node;
yyval.ttype = build1 (STMT_EXPR, last_expr_type, yyvsp[-2].ttype);
TREE_SIDE_EFFECTS (yyval.ttype) = 1;
! ;
! break;}
! case 94:
#line 636 "c-parse.y"
! {
last_tree = COMPOUND_BODY (yyvsp[-2].ttype);
TREE_CHAIN (last_tree) = NULL_TREE;
yyval.ttype = error_mark_node;
! ;
! break;}
! case 95:
#line 642 "c-parse.y"
! { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
! break;}
! case 96:
#line 644 "c-parse.y"
! { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ;
! break;}
! case 97:
#line 647 "c-parse.y"
! {
tree c;
c = fold (yyvsp[-5].ttype);
--- 3162,3192 ----
last_expr_type = void_type_node;
yyval.ttype = build1 (STMT_EXPR, last_expr_type, yyvsp[-2].ttype);
TREE_SIDE_EFFECTS (yyval.ttype) = 1;
! ;}
! break;
!
! case 95:
#line 636 "c-parse.y"
! {
last_tree = COMPOUND_BODY (yyvsp[-2].ttype);
TREE_CHAIN (last_tree) = NULL_TREE;
yyval.ttype = error_mark_node;
! ;}
! break;
!
! case 96:
#line 642 "c-parse.y"
! { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;}
! break;
!
! case 97:
#line 644 "c-parse.y"
! { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ;}
! break;
!
! case 98:
#line 647 "c-parse.y"
! {
tree c;
c = fold (yyvsp[-5].ttype);
*************** case 97:
*** 2829,2839 ****
if (TREE_CODE (c) != INTEGER_CST)
error ("first argument to __builtin_choose_expr not a constant");
yyval.ttype = integer_zerop (c) ? yyvsp[-1].ttype : yyvsp[-3].ttype;
! ;
! break;}
! case 98:
#line 657 "c-parse.y"
! {
tree e1, e2;
e1 = TYPE_MAIN_VARIANT (groktypename (yyvsp[-3].ttype));
--- 3194,3205 ----
if (TREE_CODE (c) != INTEGER_CST)
error ("first argument to __builtin_choose_expr not a constant");
yyval.ttype = integer_zerop (c) ? yyvsp[-1].ttype : yyvsp[-3].ttype;
! ;}
! break;
!
! case 99:
#line 657 "c-parse.y"
! {
tree e1, e2;
e1 = TYPE_MAIN_VARIANT (groktypename (yyvsp[-3].ttype));
*************** case 98:
*** 2841,2883 ****
yyval.ttype = comptypes (e1, e2, COMPARE_STRICT)
? build_int_2 (1, 0) : build_int_2 (0, 0);
! ;
! break;}
! case 99:
#line 667 "c-parse.y"
! { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
! break;}
! case 100:
#line 669 "c-parse.y"
! {
yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
! ;
! break;}
! case 101:
#line 673 "c-parse.y"
! {
tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
! ;
! break;}
! case 102:
#line 679 "c-parse.y"
! { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
! break;}
! case 103:
#line 681 "c-parse.y"
! { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
! break;}
! case 104:
#line 686 "c-parse.y"
! {
parsing_iso_function_signature = false; /* Reset after decls. */
! ;
! break;}
! case 105:
#line 693 "c-parse.y"
! {
if (warn_traditional && !in_system_header
&& parsing_iso_function_signature)
warning ("traditional C rejects ISO C style function definitions");
--- 3207,3256 ----
yyval.ttype = comptypes (e1, e2, COMPARE_STRICT)
? build_int_2 (1, 0) : build_int_2 (0, 0);
! ;}
! break;
!
! case 100:
#line 667 "c-parse.y"
! { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;}
! break;
!
! case 101:
#line 669 "c-parse.y"
! {
yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
! ;}
! break;
!
! case 102:
#line 673 "c-parse.y"
! {
tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
! ;}
! break;
!
! case 103:
#line 679 "c-parse.y"
! { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;}
! break;
!
! case 104:
#line 681 "c-parse.y"
! { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;}
! break;
!
! case 105:
#line 686 "c-parse.y"
! {
parsing_iso_function_signature = false; /* Reset after decls. */
! ;}
! break;
!
! case 106:
#line 693 "c-parse.y"
! {
if (warn_traditional && !in_system_header
&& parsing_iso_function_signature)
warning ("traditional C rejects ISO C style function definitions");
*************** case 105:
*** 2885,3580 ****
&& !parsing_iso_function_signature)
warning ("old-style parameter declaration");
parsing_iso_function_signature = false; /* Reset after warning. */
! ;
! break;}
! case 106:
#line 703 "c-parse.y"
! {
if (warn_old_style_definition && !in_system_header)
warning ("old-style parameter declaration");
! ;
! break;}
! case 107:
#line 714 "c-parse.y"
! { ;
! break;}
! case 112:
#line 730 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 113:
#line 732 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 114:
#line 734 "c-parse.y"
! { shadow_tag_warned (yyvsp[-1].ttype, 1);
! pedwarn ("empty declaration"); ;
! break;}
! case 115:
#line 737 "c-parse.y"
! { pedwarn ("empty declaration"); ;
! break;}
! case 116:
#line 746 "c-parse.y"
! { ;
! break;}
! case 117:
#line 754 "c-parse.y"
! { pending_xref_error ();
PUSH_DECLSPEC_STACK;
split_specs_attrs (yyvsp[0].ttype,
¤t_declspecs, &prefix_attributes);
! all_prefix_attributes = prefix_attributes; ;
! break;}
! case 118:
#line 765 "c-parse.y"
! { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ;
! break;}
! case 119:
#line 770 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 120:
#line 772 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 121:
#line 774 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 122:
#line 776 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 123:
#line 778 "c-parse.y"
! { shadow_tag (yyvsp[-1].ttype); ;
! break;}
! case 124:
#line 780 "c-parse.y"
! { RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
! break;}
! case 125:
#line 837 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 126:
#line 840 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 127:
#line 843 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 128:
#line 849 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 129:
#line 855 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 130:
#line 858 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 131:
#line 864 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 0; ;
! break;}
! case 132:
#line 867 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 133:
#line 873 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 134:
#line 876 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 135:
#line 879 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 136:
#line 882 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 137:
#line 885 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 138:
#line 888 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 139:
#line 891 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 140:
#line 897 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 141:
#line 900 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 142:
#line 903 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 143:
#line 906 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 144:
#line 909 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 145:
#line 912 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 146:
#line 918 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 147:
#line 921 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 148:
#line 924 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 149:
#line 927 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 150:
#line 930 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 151:
#line 933 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 152:
#line 939 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 153:
#line 942 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 154:
#line 945 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 155:
#line 948 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 156:
#line 951 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 157:
#line 957 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 0; ;
! break;}
! case 158:
#line 960 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 159:
#line 963 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 160:
#line 966 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 161:
#line 972 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 162:
#line 978 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 163:
#line 984 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 164:
#line 993 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 165:
#line 999 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 166:
#line 1002 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 167:
#line 1005 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 168:
#line 1011 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 169:
#line 1017 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 170:
#line 1023 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 171:
#line 1032 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 172:
#line 1038 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 173:
#line 1041 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 174:
#line 1044 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 175:
#line 1047 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 176:
#line 1050 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 177:
#line 1053 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 178:
#line 1056 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 179:
#line 1062 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 180:
#line 1068 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 181:
#line 1074 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 182:
#line 1083 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 183:
#line 1086 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 184:
#line 1089 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 185:
#line 1092 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 186:
#line 1095 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 187:
#line 1101 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 188:
#line 1104 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 189:
#line 1107 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 190:
#line 1110 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 191:
#line 1113 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 192:
#line 1116 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 193:
#line 1119 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 194:
#line 1125 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 195:
#line 1131 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 196:
#line 1137 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 197:
#line 1146 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 198:
#line 1149 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 199:
#line 1152 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 200:
#line 1155 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 201:
#line 1158 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 258:
#line 1246 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 259:
#line 1248 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 263:
#line 1283 "c-parse.y"
! { OBJC_NEED_RAW_IDENTIFIER (1); ;
! break;}
! case 266:
#line 1293 "c-parse.y"
! { /* For a typedef name, record the meaning, not the name.
In case of `foo foo, bar;'. */
! yyval.ttype = lookup_name (yyvsp[0].ttype); ;
! break;}
! case 267:
#line 1297 "c-parse.y"
! { skip_evaluation--;
if (TREE_CODE (yyvsp[-1].ttype) == COMPONENT_REF
&& DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[-1].ttype, 1)))
error ("`typeof' applied to a bit-field");
! yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
! break;}
! case 268:
#line 1303 "c-parse.y"
! { skip_evaluation--; yyval.ttype = groktypename (yyvsp[-1].ttype); ;
! break;}
! case 273:
#line 1320 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 274:
#line 1322 "c-parse.y"
! { yyval.ttype = yyvsp[-1].ttype; ;
! break;}
! case 275:
#line 1327 "c-parse.y"
! { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
! start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
! break;}
! case 276:
#line 1332 "c-parse.y"
! { finish_init ();
! finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
! break;}
! case 277:
#line 1335 "c-parse.y"
! { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
! ;
! break;}
! case 278:
#line 1343 "c-parse.y"
! { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
! start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
! break;}
! case 279:
#line 1348 "c-parse.y"
! { finish_init ();
! finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
! break;}
! case 280:
#line 1351 "c-parse.y"
! { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
! finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
! break;}
! case 281:
#line 1359 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 282:
#line 1361 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 283:
#line 1366 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 284:
#line 1368 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 285:
#line 1373 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype; ;
! break;}
! case 286:
#line 1378 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 287:
#line 1380 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 288:
#line 1385 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 289:
#line 1387 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 290:
#line 1389 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
! break;}
! case 291:
#line 1391 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
! break;}
! case 292:
#line 1393 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
! break;}
! case 300:
#line 1416 "c-parse.y"
! { really_start_incremental_init (NULL_TREE); ;
! break;}
! case 301:
#line 1418 "c-parse.y"
! { yyval.ttype = pop_init_level (0); ;
! break;}
! case 302:
#line 1420 "c-parse.y"
! { yyval.ttype = error_mark_node; ;
! break;}
! case 303:
#line 1426 "c-parse.y"
! { if (pedantic)
! pedwarn ("ISO C forbids empty initializer braces"); ;
! break;}
! case 307:
#line 1440 "c-parse.y"
! { if (pedantic && ! flag_isoc99)
! pedwarn ("ISO C90 forbids specifying subobject to initialize"); ;
! break;}
! case 308:
#line 1443 "c-parse.y"
! { if (pedantic)
! pedwarn ("obsolete use of designated initializer without `='"); ;
! break;}
! case 309:
#line 1446 "c-parse.y"
! { set_init_label (yyvsp[-1].ttype);
if (pedantic)
! pedwarn ("obsolete use of designated initializer with `:'"); ;
! break;}
! case 310:
#line 1450 "c-parse.y"
! {;
! break;}
! case 312:
#line 1456 "c-parse.y"
! { push_init_level (0); ;
! break;}
! case 313:
#line 1458 "c-parse.y"
! { process_init_element (pop_init_level (0)); ;
! break;}
! case 314:
#line 1460 "c-parse.y"
! { process_init_element (yyvsp[0].ttype); ;
! break;}
! case 318:
#line 1471 "c-parse.y"
! { set_init_label (yyvsp[0].ttype); ;
! break;}
! case 319:
#line 1473 "c-parse.y"
! { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype);
if (pedantic)
! pedwarn ("ISO C forbids specifying range of elements to initialize"); ;
! break;}
! case 320:
#line 1477 "c-parse.y"
! { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
! break;}
! case 321:
#line 1482 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids nested functions");
push_function_context ();
--- 3258,4086 ----
&& !parsing_iso_function_signature)
warning ("old-style parameter declaration");
parsing_iso_function_signature = false; /* Reset after warning. */
! ;}
! break;
!
! case 107:
#line 703 "c-parse.y"
! {
if (warn_old_style_definition && !in_system_header)
warning ("old-style parameter declaration");
! ;}
! break;
!
! case 108:
#line 714 "c-parse.y"
! { ;}
! break;
!
! case 113:
#line 730 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 114:
#line 732 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 115:
#line 734 "c-parse.y"
! { shadow_tag_warned (yyvsp[-1].ttype, 1);
! pedwarn ("empty declaration"); ;}
! break;
!
! case 116:
#line 737 "c-parse.y"
! { pedwarn ("empty declaration"); ;}
! break;
!
! case 117:
#line 746 "c-parse.y"
! { ;}
! break;
!
! case 118:
#line 754 "c-parse.y"
! { pending_xref_error ();
PUSH_DECLSPEC_STACK;
split_specs_attrs (yyvsp[0].ttype,
¤t_declspecs, &prefix_attributes);
! all_prefix_attributes = prefix_attributes; ;}
! break;
!
! case 119:
#line 765 "c-parse.y"
! { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ;}
! break;
!
! case 120:
#line 770 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 121:
#line 772 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 122:
#line 774 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 123:
#line 776 "c-parse.y"
! { POP_DECLSPEC_STACK; ;}
! break;
!
! case 124:
#line 778 "c-parse.y"
! { shadow_tag (yyvsp[-1].ttype); ;}
! break;
!
! case 125:
#line 780 "c-parse.y"
! { RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;}
! break;
!
! case 126:
#line 837 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 127:
#line 840 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 128:
#line 843 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 129:
#line 849 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 130:
#line 855 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 131:
#line 858 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 132:
#line 864 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 0; ;}
! break;
!
! case 133:
#line 867 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 134:
#line 873 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 135:
#line 876 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 136:
#line 879 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 137:
#line 882 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 138:
#line 885 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 139:
#line 888 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 140:
#line 891 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 141:
#line 897 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 142:
#line 900 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 143:
#line 903 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 144:
#line 906 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 145:
#line 909 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 146:
#line 912 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 147:
#line 918 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 148:
#line 921 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 149:
#line 924 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 150:
#line 927 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 151:
#line 930 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 152:
#line 933 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 153:
#line 939 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 154:
#line 942 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 155:
#line 945 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 156:
#line 948 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 157:
#line 951 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 158:
#line 957 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 0; ;}
! break;
!
! case 159:
#line 960 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 160:
#line 963 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 161:
#line 966 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 162:
#line 972 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 163:
#line 978 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 164:
#line 984 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 165:
#line 993 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 166:
#line 999 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 167:
#line 1002 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 168:
#line 1005 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 169:
#line 1011 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 170:
#line 1017 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 171:
#line 1023 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 172:
#line 1032 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 173:
#line 1038 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 174:
#line 1041 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 175:
#line 1044 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 176:
#line 1047 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 177:
#line 1050 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 178:
#line 1053 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 179:
#line 1056 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 180:
#line 1062 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 181:
#line 1068 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 182:
#line 1074 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 183:
#line 1083 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 184:
#line 1086 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 185:
#line 1089 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 186:
#line 1092 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 187:
#line 1095 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 188:
#line 1101 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 189:
#line 1104 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 190:
#line 1107 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 191:
#line 1110 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 192:
#line 1113 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 193:
#line 1116 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 194:
#line 1119 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 195:
#line 1125 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 196:
#line 1131 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 197:
#line 1137 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 198:
#line 1146 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;}
! break;
!
! case 199:
#line 1149 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 200:
#line 1152 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 201:
#line 1155 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 202:
#line 1158 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;}
! break;
!
! case 259:
#line 1246 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 260:
#line 1248 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 264:
#line 1283 "c-parse.y"
! { OBJC_NEED_RAW_IDENTIFIER (1); ;}
! break;
!
! case 267:
#line 1293 "c-parse.y"
! { /* For a typedef name, record the meaning, not the name.
In case of `foo foo, bar;'. */
! yyval.ttype = lookup_name (yyvsp[0].ttype); ;}
! break;
!
! case 268:
#line 1297 "c-parse.y"
! { skip_evaluation--;
if (TREE_CODE (yyvsp[-1].ttype) == COMPONENT_REF
&& DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[-1].ttype, 1)))
error ("`typeof' applied to a bit-field");
! yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;}
! break;
!
! case 269:
#line 1303 "c-parse.y"
! { skip_evaluation--; yyval.ttype = groktypename (yyvsp[-1].ttype); ;}
! break;
!
! case 274:
#line 1320 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 275:
#line 1322 "c-parse.y"
! { yyval.ttype = yyvsp[-1].ttype; ;}
! break;
!
! case 276:
#line 1327 "c-parse.y"
! { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
! start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;}
! break;
!
! case 277:
#line 1332 "c-parse.y"
! { finish_init ();
! finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;}
! break;
!
! case 278:
#line 1335 "c-parse.y"
! { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
! ;}
! break;
!
! case 279:
#line 1343 "c-parse.y"
! { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
! start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;}
! break;
!
! case 280:
#line 1348 "c-parse.y"
! { finish_init ();
! finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;}
! break;
!
! case 281:
#line 1351 "c-parse.y"
! { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
! finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;}
! break;
!
! case 282:
#line 1359 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 283:
#line 1361 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 284:
#line 1366 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 285:
#line 1368 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 286:
#line 1373 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype; ;}
! break;
!
! case 287:
#line 1378 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 288:
#line 1380 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 289:
#line 1385 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 290:
#line 1387 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 291:
#line 1389 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;}
! break;
!
! case 292:
#line 1391 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;}
! break;
!
! case 293:
#line 1393 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;}
! break;
!
! case 301:
#line 1416 "c-parse.y"
! { really_start_incremental_init (NULL_TREE); ;}
! break;
!
! case 302:
#line 1418 "c-parse.y"
! { yyval.ttype = pop_init_level (0); ;}
! break;
!
! case 303:
#line 1420 "c-parse.y"
! { yyval.ttype = error_mark_node; ;}
! break;
!
! case 304:
#line 1426 "c-parse.y"
! { if (pedantic)
! pedwarn ("ISO C forbids empty initializer braces"); ;}
! break;
!
! case 308:
#line 1440 "c-parse.y"
! { if (pedantic && ! flag_isoc99)
! pedwarn ("ISO C90 forbids specifying subobject to initialize"); ;}
! break;
!
! case 309:
#line 1443 "c-parse.y"
! { if (pedantic)
! pedwarn ("obsolete use of designated initializer without `='"); ;}
! break;
!
! case 310:
#line 1446 "c-parse.y"
! { set_init_label (yyvsp[-1].ttype);
if (pedantic)
! pedwarn ("obsolete use of designated initializer with `:'"); ;}
! break;
!
! case 311:
#line 1450 "c-parse.y"
! {;}
! break;
!
! case 313:
#line 1456 "c-parse.y"
! { push_init_level (0); ;}
! break;
!
! case 314:
#line 1458 "c-parse.y"
! { process_init_element (pop_init_level (0)); ;}
! break;
!
! case 315:
#line 1460 "c-parse.y"
! { process_init_element (yyvsp[0].ttype); ;}
! break;
!
! case 319:
#line 1471 "c-parse.y"
! { set_init_label (yyvsp[0].ttype); ;}
! break;
!
! case 320:
#line 1473 "c-parse.y"
! { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype);
if (pedantic)
! pedwarn ("ISO C forbids specifying range of elements to initialize"); ;}
! break;
!
! case 321:
#line 1477 "c-parse.y"
! { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;}
! break;
!
! case 322:
#line 1482 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids nested functions");
push_function_context ();
*************** case 321:
*** 3585,3608 ****
YYERROR1;
}
parsing_iso_function_signature = false; /* Don't warn about nested functions. */
! ;
! break;}
! case 322:
#line 1495 "c-parse.y"
! { tree decl = current_function_decl;
DECL_SOURCE_LOCATION (decl) = yyvsp[0].location;
! store_parm_decls (); ;
! break;}
! case 323:
#line 1505 "c-parse.y"
! { tree decl = current_function_decl;
finish_function ();
pop_function_context ();
! add_decl_stmt (decl); ;
! break;}
! case 324:
#line 1513 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids nested functions");
push_function_context ();
--- 4091,4117 ----
YYERROR1;
}
parsing_iso_function_signature = false; /* Don't warn about nested functions. */
! ;}
! break;
!
! case 323:
#line 1495 "c-parse.y"
! { tree decl = current_function_decl;
DECL_SOURCE_LOCATION (decl) = yyvsp[0].location;
! store_parm_decls (); ;}
! break;
!
! case 324:
#line 1505 "c-parse.y"
! { tree decl = current_function_decl;
finish_function ();
pop_function_context ();
! add_decl_stmt (decl); ;}
! break;
!
! case 325:
#line 1513 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids nested functions");
push_function_context ();
*************** case 324:
*** 3613,3818 ****
YYERROR1;
}
parsing_iso_function_signature = false; /* Don't warn about nested functions. */
! ;
! break;}
! case 325:
#line 1526 "c-parse.y"
! { tree decl = current_function_decl;
DECL_SOURCE_LOCATION (decl) = yyvsp[0].location;
! store_parm_decls (); ;
! break;}
! case 326:
#line 1536 "c-parse.y"
! { tree decl = current_function_decl;
finish_function ();
pop_function_context ();
! add_decl_stmt (decl); ;
! break;}
! case 329:
#line 1554 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
! break;}
! case 330:
#line 1556 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 331:
#line 1561 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
! break;}
! case 332:
#line 1563 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 336:
#line 1578 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 337:
#line 1583 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
! break;}
! case 339:
#line 1589 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 340:
#line 1594 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
! break;}
! case 341:
#line 1596 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 342:
#line 1598 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 343:
#line 1600 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
! break;}
! case 344:
#line 1608 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 345:
#line 1613 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
! break;}
! case 346:
#line 1615 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 347:
#line 1617 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
! break;}
! case 349:
#line 1623 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 350:
#line 1625 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 351:
#line 1630 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 352:
#line 1632 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 353:
#line 1637 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 354:
#line 1639 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 355:
#line 1650 "c-parse.y"
! { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
/* Start scope of tag before parsing components. */
! ;
! break;}
! case 356:
#line 1654 "c-parse.y"
! { yyval.ttype = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype),
! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
! break;}
! case 357:
#line 1657 "c-parse.y"
! { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
! ;
! break;}
! case 358:
#line 1661 "c-parse.y"
! { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
! break;}
! case 359:
#line 1663 "c-parse.y"
! { yyval.ttype = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype),
! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
! break;}
! case 360:
#line 1666 "c-parse.y"
! { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
! ;
! break;}
! case 361:
#line 1670 "c-parse.y"
! { yyval.ttype = start_enum (yyvsp[-1].ttype); ;
! break;}
! case 362:
#line 1672 "c-parse.y"
! { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
! chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ;
! break;}
! case 363:
#line 1675 "c-parse.y"
! { yyval.ttype = start_enum (NULL_TREE); ;
! break;}
! case 364:
#line 1677 "c-parse.y"
! { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
! break;}
! case 365:
#line 1683 "c-parse.y"
! { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
! break;}
! case 366:
#line 1685 "c-parse.y"
! { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
! break;}
! case 367:
#line 1687 "c-parse.y"
! { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype);
/* In ISO C, enumerated types can be referred to
only if already defined. */
if (pedantic && !COMPLETE_TYPE_P (yyval.ttype))
! pedwarn ("ISO C forbids forward references to `enum' types"); ;
! break;}
! case 371:
#line 1702 "c-parse.y"
! { if (pedantic && ! flag_isoc99)
! pedwarn ("comma at end of enumerator list"); ;
! break;}
! case 372:
#line 1720 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 373:
#line 1722 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype);
! pedwarn ("no semicolon at end of struct or union"); ;
! break;}
! case 374:
#line 1727 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 375:
#line 1729 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[-2].ttype); ;
! break;}
! case 376:
#line 1731 "c-parse.y"
! { if (pedantic)
! pedwarn ("extra semicolon in struct or union specified"); ;
! break;}
! case 377:
#line 1737 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;
! break;}
! case 378:
#line 1740 "c-parse.y"
! {
/* Support for unnamed structs or unions as members of
structs or unions (which is [a] useful and [b] supports
MS P-SDK). */
--- 4122,4371 ----
YYERROR1;
}
parsing_iso_function_signature = false; /* Don't warn about nested functions. */
! ;}
! break;
!
! case 326:
#line 1526 "c-parse.y"
! { tree decl = current_function_decl;
DECL_SOURCE_LOCATION (decl) = yyvsp[0].location;
! store_parm_decls (); ;}
! break;
!
! case 327:
#line 1536 "c-parse.y"
! { tree decl = current_function_decl;
finish_function ();
pop_function_context ();
! add_decl_stmt (decl); ;}
! break;
!
! case 330:
#line 1554 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;}
! break;
!
! case 331:
#line 1556 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 332:
#line 1561 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;}
! break;
!
! case 333:
#line 1563 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 337:
#line 1578 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 338:
#line 1583 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;}
! break;
!
! case 340:
#line 1589 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 341:
#line 1594 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;}
! break;
!
! case 342:
#line 1596 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 343:
#line 1598 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 344:
#line 1600 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;}
! break;
!
! case 345:
#line 1608 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 346:
#line 1613 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;}
! break;
!
! case 347:
#line 1615 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 348:
#line 1617 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;}
! break;
!
! case 350:
#line 1623 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 351:
#line 1625 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 352:
#line 1630 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 353:
#line 1632 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 354:
#line 1637 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 355:
#line 1639 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 356:
#line 1650 "c-parse.y"
! { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
/* Start scope of tag before parsing components. */
! ;}
! break;
!
! case 357:
#line 1654 "c-parse.y"
! { yyval.ttype = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype),
! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;}
! break;
!
! case 358:
#line 1657 "c-parse.y"
! { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
! ;}
! break;
!
! case 359:
#line 1661 "c-parse.y"
! { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;}
! break;
!
! case 360:
#line 1663 "c-parse.y"
! { yyval.ttype = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype),
! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;}
! break;
!
! case 361:
#line 1666 "c-parse.y"
! { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
! ;}
! break;
!
! case 362:
#line 1670 "c-parse.y"
! { yyval.ttype = start_enum (yyvsp[-1].ttype); ;}
! break;
!
! case 363:
#line 1672 "c-parse.y"
! { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
! chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ;}
! break;
!
! case 364:
#line 1675 "c-parse.y"
! { yyval.ttype = start_enum (NULL_TREE); ;}
! break;
!
! case 365:
#line 1677 "c-parse.y"
! { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;}
! break;
!
! case 366:
#line 1683 "c-parse.y"
! { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;}
! break;
!
! case 367:
#line 1685 "c-parse.y"
! { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;}
! break;
!
! case 368:
#line 1687 "c-parse.y"
! { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype);
/* In ISO C, enumerated types can be referred to
only if already defined. */
if (pedantic && !COMPLETE_TYPE_P (yyval.ttype))
! pedwarn ("ISO C forbids forward references to `enum' types"); ;}
! break;
!
! case 372:
#line 1702 "c-parse.y"
! { if (pedantic && ! flag_isoc99)
! pedwarn ("comma at end of enumerator list"); ;}
! break;
!
! case 373:
#line 1720 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 374:
#line 1722 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype);
! pedwarn ("no semicolon at end of struct or union"); ;}
! break;
!
! case 375:
#line 1727 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 376:
#line 1729 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[-2].ttype); ;}
! break;
!
! case 377:
#line 1731 "c-parse.y"
! { if (pedantic)
! pedwarn ("extra semicolon in struct or union specified"); ;}
! break;
!
! case 378:
#line 1737 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 379:
#line 1740 "c-parse.y"
! {
/* Support for unnamed structs or unions as members of
structs or unions (which is [a] useful and [b] supports
MS P-SDK). */
*************** case 378:
*** 3820,4024 ****
pedwarn ("ISO C doesn't support unnamed structs/unions");
yyval.ttype = grokfield(NULL, current_declspecs, NULL_TREE);
! POP_DECLSPEC_STACK; ;
! break;}
! case 379:
#line 1750 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;
! break;}
! case 380:
#line 1753 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids member declarations with no members");
shadow_tag_warned (yyvsp[0].ttype, pedantic);
! yyval.ttype = NULL_TREE; ;
! break;}
! case 381:
#line 1758 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 382:
#line 1760 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
! break;}
! case 384:
#line 1767 "c-parse.y"
! { TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 386:
#line 1773 "c-parse.y"
! { TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 387:
#line 1778 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
! break;}
! case 388:
#line 1782 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
! break;}
! case 389:
#line 1786 "c-parse.y"
! { yyval.ttype = grokfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
! break;}
! case 390:
#line 1793 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
! break;}
! case 391:
#line 1797 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
! break;}
! case 392:
#line 1801 "c-parse.y"
! { yyval.ttype = grokfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
! break;}
! case 394:
#line 1812 "c-parse.y"
! { if (yyvsp[-2].ttype == error_mark_node)
yyval.ttype = yyvsp[-2].ttype;
else
! TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-2].ttype, yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 395:
#line 1817 "c-parse.y"
! { yyval.ttype = error_mark_node; ;
! break;}
! case 396:
#line 1823 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 397:
#line 1825 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 398:
#line 1830 "c-parse.y"
! { pending_xref_error ();
! yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 399:
#line 1833 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 400:
#line 1838 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 402:
#line 1844 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
NULL_TREE),
! all_prefix_attributes); ;
! break;}
! case 403:
#line 1848 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[0].ttype),
! all_prefix_attributes); ;
! break;}
! case 404:
#line 1852 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
! chainon (yyvsp[0].ttype, all_prefix_attributes)); ;
! break;}
! case 408:
#line 1865 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 409:
#line 1870 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 410:
#line 1872 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
! break;}
! case 411:
#line 1877 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
! break;}
! case 412:
#line 1879 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 413:
#line 1881 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 1); ;
! break;}
! case 414:
#line 1883 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 415:
#line 1885 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, NULL_TREE, 1); ;
! break;}
! case 416:
#line 1892 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0); ;
! break;}
! case 417:
#line 1894 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
! break;}
! case 418:
#line 1896 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-2].ttype, 0, 1); ;
! break;}
! case 419:
#line 1898 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 1, 0); ;
! break;}
! case 420:
#line 1901 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-3].ttype, 1, 0); ;
! break;}
! case 423:
#line 1914 "c-parse.y"
! {
error ("label at end of compound statement");
! ;
! break;}
! case 431:
#line 1931 "c-parse.y"
! {
if ((pedantic && !flag_isoc99)
|| warn_declaration_after_statement)
pedwarn_c90 ("ISO C90 forbids mixed declarations and code");
! ;
! break;}
! case 446:
#line 1964 "c-parse.y"
! { pushlevel (0);
clear_last_expr ();
add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0);
! ;
! break;}
! case 447:
#line 1971 "c-parse.y"
! {
yyval.ttype = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
! ;
! break;}
! case 448:
#line 1978 "c-parse.y"
! { if (flag_isoc99)
{
yyval.ttype = c_begin_compound_stmt ();
pushlevel (0);
--- 4373,4617 ----
pedwarn ("ISO C doesn't support unnamed structs/unions");
yyval.ttype = grokfield(NULL, current_declspecs, NULL_TREE);
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 380:
#line 1750 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 381:
#line 1753 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids member declarations with no members");
shadow_tag_warned (yyvsp[0].ttype, pedantic);
! yyval.ttype = NULL_TREE; ;}
! break;
!
! case 382:
#line 1758 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 383:
#line 1760 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;}
! break;
!
! case 385:
#line 1767 "c-parse.y"
! { TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 387:
#line 1773 "c-parse.y"
! { TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 388:
#line 1778 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;}
! break;
!
! case 389:
#line 1782 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;}
! break;
!
! case 390:
#line 1786 "c-parse.y"
! { yyval.ttype = grokfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;}
! break;
!
! case 391:
#line 1793 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;}
! break;
!
! case 392:
#line 1797 "c-parse.y"
! { yyval.ttype = grokfield (yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;}
! break;
!
! case 393:
#line 1801 "c-parse.y"
! { yyval.ttype = grokfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype,
! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;}
! break;
!
! case 395:
#line 1812 "c-parse.y"
! { if (yyvsp[-2].ttype == error_mark_node)
yyval.ttype = yyvsp[-2].ttype;
else
! TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-2].ttype, yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 396:
#line 1817 "c-parse.y"
! { yyval.ttype = error_mark_node; ;}
! break;
!
! case 397:
#line 1823 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 398:
#line 1825 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 399:
#line 1830 "c-parse.y"
! { pending_xref_error ();
! yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 400:
#line 1833 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 401:
#line 1838 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 403:
#line 1844 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
NULL_TREE),
! all_prefix_attributes); ;}
! break;
!
! case 404:
#line 1848 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[0].ttype),
! all_prefix_attributes); ;}
! break;
!
! case 405:
#line 1852 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
! chainon (yyvsp[0].ttype, all_prefix_attributes)); ;}
! break;
!
! case 409:
#line 1865 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 410:
#line 1870 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 411:
#line 1872 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 412:
#line 1877 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;}
! break;
!
! case 413:
#line 1879 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 414:
#line 1881 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 1); ;}
! break;
!
! case 415:
#line 1883 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 416:
#line 1885 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, NULL_TREE, 1); ;}
! break;
!
! case 417:
#line 1892 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0); ;}
! break;
!
! case 418:
#line 1894 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-1].ttype, 0, 0); ;}
! break;
!
! case 419:
#line 1896 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-2].ttype, 0, 1); ;}
! break;
!
! case 420:
#line 1898 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 1, 0); ;}
! break;
!
! case 421:
#line 1901 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-3].ttype, 1, 0); ;}
! break;
!
! case 424:
#line 1914 "c-parse.y"
! {
error ("label at end of compound statement");
! ;}
! break;
!
! case 432:
#line 1931 "c-parse.y"
! {
if ((pedantic && !flag_isoc99)
|| warn_declaration_after_statement)
pedwarn_c90 ("ISO C90 forbids mixed declarations and code");
! ;}
! break;
!
! case 447:
#line 1964 "c-parse.y"
! { pushlevel (0);
clear_last_expr ();
add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0);
! ;}
! break;
!
! case 448:
#line 1971 "c-parse.y"
! {
yyval.ttype = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
! ;}
! break;
!
! case 449:
#line 1978 "c-parse.y"
! { if (flag_isoc99)
{
yyval.ttype = c_begin_compound_stmt ();
pushlevel (0);
*************** case 448:
*** 4027,4037 ****
}
else
yyval.ttype = NULL_TREE;
! ;
! break;}
! case 449:
#line 1994 "c-parse.y"
! { if (flag_isoc99)
{
tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
yyval.ttype = poplevel (KEEP_MAYBE, 0, 0);
--- 4620,4631 ----
}
else
yyval.ttype = NULL_TREE;
! ;}
! break;
!
! case 450:
#line 1994 "c-parse.y"
! { if (flag_isoc99)
{
tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
yyval.ttype = poplevel (KEEP_MAYBE, 0, 0);
*************** case 449:
*** 4040,4086 ****
= yyval.ttype;
}
else
! yyval.ttype = NULL_TREE; ;
! break;}
! case 451:
#line 2011 "c-parse.y"
! { if (pedantic)
! pedwarn ("ISO C forbids label declarations"); ;
! break;}
! case 454:
#line 2022 "c-parse.y"
! { tree link;
for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
{
tree label = declare_label (TREE_VALUE (link));
C_DECLARED_LABEL_FLAG (label) = 1;
add_decl_stmt (label);
}
! ;
! break;}
! case 455:
#line 2036 "c-parse.y"
! {;
! break;}
! case 457:
#line 2040 "c-parse.y"
! { compstmt_count++;
! yyval.ttype = c_begin_compound_stmt (); ;
! break;}
! case 458:
#line 2045 "c-parse.y"
! { yyval.ttype = convert (void_type_node, integer_zero_node); ;
! break;}
! case 459:
#line 2047 "c-parse.y"
! { yyval.ttype = poplevel (KEEP_MAYBE, 0, 0);
SCOPE_STMT_BLOCK (TREE_PURPOSE (yyvsp[0].ttype))
= SCOPE_STMT_BLOCK (TREE_VALUE (yyvsp[0].ttype))
! = yyval.ttype; ;
! break;}
! case 462:
#line 2060 "c-parse.y"
! { if (last_tree == NULL)
{
error ("braced-group within expression allowed only inside a function");
YYERROR;
--- 4634,4687 ----
= yyval.ttype;
}
else
! yyval.ttype = NULL_TREE; ;}
! break;
!
! case 452:
#line 2011 "c-parse.y"
! { if (pedantic)
! pedwarn ("ISO C forbids label declarations"); ;}
! break;
!
! case 455:
#line 2022 "c-parse.y"
! { tree link;
for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
{
tree label = declare_label (TREE_VALUE (link));
C_DECLARED_LABEL_FLAG (label) = 1;
add_decl_stmt (label);
}
! ;}
! break;
!
! case 456:
#line 2036 "c-parse.y"
! {;}
! break;
!
! case 458:
#line 2040 "c-parse.y"
! { compstmt_count++;
! yyval.ttype = c_begin_compound_stmt (); ;}
! break;
!
! case 459:
#line 2045 "c-parse.y"
! { yyval.ttype = convert (void_type_node, integer_zero_node); ;}
! break;
!
! case 460:
#line 2047 "c-parse.y"
! { yyval.ttype = poplevel (KEEP_MAYBE, 0, 0);
SCOPE_STMT_BLOCK (TREE_PURPOSE (yyvsp[0].ttype))
= SCOPE_STMT_BLOCK (TREE_VALUE (yyvsp[0].ttype))
! = yyval.ttype; ;}
! break;
!
! case 463:
#line 2060 "c-parse.y"
! { if (last_tree == NULL)
{
error ("braced-group within expression allowed only inside a function");
YYERROR;
*************** case 462:
*** 4093,4124 ****
compstmt_count++;
yyval.ttype = add_stmt (build_stmt (COMPOUND_STMT, last_tree));
last_expr_type = NULL_TREE;
! ;
! break;}
! case 463:
#line 2077 "c-parse.y"
! { RECHAIN_STMTS (yyvsp[-1].ttype, COMPOUND_BODY (yyvsp[-1].ttype));
last_expr_type = NULL_TREE;
! yyval.ttype = yyvsp[-1].ttype; ;
! break;}
! case 464:
#line 2085 "c-parse.y"
! { c_finish_then (); ;
! break;}
! case 466:
#line 2102 "c-parse.y"
! { yyval.ttype = c_begin_if_stmt (); ;
! break;}
! case 467:
#line 2104 "c-parse.y"
! { c_expand_start_cond (c_common_truthvalue_conversion (yyvsp[-1].ttype),
compstmt_count,yyvsp[-3].ttype);
yyval.itype = stmt_count;
! if_stmt_locus = yyvsp[-6].location; ;
! break;}
! case 468:
#line 2115 "c-parse.y"
! { stmt_count++;
compstmt_count++;
c_in_iteration_stmt++;
yyval.ttype
--- 4694,4730 ----
compstmt_count++;
yyval.ttype = add_stmt (build_stmt (COMPOUND_STMT, last_tree));
last_expr_type = NULL_TREE;
! ;}
! break;
!
! case 464:
#line 2077 "c-parse.y"
! { RECHAIN_STMTS (yyvsp[-1].ttype, COMPOUND_BODY (yyvsp[-1].ttype));
last_expr_type = NULL_TREE;
! yyval.ttype = yyvsp[-1].ttype; ;}
! break;
!
! case 465:
#line 2085 "c-parse.y"
! { c_finish_then (); ;}
! break;
!
! case 467:
#line 2102 "c-parse.y"
! { yyval.ttype = c_begin_if_stmt (); ;}
! break;
!
! case 468:
#line 2104 "c-parse.y"
! { c_expand_start_cond (c_common_truthvalue_conversion (yyvsp[-1].ttype),
compstmt_count,yyvsp[-3].ttype);
yyval.itype = stmt_count;
! if_stmt_locus = yyvsp[-6].location; ;}
! break;
!
! case 469:
#line 2115 "c-parse.y"
! { stmt_count++;
compstmt_count++;
c_in_iteration_stmt++;
yyval.ttype
*************** case 468:
*** 4128,4155 ****
parsing the complete do-statement, set the
condition now. Otherwise, we can get crashes at
RTL-generation time. */
! DO_COND (yyval.ttype) = error_mark_node; ;
! break;}
! case 469:
#line 2127 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype;
RECHAIN_STMTS (yyval.ttype, DO_BODY (yyval.ttype));
! c_in_iteration_stmt--; ;
! break;}
! case 470:
#line 2137 "c-parse.y"
! { if (yychar == YYEMPTY)
yychar = YYLEX;
! yyval.location = input_location; ;
! break;}
! case 473:
#line 2150 "c-parse.y"
! { if (flag_isoc99)
! RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); ;
! break;}
! case 474:
#line 2156 "c-parse.y"
! { if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].location.line;
/* ??? We currently have no way of recording
--- 4734,4765 ----
parsing the complete do-statement, set the
condition now. Otherwise, we can get crashes at
RTL-generation time. */
! DO_COND (yyval.ttype) = error_mark_node; ;}
! break;
!
! case 470:
#line 2127 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype;
RECHAIN_STMTS (yyval.ttype, DO_BODY (yyval.ttype));
! c_in_iteration_stmt--; ;}
! break;
!
! case 471:
#line 2137 "c-parse.y"
! { if (yychar == YYEMPTY)
yychar = YYLEX;
! yyval.location = input_location; ;}
! break;
!
! case 474:
#line 2150 "c-parse.y"
! { if (flag_isoc99)
! RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); ;}
! break;
!
! case 475:
#line 2156 "c-parse.y"
! { if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].location.line;
/* ??? We currently have no way of recording
*************** case 474:
*** 4158,4342 ****
but I suspect that problems will occur when
doing inlining at the tree level. */
}
! ;
! break;}
! case 475:
#line 2170 "c-parse.y"
! { if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].location.line;
}
! ;
! break;}
! case 476:
#line 2179 "c-parse.y"
! { c_expand_start_else ();
! yyvsp[-1].itype = stmt_count; ;
! break;}
! case 477:
#line 2182 "c-parse.y"
! { c_finish_else ();
c_expand_end_cond ();
if (extra_warnings && stmt_count == yyvsp[-3].itype)
! warning ("empty body in an else-statement"); ;
! break;}
! case 478:
#line 2187 "c-parse.y"
! { c_expand_end_cond ();
/* This warning is here instead of in simple_if, because we
do not want a warning if an empty if is followed by an
else statement. Increment stmt_count so we don't
give a second error if this is a nested `if'. */
if (extra_warnings && stmt_count++ == yyvsp[0].itype)
warning ("%Hempty body in an if-statement",
! &if_stmt_locus); ;
! break;}
! case 479:
#line 2199 "c-parse.y"
! { c_expand_end_cond (); ;
! break;}
! case 480:
#line 2209 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_begin_while_stmt (); ;
! break;}
! case 481:
#line 2212 "c-parse.y"
! { c_in_iteration_stmt++;
yyvsp[-1].ttype = c_common_truthvalue_conversion (yyvsp[-1].ttype);
c_finish_while_stmt_cond
(c_common_truthvalue_conversion (yyvsp[-1].ttype), yyvsp[-3].ttype);
! yyval.ttype = add_stmt (yyvsp[-3].ttype); ;
! break;}
! case 482:
#line 2218 "c-parse.y"
! { c_in_iteration_stmt--;
! RECHAIN_STMTS (yyvsp[-1].ttype, WHILE_BODY (yyvsp[-1].ttype)); ;
! break;}
! case 483:
#line 2222 "c-parse.y"
! { DO_COND (yyvsp[-4].ttype) = c_common_truthvalue_conversion (yyvsp[-2].ttype); ;
! break;}
! case 484:
#line 2224 "c-parse.y"
! { ;
! break;}
! case 485:
#line 2226 "c-parse.y"
! { yyval.ttype = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE,
NULL_TREE, NULL_TREE);
! add_stmt (yyval.ttype); ;
! break;}
! case 486:
#line 2230 "c-parse.y"
! { stmt_count++;
! RECHAIN_STMTS (yyvsp[-2].ttype, FOR_INIT_STMT (yyvsp[-2].ttype)); ;
! break;}
! case 487:
#line 2233 "c-parse.y"
! { if (yyvsp[-1].ttype)
FOR_COND (yyvsp[-5].ttype)
! = c_common_truthvalue_conversion (yyvsp[-1].ttype); ;
! break;}
! case 488:
#line 2237 "c-parse.y"
! { c_in_iteration_stmt++;
! FOR_EXPR (yyvsp[-8].ttype) = yyvsp[-1].ttype; ;
! break;}
! case 489:
#line 2240 "c-parse.y"
! { RECHAIN_STMTS (yyvsp[-10].ttype, FOR_BODY (yyvsp[-10].ttype));
! c_in_iteration_stmt--;;
! break;}
! case 490:
#line 2243 "c-parse.y"
! { stmt_count++;
yyval.ttype = c_start_case (yyvsp[-1].ttype);
! c_in_case_stmt++; ;
! break;}
! case 491:
#line 2247 "c-parse.y"
! { c_finish_case ();
! c_in_case_stmt--; ;
! break;}
! case 492:
#line 2253 "c-parse.y"
! { add_stmt (build_stmt (EXPR_STMT, yyvsp[-1].ttype)); ;
! break;}
! case 493:
#line 2255 "c-parse.y"
! { check_for_loop_decls (); ;
! break;}
! case 494:
#line 2261 "c-parse.y"
! { stmt_count++; yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 495:
#line 2263 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_expand_expr_stmt (yyvsp[-1].ttype); ;
! break;}
! case 496:
#line 2266 "c-parse.y"
! { if (flag_isoc99)
RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype));
! yyval.ttype = NULL_TREE; ;
! break;}
! case 497:
#line 2270 "c-parse.y"
! { stmt_count++;
if (!(c_in_iteration_stmt || c_in_case_stmt))
{
error ("break statement not within loop or switch");
yyval.ttype = NULL_TREE;
}
else
! yyval.ttype = add_stmt (build_break_stmt ()); ;
! break;}
! case 498:
#line 2279 "c-parse.y"
! { stmt_count++;
if (!c_in_iteration_stmt)
{
error ("continue statement not within a loop");
yyval.ttype = NULL_TREE;
}
else
! yyval.ttype = add_stmt (build_continue_stmt ()); ;
! break;}
! case 499:
#line 2288 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_expand_return (NULL_TREE); ;
! break;}
! case 500:
#line 2291 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_expand_return (yyvsp[-1].ttype); ;
! break;}
! case 501:
#line 2294 "c-parse.y"
! { stmt_count++;
! yyval.ttype = simple_asm_stmt (yyvsp[-2].ttype); ;
! break;}
! case 502:
#line 2298 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ;
! break;}
! case 503:
#line 2303 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
! break;}
! case 504:
#line 2308 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
! break;}
! case 505:
#line 2311 "c-parse.y"
! { tree decl;
stmt_count++;
decl = lookup_label (yyvsp[-1].ttype);
if (decl != 0)
--- 4768,4983 ----
but I suspect that problems will occur when
doing inlining at the tree level. */
}
! ;}
! break;
!
! case 476:
#line 2170 "c-parse.y"
! { if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].location.line;
}
! ;}
! break;
!
! case 477:
#line 2179 "c-parse.y"
! { c_expand_start_else ();
! yyvsp[-1].itype = stmt_count; ;}
! break;
!
! case 478:
#line 2182 "c-parse.y"
! { c_finish_else ();
c_expand_end_cond ();
if (extra_warnings && stmt_count == yyvsp[-3].itype)
! warning ("empty body in an else-statement"); ;}
! break;
!
! case 479:
#line 2187 "c-parse.y"
! { c_expand_end_cond ();
/* This warning is here instead of in simple_if, because we
do not want a warning if an empty if is followed by an
else statement. Increment stmt_count so we don't
give a second error if this is a nested `if'. */
if (extra_warnings && stmt_count++ == yyvsp[0].itype)
warning ("%Hempty body in an if-statement",
! &if_stmt_locus); ;}
! break;
!
! case 480:
#line 2199 "c-parse.y"
! { c_expand_end_cond (); ;}
! break;
!
! case 481:
#line 2209 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_begin_while_stmt (); ;}
! break;
!
! case 482:
#line 2212 "c-parse.y"
! { c_in_iteration_stmt++;
yyvsp[-1].ttype = c_common_truthvalue_conversion (yyvsp[-1].ttype);
c_finish_while_stmt_cond
(c_common_truthvalue_conversion (yyvsp[-1].ttype), yyvsp[-3].ttype);
! yyval.ttype = add_stmt (yyvsp[-3].ttype); ;}
! break;
!
! case 483:
#line 2218 "c-parse.y"
! { c_in_iteration_stmt--;
! RECHAIN_STMTS (yyvsp[-1].ttype, WHILE_BODY (yyvsp[-1].ttype)); ;}
! break;
!
! case 484:
#line 2222 "c-parse.y"
! { DO_COND (yyvsp[-4].ttype) = c_common_truthvalue_conversion (yyvsp[-2].ttype); ;}
! break;
!
! case 485:
#line 2224 "c-parse.y"
! { ;}
! break;
!
! case 486:
#line 2226 "c-parse.y"
! { yyval.ttype = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE,
NULL_TREE, NULL_TREE);
! add_stmt (yyval.ttype); ;}
! break;
!
! case 487:
#line 2230 "c-parse.y"
! { stmt_count++;
! RECHAIN_STMTS (yyvsp[-2].ttype, FOR_INIT_STMT (yyvsp[-2].ttype)); ;}
! break;
!
! case 488:
#line 2233 "c-parse.y"
! { if (yyvsp[-1].ttype)
FOR_COND (yyvsp[-5].ttype)
! = c_common_truthvalue_conversion (yyvsp[-1].ttype); ;}
! break;
!
! case 489:
#line 2237 "c-parse.y"
! { c_in_iteration_stmt++;
! FOR_EXPR (yyvsp[-8].ttype) = yyvsp[-1].ttype; ;}
! break;
!
! case 490:
#line 2240 "c-parse.y"
! { RECHAIN_STMTS (yyvsp[-10].ttype, FOR_BODY (yyvsp[-10].ttype));
! c_in_iteration_stmt--;;}
! break;
!
! case 491:
#line 2243 "c-parse.y"
! { stmt_count++;
yyval.ttype = c_start_case (yyvsp[-1].ttype);
! c_in_case_stmt++; ;}
! break;
!
! case 492:
#line 2247 "c-parse.y"
! { c_finish_case ();
! c_in_case_stmt--; ;}
! break;
!
! case 493:
#line 2253 "c-parse.y"
! { add_stmt (build_stmt (EXPR_STMT, yyvsp[-1].ttype)); ;}
! break;
!
! case 494:
#line 2255 "c-parse.y"
! { check_for_loop_decls (); ;}
! break;
!
! case 495:
#line 2261 "c-parse.y"
! { stmt_count++; yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 496:
#line 2263 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_expand_expr_stmt (yyvsp[-1].ttype); ;}
! break;
!
! case 497:
#line 2266 "c-parse.y"
! { if (flag_isoc99)
RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype));
! yyval.ttype = NULL_TREE; ;}
! break;
!
! case 498:
#line 2270 "c-parse.y"
! { stmt_count++;
if (!(c_in_iteration_stmt || c_in_case_stmt))
{
error ("break statement not within loop or switch");
yyval.ttype = NULL_TREE;
}
else
! yyval.ttype = add_stmt (build_break_stmt ()); ;}
! break;
!
! case 499:
#line 2279 "c-parse.y"
! { stmt_count++;
if (!c_in_iteration_stmt)
{
error ("continue statement not within a loop");
yyval.ttype = NULL_TREE;
}
else
! yyval.ttype = add_stmt (build_continue_stmt ()); ;}
! break;
!
! case 500:
#line 2288 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_expand_return (NULL_TREE); ;}
! break;
!
! case 501:
#line 2291 "c-parse.y"
! { stmt_count++;
! yyval.ttype = c_expand_return (yyvsp[-1].ttype); ;}
! break;
!
! case 502:
#line 2294 "c-parse.y"
! { stmt_count++;
! yyval.ttype = simple_asm_stmt (yyvsp[-2].ttype); ;}
! break;
!
! case 503:
#line 2298 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ;}
! break;
!
! case 504:
#line 2303 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;}
! break;
!
! case 505:
#line 2308 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;}
! break;
!
! case 506:
#line 2311 "c-parse.y"
! { tree decl;
stmt_count++;
decl = lookup_label (yyvsp[-1].ttype);
if (decl != 0)
*************** case 505:
*** 4346,4383 ****
}
else
yyval.ttype = NULL_TREE;
! ;
! break;}
! case 506:
#line 2323 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids `goto *expr;'");
stmt_count++;
yyvsp[-1].ttype = convert (ptr_type_node, yyvsp[-1].ttype);
! yyval.ttype = add_stmt (build_stmt (GOTO_STMT, yyvsp[-1].ttype)); ;
! break;}
! case 507:
#line 2329 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 508:
#line 2337 "c-parse.y"
! { stmt_count++;
! yyval.ttype = do_case (yyvsp[-1].ttype, NULL_TREE); ;
! break;}
! case 509:
#line 2340 "c-parse.y"
! { stmt_count++;
! yyval.ttype = do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
! break;}
! case 510:
#line 2343 "c-parse.y"
! { stmt_count++;
! yyval.ttype = do_case (NULL_TREE, NULL_TREE); ;
! break;}
! case 511:
#line 2346 "c-parse.y"
! { tree label = define_label (yyvsp[-2].location, yyvsp[-3].ttype);
stmt_count++;
if (label)
{
--- 4987,5030 ----
}
else
yyval.ttype = NULL_TREE;
! ;}
! break;
!
! case 507:
#line 2323 "c-parse.y"
! { if (pedantic)
pedwarn ("ISO C forbids `goto *expr;'");
stmt_count++;
yyvsp[-1].ttype = convert (ptr_type_node, yyvsp[-1].ttype);
! yyval.ttype = add_stmt (build_stmt (GOTO_STMT, yyvsp[-1].ttype)); ;}
! break;
!
! case 508:
#line 2329 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 509:
#line 2337 "c-parse.y"
! { stmt_count++;
! yyval.ttype = do_case (yyvsp[-1].ttype, NULL_TREE); ;}
! break;
!
! case 510:
#line 2340 "c-parse.y"
! { stmt_count++;
! yyval.ttype = do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;}
! break;
!
! case 511:
#line 2343 "c-parse.y"
! { stmt_count++;
! yyval.ttype = do_case (NULL_TREE, NULL_TREE); ;}
! break;
!
! case 512:
#line 2346 "c-parse.y"
! { tree label = define_label (yyvsp[-2].location, yyvsp[-3].ttype);
stmt_count++;
if (label)
{
*************** case 511:
*** 4386,4465 ****
}
else
yyval.ttype = NULL_TREE;
! ;
! break;}
! case 512:
#line 2362 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 513:
#line 2364 "c-parse.y"
! { ;
! break;}
! case 514:
#line 2369 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 516:
#line 2376 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 519:
#line 2383 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 520:
#line 2388 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ;
! break;}
! case 521:
#line 2390 "c-parse.y"
! { yyvsp[-5].ttype = build_string (IDENTIFIER_LENGTH (yyvsp[-5].ttype),
IDENTIFIER_POINTER (yyvsp[-5].ttype));
! yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ;
! break;}
! case 522:
#line 2397 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
! break;}
! case 523:
#line 2399 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
! break;}
! case 524:
#line 2409 "c-parse.y"
! { pushlevel (0);
! declare_parm_level (); ;
! break;}
! case 525:
#line 2412 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! poplevel (0, 0, 0); ;
! break;}
! case 527:
#line 2419 "c-parse.y"
! { mark_forward_parm_decls (); ;
! break;}
! case 528:
#line 2421 "c-parse.y"
! { /* Dummy action so attributes are in known place
! on parser stack. */ ;
! break;}
! case 529:
#line 2424 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 530:
#line 2426 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
! break;}
! case 531:
#line 2432 "c-parse.y"
! { yyval.ttype = get_parm_info (0); ;
! break;}
! case 532:
#line 2434 "c-parse.y"
! { yyval.ttype = get_parm_info (0);
/* Gcc used to allow this as an extension. However, it does
not work for all targets, and thus has been disabled.
Also, since func (...) and func () are indistinguishable,
--- 5033,5129 ----
}
else
yyval.ttype = NULL_TREE;
! ;}
! break;
!
! case 513:
#line 2362 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 514:
#line 2364 "c-parse.y"
! { ;}
! break;
!
! case 515:
#line 2369 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 517:
#line 2376 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;}
! break;
!
! case 520:
#line 2383 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;}
! break;
!
! case 521:
#line 2388 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ;}
! break;
!
! case 522:
#line 2390 "c-parse.y"
! { yyvsp[-5].ttype = build_string (IDENTIFIER_LENGTH (yyvsp[-5].ttype),
IDENTIFIER_POINTER (yyvsp[-5].ttype));
! yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ;}
! break;
!
! case 523:
#line 2397 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;}
! break;
!
! case 524:
#line 2399 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;}
! break;
!
! case 525:
#line 2409 "c-parse.y"
! { pushlevel (0);
! declare_parm_level (); ;}
! break;
!
! case 526:
#line 2412 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! poplevel (0, 0, 0); ;}
! break;
!
! case 528:
#line 2419 "c-parse.y"
! { mark_forward_parm_decls (); ;}
! break;
!
! case 529:
#line 2421 "c-parse.y"
! { /* Dummy action so attributes are in known place
! on parser stack. */ ;}
! break;
!
! case 530:
#line 2424 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;}
! break;
!
! case 531:
#line 2426 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;}
! break;
!
! case 532:
#line 2432 "c-parse.y"
! { yyval.ttype = get_parm_info (0); ;}
! break;
!
! case 533:
#line 2434 "c-parse.y"
! { yyval.ttype = get_parm_info (0);
/* Gcc used to allow this as an extension. However, it does
not work for all targets, and thus has been disabled.
Also, since func (...) and func () are indistinguishable,
*************** case 532:
*** 4468,4575 ****
correctly. */
error ("ISO C requires a named argument before `...'");
parsing_iso_function_signature = true;
! ;
! break;}
! case 533:
#line 2445 "c-parse.y"
! { yyval.ttype = get_parm_info (1);
parsing_iso_function_signature = true;
! ;
! break;}
! case 534:
#line 2449 "c-parse.y"
! { yyval.ttype = get_parm_info (0);
parsing_iso_function_signature = true;
! ;
! break;}
! case 535:
#line 2456 "c-parse.y"
! { push_parm_decl (yyvsp[0].ttype); ;
! break;}
! case 536:
#line 2458 "c-parse.y"
! { push_parm_decl (yyvsp[0].ttype); ;
! break;}
! case 537:
#line 2465 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;
! break;}
! case 538:
#line 2470 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;
! break;}
! case 539:
#line 2475 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;
! break;}
! case 540:
#line 2478 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;
! break;}
! case 541:
#line 2484 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;
! break;}
! case 542:
#line 2492 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;
! break;}
! case 543:
#line 2497 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;
! break;}
! case 544:
#line 2502 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;
! break;}
! case 545:
#line 2505 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;
! break;}
! case 546:
#line 2511 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;
! break;}
! case 547:
#line 2517 "c-parse.y"
! { prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype);
! all_prefix_attributes = prefix_attributes; ;
! break;}
! case 548:
#line 2526 "c-parse.y"
! { pushlevel (0);
! declare_parm_level (); ;
! break;}
! case 549:
#line 2529 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! poplevel (0, 0, 0); ;
! break;}
! case 551:
#line 2536 "c-parse.y"
! { tree t;
for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
if (TREE_VALUE (t) == NULL_TREE)
error ("`...' in old-style identifier list");
--- 5132,5257 ----
correctly. */
error ("ISO C requires a named argument before `...'");
parsing_iso_function_signature = true;
! ;}
! break;
!
! case 534:
#line 2445 "c-parse.y"
! { yyval.ttype = get_parm_info (1);
parsing_iso_function_signature = true;
! ;}
! break;
!
! case 535:
#line 2449 "c-parse.y"
! { yyval.ttype = get_parm_info (0);
parsing_iso_function_signature = true;
! ;}
! break;
!
! case 536:
#line 2456 "c-parse.y"
! { push_parm_decl (yyvsp[0].ttype); ;}
! break;
!
! case 537:
#line 2458 "c-parse.y"
! { push_parm_decl (yyvsp[0].ttype); ;}
! break;
!
! case 538:
#line 2465 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 539:
#line 2470 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 540:
#line 2475 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 541:
#line 2478 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 542:
#line 2484 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 543:
#line 2492 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 544:
#line 2497 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 545:
#line 2502 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 546:
#line 2505 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 547:
#line 2511 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! POP_DECLSPEC_STACK; ;}
! break;
!
! case 548:
#line 2517 "c-parse.y"
! { prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype);
! all_prefix_attributes = prefix_attributes; ;}
! break;
!
! case 549:
#line 2526 "c-parse.y"
! { pushlevel (0);
! declare_parm_level (); ;}
! break;
!
! case 550:
#line 2529 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype;
! poplevel (0, 0, 0); ;}
! break;
!
! case 552:
#line 2536 "c-parse.y"
! { tree t;
for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
if (TREE_VALUE (t) == NULL_TREE)
error ("`...' in old-style identifier list");
*************** case 551:
*** 4581,4638 ****
|| TREE_PURPOSE (yyval.ttype) == 0
|| TREE_CODE (TREE_PURPOSE (yyval.ttype)) != PARM_DECL))
YYERROR1;
! ;
! break;}
! case 552:
#line 2554 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
! break;}
! case 553:
#line 2556 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
! break;}
! case 554:
#line 2562 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
! break;}
! case 555:
#line 2564 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
! break;}
! case 556:
#line 2569 "c-parse.y"
! { yyval.itype = SAVE_EXT_FLAGS();
pedantic = 0;
warn_pointer_arith = 0;
warn_traditional = 0;
! flag_iso = 0; ;
! break;}
! }
- #line 705 "/usr/share/bison/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
- #if YYLSP_NEEDED
- yylsp -= yylen;
- #endif
! #if YYDEBUG
! if (yydebug)
! {
! short *yyssp1 = yyss - 1;
! YYFPRINTF (stderr, "state stack now");
! while (yyssp1 != yyssp)
! YYFPRINTF (stderr, " %d", *++yyssp1);
! YYFPRINTF (stderr, "\n");
! }
! #endif
*++yyvsp = yyval;
! #if YYLSP_NEEDED
! *++yylsp = yyloc;
! #endif
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
--- 5263,5314 ----
|| TREE_PURPOSE (yyval.ttype) == 0
|| TREE_CODE (TREE_PURPOSE (yyval.ttype)) != PARM_DECL))
YYERROR1;
! ;}
! break;
!
! case 553:
#line 2554 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;}
! break;
!
! case 554:
#line 2556 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;}
! break;
!
! case 555:
#line 2562 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;}
! break;
!
! case 556:
#line 2564 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;}
! break;
!
! case 557:
#line 2569 "c-parse.y"
! { yyval.itype = SAVE_EXT_FLAGS();
pedantic = 0;
warn_pointer_arith = 0;
warn_traditional = 0;
! flag_iso = 0; ;}
! break;
+ }
+
+ /* Line 991 of yacc.c. */
+ #line 5302 "c-parse.c"
yyvsp -= yylen;
yyssp -= yylen;
!
! YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
!
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
*************** case 556:
*** 4640,4650 ****
yyn = yyr1[yyn];
! yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
! if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
! yystate = yydefgoto[yyn - YYNTBASE];
goto yynewstate;
--- 5316,5326 ----
yyn = yyr1[yyn];
! yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
! if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
! yystate = yydefgoto[yyn - YYNTOKENS];
goto yynewstate;
*************** yyerrlab:
*** 4657,4669 ****
if (!yyerrstatus)
{
++yynerrs;
!
! #ifdef YYERROR_VERBOSE
yyn = yypact[yystate];
! if (yyn > YYFLAG && yyn < YYLAST)
{
YYSIZE_T yysize = 0;
char *yymsg;
int yyx, yycount;
--- 5333,5345 ----
if (!yyerrstatus)
{
++yynerrs;
! #if YYERROR_VERBOSE
yyn = yypact[yystate];
! if (YYPACT_NINF < yyn && yyn < YYLAST)
{
YYSIZE_T yysize = 0;
+ int yytype = YYTRANSLATE (yychar);
char *yymsg;
int yyx, yycount;
*************** yyerrlab:
*** 4672,4686 ****
YYCHECK. */
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
! if (yycheck[yyx + yyn] == yyx)
yysize += yystrlen (yytname[yyx]) + 15, yycount++;
! yysize += yystrlen ("parse error, unexpected ") + 1;
! yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
! char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
! yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
if (yycount < 5)
{
--- 5348,5362 ----
YYCHECK. */
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
! if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
yysize += yystrlen (yytname[yyx]) + 15, yycount++;
! yysize += yystrlen ("syntax error, unexpected ") + 1;
! yysize += yystrlen (yytname[yytype]);
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
! char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
! yyp = yystpcpy (yyp, yytname[yytype]);
if (yycount < 5)
{
*************** yyerrlab:
*** 4688,4694 ****
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *));
yyx++)
! if (yycheck[yyx + yyn] == yyx)
{
const char *yyq = ! yycount ? ", expecting " : " or ";
yyp = yystpcpy (yyp, yyq);
--- 5364,5370 ----
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *));
yyx++)
! if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
const char *yyq = ! yycount ? ", expecting " : " or ";
yyp = yystpcpy (yyp, yyq);
*************** yyerrlab:
*** 4700,4801 ****
YYSTACK_FREE (yymsg);
}
else
! yyerror ("parse error; also virtual memory exhausted");
}
else
! #endif /* defined (YYERROR_VERBOSE) */
! yyerror ("parse error");
}
- goto yyerrlab1;
! /*--------------------------------------------------.
! | yyerrlab1 -- error raised explicitly by an action |
! `--------------------------------------------------*/
! yyerrlab1:
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
error, discard it. */
! /* return failure if at end of input */
if (yychar == YYEOF)
! YYABORT;
! YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
! yychar, yytname[yychar1]));
yychar = YYEMPTY;
}
/* Else will try to reuse lookahead token after shifting the error
token. */
- yyerrstatus = 3; /* Each real token shifted decrements this */
! goto yyerrhandle;
- /*-------------------------------------------------------------------.
- | yyerrdefault -- current state does not do anything special for the |
- | error token. |
- `-------------------------------------------------------------------*/
- yyerrdefault:
- #if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
! /* If its default is to accept any token, ok. Otherwise pop it. */
! yyn = yydefact[yystate];
! if (yyn)
! goto yydefault;
! #endif
/*---------------------------------------------------------------.
! | yyerrpop -- pop the current state because it cannot handle the |
! | error token |
`---------------------------------------------------------------*/
! yyerrpop:
! if (yyssp == yyss)
! YYABORT;
! yyvsp--;
! yystate = *--yyssp;
! #if YYLSP_NEEDED
! yylsp--;
! #endif
! #if YYDEBUG
! if (yydebug)
{
! short *yyssp1 = yyss - 1;
! YYFPRINTF (stderr, "Error: state stack now");
! while (yyssp1 != yyssp)
! YYFPRINTF (stderr, " %d", *++yyssp1);
! YYFPRINTF (stderr, "\n");
! }
! #endif
! /*--------------.
! | yyerrhandle. |
! `--------------*/
! yyerrhandle:
! yyn = yypact[yystate];
! if (yyn == YYFLAG)
! goto yyerrdefault;
! yyn += YYTERROR;
! if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
! goto yyerrdefault;
! yyn = yytable[yyn];
! if (yyn < 0)
! {
! if (yyn == YYFLAG)
! goto yyerrpop;
! yyn = -yyn;
! goto yyreduce;
}
- else if (yyn == 0)
- goto yyerrpop;
if (yyn == YYFINAL)
YYACCEPT;
--- 5376,5468 ----
YYSTACK_FREE (yymsg);
}
else
! yyerror ("syntax error; also virtual memory exhausted");
}
else
! #endif /* YYERROR_VERBOSE */
! yyerror ("syntax error");
}
!
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
error, discard it. */
! /* Return failure if at end of input. */
if (yychar == YYEOF)
! {
! /* Pop the error token. */
! YYPOPSTACK;
! /* Pop the rest of the stack. */
! while (yyss < yyssp)
! {
! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
! yydestruct (yystos[*yyssp], yyvsp);
! YYPOPSTACK;
! }
! YYABORT;
! }
!
! YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
! yydestruct (yytoken, &yylval);
yychar = YYEMPTY;
+
}
/* Else will try to reuse lookahead token after shifting the error
token. */
+ goto yyerrlab2;
! /*----------------------------------------------------.
! | yyerrlab1 -- error raised explicitly by an action. |
! `----------------------------------------------------*/
! yyerrlab1:
+ /* Suppress GCC warning that yyerrlab1 is unused when no action
+ invokes YYERROR. */
+ #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \
+ && !defined __cplusplus
+ __attribute__ ((__unused__))
+ #endif
! goto yyerrlab2;
/*---------------------------------------------------------------.
! | yyerrlab2 -- pop states until the error token can be shifted. |
`---------------------------------------------------------------*/
! yyerrlab2:
! yyerrstatus = 3; /* Each real token shifted decrements this. */
! for (;;)
{
! yyn = yypact[yystate];
! if (yyn != YYPACT_NINF)
! {
! yyn += YYTERROR;
! if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
! {
! yyn = yytable[yyn];
! if (0 < yyn)
! break;
! }
! }
! /* Pop the current state because it cannot handle the error token. */
! if (yyssp == yyss)
! YYABORT;
! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
! yydestruct (yystos[yystate], yyvsp);
! yyvsp--;
! yystate = *--yyssp;
! YY_STACK_PRINT (yyss, yyssp);
}
if (yyn == YYFINAL)
YYACCEPT;
*************** yyerrhandle:
*** 4803,4811 ****
YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval;
! #if YYLSP_NEEDED
! *++yylsp = yylloc;
! #endif
yystate = yyn;
goto yynewstate;
--- 5470,5476 ----
YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval;
!
yystate = yyn;
goto yynewstate;
*************** yyabortlab:
*** 4825,4837 ****
yyresult = 1;
goto yyreturn;
! /*---------------------------------------------.
! | yyoverflowab -- parser overflow comes here. |
! `---------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
yyresult = 2;
/* Fall through. */
yyreturn:
#ifndef yyoverflow
--- 5490,5504 ----
yyresult = 1;
goto yyreturn;
! #ifndef yyoverflow
! /*----------------------------------------------.
! | yyoverflowlab -- parser overflow comes here. |
! `----------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
yyresult = 2;
/* Fall through. */
+ #endif
yyreturn:
#ifndef yyoverflow
*************** yyreturn:
*** 4840,4845 ****
--- 5507,5514 ----
#endif
return yyresult;
}
+
+
#line 2576 "c-parse.y"
*************** c_parse_file (void)
*** 5313,5315 ****
--- 5982,5986 ----
}
#include "gt-c-parse.h"
+
+
diff -Nrcpad gcc-3.4.4/gcc/c-pch.c gcc-3.4.5/gcc/c-pch.c
*** gcc-3.4.4/gcc/c-pch.c 2004-03-24 22:27:54.000000000 +0000
--- gcc-3.4.5/gcc/c-pch.c 2005-08-02 19:03:45.000000000 +0000
*************** c_common_no_more_pch (void)
*** 428,433 ****
if (cpp_get_callbacks (parse_in)->valid_pch)
{
cpp_get_callbacks (parse_in)->valid_pch = NULL;
! host_hooks.gt_pch_use_address (NULL, 0);
}
}
--- 428,433 ----
if (cpp_get_callbacks (parse_in)->valid_pch)
{
cpp_get_callbacks (parse_in)->valid_pch = NULL;
! host_hooks.gt_pch_use_address (NULL, 0, -1, 0);
}
}
diff -Nrcpad gcc-3.4.4/gcc/cppfiles.c gcc-3.4.5/gcc/cppfiles.c
*** gcc-3.4.4/gcc/cppfiles.c 2004-12-15 13:41:17.000000000 +0000
--- gcc-3.4.5/gcc/cppfiles.c 2005-11-07 19:49:04.000000000 +0000
*************** static bool should_stack_file (cpp_reade
*** 164,170 ****
static struct cpp_dir *search_path_head (cpp_reader *, const char *fname,
int angle_brackets, enum include_type);
static const char *dir_name_of_file (_cpp_file *file);
! static void open_file_failed (cpp_reader *pfile, _cpp_file *file);
static struct file_hash_entry *search_cache (struct file_hash_entry *head,
const cpp_dir *start_dir);
static _cpp_file *make_cpp_file (cpp_reader *, cpp_dir *, const char *fname);
--- 164,170 ----
static struct cpp_dir *search_path_head (cpp_reader *, const char *fname,
int angle_brackets, enum include_type);
static const char *dir_name_of_file (_cpp_file *file);
! static void open_file_failed (cpp_reader *pfile, _cpp_file *file, int);
static struct file_hash_entry *search_cache (struct file_hash_entry *head,
const cpp_dir *start_dir);
static _cpp_file *make_cpp_file (cpp_reader *, cpp_dir *, const char *fname);
*************** find_file_in_dir (cpp_reader *pfile, _cp
*** 330,336 ****
if (file->err_no != ENOENT)
{
! open_file_failed (pfile, file);
return true;
}
--- 330,336 ----
if (file->err_no != ENOENT)
{
! open_file_failed (pfile, file, 0);
return true;
}
*************** _cpp_find_failed (_cpp_file *file)
*** 360,366 ****
to open_file().
*/
_cpp_file *
! _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool fake)
{
struct file_hash_entry *entry, **hash_slot;
_cpp_file *file;
--- 360,366 ----
to open_file().
*/
_cpp_file *
! _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool fake, int angle_brackets)
{
struct file_hash_entry *entry, **hash_slot;
_cpp_file *file;
*************** _cpp_find_file (cpp_reader *pfile, const
*** 391,397 ****
file->dir = file->dir->next;
if (file->dir == NULL)
{
! open_file_failed (pfile, file);
if (invalid_pch)
{
cpp_error (pfile, CPP_DL_ERROR,
--- 391,397 ----
file->dir = file->dir->next;
if (file->dir == NULL)
{
! open_file_failed (pfile, file, angle_brackets);
if (invalid_pch)
{
cpp_error (pfile, CPP_DL_ERROR,
*************** read_file (cpp_reader *pfile, _cpp_file
*** 533,539 ****
if (file->fd == -1 && !open_file (file))
{
! open_file_failed (pfile, file);
return false;
}
--- 533,539 ----
if (file->fd == -1 && !open_file (file))
{
! open_file_failed (pfile, file, 0);
return false;
}
*************** _cpp_stack_include (cpp_reader *pfile, c
*** 757,772 ****
if (!dir)
return false;
! return _cpp_stack_file (pfile, _cpp_find_file (pfile, fname, dir, false),
type == IT_IMPORT);
}
/* Could not open FILE. The complication is dependency output. */
static void
! open_file_failed (cpp_reader *pfile, _cpp_file *file)
{
int sysp = pfile->map ? pfile->map->sysp: 0;
! bool print_dep = CPP_OPTION (pfile, deps.style) > !!sysp;
errno = file->err_no;
if (print_dep && CPP_OPTION (pfile, deps.missing_files) && errno == ENOENT)
--- 757,773 ----
if (!dir)
return false;
! return _cpp_stack_file (pfile, _cpp_find_file (pfile, fname, dir, false,
! angle_brackets),
type == IT_IMPORT);
}
/* Could not open FILE. The complication is dependency output. */
static void
! open_file_failed (cpp_reader *pfile, _cpp_file *file, int angle_brackets)
{
int sysp = pfile->map ? pfile->map->sysp: 0;
! bool print_dep = CPP_OPTION (pfile, deps.style) > (angle_brackets || !!sysp);
errno = file->err_no;
if (print_dep && CPP_OPTION (pfile, deps.missing_files) && errno == ENOENT)
*************** _cpp_cleanup_files (cpp_reader *pfile)
*** 948,954 ****
void
_cpp_fake_include (cpp_reader *pfile, const char *fname)
{
! _cpp_find_file (pfile, fname, pfile->buffer->file->dir, true);
}
/* Not everyone who wants to set system-header-ness on a buffer can
--- 949,955 ----
void
_cpp_fake_include (cpp_reader *pfile, const char *fname)
{
! _cpp_find_file (pfile, fname, pfile->buffer->file->dir, true, 0);
}
/* Not everyone who wants to set system-header-ness on a buffer can
*************** _cpp_compare_file_date (cpp_reader *pfil
*** 1030,1036 ****
if (!dir)
return -1;
! file = _cpp_find_file (pfile, fname, dir, false);
if (file->err_no)
return -1;
--- 1031,1037 ----
if (!dir)
return -1;
! file = _cpp_find_file (pfile, fname, dir, false, angle_brackets);
if (file->err_no)
return -1;
diff -Nrcpad gcc-3.4.4/gcc/cpphash.h gcc-3.4.5/gcc/cpphash.h
*** gcc-3.4.4/gcc/cpphash.h 2004-07-16 17:16:44.000000000 +0000
--- gcc-3.4.5/gcc/cpphash.h 2005-11-07 19:49:04.000000000 +0000
*************** extern void _cpp_destroy_hashtable (cpp_
*** 516,522 ****
/* In cppfiles.c */
typedef struct _cpp_file _cpp_file;
extern _cpp_file *_cpp_find_file (cpp_reader *, const char *fname,
! cpp_dir *start_dir, bool fake);
extern bool _cpp_find_failed (_cpp_file *);
extern void _cpp_mark_file_once_only (cpp_reader *, struct _cpp_file *);
extern void _cpp_fake_include (cpp_reader *, const char *);
--- 516,522 ----
/* In cppfiles.c */
typedef struct _cpp_file _cpp_file;
extern _cpp_file *_cpp_find_file (cpp_reader *, const char *fname,
! cpp_dir *start_dir, bool fake, int);
extern bool _cpp_find_failed (_cpp_file *);
extern void _cpp_mark_file_once_only (cpp_reader *, struct _cpp_file *);
extern void _cpp_fake_include (cpp_reader *, const char *);
diff -Nrcpad gcc-3.4.4/gcc/cppinit.c gcc-3.4.5/gcc/cppinit.c
*** gcc-3.4.4/gcc/cppinit.c 2004-06-28 20:28:04.000000000 +0000
--- gcc-3.4.5/gcc/cppinit.c 2005-11-09 07:51:51.000000000 +0000
*************** cpp_read_main_file (cpp_reader *pfile, c
*** 466,472 ****
}
pfile->main_file
! = _cpp_find_file (pfile, fname, &pfile->no_search_path, false);
if (_cpp_find_failed (pfile->main_file))
return NULL;
--- 466,472 ----
}
pfile->main_file
! = _cpp_find_file (pfile, fname, &pfile->no_search_path, false, 0);
if (_cpp_find_failed (pfile->main_file))
return NULL;
*************** cpp_read_main_file (cpp_reader *pfile, c
*** 477,482 ****
--- 477,484 ----
if (CPP_OPTION (pfile, preprocessed))
{
read_original_filename (pfile);
+ if (!pfile->map)
+ return NULL;
fname = pfile->map->to_file;
}
return fname;
*************** read_original_filename (cpp_reader *pfil
*** 496,503 ****
--- 498,507 ----
token = _cpp_lex_direct (pfile);
if (token->type == CPP_HASH)
{
+ pfile->state.in_directive = 1;
token1 = _cpp_lex_direct (pfile);
_cpp_backup_tokens (pfile, 1);
+ pfile->state.in_directive = 0;
/* If it's a #line directive, handle it. */
if (token1->type == CPP_NUMBER)
diff -Nrcpad gcc-3.4.4/gcc/c-typeck.c gcc-3.4.5/gcc/c-typeck.c
*** gcc-3.4.4/gcc/c-typeck.c 2005-01-19 09:44:35.000000000 +0000
--- gcc-3.4.5/gcc/c-typeck.c 2005-10-08 22:21:11.000000000 +0000
*************** digest_init (tree type, tree init, int r
*** 4098,4104 ****
vector constructor is not constant (e.g. {1,2,3,foo()}) then punt
below and handle as a constructor. */
if (code == VECTOR_TYPE
! && comptypes (TREE_TYPE (inside_init), type, COMPARE_STRICT)
&& TREE_CONSTANT (inside_init))
{
if (TREE_CODE (inside_init) == VECTOR_CST
--- 4098,4105 ----
vector constructor is not constant (e.g. {1,2,3,foo()}) then punt
below and handle as a constructor. */
if (code == VECTOR_TYPE
! && TREE_CODE (TREE_TYPE (inside_init)) == VECTOR_TYPE
! && vector_types_convertible_p (TREE_TYPE (inside_init), type)
&& TREE_CONSTANT (inside_init))
{
if (TREE_CODE (inside_init) == VECTOR_CST
*************** push_init_level (int implicit)
*** 4634,4652 ****
tree value = NULL_TREE;
/* If we've exhausted any levels that didn't have braces,
! pop them now. */
! while (constructor_stack->implicit)
{
! if ((TREE_CODE (constructor_type) == RECORD_TYPE
! || TREE_CODE (constructor_type) == UNION_TYPE)
! && constructor_fields == 0)
! process_init_element (pop_init_level (1));
! else if (TREE_CODE (constructor_type) == ARRAY_TYPE
! && constructor_max_index
! && tree_int_cst_lt (constructor_max_index, constructor_index))
! process_init_element (pop_init_level (1));
! else
! break;
}
/* Unless this is an explicit brace, we need to preserve previous
--- 4635,4661 ----
tree value = NULL_TREE;
/* If we've exhausted any levels that didn't have braces,
! pop them now. If implicit == 1, this will have been done in
! process_init_element; do not repeat it here because in the case
! of excess initializers for an empty aggregate this leads to an
! infinite cycle of popping a level and immediately recreating
! it. */
! if (implicit != 1)
{
! while (constructor_stack->implicit)
! {
! if ((TREE_CODE (constructor_type) == RECORD_TYPE
! || TREE_CODE (constructor_type) == UNION_TYPE)
! && constructor_fields == 0)
! process_init_element (pop_init_level (1));
! else if (TREE_CODE (constructor_type) == ARRAY_TYPE
! && constructor_max_index
! && tree_int_cst_lt (constructor_max_index,
! constructor_index))
! process_init_element (pop_init_level (1));
! else
! break;
! }
}
/* Unless this is an explicit brace, we need to preserve previous
diff -Nrcpad gcc-3.4.4/gcc/doc/cpp.1 gcc-3.4.5/gcc/doc/cpp.1
*** gcc-3.4.4/gcc/doc/cpp.1 2005-05-19 10:02:15.000000000 +0000
--- gcc-3.4.5/gcc/doc/cpp.1 2005-12-01 03:56:59.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "CPP 1"
! .TH CPP 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
cpp \- The C Preprocessor
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "CPP 1"
! .TH CPP 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
cpp \- The C Preprocessor
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/cpp.info gcc-3.4.5/gcc/doc/cpp.info
*** gcc-3.4.4/gcc/doc/cpp.info 2005-05-19 10:02:13.000000000 +0000
--- gcc-3.4.5/gcc/doc/cpp.info 2005-12-01 03:56:55.000000000 +0000
***************
*** 1,7 ****
! This is doc/cpp.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/doc/cpp.texi.
! Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 1,7 ----
! This is doc/cpp.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/doc/cpp.texi.
! Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** are (a) (see below), and the Back-Cover
*** 21,27 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* Cpp: (cpp). The GNU C preprocessor.
--- 21,28 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
!
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* Cpp: (cpp). The GNU C preprocessor.
*************** END-INFO-DIR-ENTRY
*** 30,38 ****
File: cpp.info, Node: Top, Next: Overview, Up: (dir)
!
! The C preprocessor implements the macro language used to transform C,
C++, and Objective-C programs before they are compiled. It can also be
useful on its own.
--- 31,40 ----
File: cpp.info, Node: Top, Next: Overview, Up: (dir)
+ The C Preprocessor
+ ******************
! The C preprocessor implements the macro language used to transform C,
C++, and Objective-C programs before they are compiled. It can also be
useful on its own.
*************** Obsolete Features
*** 131,137 ****
* Assertions::
* Obsolete once-only headers::
! Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 133,139 ----
* Assertions::
* Obsolete once-only headers::
! Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** are (a) (see below), and the Back-Cover
*** 151,165 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
File: cpp.info, Node: Overview, Next: Header Files, Prev: Top, Up: Top
! Overview
! ********
! The C preprocessor, often known as "cpp", is a "macro processor"
! that is used automatically by the C compiler to transform your program
before compilation. It is called a macro processor because it allows
you to define "macros", which are brief abbreviations for longer
constructs.
--- 153,168 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
!
File: cpp.info, Node: Overview, Next: Header Files, Prev: Top, Up: Top
! 1 Overview
! **********
! The C preprocessor, often known as "cpp", is a "macro processor" that
! is used automatically by the C compiler to transform your program
before compilation. It is called a macro processor because it allows
you to define "macros", which are brief abbreviations for longer
constructs.
*************** manual refer to GNU CPP.
*** 215,224 ****
File: cpp.info, Node: Character sets, Next: Initial processing, Up: Overview
! Character sets
! ==============
! Source code character set processing in C and related languages is
rather complicated. The C standard discusses two character sets, but
there are really at least four.
--- 218,227 ----
File: cpp.info, Node: Character sets, Next: Initial processing, Up: Overview
! 1.1 Character sets
! ==================
! Source code character set processing in C and related languages is
rather complicated. The C standard discusses two character sets, but
there are really at least four.
*************** some system ABIs so we cannot fix this.
*** 269,278 ****
File: cpp.info, Node: Initial processing, Next: Tokenization, Prev: Character sets, Up: Overview
! Initial processing
! ==================
! The preprocessor performs a series of textual transformations on its
input. These happen before all other processing. Conceptually, they
happen in a rigid order, and the entire file is run through each
transformation before the next one begins. CPP actually does them all
--- 272,281 ----
File: cpp.info, Node: Initial processing, Next: Tokenization, Prev: Character sets, Up: Overview
! 1.2 Initial processing
! ======================
! The preprocessor performs a series of textual transformations on its
input. These happen before all other processing. Conceptually, they
happen in a rigid order, and the entire file is run through each
transformation before the next one begins. CPP actually does them all
*************** standard.
*** 363,369 ****
// contains line comment
yet more comment
*/ outside comment
!
// line comment /* contains block comment */
But beware of commenting out one end of a block comment with a line
--- 366,372 ----
// contains line comment
yet more comment
*/ outside comment
!
// line comment /* contains block comment */
But beware of commenting out one end of a block comment with a line
*************** correct program, however.
*** 403,412 ****
File: cpp.info, Node: Tokenization, Next: The preprocessing language, Prev: Initial processing, Up: Overview
! Tokenization
! ============
! After the textual transformations are finished, the input file is
converted into a sequence of "preprocessing tokens". These mostly
correspond to the syntactic tokens used by the C compiler, but there are
a few differences. White space separates tokens; it is not itself a
--- 406,415 ----
File: cpp.info, Node: Tokenization, Next: The preprocessing language, Prev: Initial processing, Up: Overview
! 1.3 Tokenization
! ================
! After the textual transformations are finished, the input file is
converted into a sequence of "preprocessing tokens". These mostly
correspond to the syntactic tokens used by the C compiler, but there are
a few differences. White space separates tokens; it is not itself a
*************** what we are calling "string constants".
*** 551,564 ****
File: cpp.info, Node: The preprocessing language, Prev: Tokenization, Up: Overview
! The preprocessing language
! ==========================
! After tokenization, the stream of tokens may simply be passed
! straight to the compiler's parser. However, if it contains any
! operations in the "preprocessing language", it will be transformed
! first. This stage corresponds roughly to the standard's "translation
! phase 4" and is what most people think of as the preprocessor's job.
The preprocessing language consists of "directives" to be executed
and "macros" to be expanded. Its primary capabilities are:
--- 554,567 ----
File: cpp.info, Node: The preprocessing language, Prev: Tokenization, Up: Overview
! 1.4 The preprocessing language
! ==============================
! After tokenization, the stream of tokens may simply be passed straight
! to the compiler's parser. However, if it contains any operations in the
! "preprocessing language", it will be transformed first. This stage
! corresponds roughly to the standard's "translation phase 4" and is what
! most people think of as the preprocessor's job.
The preprocessing language consists of "directives" to be executed
and "macros" to be expanded. Its primary capabilities are:
*************** the first line to make one long line.
*** 614,626 ****
File: cpp.info, Node: Header Files, Next: Macros, Prev: Overview, Up: Top
! Header Files
! ************
! A header file is a file containing C declarations and macro
! definitions (*note Macros::) to be shared between several source files.
! You request the use of a header file in your program by "including"
! it, with the C preprocessing directive `#include'.
Header files serve two purposes.
--- 617,629 ----
File: cpp.info, Node: Header Files, Next: Macros, Prev: Overview, Up: Top
! 2 Header Files
! **************
! A header file is a file containing C declarations and macro definitions
! (*note Macros::) to be shared between several source files. You request
! the use of a header file in your program by "including" it, with the C
! preprocessing directive `#include'.
Header files serve two purposes.
*************** underscores in header file names, and at
*** 662,672 ****
File: cpp.info, Node: Include Syntax, Next: Include Operation, Up: Header Files
! Include Syntax
! ==============
! Both user and system header files are included using the
! preprocessing directive `#include'. It has two variants:
`#include '
This variant is used for system header files. It searches for a
--- 665,675 ----
File: cpp.info, Node: Include Syntax, Next: Include Operation, Up: Header Files
! 2.1 Include Syntax
! ==================
! Both user and system header files are included using the preprocessing
! directive `#include'. It has two variants:
`#include '
This variant is used for system header files. It searches for a
*************** after the file name.
*** 698,708 ****
File: cpp.info, Node: Include Operation, Next: Search Path, Prev: Include Syntax, Up: Header Files
! Include Operation
! =================
! The `#include' directive works by directing the C preprocessor to
! scan the specified file as input before continuing with the rest of the
current file. The output from the preprocessor contains the output
already generated, followed by the output resulting from the included
file, followed by the output that comes from the text after the
--- 701,711 ----
File: cpp.info, Node: Include Operation, Next: Search Path, Prev: Include Syntax, Up: Header Files
! 2.2 Include Operation
! =====================
! The `#include' directive works by directing the C preprocessor to scan
! the specified file as input before continuing with the rest of the
current file. The output from the preprocessor contains the output
already generated, followed by the output resulting from the included
file, followed by the output that comes from the text after the
*************** this,
*** 716,722 ****
int x;
#include "header.h"
!
int
main (void)
{
--- 719,725 ----
int x;
#include "header.h"
!
int
main (void)
{
*************** read
*** 728,734 ****
int x;
char *test (void);
!
int
main (void)
{
--- 731,737 ----
int x;
char *test (void);
!
int
main (void)
{
*************** final newline.
*** 756,765 ****
File: cpp.info, Node: Search Path, Next: Once-Only Headers, Prev: Include Operation, Up: Header Files
! Search Path
! ===========
! GCC looks in several different places for headers. On a normal Unix
system, if you do not instruct it otherwise, it will look for headers
requested with `#include ' in:
--- 759,768 ----
File: cpp.info, Node: Search Path, Next: Once-Only Headers, Prev: Include Operation, Up: Header Files
! 2.3 Search Path
! ===============
! GCC looks in several different places for headers. On a normal Unix
system, if you do not instruct it otherwise, it will look for headers
requested with `#include ' in:
*************** are generally less useful. *Note Invoca
*** 824,836 ****
File: cpp.info, Node: Once-Only Headers, Next: Computed Includes, Prev: Search Path, Up: Header Files
! Once-Only Headers
! =================
! If a header file happens to be included twice, the compiler will
! process its contents twice. This is very likely to cause an error,
! e.g. when the compiler sees the same structure definition twice. Even
! if it does not, it will certainly waste time.
The standard way to prevent this is to enclose the entire real
contents of the file in a conditional, like this:
--- 827,839 ----
File: cpp.info, Node: Once-Only Headers, Next: Computed Includes, Prev: Search Path, Up: Header Files
! 2.4 Once-Only Headers
! =====================
! If a header file happens to be included twice, the compiler will process
! its contents twice. This is very likely to cause an error, e.g. when
! the compiler sees the same structure definition twice. Even if it does
! not, it will certainly waste time.
The standard way to prevent this is to enclose the entire real
contents of the file in a conditional, like this:
*************** contents of the file in a conditional, l
*** 838,846 ****
/* File foo. */
#ifndef FILE_FOO_SEEN
#define FILE_FOO_SEEN
!
THE ENTIRE FILE
!
#endif /* !FILE_FOO_SEEN */
This construct is commonly known as a "wrapper #ifndef". When the
--- 841,849 ----
/* File foo. */
#ifndef FILE_FOO_SEEN
#define FILE_FOO_SEEN
!
THE ENTIRE FILE
!
#endif /* !FILE_FOO_SEEN */
This construct is commonly known as a "wrapper #ifndef". When the
*************** avoid conflicts with other header files.
*** 866,875 ****
File: cpp.info, Node: Computed Includes, Next: Wrapper Headers, Prev: Once-Only Headers, Up: Header Files
! Computed Includes
! =================
! Sometimes it is necessary to select one of several different header
files to be included into your program. They might specify
configuration parameters to be used on different sorts of operating
systems, for instance. You could do this with a series of conditionals,
--- 869,878 ----
File: cpp.info, Node: Computed Includes, Next: Wrapper Headers, Prev: Once-Only Headers, Up: Header Files
! 2.5 Computed Includes
! =====================
! Sometimes it is necessary to select one of several different header
files to be included into your program. They might specify
configuration parameters to be used on different sorts of operating
systems, for instance. You could do this with a series of conditionals,
*************** minimize confusion for people reading yo
*** 940,949 ****
File: cpp.info, Node: Wrapper Headers, Next: System Headers, Prev: Computed Includes, Up: Header Files
! Wrapper Headers
! ===============
! Sometimes it is necessary to adjust the contents of a system-provided
header file without editing it directly. GCC's `fixincludes' operation
does this, for example. One way to do that would be to create a new
header file with the same name and insert it in the search path before
--- 943,952 ----
File: cpp.info, Node: Wrapper Headers, Next: System Headers, Prev: Computed Includes, Up: Header Files
! 2.6 Wrapper Headers
! ===================
! Sometimes it is necessary to adjust the contents of a system-provided
header file without editing it directly. GCC's `fixincludes' operation
does this, for example. One way to do that would be to create a new
header file with the same name and insert it in the search path before
*************** Headers::), it will recurse infinitely a
*** 958,966 ****
You could include the old header with an absolute pathname:
#include "/usr/include/old-header.h"
!
! This works, but is not clean; should the system headers ever move, you
! would have to edit the new headers to match.
There is no way to solve this problem within the C standard, but you
can use the GNU extension `#include_next'. It means, "Include the
--- 961,968 ----
You could include the old header with an absolute pathname:
#include "/usr/include/old-header.h"
! This works, but is not clean; should the system headers ever move,
! you would have to edit the new headers to match.
There is no way to solve this problem within the C standard, but you
can use the GNU extension `#include_next'. It means, "Include the
*************** lines of `fixincludes'.
*** 991,1000 ****
File: cpp.info, Node: System Headers, Prev: Wrapper Headers, Up: Header Files
! System Headers
! ==============
! The header files declaring interfaces to the operating system and
runtime libraries often cannot be written in strictly conforming C.
Therefore, GCC gives code found in "system headers" special treatment.
All warnings, other than those generated by `#warning' (*note
--- 993,1002 ----
File: cpp.info, Node: System Headers, Prev: Wrapper Headers, Up: Header Files
! 2.7 System Headers
! ==================
! The header files declaring interfaces to the operating system and
runtime libraries often cannot be written in strictly conforming C.
Therefore, GCC gives code found in "system headers" special treatment.
All warnings, other than those generated by `#warning' (*note
*************** from the command line.
*** 1034,1047 ****
File: cpp.info, Node: Macros, Next: Conditionals, Prev: Header Files, Up: Top
! Macros
! ******
! A "macro" is a fragment of code which has been given a name.
! Whenever the name is used, it is replaced by the contents of the macro.
! There are two kinds of macros. They differ mostly in what they look
! like when they are used. "Object-like" macros resemble data objects
! when used, "function-like" macros resemble function calls.
You may define any valid identifier as a macro, even if it is a C
keyword. The preprocessor does not know anything about keywords. This
--- 1036,1049 ----
File: cpp.info, Node: Macros, Next: Conditionals, Prev: Header Files, Up: Top
! 3 Macros
! ********
! A "macro" is a fragment of code which has been given a name. Whenever
! the name is used, it is replaced by the contents of the macro. There
! are two kinds of macros. They differ mostly in what they look like
! when they are used. "Object-like" macros resemble data objects when
! used, "function-like" macros resemble function calls.
You may define any valid identifier as a macro, even if it is a C
keyword. The preprocessor does not know anything about keywords. This
*************** macros when you are compiling C++.
*** 1067,1078 ****
File: cpp.info, Node: Object-like Macros, Next: Function-like Macros, Up: Macros
! Object-like Macros
! ==================
! An "object-like macro" is a simple identifier which will be replaced
! by a code fragment. It is called object-like because it looks like a
! data object in code that uses it. They are most commonly used to give
symbolic names to numeric constants.
You create macros with the `#define' directive. `#define' is
--- 1069,1080 ----
File: cpp.info, Node: Object-like Macros, Next: Function-like Macros, Up: Macros
! 3.1 Object-like Macros
! ======================
! An "object-like macro" is a simple identifier which will be replaced by
! a code fragment. It is called object-like because it looks like a data
! object in code that uses it. They are most commonly used to give
symbolic names to numeric constants.
You create macros with the `#define' directive. `#define' is
*************** Self-Referential Macros::, for the preci
*** 1169,1181 ****
File: cpp.info, Node: Function-like Macros, Next: Macro Arguments, Prev: Object-like Macros, Up: Macros
! Function-like Macros
! ====================
! You can also define macros whose use looks like a function call.
! These are called "function-like macros". To define a function-like
! macro, you use the same `#define' directive, but you put a pair of
! parentheses immediately after the macro name. For example,
#define lang_init() c_init()
lang_init()
--- 1171,1183 ----
File: cpp.info, Node: Function-like Macros, Next: Macro Arguments, Prev: Object-like Macros, Up: Macros
! 3.2 Function-like Macros
! ========================
! You can also define macros whose use looks like a function call. These
! are called "function-like macros". To define a function-like macro,
! you use the same `#define' directive, but you put a pair of parentheses
! immediately after the macro name. For example,
#define lang_init() c_init()
lang_init()
*************** consume those parentheses.
*** 1213,1222 ****
File: cpp.info, Node: Macro Arguments, Next: Stringification, Prev: Function-like Macros, Up: Macros
! Macro Arguments
! ===============
! Function-like macros can take "arguments", just like true functions.
To define a macro that uses arguments, you insert "parameters" between
the pair of parentheses in the macro definition that make the macro
function-like. The parameters must be valid C identifiers, separated
--- 1215,1224 ----
File: cpp.info, Node: Macro Arguments, Next: Stringification, Prev: Function-like Macros, Up: Macros
! 3.3 Macro Arguments
! ===================
! Function-like macros can take "arguments", just like true functions.
To define a macro that uses arguments, you insert "parameters" between
the pair of parentheses in the macro definition that make the macro
function-like. The parameters must be valid C identifiers, separated
*************** Here are some silly examples using `min'
*** 1286,1292 ****
min(a, ) ==> ((a ) < ( ) ? (a ) : ( ))
min(,) ==> (( ) < ( ) ? ( ) : ( ))
min((,),) ==> (((,)) < ( ) ? ((,)) : ( ))
!
min() error--> macro "min" requires 2 arguments, but only 1 given
min(,,) error--> macro "min" passed 3 arguments, but takes just 2
--- 1288,1294 ----
min(a, ) ==> ((a ) < ( ) ? (a ) : ( ))
min(,) ==> (( ) < ( ) ? ( ) : ( ))
min((,),) ==> (((,)) < ( ) ? ((,)) : ( ))
!
min() error--> macro "min" requires 2 arguments, but only 1 given
min(,,) error--> macro "min" passed 3 arguments, but takes just 2
*************** their corresponding actual arguments.
*** 1306,1315 ****
File: cpp.info, Node: Stringification, Next: Concatenation, Prev: Macro Arguments, Up: Macros
! Stringification
! ===============
! Sometimes you may want to convert a macro argument into a string
constant. Parameters are not replaced inside string constants, but you
can use the `#' preprocessing operator instead. When a macro parameter
is used with a leading `#', the preprocessor replaces it with the
--- 1308,1317 ----
File: cpp.info, Node: Stringification, Next: Concatenation, Prev: Macro Arguments, Up: Macros
! 3.4 Stringification
! ===================
! Sometimes you may want to convert a macro argument into a string
constant. Parameters are not replaced inside string constants, but you
can use the `#' preprocessing operator instead. When a macro parameter
is used with a leading `#', the preprocessor replaces it with the
*************** argument, it has already been macro-expa
*** 1384,1395 ****
File: cpp.info, Node: Concatenation, Next: Variadic Macros, Prev: Stringification, Up: Macros
! Concatenation
! =============
! It is often useful to merge two tokens into one while expanding
! macros. This is called "token pasting" or "token concatenation". The
! `##' preprocessing operator performs token pasting. When a macro is
expanded, the two tokens on either side of each `##' operator are
combined into a single token, which then replaces the `##' and the two
original tokens in the macro expansion. Usually both will be
--- 1386,1397 ----
File: cpp.info, Node: Concatenation, Next: Variadic Macros, Prev: Stringification, Up: Macros
! 3.5 Concatenation
! =================
! It is often useful to merge two tokens into one while expanding macros.
! This is called "token pasting" or "token concatenation". The `##'
! preprocessing operator performs token pasting. When a macro is
expanded, the two tokens on either side of each `##' operator are
combined into a single token, which then replaces the `##' and the two
original tokens in the macro expansion. Usually both will be
*************** as follows:
*** 1431,1437 ****
char *name;
void (*function) (void);
};
!
struct command commands[] =
{
{ "quit", quit_command },
--- 1433,1439 ----
char *name;
void (*function) (void);
};
!
struct command commands[] =
{
{ "quit", quit_command },
*************** and the function name by concatenating t
*** 1447,1453 ****
Here is how it is done:
#define COMMAND(NAME) { #NAME, NAME ## _command }
!
struct command commands[] =
{
COMMAND (quit),
--- 1449,1455 ----
Here is how it is done:
#define COMMAND(NAME) { #NAME, NAME ## _command }
!
struct command commands[] =
{
COMMAND (quit),
*************** Here is how it is done:
*** 1458,1469 ****
File: cpp.info, Node: Variadic Macros, Next: Predefined Macros, Prev: Concatenation, Up: Macros
! Variadic Macros
! ===============
! A macro can be declared to accept a variable number of arguments
! much as a function can. The syntax for defining the macro is similar
! to that of a function. Here is an example:
#define eprintf(...) fprintf (stderr, __VA_ARGS__)
--- 1460,1471 ----
File: cpp.info, Node: Variadic Macros, Next: Predefined Macros, Prev: Concatenation, Up: Macros
! 3.6 Variadic Macros
! ===================
! A macro can be declared to accept a variable number of arguments much as
! a function can. The syntax for defining the macro is similar to that of
! a function. Here is an example:
#define eprintf(...) fprintf (stderr, __VA_ARGS__)
*************** comes immediately before it:
*** 1563,1572 ****
File: cpp.info, Node: Predefined Macros, Next: Undefining and Redefining Macros, Prev: Variadic Macros, Up: Macros
! Predefined Macros
! =================
! Several object-like macros are predefined; you use them without
supplying their definitions. They fall into three classes: standard,
common, and system-specific.
--- 1565,1574 ----
File: cpp.info, Node: Predefined Macros, Next: Undefining and Redefining Macros, Prev: Variadic Macros, Up: Macros
! 3.7 Predefined Macros
! =====================
! Several object-like macros are predefined; you use them without
supplying their definitions. They fall into three classes: standard,
common, and system-specific.
*************** like predefined macros, but you cannot u
*** 1583,1595 ****
File: cpp.info, Node: Standard Predefined Macros, Next: Common Predefined Macros, Up: Predefined Macros
! Standard Predefined Macros
! --------------------------
! The standard predefined macros are specified by the relevant
! language standards, so they are available with all compilers that
! implement those standards. Older compilers may not provide all of
! them. Their names all start with double underscores.
`__FILE__'
This macro expands to the name of the current input file, in the
--- 1585,1597 ----
File: cpp.info, Node: Standard Predefined Macros, Next: Common Predefined Macros, Up: Predefined Macros
! 3.7.1 Standard Predefined Macros
! --------------------------------
! The standard predefined macros are specified by the relevant language
! standards, so they are available with all compilers that implement
! those standards. Older compilers may not provide all of them. Their
! names all start with double underscores.
`__FILE__'
This macro expands to the name of the current input file, in the
*************** with `__FILE__' and `__LINE__', though.
*** 1710,1724 ****
This macro is defined with value 1 when preprocessing assembly
language.
File: cpp.info, Node: Common Predefined Macros, Next: System-specific Predefined Macros, Prev: Standard Predefined Macros, Up: Predefined Macros
! Common Predefined Macros
! ------------------------
! The common predefined macros are GNU C extensions. They are
! available with the same meanings regardless of the machine or operating
! system on which you are using GNU C. Their names all start with double
underscores.
`__GNUC__'
--- 1712,1727 ----
This macro is defined with value 1 when preprocessing assembly
language.
+
File: cpp.info, Node: Common Predefined Macros, Next: System-specific Predefined Macros, Prev: Standard Predefined Macros, Up: Predefined Macros
! 3.7.2 Common Predefined Macros
! ------------------------------
! The common predefined macros are GNU C extensions. They are available
! with the same meanings regardless of the machine or operating system on
! which you are using GNU C. Their names all start with double
underscores.
`__GNUC__'
*************** underscores.
*** 1892,1905 ****
File: cpp.info, Node: System-specific Predefined Macros, Next: C++ Named Operators, Prev: Common Predefined Macros, Up: Predefined Macros
! System-specific Predefined Macros
! ---------------------------------
! The C preprocessor normally predefines several macros that indicate
! what type of system and machine is in use. They are obviously
! different on each target supported by GCC. This manual, being for all
! systems and machines, cannot tell you what their names are, but you can
! use `cpp -dM' to see them all. *Note Invocation::. All system-specific
predefined macros expand to the constant 1, so you can test them with
either `#ifdef' or `#if'.
--- 1895,1908 ----
File: cpp.info, Node: System-specific Predefined Macros, Next: C++ Named Operators, Prev: Common Predefined Macros, Up: Predefined Macros
! 3.7.3 System-specific Predefined Macros
! ---------------------------------------
! The C preprocessor normally predefines several macros that indicate what
! type of system and machine is in use. They are obviously different on
! each target supported by GCC. This manual, being for all systems and
! machines, cannot tell you what their names are, but you can use `cpp
! -dM' to see them all. *Note Invocation::. All system-specific
predefined macros expand to the constant 1, so you can test them with
either `#ifdef' or `#if'.
*************** check specifically for features you need
*** 1930,1945 ****
File: cpp.info, Node: C++ Named Operators, Prev: System-specific Predefined Macros, Up: Predefined Macros
! C++ Named Operators
! -------------------
! In C++, there are eleven keywords which are simply alternate
! spellings of operators normally written with punctuation. These
! keywords are treated as such even in the preprocessor. They function
! as operators in `#if', and they cannot be defined as macros or
! poisoned. In C, you can request that those keywords take their C++
! meaning by including `iso646.h'. That header defines each one as a
! normal object-like macro expanding to the appropriate punctuator.
These are the named operators and their corresponding punctuators:
--- 1933,1948 ----
File: cpp.info, Node: C++ Named Operators, Prev: System-specific Predefined Macros, Up: Predefined Macros
! 3.7.4 C++ Named Operators
! -------------------------
! In C++, there are eleven keywords which are simply alternate spellings
! of operators normally written with punctuation. These keywords are
! treated as such even in the preprocessor. They function as operators in
! `#if', and they cannot be defined as macros or poisoned. In C, you can
! request that those keywords take their C++ meaning by including
! `iso646.h'. That header defines each one as a normal object-like macro
! expanding to the appropriate punctuator.
These are the named operators and their corresponding punctuators:
*************** Named Operator Punctuator
*** 1959,1970 ****
File: cpp.info, Node: Undefining and Redefining Macros, Next: Directives Within Macro Arguments, Prev: Predefined Macros, Up: Macros
! Undefining and Redefining Macros
! ================================
! If a macro ceases to be useful, it may be "undefined" with the
! `#undef' directive. `#undef' takes a single argument, the name of the
! macro to undefine. You use the bare macro name, even if the macro is
function-like. It is an error if anything appears on the line after
the macro name. `#undef' has no effect if the name is not a macro.
--- 1962,1973 ----
File: cpp.info, Node: Undefining and Redefining Macros, Next: Directives Within Macro Arguments, Prev: Predefined Macros, Up: Macros
! 3.8 Undefining and Redefining Macros
! ====================================
! If a macro ceases to be useful, it may be "undefined" with the `#undef'
! directive. `#undef' takes a single argument, the name of the macro to
! undefine. You use the bare macro name, even if the macro is
function-like. It is an error if anything appears on the line after
the macro name. `#undef' has no effect if the name is not a macro.
*************** These definitions are effectively the sa
*** 1994,2001 ****
#define FOUR (2 + 2)
#define FOUR (2 + 2)
#define FOUR (2 /* two */ + 2)
!
! but these are not:
#define FOUR (2 + 2)
#define FOUR ( 2+2 )
#define FOUR (2 * 2)
--- 1997,2003 ----
#define FOUR (2 + 2)
#define FOUR (2 + 2)
#define FOUR (2 /* two */ + 2)
! but these are not:
#define FOUR (2 + 2)
#define FOUR ( 2+2 )
#define FOUR (2 * 2)
*************** preprocessor will only complain if the d
*** 2011,2022 ****
File: cpp.info, Node: Directives Within Macro Arguments, Next: Macro Pitfalls, Prev: Undefining and Redefining Macros, Up: Macros
! Directives Within Macro Arguments
! =================================
! Occasionally it is convenient to use preprocessor directives within
! the arguments of a macro. The C and C++ standards declare that
! behavior in these cases is undefined.
Versions of CPP prior to 3.2 would reject such constructs with an
error message. This was the only syntactic difference between normal
--- 2013,2024 ----
File: cpp.info, Node: Directives Within Macro Arguments, Next: Macro Pitfalls, Prev: Undefining and Redefining Macros, Up: Macros
! 3.9 Directives Within Macro Arguments
! =====================================
! Occasionally it is convenient to use preprocessor directives within the
! arguments of a macro. The C and C++ standards declare that behavior in
! these cases is undefined.
Versions of CPP prior to 3.2 would reject such constructs with an
error message. This was the only syntactic difference between normal
*************** with the semantics described above.
*** 2051,2061 ****
File: cpp.info, Node: Macro Pitfalls, Prev: Directives Within Macro Arguments, Up: Macros
! Macro Pitfalls
! ==============
! In this section we describe some special rules that apply to macros
! and macro expansion, and point out certain cases in which the rules have
counter-intuitive consequences that you must watch out for.
* Menu:
--- 2053,2063 ----
File: cpp.info, Node: Macro Pitfalls, Prev: Directives Within Macro Arguments, Up: Macros
! 3.10 Macro Pitfalls
! ===================
! In this section we describe some special rules that apply to macros and
! macro expansion, and point out certain cases in which the rules have
counter-intuitive consequences that you must watch out for.
* Menu:
*************** counter-intuitive consequences that you
*** 2071,2080 ****
File: cpp.info, Node: Misnesting, Next: Operator Precedence Problems, Up: Macro Pitfalls
! Misnesting
! ----------
! When a macro is called with arguments, the arguments are substituted
into the macro body and the result is checked, together with the rest of
the input file, for more macro calls. It is possible to piece together
a macro call coming partially from the macro body and partially from the
--- 2073,2082 ----
File: cpp.info, Node: Misnesting, Next: Operator Precedence Problems, Up: Macro Pitfalls
! 3.10.1 Misnesting
! -----------------
! When a macro is called with arguments, the arguments are substituted
into the macro body and the result is checked, together with the rest of
the input file, for more macro calls. It is possible to piece together
a macro call coming partially from the macro body and partially from the
*************** and should be avoided.
*** 2103,2116 ****
File: cpp.info, Node: Operator Precedence Problems, Next: Swallowing the Semicolon, Prev: Misnesting, Up: Macro Pitfalls
! Operator Precedence Problems
! ----------------------------
! You may have noticed that in most of the macro definition examples
! shown above, each occurrence of a macro argument name had parentheses
! around it. In addition, another pair of parentheses usually surround
! the entire macro definition. Here is why it is best to write macros
! that way.
Suppose you define a macro as follows,
--- 2105,2118 ----
File: cpp.info, Node: Operator Precedence Problems, Next: Swallowing the Semicolon, Prev: Misnesting, Up: Macro Pitfalls
! 3.10.2 Operator Precedence Problems
! -----------------------------------
! You may have noticed that in most of the macro definition examples shown
! above, each occurrence of a macro argument name had parentheses around
! it. In addition, another pair of parentheses usually surround the
! entire macro definition. Here is why it is best to write macros that
! way.
Suppose you define a macro as follows,
*************** Here, then, is the recommended way to de
*** 2157,2166 ****
File: cpp.info, Node: Swallowing the Semicolon, Next: Duplication of Side Effects, Prev: Operator Precedence Problems, Up: Macro Pitfalls
! Swallowing the Semicolon
! ------------------------
! Often it is desirable to define a macro that expands into a compound
statement. Consider, for example, the following macro, that advances a
pointer (the argument `p' says where to find it) across whitespace
characters:
--- 2159,2168 ----
File: cpp.info, Node: Swallowing the Semicolon, Next: Duplication of Side Effects, Prev: Operator Precedence Problems, Up: Macro Pitfalls
! 3.10.3 Swallowing the Semicolon
! -------------------------------
! Often it is desirable to define a macro that expands into a compound
statement. Consider, for example, the following macro, that advances a
pointer (the argument `p' says where to find it) across whitespace
characters:
*************** generate no extra code for it.
*** 2213,2222 ****
File: cpp.info, Node: Duplication of Side Effects, Next: Self-Referential Macros, Prev: Swallowing the Semicolon, Up: Macro Pitfalls
! Duplication of Side Effects
! ---------------------------
! Many C programs define a macro `min', for "minimum", like this:
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
--- 2215,2224 ----
File: cpp.info, Node: Duplication of Side Effects, Next: Self-Referential Macros, Prev: Swallowing the Semicolon, Up: Macro Pitfalls
! 3.10.4 Duplication of Side Effects
! ----------------------------------
! Many C programs define a macro `min', for "minimum", like this:
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
*************** variable in `min':
*** 2272,2286 ****
File: cpp.info, Node: Self-Referential Macros, Next: Argument Prescan, Prev: Duplication of Side Effects, Up: Macro Pitfalls
! Self-Referential Macros
! -----------------------
! A "self-referential" macro is one whose name appears in its
! definition. Recall that all macro definitions are rescanned for more
! macros to replace. If the self-reference were considered a use of the
! macro, it would produce an infinitely large expansion. To prevent this,
! the self-reference is not considered a macro call. It is passed into
! the preprocessor output unchanged. Consider an example:
#define foo (4 + foo)
--- 2274,2288 ----
File: cpp.info, Node: Self-Referential Macros, Next: Argument Prescan, Prev: Duplication of Side Effects, Up: Macro Pitfalls
! 3.10.5 Self-Referential Macros
! ------------------------------
! A "self-referential" macro is one whose name appears in its definition.
! Recall that all macro definitions are rescanned for more macros to
! replace. If the self-reference were considered a use of the macro, it
! would produce an infinitely large expansion. To prevent this, the
! self-reference is not considered a macro call. It is passed into the
! preprocessor output unchanged. Consider an example:
#define foo (4 + foo)
*************** then `x' and `y' expand as follows:
*** 2323,2329 ****
x ==> (4 + y)
==> (4 + (2 * x))
!
y ==> (2 * x)
==> (2 * (4 + y))
--- 2325,2331 ----
x ==> (4 + y)
==> (4 + (2 * x))
!
y ==> (2 * x)
==> (2 * (4 + y))
*************** macro, but not when it indirectly appear
*** 2333,2342 ****
File: cpp.info, Node: Argument Prescan, Next: Newlines in Arguments, Prev: Self-Referential Macros, Up: Macro Pitfalls
! Argument Prescan
! ----------------
! Macro arguments are completely macro-expanded before they are
substituted into a macro body, unless they are stringified or pasted
with other tokens. After substitution, the entire macro body, including
the substituted arguments, is scanned again for macros to be expanded.
--- 2335,2344 ----
File: cpp.info, Node: Argument Prescan, Next: Newlines in Arguments, Prev: Self-Referential Macros, Up: Macro Pitfalls
! 3.10.6 Argument Prescan
! -----------------------
! Macro arguments are completely macro-expanded before they are
substituted into a macro body, unless they are stringified or pasted
with other tokens. After substitution, the entire macro body, including
the substituted arguments, is scanned again for macros to be expanded.
*************** cases:
*** 2420,2429 ****
File: cpp.info, Node: Newlines in Arguments, Prev: Argument Prescan, Up: Macro Pitfalls
! Newlines in Arguments
! ---------------------
! The invocation of a function-like macro can extend over many logical
lines. However, in the present implementation, the entire expansion
comes out on one line. Thus line numbers emitted by the compiler or
debugger refer to the line the invocation started on, which might be
--- 2422,2431 ----
File: cpp.info, Node: Newlines in Arguments, Prev: Argument Prescan, Up: Macro Pitfalls
! 3.10.7 Newlines in Arguments
! ----------------------------
! The invocation of a function-like macro can extend over many logical
lines. However, in the present implementation, the entire expansion
comes out on one line. Thus line numbers emitted by the compiler or
debugger refer to the line the invocation started on, which might be
*************** different to the line containing the arg
*** 2432,2438 ****
Here is an example illustrating this:
#define ignore_second_arg(a,b,c) a; c
!
ignore_second_arg (foo (),
ignored (),
syntax error);
--- 2434,2440 ----
Here is an example illustrating this:
#define ignore_second_arg(a,b,c) a; c
!
ignore_second_arg (foo (),
ignored (),
syntax error);
*************** though the problematic code comes from l
*** 2446,2455 ****
File: cpp.info, Node: Conditionals, Next: Diagnostics, Prev: Macros, Up: Top
! Conditionals
! ************
! A "conditional" is a directive that instructs the preprocessor to
select whether or not to include a chunk of code in the final token
stream passed to the compiler. Preprocessor conditionals can test
arithmetic expressions, or whether a name is defined as a macro, or both
--- 2448,2457 ----
File: cpp.info, Node: Conditionals, Next: Diagnostics, Prev: Macros, Up: Top
! 4 Conditionals
! **************
! A "conditional" is a directive that instructs the preprocessor to
select whether or not to include a chunk of code in the final token
stream passed to the compiler. Preprocessor conditionals can test
arithmetic expressions, or whether a name is defined as a macro, or both
*************** not optimizing. Older versions did it o
*** 2487,2496 ****
File: cpp.info, Node: Conditional Uses, Next: Conditional Syntax, Up: Conditionals
! Conditional Uses
! ================
! There are three general reasons to use a conditional.
* A program may need to use different code depending on the machine
or operating system it is to run on. In some cases the code for
--- 2489,2498 ----
File: cpp.info, Node: Conditional Uses, Next: Conditional Syntax, Up: Conditionals
! 4.1 Conditional Uses
! ====================
! There are three general reasons to use a conditional.
* A program may need to use different code depending on the machine
or operating system it is to run on. In some cases the code for
*************** conditionals.
*** 2518,2527 ****
File: cpp.info, Node: Conditional Syntax, Next: Deleted Code, Prev: Conditional Uses, Up: Conditionals
! Conditional Syntax
! ==================
! A conditional in the C preprocessor begins with a "conditional
directive": `#if', `#ifdef' or `#ifndef'.
* Menu:
--- 2520,2529 ----
File: cpp.info, Node: Conditional Syntax, Next: Deleted Code, Prev: Conditional Uses, Up: Conditionals
! 4.2 Conditional Syntax
! ======================
! A conditional in the C preprocessor begins with a "conditional
directive": `#if', `#ifdef' or `#ifndef'.
* Menu:
*************** directive": `#if', `#ifdef' or `#ifndef'
*** 2535,2549 ****
File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax
! Ifdef
! -----
! The simplest sort of conditional is
#ifdef MACRO
!
CONTROLLED TEXT
!
#endif /* MACRO */
This block is called a "conditional group". CONTROLLED TEXT will be
--- 2537,2551 ----
File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax
! 4.2.1 Ifdef
! -----------
! The simplest sort of conditional is
#ifdef MACRO
!
CONTROLLED TEXT
!
#endif /* MACRO */
This block is called a "conditional group". CONTROLLED TEXT will be
*************** Here are some samples.
*** 2607,2622 ****
File: cpp.info, Node: If, Next: Defined, Prev: Ifdef, Up: Conditional Syntax
! If
! --
! The `#if' directive allows you to test the value of an arithmetic
expression, rather than the mere existence of one macro. Its syntax is
#if EXPRESSION
!
CONTROLLED TEXT
!
#endif /* EXPRESSION */
EXPRESSION is a C expression of integer type, subject to stringent
--- 2609,2624 ----
File: cpp.info, Node: If, Next: Defined, Prev: Ifdef, Up: Conditional Syntax
! 4.2.2 If
! --------
! The `#if' directive allows you to test the value of an arithmetic
expression, rather than the mere existence of one macro. Its syntax is
#if EXPRESSION
!
CONTROLLED TEXT
!
#endif /* EXPRESSION */
EXPRESSION is a C expression of integer type, subject to stringent
*************** included; otherwise it is skipped.
*** 2665,2678 ****
File: cpp.info, Node: Defined, Next: Else, Prev: If, Up: Conditional Syntax
! Defined
! -------
! The special operator `defined' is used in `#if' and `#elif'
! expressions to test whether a certain name is defined as a macro.
! `defined NAME' and `defined (NAME)' are both expressions whose value is
! 1 if NAME is defined as a macro at the current point in the program,
! and 0 otherwise. Thus, `#if defined MACRO' is precisely equivalent to
`#ifdef MACRO'.
`defined' is useful when you wish to test more than one macro for
--- 2667,2680 ----
File: cpp.info, Node: Defined, Next: Else, Prev: If, Up: Conditional Syntax
! 4.2.3 Defined
! -------------
! The special operator `defined' is used in `#if' and `#elif' expressions
! to test whether a certain name is defined as a macro. `defined NAME'
! and `defined (NAME)' are both expressions whose value is 1 if NAME is
! defined as a macro at the current point in the program, and 0
! otherwise. Thus, `#if defined MACRO' is precisely equivalent to
`#ifdef MACRO'.
`defined' is useful when you wish to test more than one macro for
*************** wherever your code uses this feature if
*** 2700,2709 ****
File: cpp.info, Node: Else, Next: Elif, Prev: Defined, Up: Conditional Syntax
! Else
! ----
! The `#else' directive can be added to a conditional to provide
alternative text to be used if the condition fails. This is what it
looks like:
--- 2702,2711 ----
File: cpp.info, Node: Else, Next: Elif, Prev: Defined, Up: Conditional Syntax
! 4.2.4 Else
! ----------
! The `#else' directive can be added to a conditional to provide
alternative text to be used if the condition fails. This is what it
looks like:
*************** TEXT-IF-FALSE is skipped. If EXPRESSION
*** 2721,2731 ****
File: cpp.info, Node: Elif, Prev: Else, Up: Conditional Syntax
! Elif
! ----
! One common case of nested conditionals is used to check for more
! than two possible alternatives. For example, you might have
#if X == 1
...
--- 2723,2733 ----
File: cpp.info, Node: Elif, Prev: Else, Up: Conditional Syntax
! 4.2.5 Elif
! ----------
! One common case of nested conditionals is used to check for more than
! two possible alternatives. For example, you might have
#if X == 1
...
*************** within it have failed.
*** 2766,2776 ****
File: cpp.info, Node: Deleted Code, Prev: Conditional Syntax, Up: Conditionals
! Deleted Code
! ============
! If you replace or delete a part of the program but want to keep the
! old code around for future reference, you often cannot simply comment it
out. Block comments do not nest, so the first comment inside the old
code will end the commenting-out. The probable result is a flood of
syntax errors.
--- 2768,2778 ----
File: cpp.info, Node: Deleted Code, Prev: Conditional Syntax, Up: Conditionals
! 4.3 Deleted Code
! ================
! If you replace or delete a part of the program but want to keep the old
! code around for future reference, you often cannot simply comment it
out. Block comments do not nest, so the first comment inside the old
code will end the commenting-out. The probable result is a flood of
syntax errors.
*************** apostrophes). These confuse `#if 0'. T
*** 2794,2805 ****
File: cpp.info, Node: Diagnostics, Next: Line Control, Prev: Conditionals, Up: Top
! Diagnostics
! ***********
! The directive `#error' causes the preprocessor to report a fatal
! error. The tokens forming the rest of the line following `#error' are
! used as the error message.
You would use `#error' inside of a conditional that detects a
combination of parameters which you know the program does not properly
--- 2796,2807 ----
File: cpp.info, Node: Diagnostics, Next: Line Control, Prev: Conditionals, Up: Top
! 5 Diagnostics
! *************
! The directive `#error' causes the preprocessor to report a fatal error.
! The tokens forming the rest of the line following `#error' are used as
! the error message.
You would use `#error' inside of a conditional that detects a
combination of parameters which you know the program does not properly
*************** problems with apostrophes and the like.
*** 2834,2848 ****
File: cpp.info, Node: Line Control, Next: Pragmas, Prev: Diagnostics, Up: Top
! Line Control
! ************
! The C preprocessor informs the C compiler of the location in your
! source code where each token came from. Presently, this is just the
! file name and line number. All the tokens resulting from macro
! expansion are reported as having appeared on the line of the source
! file where the outermost macro was used. We intend to be more accurate
! in the future.
If you write a program which generates source code, such as the
`bison' parser generator, you may want to adjust the preprocessor's
--- 2836,2849 ----
File: cpp.info, Node: Line Control, Next: Pragmas, Prev: Diagnostics, Up: Top
! 6 Line Control
! **************
! The C preprocessor informs the C compiler of the location in your source
! code where each token came from. Presently, this is just the file name
! and line number. All the tokens resulting from macro expansion are
! reported as having appeared on the line of the source file where the
! outermost macro was used. We intend to be more accurate in the future.
If you write a program which generates source code, such as the
`bison' parser generator, you may want to adjust the preprocessor's
*************** files, which is difficult and error-pron
*** 2913,2923 ****
File: cpp.info, Node: Pragmas, Next: Other Directives, Prev: Line Control, Up: Top
! Pragmas
! *******
! The `#pragma' directive is the method specified by the C standard
! for providing additional information to the compiler, beyond what is
conveyed in the language itself. Three forms of this directive
(commonly known as "pragmas") are specified by the 1999 C standard. A
C compiler is free to attach any meaning it likes to other pragmas.
--- 2914,2924 ----
File: cpp.info, Node: Pragmas, Next: Other Directives, Prev: Line Control, Up: Top
! 7 Pragmas
! *********
! The `#pragma' directive is the method specified by the C standard for
! providing additional information to the compiler, beyond what is
conveyed in the language itself. Three forms of this directive
(commonly known as "pragmas") are specified by the 1999 C standard. A
C compiler is free to attach any meaning it likes to other pragmas.
*************** compilers. They are documented in the G
*** 3007,3021 ****
the current file to be treated as if it came from a system header.
*Note System Headers::.
File: cpp.info, Node: Other Directives, Next: Preprocessor Output, Prev: Pragmas, Up: Top
! Other Directives
! ****************
! The `#ident' directive takes one argument, a string constant. On
! some systems, that string constant is copied into a special segment of
! 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.
--- 3008,3023 ----
the current file to be treated as if it came from a system header.
*Note System Headers::.
+
File: cpp.info, Node: Other Directives, Next: Preprocessor Output, Prev: Pragmas, Up: Top
! 8 Other Directives
! ******************
! The `#ident' directive takes one argument, a string constant. On some
! systems, that string constant is copied into a special segment of 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.
*************** Supposedly some old C programs contain s
*** 3036,3045 ****
File: cpp.info, Node: Preprocessor Output, Next: Traditional Mode, Prev: Other Directives, Up: Top
! Preprocessor Output
! *******************
! When the C preprocessor is used with the C, C++, or Objective-C
compilers, it is integrated into the compiler and communicates a stream
of binary tokens directly to the compiler's parser. However, it can
also be used in the more conventional standalone mode, where it produces
--- 3038,3047 ----
File: cpp.info, Node: Preprocessor Output, Next: Traditional Mode, Prev: Other Directives, Up: Top
! 9 Preprocessor Output
! *********************
! When the C preprocessor is used with the C, C++, or Objective-C
compilers, it is integrated into the compiler and communicates a stream
of binary tokens directly to the compiler's parser. However, it can
also be used in the more conventional standalone mode, where it produces
*************** be inserted between the `#' and the dire
*** 3109,3119 ****
File: cpp.info, Node: Traditional Mode, Next: Implementation Details, Prev: Preprocessor Output, Up: Top
! Traditional Mode
! ****************
! Traditional (pre-standard) C preprocessing is rather different from
! the preprocessing specified by the standard. When GCC is given the
`-traditional-cpp' option, it attempts to emulate a traditional
preprocessor.
--- 3111,3121 ----
File: cpp.info, Node: Traditional Mode, Next: Implementation Details, Prev: Preprocessor Output, Up: Top
! 10 Traditional Mode
! *******************
! Traditional (pre-standard) C preprocessing is rather different from the
! preprocessing specified by the standard. When GCC is given the
`-traditional-cpp' option, it attempts to emulate a traditional
preprocessor.
*************** that actually matter.
*** 3138,3147 ****
File: cpp.info, Node: Traditional lexical analysis, Next: Traditional macros, Up: Traditional Mode
! Traditional lexical analysis
! ============================
! The traditional preprocessor does not decompose its input into tokens
the same way a standards-conforming preprocessor does. The input is
simply treated as a stream of text with minimal internal form.
--- 3140,3149 ----
File: cpp.info, Node: Traditional lexical analysis, Next: Traditional macros, Up: Traditional Mode
! 10.1 Traditional lexical analysis
! =================================
! The traditional preprocessor does not decompose its input into tokens
the same way a standards-conforming preprocessor does. The input is
simply treated as a stream of text with minimal internal form.
*************** be escaped with a backslash to prevent t
*** 3200,3209 ****
File: cpp.info, Node: Traditional macros, Next: Traditional miscellany, Prev: Traditional lexical analysis, Up: Traditional Mode
! Traditional macros
! ==================
! The major difference between traditional and ISO macros is that the
former expand to text rather than to a token sequence. CPP removes all
leading and trailing horizontal whitespace from a macro's replacement
text before storing it, but preserves the form of internal whitespace.
--- 3202,3211 ----
File: cpp.info, Node: Traditional macros, Next: Traditional miscellany, Prev: Traditional lexical analysis, Up: Traditional Mode
! 10.2 Traditional macros
! =======================
! The major difference between traditional and ISO macros is that the
former expand to text rather than to a token sequence. CPP removes all
leading and trailing horizontal whitespace from a macro's replacement
text before storing it, but preserves the form of internal whitespace.
*************** pasting.
*** 3286,3295 ****
File: cpp.info, Node: Traditional miscellany, Next: Traditional warnings, Prev: Traditional macros, Up: Traditional Mode
! Traditional miscellany
! ======================
! Here are some things to be aware of when using the traditional
preprocessor.
* Preprocessing directives are recognized only when their leading
--- 3288,3297 ----
File: cpp.info, Node: Traditional miscellany, Next: Traditional warnings, Prev: Traditional macros, Up: Traditional Mode
! 10.3 Traditional miscellany
! ===========================
! Here are some things to be aware of when using the traditional
preprocessor.
* Preprocessing directives are recognized only when their leading
*************** preprocessor.
*** 3314,3323 ****
File: cpp.info, Node: Traditional warnings, Prev: Traditional miscellany, Up: Traditional Mode
! Traditional warnings
! ====================
! You can request warnings about features that did not exist, or worked
differently, in traditional C with the `-Wtraditional' option. GCC
does not warn about features of ISO C which you must use when you are
using a conforming compiler, such as the `#' and `##' operators.
--- 3316,3325 ----
File: cpp.info, Node: Traditional warnings, Prev: Traditional miscellany, Up: Traditional Mode
! 10.4 Traditional warnings
! =========================
! You can request warnings about features that did not exist, or worked
differently, in traditional C with the `-Wtraditional' option. GCC
does not warn about features of ISO C which you must use when you are
using a conforming compiler, such as the `#' and `##' operators.
*************** using a conforming compiler, such as the
*** 3360,3369 ****
File: cpp.info, Node: Implementation Details, Next: Invocation, Prev: Traditional Mode, Up: Top
! Implementation Details
! **********************
! Here we document details of how the preprocessor's implementation
affects its user-visible behavior. You should try to avoid undue
reliance on behavior described here, as it is possible that it will
change subtly in future implementations.
--- 3362,3371 ----
File: cpp.info, Node: Implementation Details, Next: Invocation, Prev: Traditional Mode, Up: Top
! 11 Implementation Details
! *************************
! Here we document details of how the preprocessor's implementation
affects its user-visible behavior. You should try to avoid undue
reliance on behavior described here, as it is possible that it will
change subtly in future implementations.
*************** versions of CPP.
*** 3381,3393 ****
File: cpp.info, Node: Implementation-defined behavior, Next: Implementation limits, Up: Implementation Details
! Implementation-defined behavior
! ===============================
! This is how CPP behaves in all the cases which the C standard
! describes as "implementation-defined". This term means that the
! implementation is free to do what it likes, but must document its choice
! and stick to it.
* The mapping of physical source file multi-byte characters to the
execution character set.
--- 3383,3395 ----
File: cpp.info, Node: Implementation-defined behavior, Next: Implementation limits, Up: Implementation Details
! 11.1 Implementation-defined behavior
! ====================================
! This is how CPP behaves in all the cases which the C standard describes
! as "implementation-defined". This term means that the implementation
! is free to do what it likes, but must document its choice and stick to
! it.
* The mapping of physical source file multi-byte characters to the
execution character set.
*************** and stick to it.
*** 3470,3479 ****
File: cpp.info, Node: Implementation limits, Next: Obsolete Features, Prev: Implementation-defined behavior, Up: Implementation Details
! Implementation limits
! =====================
! CPP has a small number of internal limits. This section lists the
limits which the C standard requires to be no lower than some minimum,
and all the others known. It is intended that there should be as few
limits as possible. If you encounter an undocumented or inconvenient
--- 3472,3481 ----
File: cpp.info, Node: Implementation limits, Next: Obsolete Features, Prev: Implementation-defined behavior, Up: Implementation Details
! 11.2 Implementation limits
! ==========================
! CPP has a small number of internal limits. This section lists the
limits which the C standard requires to be no lower than some minimum,
and all the others known. It is intended that there should be as few
limits as possible. If you encounter an undocumented or inconvenient
*************** consumed by other processes on the same
*** 3536,3547 ****
File: cpp.info, Node: Obsolete Features, Next: Differences from previous versions, Prev: Implementation limits, Up: Implementation Details
! Obsolete Features
! =================
! 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.
* Menu:
--- 3538,3549 ----
File: cpp.info, Node: Obsolete Features, Next: Differences from previous versions, Prev: Implementation limits, Up: Implementation Details
! 11.3 Obsolete Features
! ======================
! 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.
* Menu:
*************** In some cases, we plan to remove the fea
*** 3551,3560 ****
File: cpp.info, Node: Assertions, Next: Obsolete once-only headers, Up: Obsolete Features
! Assertions
! ----------
! "Assertions" are a deprecated alternative to macros in writing
conditionals to test what sort of computer or system the compiled
program will run on. Assertions are usually predefined, but you can
define them with preprocessing directives or command-line options.
--- 3553,3562 ----
File: cpp.info, Node: Assertions, Next: Obsolete once-only headers, Up: Obsolete Features
! 11.3.1 Assertions
! -----------------
! "Assertions" are a deprecated alternative to macros in writing
conditionals to test what sort of computer or system the compiled
program will run on. Assertions are usually predefined, but you can
define them with preprocessing directives or command-line options.
*************** effect.
*** 3617,3626 ****
File: cpp.info, Node: Obsolete once-only headers, Prev: Assertions, Up: Obsolete Features
! Obsolete once-only headers
! --------------------------
! CPP supports two more ways of indicating that a header file should be
read only once. Neither one is as portable as a wrapper `#ifndef', and
we recommend you do not use them in new programs.
--- 3619,3628 ----
File: cpp.info, Node: Obsolete once-only headers, Prev: Assertions, Up: Obsolete Features
! 11.3.2 Obsolete once-only headers
! ---------------------------------
! CPP supports two more ways of indicating that a header file should be
read only once. Neither one is as portable as a wrapper `#ifndef', and
we recommend you do not use them in new programs.
*************** a portable program.
*** 3655,3666 ****
File: cpp.info, Node: Differences from previous versions, Prev: Obsolete Features, Up: Implementation Details
! Differences from previous versions
! ==================================
! This section details behavior which has changed from previous
! versions of 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
behavior of GCC 3.0 is mostly the same as the behavior of the widely
--- 3657,3668 ----
File: cpp.info, Node: Differences from previous versions, Prev: Obsolete Features, Up: Implementation Details
! 11.4 Differences from previous versions
! =======================================
! This section details behavior which has changed from previous versions
! of 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
behavior of GCC 3.0 is mostly the same as the behavior of the widely
*************** they generally represent bugs in the sna
*** 3742,3758 ****
File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top
! Invocation
! **********
! Most often when you use the C preprocessor you will not have to
! invoke it explicitly: the C compiler will do so automatically.
! However, the preprocessor is sometimes useful on its own. All the
! options listed here are also acceptable to the C compiler and have the
! same meaning, except that the C compiler has different rules for
! specifying the output file.
! *Note:* Whether you use the preprocessor by way of `gcc' or `cpp',
the "compiler driver" is run first. This program's purpose is to
translate your command into invocations of the programs that do the
actual work. Their command line interfaces are similar but not
--- 3744,3760 ----
File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top
! 12 Invocation
! *************
! Most often when you use the C preprocessor you will not have to invoke
! it explicitly: the C compiler will do so automatically. However, the
! preprocessor is sometimes useful on its own. All the options listed
! here are also acceptable to the C compiler and have the same meaning,
! except that the C compiler has different rules for specifying the output
! file.
! *Note_* Whether you use the preprocessor by way of `gcc' or `cpp',
the "compiler driver" is run first. This program's purpose is to
translate your command into invocations of the programs that do the
actual work. Their command line interfaces are similar but not
*************** single-letter options may _not_ be group
*** 3873,3879 ****
Built-in macros, macros defined on the command line, and macros
defined in include files are not warned about.
! *Note:* If a macro is actually used, but only used in skipped
conditional blocks, then CPP will report it as unused. To avoid
the warning in such a case, you might improve the scope of the
macro's definition by, for example, moving it into the first
--- 3875,3881 ----
Built-in macros, macros defined on the command line, and macros
defined in include files are not warned about.
! *Note_* If a macro is actually used, but only used in skipped
conditional blocks, then CPP will report it as unused. To avoid
the warning in such a case, you might improve the scope of the
macro's definition by, for example, moving it into the first
*************** single-letter options may _not_ be group
*** 3982,3988 ****
This is typical output:
test.o: test.c test.h
!
test.h:
`-MT TARGET'
--- 3984,3990 ----
This is typical output:
test.o: test.c test.h
!
test.h:
`-MT TARGET'
*************** single-letter options may _not_ be group
*** 4040,4046 ****
not recognize the extension, it will treat the file as C; this is
the most generic mode.
! *Note:* Previous versions of cpp accepted a `-lang' option which
selected both the language and the standards conformance level.
This option has been removed, because it conflicts with the `-l'
option.
--- 4042,4048 ----
not recognize the extension, it will treat the file as C; this is
the most generic mode.
! *Note_* Previous versions of cpp accepted a `-lang' option which
selected both the language and the standards conformance level.
This option has been removed, because it conflicts with the `-l'
option.
*************** single-letter options may _not_ be group
*** 4323,4332 ****
File: cpp.info, Node: Environment Variables, Next: GNU Free Documentation License, Prev: Invocation, Up: Top
! Environment Variables
! *********************
! This section describes the environment variables that affect how CPP
operates. You can use them to specify directories or prefixes to use
when searching for include files, or to control dependency output.
--- 4325,4334 ----
File: cpp.info, Node: Environment Variables, Next: GNU Free Documentation License, Prev: Invocation, Up: Top
! 13 Environment Variables
! ************************
! This section describes the environment variables that affect how CPP
operates. You can use them to specify directories or prefixes to use
when searching for include files, or to control dependency output.
*************** GNU Free Documentation License
*** 4393,4401 ****
******************************
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
--- 4395,4404 ----
******************************
Version 1.2, November 2002
+
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 4789,4795 ****
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
--- 4792,4798 ----
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
*************** File: cpp.info, Node: Index of Directiv
*** 4823,4852 ****
Index of Directives
*******************
* Menu:
! * #assert: Assertions.
! * #define: Object-like Macros.
! * #elif: Elif.
! * #else: Else.
! * #endif: Ifdef.
! * #error: Diagnostics.
! * #ident: Other Directives.
! * #if: Conditional Syntax.
! * #ifdef: Ifdef.
! * #ifndef: Ifdef.
* #import: Obsolete once-only headers.
! * #include: Include Syntax.
! * #include_next: Wrapper Headers.
! * #line: Line Control.
! * #pragma GCC dependency: Pragmas.
! * #pragma GCC poison: Pragmas.
! * #pragma GCC system_header <1>: Pragmas.
! * #pragma GCC system_header: System Headers.
! * #sccs: Other Directives.
! * #unassert: Assertions.
* #undef: Undefining and Redefining Macros.
! * #warning: Diagnostics.
File: cpp.info, Node: Option Index, Next: Concept Index, Prev: Index of Directives, Up: Top
--- 4826,4858 ----
Index of Directives
*******************
+ [index ]
* Menu:
! * #assert: Assertions. (line 41)
! * #define: Object-like Macros. (line 11)
! * #elif: Elif. (line 6)
! * #else: Else. (line 6)
! * #endif: Ifdef. (line 6)
! * #error: Diagnostics. (line 6)
! * #ident: Other Directives. (line 6)
! * #if: Conditional Syntax. (line 6)
! * #ifdef: Ifdef. (line 6)
! * #ifndef: Ifdef. (line 40)
* #import: Obsolete once-only headers.
! (line 10)
! * #include: Include Syntax. (line 6)
! * #include_next: Wrapper Headers. (line 6)
! * #line: Line Control. (line 20)
! * #pragma GCC dependency: Pragmas. (line 53)
! * #pragma GCC poison: Pragmas. (line 65)
! * #pragma GCC system_header <1>: Pragmas. (line 92)
! * #pragma GCC system_header: System Headers. (line 31)
! * #sccs: Other Directives. (line 13)
! * #unassert: Assertions. (line 52)
* #undef: Undefining and Redefining Macros.
! (line 6)
! * #warning: Diagnostics. (line 27)
File: cpp.info, Node: Option Index, Next: Concept Index, Prev: Index of Directives, Up: Top
*************** Option Index
*** 4857,4935 ****
CPP's command line options and environment variables are indexed here
without any initial `-' or `--'.
* Menu:
! * A: Invocation.
! * ansi: Invocation.
! * C: Invocation.
* C_INCLUDE_PATH: Environment Variables.
* CPATH: Environment Variables.
* CPLUS_INCLUDE_PATH: Environment Variables.
! * D: Invocation.
! * dD: Invocation.
* DEPENDENCIES_OUTPUT: Environment Variables.
! * dI: Invocation.
! * dM: Invocation.
! * dN: Invocation.
! * fdollars-in-identifiers: Invocation.
! * fexec-charset: Invocation.
! * finput-charset: Invocation.
! * fno-show-column: Invocation.
! * fno-working-directory: Invocation.
! * fpreprocessed: Invocation.
! * ftabstop: Invocation.
! * fwide-exec-charset: Invocation.
! * fworking-directory: Invocation.
! * H: Invocation.
! * help: Invocation.
! * I: Invocation.
! * I-: Invocation.
! * idirafter: Invocation.
! * imacros: Invocation.
! * include: Invocation.
! * iprefix: Invocation.
! * isystem: Invocation.
! * iwithprefix: Invocation.
! * iwithprefixbefore: Invocation.
! * M: Invocation.
! * MD: Invocation.
! * MF: Invocation.
! * MG: Invocation.
! * MM: Invocation.
! * MMD: Invocation.
! * MP: Invocation.
! * MQ: Invocation.
! * MT: Invocation.
! * nostdinc: Invocation.
! * nostdinc++: Invocation.
! * o: Invocation.
* OBJC_INCLUDE_PATH: Environment Variables.
! * P: Invocation.
! * pedantic: Invocation.
! * pedantic-errors: Invocation.
! * remap: Invocation.
! * std=: Invocation.
* SUNPRO_DEPENDENCIES: Environment Variables.
! * target-help: Invocation.
! * traditional-cpp: Invocation.
! * trigraphs: Invocation.
! * U: Invocation.
! * undef: Invocation.
! * v: Invocation.
! * version: Invocation.
! * w: Invocation.
! * Wall: Invocation.
! * Wcomment: Invocation.
! * Wcomments: Invocation.
! * Wendif-labels: Invocation.
! * Werror: Invocation.
! * Wimport: Invocation.
! * Wsystem-headers: Invocation.
! * Wtraditional: Invocation.
! * Wtrigraphs: Invocation.
! * Wundef: Invocation.
! * Wunused-macros: Invocation.
! * x: Invocation.
File: cpp.info, Node: Concept Index, Prev: Option Index, Up: Top
--- 4863,4948 ----
CPP's command line options and environment variables are indexed here
without any initial `-' or `--'.
+ [index ]
* Menu:
! * A: Invocation. (line 476)
! * ansi: Invocation. (line 308)
! * C: Invocation. (line 524)
* C_INCLUDE_PATH: Environment Variables.
+ (line 16)
* CPATH: Environment Variables.
+ (line 15)
* CPLUS_INCLUDE_PATH: Environment Variables.
! (line 17)
! * D: Invocation. (line 39)
! * dD: Invocation. (line 504)
* DEPENDENCIES_OUTPUT: Environment Variables.
! (line 44)
! * dI: Invocation. (line 513)
! * dM: Invocation. (line 492)
! * dN: Invocation. (line 510)
! * fdollars-in-identifiers: Invocation. (line 411)
! * fexec-charset: Invocation. (line 433)
! * finput-charset: Invocation. (line 446)
! * fno-show-column: Invocation. (line 471)
! * fno-working-directory: Invocation. (line 456)
! * fpreprocessed: Invocation. (line 414)
! * ftabstop: Invocation. (line 427)
! * fwide-exec-charset: Invocation. (line 438)
! * fworking-directory: Invocation. (line 456)
! * H: Invocation. (line 569)
! * help: Invocation. (line 561)
! * I: Invocation. (line 72)
! * I-: Invocation. (line 345)
! * idirafter: Invocation. (line 387)
! * imacros: Invocation. (line 378)
! * include: Invocation. (line 367)
! * iprefix: Invocation. (line 392)
! * isystem: Invocation. (line 404)
! * iwithprefix: Invocation. (line 398)
! * iwithprefixbefore: Invocation. (line 398)
! * M: Invocation. (line 182)
! * MD: Invocation. (line 270)
! * MF: Invocation. (line 216)
! * MG: Invocation. (line 225)
! * MM: Invocation. (line 206)
! * MMD: Invocation. (line 285)
! * MP: Invocation. (line 235)
! * MQ: Invocation. (line 261)
! * MT: Invocation. (line 247)
! * nostdinc: Invocation. (line 357)
! * nostdinc++: Invocation. (line 362)
! * o: Invocation. (line 81)
* OBJC_INCLUDE_PATH: Environment Variables.
! (line 18)
! * P: Invocation. (line 517)
! * pedantic: Invocation. (line 172)
! * pedantic-errors: Invocation. (line 177)
! * remap: Invocation. (line 556)
! * std=: Invocation. (line 308)
* SUNPRO_DEPENDENCIES: Environment Variables.
! (line 60)
! * target-help: Invocation. (line 561)
! * traditional-cpp: Invocation. (line 549)
! * trigraphs: Invocation. (line 553)
! * U: Invocation. (line 63)
! * undef: Invocation. (line 67)
! * v: Invocation. (line 565)
! * version: Invocation. (line 578)
! * w: Invocation. (line 168)
! * Wall: Invocation. (line 87)
! * Wcomment: Invocation. (line 95)
! * Wcomments: Invocation. (line 95)
! * Wendif-labels: Invocation. (line 145)
! * Werror: Invocation. (line 158)
! * Wimport: Invocation. (line 118)
! * Wsystem-headers: Invocation. (line 162)
! * Wtraditional: Invocation. (line 112)
! * Wtrigraphs: Invocation. (line 100)
! * Wundef: Invocation. (line 121)
! * Wunused-macros: Invocation. (line 126)
! * x: Invocation. (line 292)
File: cpp.info, Node: Concept Index, Prev: Option Index, Up: Top
*************** File: cpp.info, Node: Concept Index, P
*** 4937,5127 ****
Concept Index
*************
* Menu:
! * # operator: Stringification.
! * ## operator: Concatenation.
! * _Pragma: Pragmas.
! * alternative tokens: Tokenization.
! * arguments: Macro Arguments.
! * arguments in macro definitions: Macro Arguments.
! * assertions: Assertions.
! * assertions, canceling: Assertions.
! * backslash-newline: Initial processing.
! * block comments: Initial processing.
! * C++ named operators: C++ Named Operators.
! * character constants: Tokenization.
! * command line: Invocation.
! * commenting out code: Deleted Code.
! * comments: Initial processing.
* common predefined macros: Common Predefined Macros.
! * computed includes: Computed Includes.
! * concatenation: Concatenation.
! * conditional group: Ifdef.
! * conditionals: Conditionals.
! * continued lines: Initial processing.
! * controlling macro: Once-Only Headers.
! * defined: Defined.
* dependencies for make as output: Environment Variables.
! * dependencies, make: Invocation.
! * diagnostic: Diagnostics.
* differences from previous versions: Differences from previous versions.
! * digraphs: Tokenization.
* directive line: The preprocessing language.
* directive name: The preprocessing language.
* directives: The preprocessing language.
! * empty macro arguments: Macro Arguments.
* environment variables: Environment Variables.
! * expansion of arguments: Argument Prescan.
* FDL, GNU Free Documentation License: GNU Free Documentation License.
* function-like macros: Function-like Macros.
! * grouping options: Invocation.
! * guard macro: Once-Only Headers.
! * header file: Header Files.
! * header file names: Tokenization.
! * identifiers: Tokenization.
* implementation limits: Implementation limits.
* implementation-defined behavior: Implementation-defined behavior.
! * including just once: Once-Only Headers.
! * invocation: Invocation.
! * iso646.h: C++ Named Operators.
! * line comments: Initial processing.
! * line control: Line Control.
! * line endings: Initial processing.
! * linemarkers: Preprocessor Output.
! * macro argument expansion: Argument Prescan.
* macro arguments and directives: Directives Within Macro Arguments.
! * macros in include: Computed Includes.
! * macros with arguments: Macro Arguments.
! * macros with variable arguments: Variadic Macros.
! * make: Invocation.
! * manifest constants: Object-like Macros.
! * named operators: C++ Named Operators.
* newlines in macro arguments: Newlines in Arguments.
! * null directive: Other Directives.
! * numbers: Tokenization.
! * object-like macro: Object-like Macros.
! * options: Invocation.
! * options, grouping: Invocation.
! * other tokens: Tokenization.
! * output format: Preprocessor Output.
! * overriding a header file: Wrapper Headers.
* parentheses in macro bodies: Operator Precedence Problems.
! * pitfalls of macros: Macro Pitfalls.
! * predefined macros: Predefined Macros.
* predefined macros, system-specific: System-specific Predefined Macros.
! * predicates: Assertions.
* preprocessing directives: The preprocessing language.
! * preprocessing numbers: Tokenization.
! * preprocessing tokens: Tokenization.
! * prescan of macro arguments: Argument Prescan.
! * problems with macros: Macro Pitfalls.
! * punctuators: Tokenization.
* redefining macros: Undefining and Redefining Macros.
! * repeated inclusion: Once-Only Headers.
! * reporting errors: Diagnostics.
! * reporting warnings: Diagnostics.
* reserved namespace: System-specific Predefined Macros.
* self-reference: Self-Referential Macros.
* semicolons (after macro calls): Swallowing the Semicolon.
* side effects (in macro arguments): Duplication of Side Effects.
* standard predefined macros.: Standard Predefined Macros.
! * string constants: Tokenization.
! * string literals: Tokenization.
! * stringification: Stringification.
! * symbolic constants: Object-like Macros.
! * system header files <1>: System Headers.
! * system header files: Header Files.
* system-specific predefined macros: System-specific Predefined Macros.
! * testing predicates: Assertions.
! * token concatenation: Concatenation.
! * token pasting: Concatenation.
! * tokens: Tokenization.
! * trigraphs: Initial processing.
* undefining macros: Undefining and Redefining Macros.
* unsafe macros: Duplication of Side Effects.
! * variable number of arguments: Variadic Macros.
! * variadic macros: Variadic Macros.
! * wrapper #ifndef: Once-Only Headers.
! * wrapper headers: Wrapper Headers.
Tag Table:
! Node: Top1077
! Node: Overview2888
! Node: Character sets6539
! Ref: Character sets-Footnote-18993
! Node: Initial processing9174
! Ref: trigraphs10728
! Node: Tokenization14935
! Ref: Tokenization-Footnote-121984
! Node: The preprocessing language22095
! Node: Header Files24968
! Node: Include Syntax26846
! Node: Include Operation28348
! Node: Search Path30201
! Node: Once-Only Headers33272
! Node: Computed Includes34922
! Node: Wrapper Headers38061
! Node: System Headers40480
! Node: Macros42525
! Node: Object-like Macros43663
! Node: Function-like Macros47248
! Node: Macro Arguments48858
! Node: Stringification53003
! Node: Concatenation56204
! Node: Variadic Macros59318
! Node: Predefined Macros64100
! Node: Standard Predefined Macros64683
! Node: Common Predefined Macros70609
! Node: System-specific Predefined Macros78444
! Node: C++ Named Operators80456
! Node: Undefining and Redefining Macros81411
! Node: Directives Within Macro Arguments83508
! Node: Macro Pitfalls85051
! Node: Misnesting85577
! Node: Operator Precedence Problems86678
! Node: Swallowing the Semicolon88533
! Node: Duplication of Side Effects90545
! Node: Self-Referential Macros92717
! Node: Argument Prescan95121
! Node: Newlines in Arguments98864
! Node: Conditionals99809
! Node: Conditional Uses101638
! Node: Conditional Syntax102991
! Node: Ifdef103306
! Node: If106468
! Node: Defined108773
! Node: Else110046
! Node: Elif110607
! Node: Deleted Code111887
! Node: Diagnostics113129
! Node: Line Control114746
! Node: Pragmas118549
! Node: Other Directives122817
! Node: Preprocessor Output124009
! Node: Traditional Mode127209
! Node: Traditional lexical analysis128264
! Node: Traditional macros130760
! Node: Traditional miscellany134554
! Node: Traditional warnings135544
! Node: Implementation Details137734
! Node: Implementation-defined behavior138352
! Ref: Identifier characters139082
! Node: Implementation limits141995
! Node: Obsolete Features144662
! Node: Assertions145109
! Node: Obsolete once-only headers147639
! Node: Differences from previous versions149363
! Node: Invocation153435
! Ref: Wtrigraphs157823
! Ref: dashMF162607
! Ref: fdollars-in-identifiers170090
! Node: Environment Variables177547
! Node: GNU Free Documentation License180510
! Node: Index of Directives202940
! Node: Option Index204320
! Node: Concept Index208389
End Tag Table
--- 4950,5166 ----
Concept Index
*************
+ [index ]
* Menu:
! * # operator: Stringification. (line 6)
! * ## operator: Concatenation. (line 6)
! * _Pragma: Pragmas. (line 25)
! * alternative tokens: Tokenization. (line 105)
! * arguments: Macro Arguments. (line 6)
! * arguments in macro definitions: Macro Arguments. (line 6)
! * assertions: Assertions. (line 6)
! * assertions, canceling: Assertions. (line 52)
! * backslash-newline: Initial processing. (line 61)
! * block comments: Initial processing. (line 77)
! * C++ named operators: C++ Named Operators. (line 6)
! * character constants: Tokenization. (line 84)
! * command line: Invocation. (line 6)
! * commenting out code: Deleted Code. (line 6)
! * comments: Initial processing. (line 77)
* common predefined macros: Common Predefined Macros.
! (line 6)
! * computed includes: Computed Includes. (line 6)
! * concatenation: Concatenation. (line 6)
! * conditional group: Ifdef. (line 14)
! * conditionals: Conditionals. (line 6)
! * continued lines: Initial processing. (line 61)
! * controlling macro: Once-Only Headers. (line 35)
! * defined: Defined. (line 6)
* dependencies for make as output: Environment Variables.
! (line 45)
! * dependencies, make: Invocation. (line 182)
! * diagnostic: Diagnostics. (line 6)
* differences from previous versions: Differences from previous versions.
! (line 6)
! * digraphs: Tokenization. (line 105)
* directive line: The preprocessing language.
+ (line 6)
* directive name: The preprocessing language.
+ (line 6)
* directives: The preprocessing language.
! (line 6)
! * empty macro arguments: Macro Arguments. (line 66)
* environment variables: Environment Variables.
! (line 6)
! * expansion of arguments: Argument Prescan. (line 6)
* FDL, GNU Free Documentation License: GNU Free Documentation License.
+ (line 6)
* function-like macros: Function-like Macros.
! (line 6)
! * grouping options: Invocation. (line 34)
! * guard macro: Once-Only Headers. (line 35)
! * header file: Header Files. (line 6)
! * header file names: Tokenization. (line 84)
! * identifiers: Tokenization. (line 34)
* implementation limits: Implementation limits.
+ (line 6)
* implementation-defined behavior: Implementation-defined behavior.
! (line 6)
! * including just once: Once-Only Headers. (line 6)
! * invocation: Invocation. (line 6)
! * iso646.h: C++ Named Operators. (line 6)
! * line comments: Initial processing. (line 77)
! * line control: Line Control. (line 6)
! * line endings: Initial processing. (line 14)
! * linemarkers: Preprocessor Output. (line 28)
! * macro argument expansion: Argument Prescan. (line 6)
* macro arguments and directives: Directives Within Macro Arguments.
! (line 6)
! * macros in include: Computed Includes. (line 6)
! * macros with arguments: Macro Arguments. (line 6)
! * macros with variable arguments: Variadic Macros. (line 6)
! * make: Invocation. (line 182)
! * manifest constants: Object-like Macros. (line 6)
! * named operators: C++ Named Operators. (line 6)
* newlines in macro arguments: Newlines in Arguments.
! (line 6)
! * null directive: Other Directives. (line 18)
! * numbers: Tokenization. (line 60)
! * object-like macro: Object-like Macros. (line 6)
! * options: Invocation. (line 38)
! * options, grouping: Invocation. (line 34)
! * other tokens: Tokenization. (line 119)
! * output format: Preprocessor Output. (line 12)
! * overriding a header file: Wrapper Headers. (line 6)
* parentheses in macro bodies: Operator Precedence Problems.
! (line 6)
! * pitfalls of macros: Macro Pitfalls. (line 6)
! * predefined macros: Predefined Macros. (line 6)
* predefined macros, system-specific: System-specific Predefined Macros.
! (line 6)
! * predicates: Assertions. (line 19)
* preprocessing directives: The preprocessing language.
! (line 6)
! * preprocessing numbers: Tokenization. (line 60)
! * preprocessing tokens: Tokenization. (line 6)
! * prescan of macro arguments: Argument Prescan. (line 6)
! * problems with macros: Macro Pitfalls. (line 6)
! * punctuators: Tokenization. (line 105)
* redefining macros: Undefining and Redefining Macros.
! (line 6)
! * repeated inclusion: Once-Only Headers. (line 6)
! * reporting errors: Diagnostics. (line 6)
! * reporting warnings: Diagnostics. (line 6)
* reserved namespace: System-specific Predefined Macros.
+ (line 6)
* self-reference: Self-Referential Macros.
+ (line 6)
* semicolons (after macro calls): Swallowing the Semicolon.
+ (line 6)
* side effects (in macro arguments): Duplication of Side Effects.
+ (line 6)
* standard predefined macros.: Standard Predefined Macros.
! (line 6)
! * string constants: Tokenization. (line 84)
! * string literals: Tokenization. (line 84)
! * stringification: Stringification. (line 6)
! * symbolic constants: Object-like Macros. (line 6)
! * system header files <1>: System Headers. (line 6)
! * system header files: Header Files. (line 13)
* system-specific predefined macros: System-specific Predefined Macros.
! (line 6)
! * testing predicates: Assertions. (line 30)
! * token concatenation: Concatenation. (line 6)
! * token pasting: Concatenation. (line 6)
! * tokens: Tokenization. (line 6)
! * trigraphs: Initial processing. (line 32)
* undefining macros: Undefining and Redefining Macros.
+ (line 6)
* unsafe macros: Duplication of Side Effects.
! (line 6)
! * variable number of arguments: Variadic Macros. (line 6)
! * variadic macros: Variadic Macros. (line 6)
! * wrapper #ifndef: Once-Only Headers. (line 6)
! * wrapper headers: Wrapper Headers. (line 6)
Tag Table:
! Node: Top1064
! Node: Overview3742
! Node: Character sets6563
! Ref: Character sets-Footnote-19022
! Node: Initial processing9203
! Ref: trigraphs10762
! Node: Tokenization14964
! Ref: Tokenization-Footnote-122018
! Node: The preprocessing language22129
! Node: Header Files25007
! Node: Include Syntax26887
! Node: Include Operation28394
! Node: Search Path30242
! Node: Once-Only Headers33318
! Node: Computed Includes34963
! Node: Wrapper Headers38107
! Node: System Headers40533
! Node: Macros42583
! Node: Object-like Macros43724
! Node: Function-like Macros47314
! Node: Macro Arguments48930
! Node: Stringification53075
! Node: Concatenation56281
! Node: Variadic Macros59389
! Node: Predefined Macros64176
! Node: Standard Predefined Macros64764
! Node: Common Predefined Macros70700
! Node: System-specific Predefined Macros78544
! Node: C++ Named Operators80565
! Node: Undefining and Redefining Macros81529
! Node: Directives Within Macro Arguments83633
! Node: Macro Pitfalls85181
! Node: Misnesting85714
! Node: Operator Precedence Problems86826
! Node: Swallowing the Semicolon88692
! Node: Duplication of Side Effects90715
! Node: Self-Referential Macros92898
! Node: Argument Prescan95307
! Node: Newlines in Arguments99061
! Node: Conditionals100012
! Node: Conditional Uses101842
! Node: Conditional Syntax103200
! Node: Ifdef103520
! Node: If106681
! Node: Defined108985
! Node: Else110268
! Node: Elif110838
! Node: Deleted Code112127
! Node: Diagnostics113374
! Node: Line Control114991
! Node: Pragmas118795
! Node: Other Directives123065
! Node: Preprocessor Output124258
! Node: Traditional Mode127459
! Node: Traditional lexical analysis128517
! Node: Traditional macros131020
! Node: Traditional miscellany134821
! Node: Traditional warnings135818
! Node: Implementation Details138015
! Node: Implementation-defined behavior138636
! Ref: Identifier characters139373
! Node: Implementation limits142286
! Node: Obsolete Features144960
! Node: Assertions145415
! Node: Obsolete once-only headers147956
! Node: Differences from previous versions149691
! Node: Invocation153770
! Ref: Wtrigraphs158162
! Ref: dashMF162946
! Ref: fdollars-in-identifiers170419
! Node: Environment Variables177876
! Node: GNU Free Documentation License180842
! Node: Index of Directives203265
! Node: Option Index205194
! Node: Concept Index211013
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/cppinternals.info gcc-3.4.5/gcc/doc/cppinternals.info
*** gcc-3.4.4/gcc/doc/cppinternals.info 2005-05-19 10:02:14.000000000 +0000
--- gcc-3.4.5/gcc/doc/cppinternals.info 2005-12-01 03:56:57.000000000 +0000
***************
*** 1,5 ****
! This is doc/cppinternals.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/doc/cppinternals.texi.
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
--- 1,5 ----
! This is doc/cppinternals.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/doc/cppinternals.texi.
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
*************** versions.
*** 26,38 ****
File: cppinternals.info, Node: Top, Next: Conventions, Up: (dir)
! Cpplib--the GNU C Preprocessor
! ******************************
!
! The GNU C preprocessor in GCC 3.x has been completely rewritten. It
! is now implemented as a library, "cpplib", so it can be easily shared
between a stand-alone preprocessor, and a preprocessor integrated with
the C, C++ and Objective-C front ends. It is also available for use by
other programs, though this is not recommended as its exposed interface
--- 26,39 ----
File: cppinternals.info, Node: Top, Next: Conventions, Up: (dir)
+ The GNU C Preprocessor Internals
+ ********************************
+ 1 Cpplib--the GNU C Preprocessor
+ ********************************
! The GNU C preprocessor in GCC 3.x has been completely rewritten. It is
! now implemented as a library, "cpplib", so it can be easily shared
between a stand-alone preprocessor, and a preprocessor integrated with
the C, C++ and Objective-C front ends. It is also available for use by
other programs, though this is not recommended as its exposed interface
*************** File: cppinternals.info, Node: Conventi
*** 68,74 ****
Conventions
***********
! cpplib has two interfaces--one is exposed internally only, and the
other is for both internal and external use.
The convention is that functions and types that are exposed to
--- 69,75 ----
Conventions
***********
! cpplib has two interfaces--one is exposed internally only, and the
other is for both internal and external use.
The convention is that functions and types that are exposed to
*************** The Lexer
*** 94,100 ****
Overview
========
! The lexer is contained in the file `cpplex.c'. It is a hand-coded
lexer, and not implemented as a state machine. It can understand C, C++
and Objective-C source code, and has been extended to allow reasonably
successful preprocessing of assembly language. The lexer does not make
--- 95,101 ----
Overview
========
! The lexer is contained in the file `cpplex.c'. It is a hand-coded
lexer, and not implemented as a state machine. It can understand C, C++
and Objective-C source code, and has been extended to allow reasonably
successful preprocessing of assembly language. The lexer does not make
*************** generating diagnostics, and for emitting
*** 113,122 ****
Lexing a token
==============
! Lexing of an individual token is handled by `_cpp_lex_direct' and
! its subroutines. In its current form the code is quite complicated,
! with read ahead characters and such-like, since it strives to not step
! back in the character stream in preparation for handling non-ASCII file
encodings. The current plan is to convert any such files to UTF-8
before processing them. This complexity is therefore unnecessary and
will be removed, so I'll not discuss it further here.
--- 114,123 ----
Lexing a token
==============
! Lexing of an individual token is handled by `_cpp_lex_direct' and its
! subroutines. In its current form the code is quite complicated, with
! read ahead characters and such-like, since it strives to not step back
! in the character stream in preparation for handling non-ASCII file
encodings. The current plan is to convert any such files to UTF-8
before processing them. This complexity is therefore unnecessary and
will be removed, so I'll not discuss it further here.
*************** program calls cpp_destroy, probably at t
*** 277,283 ****
Lexing a line
=============
! When the preprocessor was changed to return pointers to tokens, one
feature I wanted was some sort of guarantee regarding how long a
returned pointer remains valid. This is important to the stand-alone
preprocessor, the future direction of the C family front ends, and even
--- 278,284 ----
Lexing a line
=============
! When the preprocessor was changed to return pointers to tokens, one
feature I wanted was some sort of guarantee regarding how long a
returned pointer remains valid. This is important to the stand-alone
preprocessor, the future direction of the C family front ends, and even
*************** File: cppinternals.info, Node: Hash Nod
*** 365,376 ****
Hash Nodes
**********
! When cpplib encounters an "identifier", it generates a hash code for
! it and stores it in the hash table. By "identifier" we mean tokens
! with type `CPP_NAME'; this includes identifiers in the usual C sense,
! as well as keywords, directive names, macro names and so on. For
! example, all of `pragma', `int', `foo' and `__GNUC__' are identifiers
! and hashed when lexed.
Each node in the hash table contain various information about the
identifier it represents. For example, its length and type. At any one
--- 366,377 ----
Hash Nodes
**********
! When cpplib encounters an "identifier", it generates a hash code for it
! and stores it in the hash table. By "identifier" we mean tokens with
! type `CPP_NAME'; this includes identifiers in the usual C sense, as
! well as keywords, directive names, macro names and so on. For example,
! all of `pragma', `int', `foo' and `__GNUC__' are identifiers and hashed
! when lexed.
Each node in the hash table contain various information about the
identifier it represents. For example, its length and type. At any one
*************** File: cppinternals.info, Node: Macro Ex
*** 426,435 ****
Macro Expansion Algorithm
*************************
! Macro expansion is a tricky operation, fraught with nasty corner
! cases and situations that render what you thought was a nifty way to
! optimize the preprocessor's expansion algorithm wrong in quite subtle
! ways.
I strongly recommend you have a good grasp of how the C and C++
standards require macros to be expanded before diving into this
--- 427,435 ----
Macro Expansion Algorithm
*************************
! Macro expansion is a tricky operation, fraught with nasty corner cases
! and situations that render what you thought was a nifty way to optimize
! the preprocessor's expansion algorithm wrong in quite subtle ways.
I strongly recommend you have a good grasp of how the C and C++
standards require macros to be expanded before diving into this
*************** pasting are supposed to work, damage to
*** 440,447 ****
Internal representation of macros
=================================
! The preprocessor stores macro expansions in tokenized form. This
! saves repeated lexing passes during expansion, at the cost of a small
increase in memory consumption on average. The tokens are stored
contiguously in memory, so a pointer to the first one and a token count
is all you need to get the replacement list of a macro.
--- 440,447 ----
Internal representation of macros
=================================
! The preprocessor stores macro expansions in tokenized form. This saves
! repeated lexing passes during expansion, at the cost of a small
increase in memory consumption on average. The tokens are stored
contiguously in memory, so a pointer to the first one and a token count
is all you need to get the replacement list of a macro.
*************** changed.
*** 461,469 ****
Macro expansion overview
========================
! The preprocessor maintains a "context stack", implemented as a
! linked list of `cpp_context' structures, which together represent the
! macro expansion state at any one time. The `struct cpp_reader' member
variable `context' points to the current top of this stack. The top
normally holds the unexpanded replacement list of the innermost macro
under expansion, except when cpplib is about to pre-expand an argument,
--- 461,469 ----
Macro expansion overview
========================
! The preprocessor maintains a "context stack", implemented as a linked
! list of `cpp_context' structures, which together represent the macro
! expansion state at any one time. The `struct cpp_reader' member
variable `context' points to the current top of this stack. The top
normally holds the unexpanded replacement list of the innermost macro
under expansion, except when cpplib is about to pre-expand an argument,
*************** being expanded.
*** 506,512 ****
Scanning the replacement list for macros to expand
==================================================
! The C standard states that, after any parameters have been replaced
with their possibly-expanded arguments, the replacement list is scanned
for nested macros. Further, any identifiers in the replacement list
that are not expanded during this scan are never again eligible for
--- 506,512 ----
Scanning the replacement list for macros to expand
==================================================
! The C standard states that, after any parameters have been replaced
with their possibly-expanded arguments, the replacement list is scanned
for nested macros. Further, any identifiers in the replacement list
that are not expanded during this scan are never again eligible for
*************** it a second time.
*** 556,562 ****
Looking for a function-like macro's opening parenthesis
=======================================================
! Function-like macros only expand when immediately followed by a
parenthesis. To do this cpplib needs to temporarily disable macros and
read the next token. Unfortunately, because of spacing issues (*note
Token Spacing::), there can be fake padding tokens in-between, and if
--- 556,562 ----
Looking for a function-like macro's opening parenthesis
=======================================================
! Function-like macros only expand when immediately followed by a
parenthesis. To do this cpplib needs to temporarily disable macros and
read the next token. Unfortunately, because of spacing issues (*note
Token Spacing::), there can be fake padding tokens in-between, and if
*************** context just containing the padding info
*** 576,582 ****
Marking tokens ineligible for future expansion
==============================================
! As discussed above, cpplib needs a way of marking tokens as
unexpandable. Since the tokens cpplib handles are read-only once they
have been lexed, it instead makes a copy of the token and adds the flag
`NO_EXPAND' to the copy.
--- 576,582 ----
Marking tokens ineligible for future expansion
==============================================
! As discussed above, cpplib needs a way of marking tokens as
unexpandable. Since the tokens cpplib handles are read-only once they
have been lexed, it instead makes a copy of the token and adds the flag
`NO_EXPAND' to the copy.
*************** File: cppinternals.info, Node: Token Sp
*** 599,605 ****
Token Spacing
*************
! First, consider an issue that only concerns the stand-alone
preprocessor: there needs to be a guarantee that re-reading its
preprocessed output results in an identical token stream. Without
taking special measures, this might not be the case because of macro
--- 599,605 ----
Token Spacing
*************
! First, consider an issue that only concerns the stand-alone
preprocessor: there needs to be a guarantee that re-reading its
preprocessed output results in an identical token stream. Without
taking special measures, this might not be the case because of macro
*************** Line numbering
*** 730,737 ****
Just which line number anyway?
==============================
! There are three reasonable requirements a cpplib client might have
! for the line number of a token passed to it:
* The source line it was lexed on.
--- 730,737 ----
Just which line number anyway?
==============================
! There are three reasonable requirements a cpplib client might have for
! the line number of a token passed to it:
* The source line it was lexed on.
*************** produce correct output.
*** 786,795 ****
Representation of line numbers
==============================
! As mentioned above, cpplib stores with each token the line number
! that it was lexed on. In fact, this number is not the number of the
! line in the source file, but instead bears more resemblance to the
! number of the line in the translation unit.
The preprocessor maintains a monotonic increasing line count, which
is incremented at every new line character (and also at the end of any
--- 786,795 ----
Representation of line numbers
==============================
! As mentioned above, cpplib stores with each token the line number that
! it was lexed on. In fact, this number is not the number of the line in
! the source file, but instead bears more resemblance to the number of the
! line in the translation unit.
The preprocessor maintains a monotonic increasing line count, which
is incremented at every new line character (and also at the end of any
*************** File: cppinternals.info, Node: Guard Ma
*** 817,823 ****
The Multiple-Include Optimization
*********************************
! Header files are often of the form
#ifndef FOO
#define FOO
--- 817,823 ----
The Multiple-Include Optimization
*********************************
! Header files are often of the form
#ifndef FOO
#define FOO
*************** File: cppinternals.info, Node: Files,
*** 923,932 ****
File Handling
*************
! Fairly obviously, the file handling code of cpplib resides in the
! file `cppfiles.c'. It takes care of the details of file searching,
! opening, reading and caching, for both the main source file and all the
! headers it recursively includes.
The basic strategy is to minimize the number of system calls. On
many systems, the basic `open ()' and `fstat ()' system calls can be
--- 923,932 ----
File Handling
*************
! Fairly obviously, the file handling code of cpplib resides in the file
! `cppfiles.c'. It takes care of the details of file searching, opening,
! reading and caching, for both the main source file and all the headers
! it recursively includes.
The basic strategy is to minimize the number of system calls. On
many systems, the basic `open ()' and `fstat ()' system calls can be
*************** File: cppinternals.info, Node: Index,
*** 991,1034 ****
Index
*****
* Menu:
! * assertions: Hash Nodes.
! * controlling macros: Guard Macros.
! * escaped newlines: Lexer.
! * files: Files.
! * guard macros: Guard Macros.
! * hash table: Hash Nodes.
! * header files: Conventions.
! * identifiers: Hash Nodes.
! * interface: Conventions.
! * lexer: Lexer.
! * line numbers: Line Numbering.
! * macro expansion: Macro Expansion.
! * macro representation (internal): Macro Expansion.
! * macros: Hash Nodes.
! * multiple-include optimization: Guard Macros.
! * named operators: Hash Nodes.
! * newlines: Lexer.
! * paste avoidance: Token Spacing.
! * spacing: Token Spacing.
! * token run: Lexer.
! * token spacing: Token Spacing.
Tag Table:
! Node: Top971
! Node: Conventions2640
! Node: Lexer3584
! Ref: Invalid identifiers11506
! Ref: Lexing a line13455
! Node: Hash Nodes18231
! Node: Macro Expansion21113
! Node: Token Spacing30078
! Node: Line Numbering35941
! Node: Guard Macros40032
! Node: Files44830
! Node: Index48294
End Tag Table
--- 991,1035 ----
Index
*****
+ [index ]
* Menu:
! * assertions: Hash Nodes. (line 6)
! * controlling macros: Guard Macros. (line 6)
! * escaped newlines: Lexer. (line 6)
! * files: Files. (line 6)
! * guard macros: Guard Macros. (line 6)
! * hash table: Hash Nodes. (line 6)
! * header files: Conventions. (line 6)
! * identifiers: Hash Nodes. (line 6)
! * interface: Conventions. (line 6)
! * lexer: Lexer. (line 6)
! * line numbers: Line Numbering. (line 6)
! * macro expansion: Macro Expansion. (line 6)
! * macro representation (internal): Macro Expansion. (line 19)
! * macros: Hash Nodes. (line 6)
! * multiple-include optimization: Guard Macros. (line 6)
! * named operators: Hash Nodes. (line 6)
! * newlines: Lexer. (line 6)
! * paste avoidance: Token Spacing. (line 6)
! * spacing: Token Spacing. (line 6)
! * token run: Lexer. (line 192)
! * token spacing: Token Spacing. (line 6)
Tag Table:
! Node: Top956
! Node: Conventions2691
! Node: Lexer3632
! Ref: Invalid identifiers11548
! Ref: Lexing a line13497
! Node: Hash Nodes18270
! Node: Macro Expansion21149
! Node: Token Spacing30096
! Node: Line Numbering35956
! Node: Guard Macros40041
! Node: Files44836
! Node: Index48297
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/fsf-funding.7 gcc-3.4.5/gcc/doc/fsf-funding.7
*** gcc-3.4.4/gcc/doc/fsf-funding.7 2005-05-19 10:02:19.000000000 +0000
--- gcc-3.4.5/gcc/doc/fsf-funding.7 2005-12-01 03:57:06.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
fsf\-funding \- Funding Free Software
.SH "DESCRIPTION"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
fsf\-funding \- Funding Free Software
.SH "DESCRIPTION"
diff -Nrcpad gcc-3.4.4/gcc/doc/g++.1 gcc-3.4.5/gcc/doc/g++.1
*** gcc-3.4.4/gcc/doc/g++.1 2005-05-19 10:02:19.000000000 +0000
--- gcc-3.4.5/gcc/doc/g++.1 2005-12-01 03:57:06.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gcc \- GNU project C and C++ compiler
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gcc \- GNU project C and C++ compiler
.SH "SYNOPSIS"
*************** compatible with code generated by other
*** 1381,1387 ****
.Sp
The known incompatibilities at this point include:
.RS 4
! .IP "\(bu" 4
Incorrect handling of tail-padding for bit\-fields. G++ may attempt to
pack data into the same byte as a base class. For example:
.Sp
--- 1381,1387 ----
.Sp
The known incompatibilities at this point include:
.RS 4
! .IP "*" 4
Incorrect handling of tail-padding for bit\-fields. G++ may attempt to
pack data into the same byte as a base class. For example:
.Sp
*************** as\f(CW\*(C`A::f1\*(C'\fR; other compile
*** 1395,1401 ****
by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
byte size on your platform; that will cause G++ and other compilers to
layout \f(CW\*(C`B\*(C'\fR identically.
! .IP "\(bu" 4
Incorrect handling of tail-padding for virtual bases. G++ does not use
tail padding when laying out virtual bases. For example:
.Sp
--- 1395,1401 ----
by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
byte size on your platform; that will cause G++ and other compilers to
layout \f(CW\*(C`B\*(C'\fR identically.
! .IP "*" 4
Incorrect handling of tail-padding for virtual bases. G++ does not use
tail padding when laying out virtual bases. For example:
.Sp
*************** In this case, G++ will not place \f(CW\*
*** 1410,1416 ****
explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
alignment (ignoring virtual base classes); that will cause G++ and other
compilers to layout \f(CW\*(C`C\*(C'\fR identically.
! .IP "\(bu" 4
Incorrect handling of bit-fields with declared widths greater than that
of their underlying types, when the bit-fields appear in a union. For
example:
--- 1410,1416 ----
explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
alignment (ignoring virtual base classes); that will cause G++ and other
compilers to layout \f(CW\*(C`C\*(C'\fR identically.
! .IP "*" 4
Incorrect handling of bit-fields with declared widths greater than that
of their underlying types, when the bit-fields appear in a union. For
example:
*************** example:
*** 1421,1427 ****
.Sp
Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
! .IP "\(bu" 4
Empty classes can be placed at incorrect offsets. For example:
.Sp
.Vb 1
--- 1421,1427 ----
.Sp
Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
! .IP "*" 4
Empty classes can be placed at incorrect offsets. For example:
.Sp
.Vb 1
*************** Empty classes can be placed at incorrect
*** 1442,1448 ****
G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
it should be placed at offset zero. G++ mistakenly believes that the
\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
! .IP "\(bu" 4
Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
template template parameters can be mangled incorrectly.
.Sp
--- 1442,1448 ----
G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
it should be placed at offset zero. G++ mistakenly believes that the
\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
! .IP "*" 4
Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
template template parameters can be mangled incorrectly.
.Sp
*************** The following \fB\-W...\fR options are n
*** 1493,1518 ****
Warn about violations of the following style guidelines from Scott Meyers'
\&\fIEffective \*(C+\fR book:
.RS 4
! .IP "\(bu" 4
Item 11: Define a copy constructor and an assignment operator for classes
with dynamically allocated memory.
! .IP "\(bu" 4
Item 12: Prefer initialization to assignment in constructors.
! .IP "\(bu" 4
Item 14: Make destructors virtual in base classes.
! .IP "\(bu" 4
Item 15: Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP "\(bu" 4
Item 23: Don't try to return a reference when you must return an object.
.RE
.RS 4
.Sp
Also warn about violations of the following style guidelines from
Scott Meyers' \fIMore Effective \*(C+\fR book:
! .IP "\(bu" 4
Item 6: Distinguish between prefix and postfix forms of increment and
decrement operators.
! .IP "\(bu" 4
Item 7: Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
.RE
.RS 4
--- 1493,1518 ----
Warn about violations of the following style guidelines from Scott Meyers'
\&\fIEffective \*(C+\fR book:
.RS 4
! .IP "*" 4
Item 11: Define a copy constructor and an assignment operator for classes
with dynamically allocated memory.
! .IP "*" 4
Item 12: Prefer initialization to assignment in constructors.
! .IP "*" 4
Item 14: Make destructors virtual in base classes.
! .IP "*" 4
Item 15: Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP "*" 4
Item 23: Don't try to return a reference when you must return an object.
.RE
.RS 4
.Sp
Also warn about violations of the following style guidelines from
Scott Meyers' \fIMore Effective \*(C+\fR book:
! .IP "*" 4
Item 6: Distinguish between prefix and postfix forms of increment and
decrement operators.
! .IP "*" 4
Item 7: Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
.RE
.RS 4
*************** of the \f(CW\*(C`finally\*(C'\fR clause
*** 1698,1710 ****
.Sp
There are several caveats to using the new exception mechanism:
.RS 4
! .IP "\(bu" 4
Although currently designed to be binary compatible with \f(CW\*(C`NS_HANDLER\*(C'\fR\-style
idioms provided by the \f(CW\*(C`NSException\*(C'\fR class, the new
exceptions can only be used on Mac \s-1OS\s0 X 10.3 (Panther) and later
systems, due to additional functionality needed in the (NeXT) Objective-C
runtime.
! .IP "\(bu" 4
As mentioned above, the new exceptions do not support handling
types other than Objective-C objects. Furthermore, when used from
Objective\-\*(C+, the Objective-C exception model does not interoperate with \*(C+
--- 1698,1710 ----
.Sp
There are several caveats to using the new exception mechanism:
.RS 4
! .IP "*" 4
Although currently designed to be binary compatible with \f(CW\*(C`NS_HANDLER\*(C'\fR\-style
idioms provided by the \f(CW\*(C`NSException\*(C'\fR class, the new
exceptions can only be used on Mac \s-1OS\s0 X 10.3 (Panther) and later
systems, due to additional functionality needed in the (NeXT) Objective-C
runtime.
! .IP "*" 4
As mentioned above, the new exceptions do not support handling
types other than Objective-C objects. Furthermore, when used from
Objective\-\*(C+, the Objective-C exception model does not interoperate with \*(C+
*************** the warning.
*** 2278,2284 ****
supported, but the newer name is more descriptive.) Print extra warning
messages for these events:
.RS 4
! .IP "\(bu" 4
A function can return either with or without a value. (Falling
off the end of the function body is considered returning without
a value.) For example, this function would evoke such a
--- 2278,2284 ----
supported, but the newer name is more descriptive.) Print extra warning
messages for these events:
.RS 4
! .IP "*" 4
A function can return either with or without a value. (Falling
off the end of the function body is considered returning without
a value.) For example, this function would evoke such a
*************** warning:
*** 2291,2325 ****
\& return a;
\& }
.Ve
! .IP "\(bu" 4
An expression-statement or the left-hand side of a comma expression
contains no side effects.
To suppress the warning, cast the unused expression to void.
For example, an expression such as \fBx[i,j]\fR will cause a warning,
but \fBx[(void)i,j]\fR will not.
! .IP "\(bu" 4
An unsigned value is compared against zero with \fB<\fR or \fB>=\fR.
! .IP "\(bu" 4
A comparison like \fBx<=y<=z\fR appears; this is equivalent to
\&\fB(x<=y ? 1 : 0) <= z\fR, which is a different interpretation from
that of ordinary mathematical notation.
! .IP "\(bu" 4
Storage-class specifiers like \f(CW\*(C`static\*(C'\fR are not the first things in
a declaration. According to the C Standard, this usage is obsolescent.
! .IP "\(bu" 4
The return type of a function has a type qualifier such as \f(CW\*(C`const\*(C'\fR.
Such a type qualifier has no effect, since the value returned by a
function is not an lvalue. (But don't warn about the \s-1GNU\s0 extension of
\&\f(CW\*(C`volatile void\*(C'\fR return types. That extension will be warned about
if \fB\-pedantic\fR is specified.)
! .IP "\(bu" 4
If \fB\-Wall\fR or \fB\-Wunused\fR is also specified, warn about unused
arguments.
! .IP "\(bu" 4
A comparison between signed and unsigned values could produce an
incorrect result when the signed value is converted to unsigned.
(But don't warn if \fB\-Wno\-sign\-compare\fR is also specified.)
! .IP "\(bu" 4
An aggregate has an initializer which does not initialize all members.
For example, the following code would cause such a warning, because
\&\f(CW\*(C`x.h\*(C'\fR would be implicitly initialized to zero:
--- 2291,2325 ----
\& return a;
\& }
.Ve
! .IP "*" 4
An expression-statement or the left-hand side of a comma expression
contains no side effects.
To suppress the warning, cast the unused expression to void.
For example, an expression such as \fBx[i,j]\fR will cause a warning,
but \fBx[(void)i,j]\fR will not.
! .IP "*" 4
An unsigned value is compared against zero with \fB<\fR or \fB>=\fR.
! .IP "*" 4
A comparison like \fBx<=y<=z\fR appears; this is equivalent to
\&\fB(x<=y ? 1 : 0) <= z\fR, which is a different interpretation from
that of ordinary mathematical notation.
! .IP "*" 4
Storage-class specifiers like \f(CW\*(C`static\*(C'\fR are not the first things in
a declaration. According to the C Standard, this usage is obsolescent.
! .IP "*" 4
The return type of a function has a type qualifier such as \f(CW\*(C`const\*(C'\fR.
Such a type qualifier has no effect, since the value returned by a
function is not an lvalue. (But don't warn about the \s-1GNU\s0 extension of
\&\f(CW\*(C`volatile void\*(C'\fR return types. That extension will be warned about
if \fB\-pedantic\fR is specified.)
! .IP "*" 4
If \fB\-Wall\fR or \fB\-Wunused\fR is also specified, warn about unused
arguments.
! .IP "*" 4
A comparison between signed and unsigned values could produce an
incorrect result when the signed value is converted to unsigned.
(But don't warn if \fB\-Wno\-sign\-compare\fR is also specified.)
! .IP "*" 4
An aggregate has an initializer which does not initialize all members.
For example, the following code would cause such a warning, because
\&\f(CW\*(C`x.h\*(C'\fR would be implicitly initialized to zero:
*************** For example, the following code would ca
*** 2328,2348 ****
\& struct s { int f, g, h; };
\& struct s x = { 3, 4 };
.Ve
! .IP "\(bu" 4
A function parameter is declared without a type specifier in K&R\-style
functions:
.Sp
.Vb 1
\& void foo(bar) { }
.Ve
! .IP "\(bu" 4
An empty body occurs in an \fBif\fR or \fBelse\fR statement.
! .IP "\(bu" 4
A pointer is compared against integer zero with \fB<\fR, \fB<=\fR,
\&\fB>\fR, or \fB>=\fR.
! .IP "\(bu" 4
A variable might be changed by \fBlongjmp\fR or \fBvfork\fR.
! .IP "\(bu" 4
Any of several floating-point events that often indicate errors, such as
overflow, underflow, loss of precision, etc.
.IP "*<(\*(C+ only)>" 4
--- 2328,2348 ----
\& struct s { int f, g, h; };
\& struct s x = { 3, 4 };
.Ve
! .IP "*" 4
A function parameter is declared without a type specifier in K&R\-style
functions:
.Sp
.Vb 1
\& void foo(bar) { }
.Ve
! .IP "*" 4
An empty body occurs in an \fBif\fR or \fBelse\fR statement.
! .IP "*" 4
A pointer is compared against integer zero with \fB<\fR, \fB<=\fR,
\&\fB>\fR, or \fB>=\fR.
! .IP "*" 4
A variable might be changed by \fBlongjmp\fR or \fBvfork\fR.
! .IP "*" 4
Any of several floating-point events that often indicate errors, such as
overflow, underflow, loss of precision, etc.
.IP "*<(\*(C+ only)>" 4
*************** Warn about certain constructs that behav
*** 2402,2412 ****
\&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional C
equivalent, and/or problematic constructs which should be avoided.
.RS 4
! .IP "\(bu" 4
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 \s-1ISO\s0 C.
! .IP "\(bu" 4
In traditional C, some preprocessor directives did not exist.
Traditional preprocessors would only consider a line to be a directive
if the \fB#\fR appeared in column 1 on the line. Therefore
--- 2402,2412 ----
\&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional C
equivalent, and/or problematic constructs which should be avoided.
.RS 4
! .IP "*" 4
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 \s-1ISO\s0 C.
! .IP "*" 4
In traditional C, some preprocessor directives did not exist.
Traditional preprocessors would only consider a line to be a directive
if the \fB#\fR appeared in column 1 on the line. Therefore
*************** first character on the line. It also su
*** 2416,2426 ****
\&\fB#pragma\fR not understood by traditional C by indenting them. Some
traditional implementations would not recognize \fB#elif\fR, so it
suggests avoiding it altogether.
! .IP "\(bu" 4
A function-like macro that appears without arguments.
! .IP "\(bu" 4
The unary plus operator.
! .IP "\(bu" 4
The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating point
constant suffixes. (Traditional C does support the \fBL\fR suffix on integer
constants.) Note, these suffixes appear in macros defined in the system
--- 2416,2426 ----
\&\fB#pragma\fR not understood by traditional C by indenting them. Some
traditional implementations would not recognize \fB#elif\fR, so it
suggests avoiding it altogether.
! .IP "*" 4
A function-like macro that appears without arguments.
! .IP "*" 4
The unary plus operator.
! .IP "*" 4
The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating point
constant suffixes. (Traditional C does support the \fBL\fR suffix on integer
constants.) Note, these suffixes appear in macros defined in the system
*************** headers of most modern systems, e.g. the
*** 2428,2465 ****
Use of these macros in user code might normally lead to spurious
warnings, however \s-1GCC\s0's integrated preprocessor has enough context to
avoid warning in these cases.
! .IP "\(bu" 4
A function declared external in one block and then used after the end of
the block.
! .IP "\(bu" 4
A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP "\(bu" 4
A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
This construct is not accepted by some traditional C compilers.
! .IP "\(bu" 4
The \s-1ISO\s0 type of an integer constant has a different width or
signedness from its traditional type. This warning is only issued if
the base of the constant is ten. I.e. hexadecimal or octal values, which
typically represent bit patterns, are not warned about.
! .IP "\(bu" 4
Usage of \s-1ISO\s0 string concatenation is detected.
! .IP "\(bu" 4
Initialization of automatic aggregates.
! .IP "\(bu" 4
Identifier conflicts with labels. Traditional C lacks a separate
namespace for labels.
! .IP "\(bu" 4
Initialization of unions. If the initializer is zero, the warning is
omitted. This is done under the assumption that the zero initializer in
user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
initializer warnings and relies on default initialization to zero in the
traditional C case.
! .IP "\(bu" 4
Conversions by prototypes between fixed/floating point values and vice
versa. The absence of these prototypes when compiling with traditional
C would cause serious problems. This is a subset of the possible
conversion warnings, for the full set use \fB\-Wconversion\fR.
! .IP "\(bu" 4
Use of \s-1ISO\s0 C style function definitions. This warning intentionally is
\&\fInot\fR issued for prototype declarations or variadic functions
because these \s-1ISO\s0 C features will appear in your code when using
--- 2428,2465 ----
Use of these macros in user code might normally lead to spurious
warnings, however \s-1GCC\s0's integrated preprocessor has enough context to
avoid warning in these cases.
! .IP "*" 4
A function declared external in one block and then used after the end of
the block.
! .IP "*" 4
A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP "*" 4
A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
This construct is not accepted by some traditional C compilers.
! .IP "*" 4
The \s-1ISO\s0 type of an integer constant has a different width or
signedness from its traditional type. This warning is only issued if
the base of the constant is ten. I.e. hexadecimal or octal values, which
typically represent bit patterns, are not warned about.
! .IP "*" 4
Usage of \s-1ISO\s0 string concatenation is detected.
! .IP "*" 4
Initialization of automatic aggregates.
! .IP "*" 4
Identifier conflicts with labels. Traditional C lacks a separate
namespace for labels.
! .IP "*" 4
Initialization of unions. If the initializer is zero, the warning is
omitted. This is done under the assumption that the zero initializer in
user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
initializer warnings and relies on default initialization to zero in the
traditional C case.
! .IP "*" 4
Conversions by prototypes between fixed/floating point values and vice
versa. The absence of these prototypes when compiling with traditional
C would cause serious problems. This is a subset of the possible
conversion warnings, for the full set use \fB\-Wconversion\fR.
! .IP "*" 4
Use of \s-1ISO\s0 C style function definitions. This warning intentionally is
\&\fInot\fR issued for prototype declarations or variadic functions
because these \s-1ISO\s0 C features will appear in your code when using
*************** invoking \fB\-O2\fR on programs that use
*** 3326,3332 ****
.IX Item "-O3"
Optimize yet more. \fB\-O3\fR turns on all optimizations specified by
\&\fB\-O2\fR and also turns on the \fB\-finline\-functions\fR,
! \&\fB\-fweb\fR and \fB\-frename\-registers\fR options.
.IP "\fB\-O0\fR" 4
.IX Item "-O0"
Do not optimize. This is the default.
--- 3326,3333 ----
.IX Item "-O3"
Optimize yet more. \fB\-O3\fR turns on all optimizations specified by
\&\fB\-O2\fR and also turns on the \fB\-finline\-functions\fR,
! \&\fB\-fweb\fR, \fB\-frename\-registers\fR and \fB\-funswitch\-loops\fR
! options.
.IP "\fB\-O0\fR" 4
.IX Item "-O0"
Do not optimize. This is the default.
*************** is to use assembler macros instead.
*** 7463,7473 ****
configured to use an assembler that supports relocation operators.
However, there are two exceptions:
.RS 4
! .IP "\(bu" 4
\&\s-1GCC\s0 is not yet able to generate explicit relocations for the combination
of \fB\-mabi=64\fR and \fB\-mno\-abicalls\fR. This will be addressed
in a future release.
! .IP "\(bu" 4
The combination of \fB\-mabicalls\fR and \fB\-fno\-unit\-at\-a\-time\fR
implies \fB\-mno\-explicit\-relocs\fR unless explicitly overridden.
This is because, when generating abicalls, the choice of relocation
--- 7464,7474 ----
configured to use an assembler that supports relocation operators.
However, there are two exceptions:
.RS 4
! .IP "*" 4
\&\s-1GCC\s0 is not yet able to generate explicit relocations for the combination
of \fB\-mabi=64\fR and \fB\-mno\-abicalls\fR. This will be addressed
in a future release.
! .IP "*" 4
The combination of \fB\-mabicalls\fR and \fB\-fno\-unit\-at\-a\-time\fR
implies \fB\-mno\-explicit\-relocs\fR unless explicitly overridden.
This is because, when generating abicalls, the choice of relocation
*************** have any affect on which ld is called, i
*** 8135,8141 ****
are passed to that ld. The ld that is called is determined by the
\&\fB\-\-with\-ld\fR configure option, \s-1GCC\s0's program search path, and
finally by the user's \fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed
! using \fBwhich `gcc \-print\-prog\-name=ld`\fR.
.IP "\fB\-mhp\-ld\fR" 4
.IX Item "-mhp-ld"
Use \s-1HP\s0 ld specific options. This passes \fB\-b\fR to ld when building
--- 8136,8143 ----
are passed to that ld. The ld that is called is determined by the
\&\fB\-\-with\-ld\fR configure option, \s-1GCC\s0's program search path, and
finally by the user's \fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed
! using \fBwhich `gcc \-print\-prog\-name=ld`\fR. This option is only available
! on the 64 bit HP-UX \s-1GCC\s0, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
.IP "\fB\-mhp\-ld\fR" 4
.IX Item "-mhp-ld"
Use \s-1HP\s0 ld specific options. This passes \fB\-b\fR to ld when building
*************** which ld is called, it only changes what
*** 8146,8152 ****
ld. The ld that is called is determined by the \fB\-\-with\-ld\fR
configure option, \s-1GCC\s0's program search path, and finally by the user's
\&\fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed using \fBwhich
! `gcc \-print\-prog\-name=ld`\fR.
.IP "\fB\-mlong\-calls\fR" 4
.IX Item "-mlong-calls"
Generate code that uses long call sequences. This ensures that a call
--- 8148,8155 ----
ld. The ld that is called is determined by the \fB\-\-with\-ld\fR
configure option, \s-1GCC\s0's program search path, and finally by the user's
\&\fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed using \fBwhich
! `gcc \-print\-prog\-name=ld`\fR. This option is only available on the 64 bit
! HP-UX \s-1GCC\s0, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
.IP "\fB\-mlong\-calls\fR" 4
.IX Item "-mlong-calls"
Generate code that uses long call sequences. This ensures that a call
*************** specified separated by a comma.
*** 9435,9442 ****
.IX Item "-mtls-size=tls-size"
Specify bit size of immediate \s-1TLS\s0 offsets. Valid values are 14, 22, and
64.
! .IP "\fB\-mtune\-arch=\fR\fIcpu-type\fR" 4
! .IX Item "-mtune-arch=cpu-type"
Tune the instruction scheduling for a particular \s-1CPU\s0, Valid values are
itanium, itanium1, merced, itanium2, and mckinley.
.IP "\fB\-mt\fR" 4
--- 9438,9445 ----
.IX Item "-mtls-size=tls-size"
Specify bit size of immediate \s-1TLS\s0 offsets. Valid values are 14, 22, and
64.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
! .IX Item "-mtune=cpu-type"
Tune the instruction scheduling for a particular \s-1CPU\s0, Valid values are
itanium, itanium1, merced, itanium2, and mckinley.
.IP "\fB\-mt\fR" 4
diff -Nrcpad gcc-3.4.4/gcc/doc/g77.1 gcc-3.4.5/gcc/doc/g77.1
*** gcc-3.4.4/gcc/doc/g77.1 2005-05-19 10:02:20.000000000 +0000
--- gcc-3.4.5/gcc/doc/g77.1 2005-12-01 03:57:07.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "G77 1"
! .TH G77 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
g77 \- GNU project Fortran 77 compiler
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "G77 1"
! .TH G77 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
g77 \- GNU project Fortran 77 compiler
.SH "SYNOPSIS"
*************** These differences can result in subtle,
*** 936,942 ****
(even machine\-dependent) behavioral differences.
The constructs warned about include:
.RS 4
! .IP "\(bu" 4
Expressions having two arithmetic operators in a row, such
as \fBX*\-Y\fR.
Such a construct is nonstandard, and can produce
--- 936,942 ----
(even machine\-dependent) behavioral differences.
The constructs warned about include:
.RS 4
! .IP "*" 4
Expressions having two arithmetic operators in a row, such
as \fBX*\-Y\fR.
Such a construct is nonstandard, and can produce
*************** type promotion.
*** 956,962 ****
.Sp
(The \fB\-fpedantic\fR option also warns about expressions
having two arithmetic operators in a row.)
! .IP "\(bu" 4
Expressions with a unary minus followed by an operand and then
a binary operator other than plus or minus.
For example, \fB\-2**2\fR produces a warning, because
--- 956,962 ----
.Sp
(The \fB\-fpedantic\fR option also warns about expressions
having two arithmetic operators in a row.)
! .IP "*" 4
Expressions with a unary minus followed by an operand and then
a binary operator other than plus or minus.
For example, \fB\-2**2\fR produces a warning, because
*************** of this warning is to warn about differi
*** 982,988 ****
and encourage a better style of coding, not to identify
only those places where bugs might exist in the user's
code.
! .IP "\(bu" 4
\&\f(CW\*(C`DO\*(C'\fR loops with \f(CW\*(C`DO\*(C'\fR variables that are not
of integral type\-\-\-that is, using \f(CW\*(C`REAL\*(C'\fR
variables as loop control variables.
--- 982,988 ----
and encourage a better style of coding, not to identify
only those places where bugs might exist in the user's
code.
! .IP "*" 4
\&\f(CW\*(C`DO\*(C'\fR loops with \f(CW\*(C`DO\*(C'\fR variables that are not
of integral type\-\-\-that is, using \f(CW\*(C`REAL\*(C'\fR
variables as loop control variables.
*************** via \fB\-O\fR, the \fB\-Wuninitialized\f
*** 1006,1015 ****
.Sp
``Extra warnings'' are issued for:
.RS 4
! .IP "\(bu" 4
Unused parameters to a procedure (when \fB\-Wunused\fR also is
specified).
! .IP "\(bu" 4
Overflows involving floating-point constants (not available
for certain configurations).
.RE
--- 1006,1015 ----
.Sp
``Extra warnings'' are issued for:
.RS 4
! .IP "*" 4
Unused parameters to a procedure (when \fB\-Wunused\fR also is
specified).
! .IP "*" 4
Overflows involving floating-point constants (not available
for certain configurations).
.RE
diff -Nrcpad gcc-3.4.4/gcc/doc/g77.info gcc-3.4.5/gcc/doc/g77.info
*** gcc-3.4.4/gcc/doc/g77.info 2005-05-19 10:02:14.000000000 +0000
--- gcc-3.4.5/gcc/doc/g77.info 2005-12-01 03:56:58.000000000 +0000
***************
*** 1,7 ****
! This is doc/g77.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/f/g77.texi.
! Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Free
Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 1,7 ----
! This is doc/g77.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/f/g77.texi.
! Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Free
Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled "GNU Fr
*** 21,26 ****
--- 21,27 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* g77: (g77). The GNU Fortran compiler.
*************** END-INFO-DIR-ENTRY
*** 31,37 ****
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
! Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Free
Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 32,38 ----
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
! Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Free
Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled "GNU Fr
*** 51,56 ****
--- 52,58 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
Contributed by James Craig Burley (). Inspired by
a first pass at translating `g77-0.5.16/f/DOC' that was contributed to
Craig by David Ronis ().
*************** File: g77.info, Node: Top, Next: Copyi
*** 61,67 ****
Introduction
************
! This manual documents how to run, install and port `g77', as well as
its new features and incompatibilities, and how to report bugs. It
corresponds to the GCC-3.4.4 version of `g77'.
--- 63,69 ----
Introduction
************
! This manual documents how to run, install and port `g77', as well as
its new features and incompatibilities, and how to report bugs. It
corresponds to the GCC-3.4.4 version of `g77'.
*************** GNU GENERAL PUBLIC LICENSE
*** 108,125 ****
**************************
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your
! freedom to share and change it. By contrast, the GNU General Public
! License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
--- 110,128 ----
**************************
Version 2, June 1991
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your freedom
! to share and change it. By contrast, the GNU General Public License is
! intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
*************** modification follow.
*** 372,378 ****
and reuse of software generally.
NO WARRANTY
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
--- 375,380 ----
*************** modification follow.
*** 396,406 ****
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
-
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
--- 398,407 ----
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
*************** the "copyright" line and a pointer to wh
*** 412,428 ****
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--- 413,429 ----
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*************** if necessary. Here is a sample; alter t
*** 451,457 ****
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
--- 452,458 ----
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
*************** GNU Free Documentation License
*** 468,476 ****
******************************
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
--- 469,478 ----
******************************
Version 1.2, November 2002
+
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 864,870 ****
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
--- 866,872 ----
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
*************** File: g77.info, Node: Contributors, Ne
*** 898,905 ****
Contributors to GNU Fortran
***************************
! In addition to James Craig Burley, who wrote the front end, many
! people have helped create and improve GNU Fortran.
* The packaging and compiler portions of GNU Fortran are based
largely on the GCC compiler. *Note Contributors to GCC:
--- 900,907 ----
Contributors to GNU Fortran
***************************
! In addition to James Craig Burley, who wrote the front end, many people
! have helped create and improve GNU Fortran.
* The packaging and compiler portions of GNU Fortran are based
largely on the GCC compiler. *Note Contributors to GCC:
*************** File: g77.info, Node: Funding, Next: F
*** 994,1000 ****
Funding Free Software
*********************
! If you want to have more free software a few years from now, it makes
sense for you to help encourage people to contribute funds for its
development. The most effective approach known is to encourage
commercial redistributors to donate.
--- 996,1002 ----
Funding Free Software
*********************
! If you want to have more free software a few years from now, it makes
sense for you to help encourage people to contribute funds for its
development. The most effective approach known is to encourage
commercial redistributors to donate.
*************** assure a steady flow of resources into m
*** 1041,1051 ****
File: g77.info, Node: Funding GNU Fortran, Next: Getting Started, Prev: Funding, Up: Top
! Funding GNU Fortran
! *******************
! James Craig Burley (), the original author of
! `g77', stopped working on it in September 1999 (He has a web page at
`http://world.std.com/%7Eburley/'.)
GNU Fortran is currently maintained by Toon Moene
--- 1043,1053 ----
File: g77.info, Node: Funding GNU Fortran, Next: Getting Started, Prev: Funding, Up: Top
! 1 Funding GNU Fortran
! *********************
! James Craig Burley (), the original author of `g77',
! stopped working on it in September 1999 (He has a web page at
`http://world.std.com/%7Eburley/'.)
GNU Fortran is currently maintained by Toon Moene
*************** of `g77'. Work on this compiler has sto
*** 1075,1084 ****
File: g77.info, Node: Getting Started, Next: What is GNU Fortran?, Prev: Funding GNU Fortran, Up: Top
! Getting Started
! ***************
! If you don't need help getting started reading the portions of this
manual that are most important to you, you should skip this portion of
the manual.
--- 1077,1086 ----
File: g77.info, Node: Getting Started, Next: What is GNU Fortran?, Prev: Funding GNU Fortran, Up: Top
! 2 Getting Started
! *****************
! If you don't need help getting started reading the portions of this
manual that are most important to you, you should skip this portion of
the manual.
*************** you might be able to answer, see *Note O
*** 1128,1138 ****
File: g77.info, Node: What is GNU Fortran?, Next: G77 and GCC, Prev: Getting Started, Up: Top
! What is GNU Fortran?
! ********************
! GNU Fortran, or `g77', is designed initially as a free replacement
! for, or alternative to, the UNIX `f77' command. (Similarly, `gcc' is
designed as a replacement for the UNIX `cc' command.)
`g77' also is designed to fit in well with the other fine GNU
--- 1130,1140 ----
File: g77.info, Node: What is GNU Fortran?, Next: G77 and GCC, Prev: Getting Started, Up: Top
! 3 What is GNU Fortran?
! **********************
! GNU Fortran, or `g77', is designed initially as a free replacement for,
! or alternative to, the UNIX `f77' command. (Similarly, `gcc' is
designed as a replacement for the UNIX `cc' command.)
`g77' also is designed to fit in well with the other fine GNU
*************** the shared GBE).
*** 1321,1330 ****
File: g77.info, Node: G77 and GCC, Next: Invoking G77, Prev: What is GNU Fortran?, Up: Top
! Compile Fortran, C, or Other Programs
! *************************************
! A GNU Fortran installation includes a modified version of the `gcc'
command.
In a non-Fortran installation, `gcc' recognizes C, C++, and
--- 1323,1332 ----
File: g77.info, Node: G77 and GCC, Next: Invoking G77, Prev: What is GNU Fortran?, Up: Top
! 4 Compile Fortran, C, or Other Programs
! ***************************************
! A GNU Fortran installation includes a modified version of the `gcc'
command.
In a non-Fortran installation, `gcc' recognizes C, C++, and
*************** line of output is the invocation of the
*** 1351,1360 ****
File: g77.info, Node: Invoking G77, Next: News, Prev: G77 and GCC, Up: Top
! GNU Fortran Command Options
! ***************************
! The `g77' command supports all the options supported by the `gcc'
command. *Note GCC Command Options: (gcc)Invoking GCC, for information
on the non-Fortran-specific aspects of the `gcc' command (and,
therefore, the `g77' command).
--- 1353,1362 ----
File: g77.info, Node: Invoking G77, Next: News, Prev: G77 and GCC, Up: Top
! 5 GNU Fortran Command Options
! *****************************
! The `g77' command supports all the options supported by the `gcc'
command. *Note GCC Command Options: (gcc)Invoking GCC, for information
on the non-Fortran-specific aspects of the `gcc' command (and,
therefore, the `g77' command).
*************** only one of these two forms, whichever o
*** 1392,1401 ****
File: g77.info, Node: Option Summary, Next: Overall Options, Up: Invoking G77
! Option Summary
! ==============
! Here is a summary of all the options specific to GNU Fortran, grouped
by type. Explanations are in the following sections.
_Overall Options_
--- 1394,1403 ----
File: g77.info, Node: Option Summary, Next: Overall Options, Up: Invoking G77
! 5.1 Option Summary
! ==================
! Here is a summary of all the options specific to GNU Fortran, grouped
by type. Explanations are in the following sections.
_Overall Options_
*************** _Shorthand Options_
*** 1408,1449 ****
_Fortran Language Options_
*Note Options Controlling Fortran Dialect: Fortran Dialect Options.
! -ffree-form -fno-fixed-form -ff90
! -fvxt -fdollar-ok -fno-backslash
! -fno-ugly-args -fno-ugly-assign -fno-ugly-assumed
! -fugly-comma -fugly-complex -fugly-init -fugly-logint
! -fonetrip -ftypeless-boz
! -fintrin-case-initcap -fintrin-case-upper
! -fintrin-case-lower -fintrin-case-any
! -fmatch-case-initcap -fmatch-case-upper
! -fmatch-case-lower -fmatch-case-any
! -fsource-case-upper -fsource-case-lower
! -fsource-case-preserve
! -fsymbol-case-initcap -fsymbol-case-upper
! -fsymbol-case-lower -fsymbol-case-any
! -fcase-strict-upper -fcase-strict-lower
! -fcase-initcap -fcase-upper -fcase-lower -fcase-preserve
! -ff2c-intrinsics-delete -ff2c-intrinsics-hide
! -ff2c-intrinsics-disable -ff2c-intrinsics-enable
! -fbadu77-intrinsics-delete -fbadu77-intrinsics-hide
! -fbadu77-intrinsics-disable -fbadu77-intrinsics-enable
! -ff90-intrinsics-delete -ff90-intrinsics-hide
! -ff90-intrinsics-disable -ff90-intrinsics-enable
! -fgnu-intrinsics-delete -fgnu-intrinsics-hide
! -fgnu-intrinsics-disable -fgnu-intrinsics-enable
! -fmil-intrinsics-delete -fmil-intrinsics-hide
! -fmil-intrinsics-disable -fmil-intrinsics-enable
! -funix-intrinsics-delete -funix-intrinsics-hide
! -funix-intrinsics-disable -funix-intrinsics-enable
! -fvxt-intrinsics-delete -fvxt-intrinsics-hide
! -fvxt-intrinsics-disable -fvxt-intrinsics-enable
-ffixed-line-length-N -ffixed-line-length-none
_Warning Options_
*Note Options to Request or Suppress Warnings: Warning Options.
! -fsyntax-only -pedantic -pedantic-errors -fpedantic
! -w -Wno-globals -Wimplicit -Wunused -Wuninitialized
! -Wall -Wsurprising
-Werror -W
_Debugging Options_
--- 1410,1451 ----
_Fortran Language Options_
*Note Options Controlling Fortran Dialect: Fortran Dialect Options.
! -ffree-form -fno-fixed-form -ff90
! -fvxt -fdollar-ok -fno-backslash
! -fno-ugly-args -fno-ugly-assign -fno-ugly-assumed
! -fugly-comma -fugly-complex -fugly-init -fugly-logint
! -fonetrip -ftypeless-boz
! -fintrin-case-initcap -fintrin-case-upper
! -fintrin-case-lower -fintrin-case-any
! -fmatch-case-initcap -fmatch-case-upper
! -fmatch-case-lower -fmatch-case-any
! -fsource-case-upper -fsource-case-lower
! -fsource-case-preserve
! -fsymbol-case-initcap -fsymbol-case-upper
! -fsymbol-case-lower -fsymbol-case-any
! -fcase-strict-upper -fcase-strict-lower
! -fcase-initcap -fcase-upper -fcase-lower -fcase-preserve
! -ff2c-intrinsics-delete -ff2c-intrinsics-hide
! -ff2c-intrinsics-disable -ff2c-intrinsics-enable
! -fbadu77-intrinsics-delete -fbadu77-intrinsics-hide
! -fbadu77-intrinsics-disable -fbadu77-intrinsics-enable
! -ff90-intrinsics-delete -ff90-intrinsics-hide
! -ff90-intrinsics-disable -ff90-intrinsics-enable
! -fgnu-intrinsics-delete -fgnu-intrinsics-hide
! -fgnu-intrinsics-disable -fgnu-intrinsics-enable
! -fmil-intrinsics-delete -fmil-intrinsics-hide
! -fmil-intrinsics-disable -fmil-intrinsics-enable
! -funix-intrinsics-delete -funix-intrinsics-hide
! -funix-intrinsics-disable -funix-intrinsics-enable
! -fvxt-intrinsics-delete -fvxt-intrinsics-hide
! -fvxt-intrinsics-disable -fvxt-intrinsics-enable
-ffixed-line-length-N -ffixed-line-length-none
_Warning Options_
*Note Options to Request or Suppress Warnings: Warning Options.
! -fsyntax-only -pedantic -pedantic-errors -fpedantic
! -w -Wno-globals -Wimplicit -Wunused -Wuninitialized
! -Wall -Wsurprising
-Werror -W
_Debugging Options_
*************** _Debugging Options_
*** 1452,1465 ****
_Optimization Options_
*Note Options that Control Optimization: Optimize Options.
! -malign-double
! -ffloat-store -fforce-mem -fforce-addr -fno-inline
! -ffast-math -fstrength-reduce -frerun-cse-after-loop
! -funsafe-math-optimizations -ffinite-math-only -fno-trapping-math
! -fexpensive-optimizations -fdelayed-branch
! -fschedule-insns -fschedule-insn2 -fcaller-saves
! -funroll-loops -funroll-all-loops
! -fno-move-all-movables -fno-reduce-all-givs
-fno-rerun-loop-opt
_Directory Options_
--- 1454,1467 ----
_Optimization Options_
*Note Options that Control Optimization: Optimize Options.
! -malign-double
! -ffloat-store -fforce-mem -fforce-addr -fno-inline
! -ffast-math -fstrength-reduce -frerun-cse-after-loop
! -funsafe-math-optimizations -ffinite-math-only -fno-trapping-math
! -fexpensive-optimizations -fdelayed-branch
! -fschedule-insns -fschedule-insn2 -fcaller-saves
! -funroll-loops -funroll-all-loops
! -fno-move-all-movables -fno-reduce-all-givs
-fno-rerun-loop-opt
_Directory Options_
*************** _Directory Options_
*** 1468,1484 ****
_Code Generation Options_
*Note Options for Code Generation Conventions: Code Gen Options.
! -fno-automatic -finit-local-zero -fno-f2c
! -ff2c-library -fno-underscoring -fno-ident
! -fpcc-struct-return -freg-struct-return
! -fshort-double -fno-common -fpack-struct
! -fzeros -fno-second-underscore
! -femulate-complex
! -falias-check -fargument-alias
! -fargument-noalias -fno-argument-noalias-global
! -fno-globals -fflatten-arrays
-fbounds-check -ffortran-bounds-check
* Menu:
* Overall Options:: Controlling the kind of output:
--- 1470,1487 ----
_Code Generation Options_
*Note Options for Code Generation Conventions: Code Gen Options.
! -fno-automatic -finit-local-zero -fno-f2c
! -ff2c-library -fno-underscoring -fno-ident
! -fpcc-struct-return -freg-struct-return
! -fshort-double -fno-common -fpack-struct
! -fzeros -fno-second-underscore
! -femulate-complex
! -falias-check -fargument-alias
! -fargument-noalias -fno-argument-noalias-global
! -fno-globals -fflatten-arrays
-fbounds-check -ffortran-bounds-check
+
* Menu:
* Overall Options:: Controlling the kind of output:
*************** _Code Generation Options_
*** 1500,1509 ****
File: g77.info, Node: Overall Options, Next: Shorthand Options, Prev: Option Summary, Up: Invoking G77
! Options Controlling the Kind of Output
! ======================================
! Compilation can involve as many as four stages: preprocessing, code
generation (often what is really meant by the term "compilation"),
assembly, and linking, always in that order. The first three stages
apply to an individual source file, and end by producing an object
--- 1503,1512 ----
File: g77.info, Node: Overall Options, Next: Shorthand Options, Prev: Option Summary, Up: Invoking G77
! 5.2 Options Controlling the Kind of Output
! ==========================================
! Compilation can involve as many as four stages: preprocessing, code
generation (often what is really meant by the term "compilation"),
assembly, and linking, always in that order. The first three stages
apply to an individual source file, and end by producing an object
*************** the `gcc' command (and, by extension, th
*** 1643,1653 ****
File: g77.info, Node: Shorthand Options, Next: Fortran Dialect Options, Prev: Overall Options, Up: Invoking G77
! Shorthand Options
! =================
! The following options serve as "shorthand" for other options
! accepted by the compiler:
`-fugly'
_Note:_ This option is no longer supported. The information,
--- 1646,1656 ----
File: g77.info, Node: Shorthand Options, Next: Fortran Dialect Options, Prev: Overall Options, Up: Invoking G77
! 5.3 Shorthand Options
! =====================
! The following options serve as "shorthand" for other options accepted
! by the compiler:
`-fugly'
_Note:_ This option is no longer supported. The information,
*************** accepted by the compiler:
*** 1707,1717 ****
File: g77.info, Node: Fortran Dialect Options, Next: Warning Options, Prev: Shorthand Options, Up: Invoking G77
! Options Controlling Fortran Dialect
! ===================================
! The following options control the dialect of Fortran that the
! compiler accepts:
`-ffree-form'
--- 1710,1720 ----
File: g77.info, Node: Fortran Dialect Options, Next: Warning Options, Prev: Shorthand Options, Up: Invoking G77
! 5.4 Options Controlling Fortran Dialect
! =======================================
! The following options control the dialect of Fortran that the compiler
! accepts:
`-ffree-form'
*************** compiler accepts:
*** 2040,2049 ****
File: g77.info, Node: Warning Options, Next: Debugging Options, Prev: Fortran Dialect Options, Up: Invoking G77
! Options to Request or Suppress Warnings
! =======================================
! Warnings are diagnostic messages that report constructions which are
not inherently erroneous but which are risky or suggest there might
have been an error.
--- 2043,2052 ----
File: g77.info, Node: Warning Options, Next: Debugging Options, Prev: Fortran Dialect Options, Up: Invoking G77
! 5.5 Options to Request or Suppress Warnings
! ===========================================
! Warnings are diagnostic messages that report constructions which are
not inherently erroneous but which are risky or suggest there might
have been an error.
*************** Fortran:
*** 2273,2282 ****
File: g77.info, Node: Debugging Options, Next: Optimize Options, Prev: Warning Options, Up: Invoking G77
! Options for Debugging Your Program or GNU Fortran
! =================================================
! GNU Fortran has various special options that are used for debugging
either your program or `g77'
`-g'
--- 2276,2285 ----
File: g77.info, Node: Debugging Options, Next: Optimize Options, Prev: Warning Options, Up: Invoking G77
! 5.6 Options for Debugging Your Program or GNU Fortran
! =====================================================
! GNU Fortran has various special options that are used for debugging
either your program or `g77'
`-g'
*************** Options, for more information on debuggi
*** 2320,2330 ****
File: g77.info, Node: Optimize Options, Next: Preprocessor Options, Prev: Debugging Options, Up: Invoking G77
! Options That Control Optimization
! =================================
! Most Fortran users will want to use no optimization when developing
! and testing programs, and use `-O' or `-O2' when compiling programs for
late-cycle testing and for production use. However, note that certain
diagnostics--such as for uninitialized variables--depend on the flow
analysis done by `-O', i.e. you must use `-O' or `-O2' to get such
--- 2323,2333 ----
File: g77.info, Node: Optimize Options, Next: Preprocessor Options, Prev: Debugging Options, Up: Invoking G77
! 5.7 Options That Control Optimization
! =====================================
! Most Fortran users will want to use no optimization when developing and
! testing programs, and use `-O' or `-O2' when compiling programs for
late-cycle testing and for production use. However, note that certain
diagnostics--such as for uninitialized variables--depend on the flow
analysis done by `-O', i.e. you must use `-O' or `-O2' to get such
*************** than otherwise.
*** 2492,2502 ****
File: g77.info, Node: Preprocessor Options, Next: Directory Options, Prev: Optimize Options, Up: Invoking G77
! Options Controlling the Preprocessor
! ====================================
! These options control the C preprocessor, which is run on each C
! source file before actual compilation.
*Note Options Controlling the Preprocessor: (gcc)Preprocessor
Options, for information on C preprocessor options.
--- 2495,2505 ----
File: g77.info, Node: Preprocessor Options, Next: Directory Options, Prev: Optimize Options, Up: Invoking G77
! 5.8 Options Controlling the Preprocessor
! ========================================
! These options control the C preprocessor, which is run on each C source
! file before actual compilation.
*Note Options Controlling the Preprocessor: (gcc)Preprocessor
Options, for information on C preprocessor options.
*************** included by a file that itself contains
*** 2519,2528 ****
File: g77.info, Node: Directory Options, Next: Code Gen Options, Prev: Preprocessor Options, Up: Invoking G77
! Options for Directory Search
! ============================
! These options affect how the `cpp' preprocessor searches for files
specified via the `#include' directive. Therefore, when compiling
Fortran programs, they are meaningful when the preprocessor is used.
--- 2522,2531 ----
File: g77.info, Node: Directory Options, Next: Code Gen Options, Prev: Preprocessor Options, Up: Invoking G77
! 5.9 Options for Directory Search
! ================================
! These options affect how the `cpp' preprocessor searches for files
specified via the `#include' directive. Therefore, when compiling
Fortran programs, they are meaningful when the preprocessor is used.
*************** directive are not, themselves, preproces
*** 2550,2559 ****
File: g77.info, Node: Code Gen Options, Next: Environment Variables, Prev: Directory Options, Up: Invoking G77
! Options for Code Generation Conventions
! =======================================
! These machine-independent options control the interface conventions
used in code generation.
Most of them have both positive and negative forms; the negative form
--- 2553,2562 ----
File: g77.info, Node: Code Gen Options, Next: Environment Variables, Prev: Directory Options, Up: Invoking G77
! 5.10 Options for Code Generation Conventions
! ============================================
! These machine-independent options control the interface conventions
used in code generation.
Most of them have both positive and negative forms; the negative form
*************** Fortran:
*** 2890,2901 ****
File: g77.info, Node: Environment Variables, Prev: Code Gen Options, Up: Invoking G77
! Environment Variables Affecting GNU Fortran
! ===========================================
! GNU Fortran currently does not make use of any environment variables
! to control its operation above and beyond those that affect the
! operation of `gcc'.
*Note Environment Variables Affecting GCC: (gcc)Environment
Variables, for information on environment variables.
--- 2893,2904 ----
File: g77.info, Node: Environment Variables, Prev: Code Gen Options, Up: Invoking G77
! 5.11 Environment Variables Affecting GNU Fortran
! ================================================
! GNU Fortran currently does not make use of any environment variables to
! control its operation above and beyond those that affect the operation
! of `gcc'.
*Note Environment Variables Affecting GCC: (gcc)Environment
Variables, for information on environment variables.
*************** Variables, for information on environmen
*** 2903,2910 ****
File: g77.info, Node: News, Next: Changes, Prev: Invoking G77, Up: Top
! News About GNU Fortran
! **********************
_`GCC' 3.4.x is the last edition of `GCC' to contain `g77' - from
`GCC' 4.0 onwards, use `gfortran'_
--- 2906,2913 ----
File: g77.info, Node: News, Next: Changes, Prev: Invoking G77, Up: Top
! 6 News About GNU Fortran
! ************************
_`GCC' 3.4.x is the last edition of `GCC' to contain `g77' - from
`GCC' 4.0 onwards, use `gfortran'_
*************** In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versu
*** 3300,3307 ****
In 0.5.24 versus 0.5.23:
========================
! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24
! is the version number designated for bug fixes and, perhaps, some new
features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
0.5.24 was planned to require.
--- 3303,3310 ----
In 0.5.24 versus 0.5.23:
========================
! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 is
! the version number designated for bug fixes and, perhaps, some new
features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
0.5.24 was planned to require.
*************** In 0.5.20:
*** 4247,4262 ****
In previous versions:
=====================
! Information on previous versions is archived in `gcc/gcc/f/news.texi'
following the test of the `DOC-OLDNEWS' macro.
File: g77.info, Node: Changes, Next: Language, Prev: News, Up: Top
! User-visible Changes
! ********************
! This chapter describes changes to `g77' that are visible to the
programmers who actually write and maintain Fortran code they compile
with `g77'. Information on changes to installation procedures, changes
to the documentation, and bug fixes is not provided here, unless it is
--- 4250,4265 ----
In previous versions:
=====================
! Information on previous versions is archived in `gcc/gcc/f/news.texi'
following the test of the `DOC-OLDNEWS' macro.
File: g77.info, Node: Changes, Next: Language, Prev: News, Up: Top
! 7 User-visible Changes
! **********************
! This chapter describes changes to `g77' that are visible to the
programmers who actually write and maintain Fortran code they compile
with `g77'. Information on changes to installation procedures, changes
to the documentation, and bug fixes is not provided here, unless it is
*************** In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versu
*** 4544,4551 ****
In 0.5.24 versus 0.5.23:
========================
! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24
! is the version number designated for bug fixes and, perhaps, some new
features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
0.5.24 was planned to require.
--- 4547,4554 ----
In 0.5.24 versus 0.5.23:
========================
! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 is
! the version number designated for bug fixes and, perhaps, some new
features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
0.5.24 was planned to require.
*************** In 0.5.20:
*** 4983,5000 ****
In previous versions:
=====================
! Information on previous versions is archived in `gcc/gcc/f/news.texi'
following the test of the `DOC-OLDNEWS' macro.
File: g77.info, Node: Language, Next: Compiler, Prev: Changes, Up: Top
! The GNU Fortran Language
! ************************
! GNU Fortran supports a variety of extensions to, and dialects of,
! the Fortran language. Its primary base is the ANSI FORTRAN 77
! standard, currently available on the network at
`http://www.fortran.com/fortran/F77_std/rjcnf0001.html' or as
monolithic text at
`http://www.fortran.com/fortran/F77_std/f77_std.html'. It offers some
--- 4986,5003 ----
In previous versions:
=====================
! Information on previous versions is archived in `gcc/gcc/f/news.texi'
following the test of the `DOC-OLDNEWS' macro.
File: g77.info, Node: Language, Next: Compiler, Prev: Changes, Up: Top
! 8 The GNU Fortran Language
! **************************
! GNU Fortran supports a variety of extensions to, and dialects of, the
! Fortran language. Its primary base is the ANSI FORTRAN 77 standard,
! currently available on the network at
`http://www.fortran.com/fortran/F77_std/rjcnf0001.html' or as
monolithic text at
`http://www.fortran.com/fortran/F77_std/f77_std.html'. It offers some
*************** Extensions to the ANSI FORTRAN 77 standa
*** 5048,5058 ****
File: g77.info, Node: Direction of Language Development, Next: Standard Support, Up: Language
! Direction of Language Development
! =================================
! The purpose of the following description of the GNU Fortran language
! is to promote wide portability of GNU Fortran programs.
GNU Fortran is an evolving language, due to the fact that `g77'
itself is in beta test. Some current features of the language might
--- 5051,5061 ----
File: g77.info, Node: Direction of Language Development, Next: Standard Support, Up: Language
! 8.1 Direction of Language Development
! =====================================
! The purpose of the following description of the GNU Fortran language is
! to promote wide portability of GNU Fortran programs.
GNU Fortran is an evolving language, due to the fact that `g77'
itself is in beta test. Some current features of the language might
*************** versions of `g77').
*** 5174,5183 ****
File: g77.info, Node: Standard Support, Next: Conformance, Prev: Direction of Language Development, Up: Language
! ANSI FORTRAN 77 Standard Support
! ================================
! GNU Fortran supports ANSI FORTRAN 77 with the following caveats. In
summary, the only ANSI FORTRAN 77 features `g77' doesn't support are
those that are probably rarely used in actual code, some of which are
explicitly disallowed by the Fortran 90 standard.
--- 5177,5186 ----
File: g77.info, Node: Standard Support, Next: Conformance, Prev: Direction of Language Development, Up: Language
! 8.2 ANSI FORTRAN 77 Standard Support
! ====================================
! GNU Fortran supports ANSI FORTRAN 77 with the following caveats. In
summary, the only ANSI FORTRAN 77 features `g77' doesn't support are
those that are probably rarely used in actual code, some of which are
explicitly disallowed by the Fortran 90 standard.
*************** explicitly disallowed by the Fortran 90
*** 5192,5203 ****
File: g77.info, Node: No Passing External Assumed-length, Next: No Passing Dummy Assumed-length, Up: Standard Support
! No Passing External Assumed-length
! ----------------------------------
! `g77' disallows passing of an external procedure as an actual
! argument if the procedure's type is declared `CHARACTER*(*)'. For
! example:
CHARACTER*(*) CFUNC
EXTERNAL CFUNC
--- 5195,5205 ----
File: g77.info, Node: No Passing External Assumed-length, Next: No Passing Dummy Assumed-length, Up: Standard Support
! 8.2.1 No Passing External Assumed-length
! ----------------------------------------
! `g77' disallows passing of an external procedure as an actual argument
! if the procedure's type is declared `CHARACTER*(*)'. For example:
CHARACTER*(*) CFUNC
EXTERNAL CFUNC
*************** It isn't clear whether the standard cons
*** 5209,5219 ****
File: g77.info, Node: No Passing Dummy Assumed-length, Next: No Pathological Implied-DO, Prev: No Passing External Assumed-length, Up: Standard Support
! No Passing Dummy Assumed-length
! -------------------------------
! `g77' disallows passing of a dummy procedure as an actual argument
! if the procedure's type is declared `CHARACTER*(*)'.
SUBROUTINE BAR(CFUNC)
CHARACTER*(*) CFUNC
--- 5211,5221 ----
File: g77.info, Node: No Passing Dummy Assumed-length, Next: No Pathological Implied-DO, Prev: No Passing External Assumed-length, Up: Standard Support
! 8.2.2 No Passing Dummy Assumed-length
! -------------------------------------
! `g77' disallows passing of a dummy procedure as an actual argument if
! the procedure's type is declared `CHARACTER*(*)'.
SUBROUTINE BAR(CFUNC)
CHARACTER*(*) CFUNC
*************** It isn't clear whether the standard cons
*** 5226,5238 ****
File: g77.info, Node: No Pathological Implied-DO, Next: No Useless Implied-DO, Prev: No Passing Dummy Assumed-length, Up: Standard Support
! No Pathological Implied-DO
! --------------------------
! The `DO' variable for an implied-`DO' construct in a `DATA'
! statement may not be used as the `DO' variable for an outer
! implied-`DO' construct. For example, this fragment is disallowed by
! `g77':
DATA ((A(I, I), I= 1, 10), I= 1, 10) /.../
--- 5228,5239 ----
File: g77.info, Node: No Pathological Implied-DO, Next: No Useless Implied-DO, Prev: No Passing Dummy Assumed-length, Up: Standard Support
! 8.2.3 No Pathological Implied-DO
! --------------------------------
! The `DO' variable for an implied-`DO' construct in a `DATA' statement
! may not be used as the `DO' variable for an outer implied-`DO'
! construct. For example, this fragment is disallowed by `g77':
DATA ((A(I, I), I= 1, 10), I= 1, 10) /.../
*************** tries to use this unsupported construct.
*** 5245,5257 ****
File: g77.info, Node: No Useless Implied-DO, Prev: No Pathological Implied-DO, Up: Standard Support
! No Useless Implied-DO
! ---------------------
! An array element initializer in an implied-`DO' construct in a
! `DATA' statement must contain at least one reference to the `DO'
! variables of each outer implied-`DO' construct. For example, this
! fragment is disallowed by `g77':
DATA (A, I= 1, 1) /1./
--- 5246,5258 ----
File: g77.info, Node: No Useless Implied-DO, Prev: No Pathological Implied-DO, Up: Standard Support
! 8.2.4 No Useless Implied-DO
! ---------------------------
! An array element initializer in an implied-`DO' construct in a `DATA'
! statement must contain at least one reference to the `DO' variables of
! each outer implied-`DO' construct. For example, this fragment is
! disallowed by `g77':
DATA (A, I= 1, 1) /1./
*************** tries to use this unsupported construct.
*** 5265,5274 ****
File: g77.info, Node: Conformance, Next: Notation Used, Prev: Standard Support, Up: Language
! Conformance
! ===========
! (The following information augments or overrides the information in
Section 1.4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 1 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 5266,5275 ----
File: g77.info, Node: Conformance, Next: Notation Used, Prev: Standard Support, Up: Language
! 8.3 Conformance
! ===============
! (The following information augments or overrides the information in
Section 1.4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 1 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** predictable way".
*** 5317,5326 ****
File: g77.info, Node: Notation Used, Next: Terms and Concepts, Prev: Conformance, Up: Language
! Notation Used in This Chapter
! =============================
! (The following information augments or overrides the information in
Section 1.5 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 1 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 5318,5327 ----
File: g77.info, Node: Notation Used, Next: Terms and Concepts, Prev: Conformance, Up: Language
! 8.4 Notation Used in This Chapter
! =================================
! (The following information augments or overrides the information in
Section 1.5 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 1 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** explain or illustrate the language.
*** 5333,5345 ****
For example:
! ``The `FROBNITZ' statement must precede all executable
statements in a program unit, and may not specify any dummy
arguments. It may specify local or common variables and arrays.
Its use should be limited to portions of the program designed to
be non-portable and system-specific, because it might cause the
containing program unit to behave quite differently on different
! systems.''
Insofar as the GNU Fortran language is specified, the requirements
and permissions denoted by the above sample statement are limited to
--- 5334,5346 ----
For example:
! "The `FROBNITZ' statement must precede all executable
statements in a program unit, and may not specify any dummy
arguments. It may specify local or common variables and arrays.
Its use should be limited to portions of the program designed to
be non-portable and system-specific, because it might cause the
containing program unit to behave quite differently on different
! systems."
Insofar as the GNU Fortran language is specified, the requirements
and permissions denoted by the above sample statement are limited to
*************** notation is used as follows:
*** 5411,5420 ****
File: g77.info, Node: Terms and Concepts, Next: Characters Lines Sequence, Prev: Notation Used, Up: Language
! Fortran Terms and Concepts
! ==========================
! (The following information augments or overrides the information in
Chapter 2 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 2 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 5412,5421 ----
File: g77.info, Node: Terms and Concepts, Next: Characters Lines Sequence, Prev: Notation Used, Up: Language
! 8.5 Fortran Terms and Concepts
! ==============================
! (The following information augments or overrides the information in
Chapter 2 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 2 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** the relevant aspects of GNU Fortran.)
*** 5428,5437 ****
File: g77.info, Node: Syntactic Items, Next: Statements Comments Lines, Up: Terms and Concepts
! Syntactic Items
! ---------------
! (Corresponds to Section 2.2 of ANSI X3.9-1978 FORTRAN 77.)
In GNU Fortran, a symbolic name is at least one character long, and
has no arbitrary upper limit on length. However, names of entities
--- 5429,5438 ----
File: g77.info, Node: Syntactic Items, Next: Statements Comments Lines, Up: Terms and Concepts
! 8.5.1 Syntactic Items
! ---------------------
! (Corresponds to Section 2.2 of ANSI X3.9-1978 FORTRAN 77.)
In GNU Fortran, a symbolic name is at least one character long, and
has no arbitrary upper limit on length. However, names of entities
*************** character (which must be a letter).
*** 5446,5455 ****
File: g77.info, Node: Statements Comments Lines, Next: Scope of Names and Labels, Prev: Syntactic Items, Up: Terms and Concepts
! Statements, Comments, and Lines
! -------------------------------
! (Corresponds to Section 2.3 of ANSI X3.9-1978 FORTRAN 77.)
Use of an exclamation point (`!') to begin a trailing comment (a
comment that extends to the end of the same source line) is permitted
--- 5447,5456 ----
File: g77.info, Node: Statements Comments Lines, Next: Scope of Names and Labels, Prev: Syntactic Items, Up: Terms and Concepts
! 8.5.2 Statements, Comments, and Lines
! -------------------------------------
! (Corresponds to Section 2.3 of ANSI X3.9-1978 FORTRAN 77.)
Use of an exclamation point (`!') to begin a trailing comment (a
comment that extends to the end of the same source line) is permitted
*************** the following conditions:
*** 5495,5504 ****
File: g77.info, Node: Scope of Names and Labels, Prev: Statements Comments Lines, Up: Terms and Concepts
! Scope of Symbolic Names and Statement Labels
! --------------------------------------------
! (Corresponds to Section 2.9 of ANSI X3.9-1978 FORTRAN 77.)
Included in the list of entities that have a scope of a program unit
are construct names (a Fortran 90 feature). *Note Construct Names::,
--- 5496,5505 ----
File: g77.info, Node: Scope of Names and Labels, Prev: Statements Comments Lines, Up: Terms and Concepts
! 8.5.3 Scope of Symbolic Names and Statement Labels
! --------------------------------------------------
! (Corresponds to Section 2.9 of ANSI X3.9-1978 FORTRAN 77.)
Included in the list of entities that have a scope of a program unit
are construct names (a Fortran 90 feature). *Note Construct Names::,
*************** for more information.
*** 5507,5516 ****
File: g77.info, Node: Characters Lines Sequence, Next: Data Types and Constants, Prev: Terms and Concepts, Up: Language
! Characters, Lines, and Execution Sequence
! =========================================
! (The following information augments or overrides the information in
Chapter 3 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 3 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 5508,5517 ----
File: g77.info, Node: Characters Lines Sequence, Next: Data Types and Constants, Prev: Terms and Concepts, Up: Language
! 8.6 Characters, Lines, and Execution Sequence
! =============================================
! (The following information augments or overrides the information in
Chapter 3 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 3 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** the relevant aspects of GNU Fortran.)
*** 5529,5538 ****
File: g77.info, Node: Character Set, Next: Lines, Up: Characters Lines Sequence
! GNU Fortran Character Set
! -------------------------
! (Corresponds to Section 3.1 of ANSI X3.9-1978 FORTRAN 77.)
Letters include uppercase letters (the twenty-six characters of the
English alphabet) and lowercase letters (their lowercase equivalent).
--- 5530,5539 ----
File: g77.info, Node: Character Set, Next: Lines, Up: Characters Lines Sequence
! 8.6.1 GNU Fortran Character Set
! -------------------------------
! (Corresponds to Section 3.1 of ANSI X3.9-1978 FORTRAN 77.)
Letters include uppercase letters (the twenty-six characters of the
English alphabet) and lowercase letters (their lowercase equivalent).
*************** FORTRAN 77 refers to it as "blank".
*** 5572,5581 ****
File: g77.info, Node: Lines, Next: Continuation Line, Prev: Character Set, Up: Characters Lines Sequence
! Lines
! -----
! (Corresponds to Section 3.2 of ANSI X3.9-1978 FORTRAN 77.)
The way a Fortran compiler views source files depends entirely on the
implementation choices made for the compiler, since those choices are
--- 5573,5582 ----
File: g77.info, Node: Lines, Next: Continuation Line, Prev: Character Set, Up: Characters Lines Sequence
! 8.6.2 Lines
! -----------
! (Corresponds to Section 3.2 of ANSI X3.9-1978 FORTRAN 77.)
The way a Fortran compiler views source files depends entirely on the
implementation choices made for the compiler, since those choices are
*************** containing 72 spaces.
*** 5632,5641 ****
File: g77.info, Node: Continuation Line, Next: Statements, Prev: Lines, Up: Characters Lines Sequence
! Continuation Line
! -----------------
! (Corresponds to Section 3.2.3 of ANSI X3.9-1978 FORTRAN 77.)
A continuation line is any line that both
--- 5633,5642 ----
File: g77.info, Node: Continuation Line, Next: Statements, Prev: Lines, Up: Characters Lines Sequence
! 8.6.3 Continuation Line
! -----------------------
! (Corresponds to Section 3.2.3 of ANSI X3.9-1978 FORTRAN 77.)
A continuation line is any line that both
*************** on, but no GNU Fortran system may impose
*** 5659,5668 ****
File: g77.info, Node: Statements, Next: Statement Labels, Prev: Continuation Line, Up: Characters Lines Sequence
! Statements
! ----------
! (Corresponds to Section 3.3 of ANSI X3.9-1978 FORTRAN 77.)
Statements may be written using an arbitrary number of continuation
lines.
--- 5660,5669 ----
File: g77.info, Node: Statements, Next: Statement Labels, Prev: Continuation Line, Up: Characters Lines Sequence
! 8.6.4 Statements
! ----------------
! (Corresponds to Section 3.3 of ANSI X3.9-1978 FORTRAN 77.)
Statements may be written using an arbitrary number of continuation
lines.
*************** not be written as:
*** 5687,5696 ****
File: g77.info, Node: Statement Labels, Next: Order, Prev: Statements, Up: Characters Lines Sequence
! Statement Labels
! ----------------
! (Corresponds to Section 3.4 of ANSI X3.9-1978 FORTRAN 77.)
A statement separated from its predecessor via a semicolon may be
labeled as follows:
--- 5688,5697 ----
File: g77.info, Node: Statement Labels, Next: Order, Prev: Statements, Up: Characters Lines Sequence
! 8.6.5 Statement Labels
! ----------------------
! (Corresponds to Section 3.4 of ANSI X3.9-1978 FORTRAN 77.)
A statement separated from its predecessor via a semicolon may be
labeled as follows:
*************** labeled as follows:
*** 5709,5718 ****
File: g77.info, Node: Order, Next: INCLUDE, Prev: Statement Labels, Up: Characters Lines Sequence
! Order of Statements and Lines
! -----------------------------
! (Corresponds to Section 3.5 of ANSI X3.9-1978 FORTRAN 77.)
Generally, `DATA' statements may precede executable statements.
However, specification statements pertaining to any entities
--- 5710,5719 ----
File: g77.info, Node: Order, Next: INCLUDE, Prev: Statement Labels, Up: Characters Lines Sequence
! 8.6.6 Order of Statements and Lines
! -----------------------------------
! (Corresponds to Section 3.5 of ANSI X3.9-1978 FORTRAN 77.)
Generally, `DATA' statements may precede executable statements.
However, specification statements pertaining to any entities
*************** For example, after `DATA I/1/', `INTEGER
*** 5733,5743 ****
File: g77.info, Node: INCLUDE, Next: Cpp-style directives, Prev: Order, Up: Characters Lines Sequence
! Including Source Text
! ---------------------
! Additional source text may be included in the processing of the
! source file via the `INCLUDE' directive:
INCLUDE FILENAME
--- 5734,5744 ----
File: g77.info, Node: INCLUDE, Next: Cpp-style directives, Prev: Order, Up: Characters Lines Sequence
! 8.6.7 Including Source Text
! ---------------------------
! Additional source text may be included in the processing of the source
! file via the `INCLUDE' directive:
INCLUDE FILENAME
*************** it were a statement. This permits long
*** 5802,5823 ****
File: g77.info, Node: Cpp-style directives, Prev: INCLUDE, Up: Characters Lines Sequence
! Cpp-style directives
! --------------------
! `cpp' output-style `#' directives (*note C Preprocessor Output:
! (cpp)C Preprocessor Output.) are recognized by the compiler even when
! the preprocessor isn't run on the input (as it is when compiling `.F'
files). (Note the distinction between these `cpp' `#' _output_
directives and `#line' _input_ directives.)
File: g77.info, Node: Data Types and Constants, Next: Expressions, Prev: Characters Lines Sequence, Up: Language
! Data Types and Constants
! ========================
! (The following information augments or overrides the information in
Chapter 4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 4 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 5803,5824 ----
File: g77.info, Node: Cpp-style directives, Prev: INCLUDE, Up: Characters Lines Sequence
! 8.6.8 Cpp-style directives
! --------------------------
! `cpp' output-style `#' directives (*note C Preprocessor Output: (cpp)C
! Preprocessor Output.) are recognized by the compiler even when the
! preprocessor isn't run on the input (as it is when compiling `.F'
files). (Note the distinction between these `cpp' `#' _output_
directives and `#line' _input_ directives.)
File: g77.info, Node: Data Types and Constants, Next: Expressions, Prev: Characters Lines Sequence, Up: Language
! 8.7 Data Types and Constants
! ============================
! (The following information augments or overrides the information in
Chapter 4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 4 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** provided below.
*** 5892,5901 ****
File: g77.info, Node: Types, Next: Constants, Up: Data Types and Constants
! Data Types
! ----------
! (Corresponds to Section 4.1 of ANSI X3.9-1978 FORTRAN 77.)
GNU Fortran supports these types:
--- 5893,5902 ----
File: g77.info, Node: Types, Next: Constants, Up: Data Types and Constants
! 8.7.1 Data Types
! ----------------
! (Corresponds to Section 4.1 of ANSI X3.9-1978 FORTRAN 77.)
GNU Fortran supports these types:
*************** kind of a generic type.
*** 5934,5944 ****
File: g77.info, Node: Double Notation, Next: Star Notation, Up: Types
! Double Notation
! ...............
! The GNU Fortran language supports two uses of the keyword `DOUBLE'
! to specify a specific kind of type:
* `DOUBLE PRECISION', equivalent to `REAL(KIND=2)'
--- 5935,5945 ----
File: g77.info, Node: Double Notation, Next: Star Notation, Up: Types
! 8.7.1.1 Double Notation
! .......................
! The GNU Fortran language supports two uses of the keyword `DOUBLE' to
! specify a specific kind of type:
* `DOUBLE PRECISION', equivalent to `REAL(KIND=2)'
*************** the benefit of those readers who are acc
*** 5963,5972 ****
File: g77.info, Node: Star Notation, Next: Kind Notation, Prev: Double Notation, Up: Types
! Star Notation
! .............
! The following notation specifies the storage size for a type:
GENERIC-TYPE*N
--- 5964,5973 ----
File: g77.info, Node: Star Notation, Next: Kind Notation, Prev: Double Notation, Up: Types
! 8.7.1.2 Star Notation
! .....................
! The following notation specifies the storage size for a type:
GENERIC-TYPE*N
*************** the benefit of those readers who are acc
*** 6029,6038 ****
File: g77.info, Node: Kind Notation, Prev: Star Notation, Up: Types
! Kind Notation
! .............
! The following notation specifies the kind-type selector of a type:
GENERIC-TYPE(KIND=N)
--- 6030,6039 ----
File: g77.info, Node: Kind Notation, Prev: Star Notation, Up: Types
! 8.7.1.3 Kind Notation
! .....................
! The following notation specifies the kind-type selector of a type:
GENERIC-TYPE(KIND=N)
*************** United States Department of Defense.
*** 6234,6243 ****
File: g77.info, Node: Constants, Next: Integer Type, Prev: Types, Up: Data Types and Constants
! Constants
! ---------
! (Corresponds to Section 4.2 of ANSI X3.9-1978 FORTRAN 77.)
A "typeless constant" has one of the following forms:
--- 6235,6244 ----
File: g77.info, Node: Constants, Next: Integer Type, Prev: Types, Up: Data Types and Constants
! 8.7.2 Constants
! ---------------
! (Corresponds to Section 4.2 of ANSI X3.9-1978 FORTRAN 77.)
A "typeless constant" has one of the following forms:
*************** type `REAL(KIND=2)', and `1D0' is always
*** 6273,6282 ****
File: g77.info, Node: Integer Type, Next: Character Type, Prev: Constants, Up: Data Types and Constants
! Integer Type
! ------------
! (Corresponds to Section 4.3 of ANSI X3.9-1978 FORTRAN 77.)
An integer constant also may have one of the following forms:
--- 6274,6283 ----
File: g77.info, Node: Integer Type, Next: Character Type, Prev: Constants, Up: Data Types and Constants
! 8.7.3 Integer Type
! ------------------
! (Corresponds to Section 4.3 of ANSI X3.9-1978 FORTRAN 77.)
An integer constant also may have one of the following forms:
*************** is 10, for `B' and `b' is 11, and so on.
*** 6293,6302 ****
File: g77.info, Node: Character Type, Prev: Integer Type, Up: Data Types and Constants
! Character Type
! --------------
! (Corresponds to Section 4.8 of ANSI X3.9-1978 FORTRAN 77.)
A character constant may be delimited by a pair of double quotes
(`"') instead of apostrophes. In this case, an apostrophe within the
--- 6294,6303 ----
File: g77.info, Node: Character Type, Prev: Integer Type, Up: Data Types and Constants
! 8.7.4 Character Type
! --------------------
! (Corresponds to Section 4.8 of ANSI X3.9-1978 FORTRAN 77.)
A character constant may be delimited by a pair of double quotes
(`"') instead of apostrophes. In this case, an apostrophe within the
*************** the value of `'hello'(3:5)' is the same
*** 6313,6322 ****
File: g77.info, Node: Expressions, Next: Specification Statements, Prev: Data Types and Constants, Up: Language
! Expressions
! ===========
! (The following information augments or overrides the information in
Chapter 6 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 6 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 6314,6323 ----
File: g77.info, Node: Expressions, Next: Specification Statements, Prev: Data Types and Constants, Up: Language
! 8.8 Expressions
! ===============
! (The following information augments or overrides the information in
Chapter 6 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 6 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** the relevant aspects of GNU Fortran.)
*** 6328,6335 ****
File: g77.info, Node: %LOC(), Up: Expressions
! The `%LOC()' Construct
! ----------------------
%LOC(ARG)
--- 6329,6336 ----
File: g77.info, Node: %LOC(), Up: Expressions
! 8.8.1 The `%LOC()' Construct
! ----------------------------
%LOC(ARG)
*************** this particular version of `g77' impleme
*** 6384,6393 ****
File: g77.info, Node: Specification Statements, Next: Control Statements, Prev: Expressions, Up: Language
! Specification Statements
! ========================
! (The following information augments or overrides the information in
Chapter 8 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 8 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
--- 6385,6394 ----
File: g77.info, Node: Specification Statements, Next: Control Statements, Prev: Expressions, Up: Language
! 8.9 Specification Statements
! ============================
! (The following information augments or overrides the information in
Chapter 8 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 8 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
*************** the relevant aspects of GNU Fortran.)
*** 6400,6410 ****
File: g77.info, Node: NAMELIST, Next: DOUBLE COMPLEX, Up: Specification Statements
! `NAMELIST' Statement
! --------------------
! The `NAMELIST' statement, and related I/O constructs, are supported
! by the GNU Fortran language in essentially the same way as they are by
`f2c'.
This follows Fortran 90 with the restriction that on `NAMELIST'
--- 6401,6411 ----
File: g77.info, Node: NAMELIST, Next: DOUBLE COMPLEX, Up: Specification Statements
! 8.9.1 `NAMELIST' Statement
! --------------------------
! The `NAMELIST' statement, and related I/O constructs, are supported by
! the GNU Fortran language in essentially the same way as they are by
`f2c'.
This follows Fortran 90 with the restriction that on `NAMELIST'
*************** in place of `&' and `/' in `NAMELIST' in
*** 6423,6441 ****
File: g77.info, Node: DOUBLE COMPLEX, Prev: NAMELIST, Up: Specification Statements
! `DOUBLE COMPLEX' Statement
! --------------------------
! `DOUBLE COMPLEX' is a type-statement (and type) that specifies the
! type `COMPLEX(KIND=2)' in GNU Fortran.
File: g77.info, Node: Control Statements, Next: Functions and Subroutines, Prev: Specification Statements, Up: Language
! Control Statements
! ==================
! (The following information augments or overrides the information in
Chapter 11 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 11 of that document otherwise serves as the basis
for the relevant aspects of GNU Fortran.)
--- 6424,6442 ----
File: g77.info, Node: DOUBLE COMPLEX, Prev: NAMELIST, Up: Specification Statements
! 8.9.2 `DOUBLE COMPLEX' Statement
! --------------------------------
! `DOUBLE COMPLEX' is a type-statement (and type) that specifies the type
! `COMPLEX(KIND=2)' in GNU Fortran.
File: g77.info, Node: Control Statements, Next: Functions and Subroutines, Prev: Specification Statements, Up: Language
! 8.10 Control Statements
! =======================
! (The following information augments or overrides the information in
Chapter 11 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 11 of that document otherwise serves as the basis
for the relevant aspects of GNU Fortran.)
*************** for the relevant aspects of GNU Fortran.
*** 6450,6459 ****
File: g77.info, Node: DO WHILE, Next: END DO, Up: Control Statements
! DO WHILE
! --------
! The `DO WHILE' statement, a feature of both the MIL-STD 1753 and
Fortran 90 standards, is provided by the GNU Fortran language. The
Fortran 90 "do forever" statement comprising just `DO' is also
supported.
--- 6451,6460 ----
File: g77.info, Node: DO WHILE, Next: END DO, Up: Control Statements
! 8.10.1 DO WHILE
! ---------------
! The `DO WHILE' statement, a feature of both the MIL-STD 1753 and
Fortran 90 standards, is provided by the GNU Fortran language. The
Fortran 90 "do forever" statement comprising just `DO' is also
supported.
*************** supported.
*** 6461,6470 ****
File: g77.info, Node: END DO, Next: Construct Names, Prev: DO WHILE, Up: Control Statements
! END DO
! ------
! The `END DO' statement is provided by the GNU Fortran language.
This statement is used in one of two ways:
--- 6462,6471 ----
File: g77.info, Node: END DO, Next: Construct Names, Prev: DO WHILE, Up: Control Statements
! 8.10.2 END DO
! -------------
! The `END DO' statement is provided by the GNU Fortran language.
This statement is used in one of two ways:
*************** END DO
*** 6488,6497 ****
File: g77.info, Node: Construct Names, Next: CYCLE and EXIT, Prev: END DO, Up: Control Statements
! Construct Names
! ---------------
! The GNU Fortran language supports construct names as defined by the
Fortran 90 standard. These names are local to the program unit and are
defined as follows:
--- 6489,6498 ----
File: g77.info, Node: Construct Names, Next: CYCLE and EXIT, Prev: END DO, Up: Control Statements
! 8.10.3 Construct Names
! ----------------------
! The GNU Fortran language supports construct names as defined by the
Fortran 90 standard. These names are local to the program unit and are
defined as follows:
*************** Here, BLOCK must be `IF', `DO', or `SELE
*** 6511,6522 ****
File: g77.info, Node: CYCLE and EXIT, Prev: Construct Names, Up: Control Statements
! The `CYCLE' and `EXIT' Statements
! ---------------------------------
! The `CYCLE' and `EXIT' statements specify that the remaining
! statements in the current iteration of a particular active (enclosing)
! `DO' loop are to be skipped.
`CYCLE' specifies that these statements are skipped, but the `END
DO' statement that marks the end of the `DO' loop be executed--that is,
--- 6512,6523 ----
File: g77.info, Node: CYCLE and EXIT, Prev: Construct Names, Up: Control Statements
! 8.10.4 The `CYCLE' and `EXIT' Statements
! ----------------------------------------
! The `CYCLE' and `EXIT' statements specify that the remaining statements
! in the current iteration of a particular active (enclosing) `DO' loop
! are to be skipped.
`CYCLE' specifies that these statements are skipped, but the `END
DO' statement that marks the end of the `DO' loop be executed--that is,
*************** outermost loop.
*** 6593,6602 ****
File: g77.info, Node: Functions and Subroutines, Next: Scope and Classes of Names, Prev: Control Statements, Up: Language
! Functions and Subroutines
! =========================
! (The following information augments or overrides the information in
Chapter 15 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 15 of that document otherwise serves as the basis
for the relevant aspects of GNU Fortran.)
--- 6594,6603 ----
File: g77.info, Node: Functions and Subroutines, Next: Scope and Classes of Names, Prev: Control Statements, Up: Language
! 8.11 Functions and Subroutines
! ==============================
! (The following information augments or overrides the information in
Chapter 15 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 15 of that document otherwise serves as the basis
for the relevant aspects of GNU Fortran.)
*************** for the relevant aspects of GNU Fortran.
*** 6616,6623 ****
File: g77.info, Node: %VAL(), Next: %REF(), Up: Functions and Subroutines
! The `%VAL()' Construct
! ----------------------
%VAL(ARG)
--- 6617,6624 ----
File: g77.info, Node: %VAL(), Next: %REF(), Up: Functions and Subroutines
! 8.11.1 The `%VAL()' Construct
! -----------------------------
%VAL(ARG)
*************** procedures.
*** 6650,6657 ****
File: g77.info, Node: %REF(), Next: %DESCR(), Prev: %VAL(), Up: Functions and Subroutines
! The `%REF()' Construct
! ----------------------
%REF(ARG)
--- 6651,6658 ----
File: g77.info, Node: %REF(), Next: %DESCR(), Prev: %VAL(), Up: Functions and Subroutines
! 8.11.2 The `%REF()' Construct
! -----------------------------
%REF(ARG)
*************** procedures.
*** 6692,6699 ****
File: g77.info, Node: %DESCR(), Next: Generics and Specifics, Prev: %REF(), Up: Functions and Subroutines
! The `%DESCR()' Construct
! ------------------------
%DESCR(ARG)
--- 6693,6700 ----
File: g77.info, Node: %DESCR(), Next: Generics and Specifics, Prev: %REF(), Up: Functions and Subroutines
! 8.11.3 The `%DESCR()' Construct
! -------------------------------
%DESCR(ARG)
*************** procedures.
*** 6738,6747 ****
File: g77.info, Node: Generics and Specifics, Next: REAL() and AIMAG() of Complex, Prev: %DESCR(), Up: Functions and Subroutines
! Generics and Specifics
! ----------------------
! The ANSI FORTRAN 77 language defines generic and specific intrinsics.
In short, the distinctions are:
* _Specific_ intrinsics have specific types for their arguments and
--- 6739,6748 ----
File: g77.info, Node: Generics and Specifics, Next: REAL() and AIMAG() of Complex, Prev: %DESCR(), Up: Functions and Subroutines
! 8.11.4 Generics and Specifics
! -----------------------------
! The ANSI FORTRAN 77 language defines generic and specific intrinsics.
In short, the distinctions are:
* _Specific_ intrinsics have specific types for their arguments and
*************** product, version, machine, results, and
*** 6931,6940 ****
File: g77.info, Node: REAL() and AIMAG() of Complex, Next: CMPLX() of DOUBLE PRECISION, Prev: Generics and Specifics, Up: Functions and Subroutines
! `REAL()' and `AIMAG()' of Complex
! ---------------------------------
! The GNU Fortran language disallows `REAL(EXPR)' and `AIMAG(EXPR)',
where EXPR is any `COMPLEX' type other than `COMPLEX(KIND=1)', except
when they are used in the following way:
--- 6932,6941 ----
File: g77.info, Node: REAL() and AIMAG() of Complex, Next: CMPLX() of DOUBLE PRECISION, Prev: Generics and Specifics, Up: Functions and Subroutines
! 8.11.5 `REAL()' and `AIMAG()' of Complex
! ----------------------------------------
! The GNU Fortran language disallows `REAL(EXPR)' and `AIMAG(EXPR)',
where EXPR is any `COMPLEX' type other than `COMPLEX(KIND=1)', except
when they are used in the following way:
*************** EXPR is of type `COMPLEX', as `REALPART(
*** 6977,6986 ****
File: g77.info, Node: CMPLX() of DOUBLE PRECISION, Next: MIL-STD 1753, Prev: REAL() and AIMAG() of Complex, Up: Functions and Subroutines
! `CMPLX()' of `DOUBLE PRECISION'
! -------------------------------
! In accordance with Fortran 90 and at least some (perhaps all) other
compilers, the GNU Fortran language defines `CMPLX()' as always
returning a result that is type `COMPLEX(KIND=1)'.
--- 6978,6987 ----
File: g77.info, Node: CMPLX() of DOUBLE PRECISION, Next: MIL-STD 1753, Prev: REAL() and AIMAG() of Complex, Up: Functions and Subroutines
! 8.11.6 `CMPLX()' of `DOUBLE PRECISION'
! --------------------------------------
! In accordance with Fortran 90 and at least some (perhaps all) other
compilers, the GNU Fortran language defines `CMPLX()' as always
returning a result that is type `COMPLEX(KIND=1)'.
*************** of the same (complex version of real) ty
*** 7020,7041 ****
File: g77.info, Node: MIL-STD 1753, Next: f77/f2c Intrinsics, Prev: CMPLX() of DOUBLE PRECISION, Up: Functions and Subroutines
! MIL-STD 1753 Support
! --------------------
! The GNU Fortran language includes the MIL-STD 1753 intrinsics
! `BTEST', `IAND', `IBCLR', `IBITS', `IBSET', `IEOR', `IOR', `ISHFT',
! `ISHFTC', `MVBITS', and `NOT'.
File: g77.info, Node: f77/f2c Intrinsics, Next: Table of Intrinsic Functions, Prev: MIL-STD 1753, Up: Functions and Subroutines
! `f77'/`f2c' Intrinsics
! ----------------------
! The bit-manipulation intrinsics supported by traditional `f77' and
! by `f2c' are available in the GNU Fortran language. These include
! `AND', `LSHIFT', `OR', `RSHIFT', and `XOR'.
Also supported are the intrinsics `CDABS', `CDCOS', `CDEXP',
`CDLOG', `CDSIN', `CDSQRT', `DCMPLX', `DCONJG', `DFLOAT', `DIMAG',
--- 7021,7042 ----
File: g77.info, Node: MIL-STD 1753, Next: f77/f2c Intrinsics, Prev: CMPLX() of DOUBLE PRECISION, Up: Functions and Subroutines
! 8.11.7 MIL-STD 1753 Support
! ---------------------------
! The GNU Fortran language includes the MIL-STD 1753 intrinsics `BTEST',
! `IAND', `IBCLR', `IBITS', `IBSET', `IEOR', `IOR', `ISHFT', `ISHFTC',
! `MVBITS', and `NOT'.
File: g77.info, Node: f77/f2c Intrinsics, Next: Table of Intrinsic Functions, Prev: MIL-STD 1753, Up: Functions and Subroutines
! 8.11.8 `f77'/`f2c' Intrinsics
! -----------------------------
! The bit-manipulation intrinsics supported by traditional `f77' and by
! `f2c' are available in the GNU Fortran language. These include `AND',
! `LSHIFT', `OR', `RSHIFT', and `XOR'.
Also supported are the intrinsics `CDABS', `CDCOS', `CDEXP',
`CDLOG', `CDSIN', `CDSQRT', `DCMPLX', `DCONJG', `DFLOAT', `DIMAG',
*************** by `f2c' are available in the GNU Fortra
*** 7045,7054 ****
File: g77.info, Node: Table of Intrinsic Functions, Prev: f77/f2c Intrinsics, Up: Functions and Subroutines
! Table of Intrinsic Functions
! ----------------------------
! (Corresponds to Section 15.10 of ANSI X3.9-1978 FORTRAN 77.)
The GNU Fortran language adds various functions, subroutines, types,
and arguments to the set of intrinsic functions in ANSI FORTRAN 77.
--- 7046,7055 ----
File: g77.info, Node: Table of Intrinsic Functions, Prev: f77/f2c Intrinsics, Up: Functions and Subroutines
! 8.11.9 Table of Intrinsic Functions
! -----------------------------------
! (Corresponds to Section 15.10 of ANSI X3.9-1978 FORTRAN 77.)
The GNU Fortran language adds various functions, subroutines, types,
and arguments to the set of intrinsic functions in ANSI FORTRAN 77.
*************** worse shape!)
*** 7535,7542 ****
File: g77.info, Node: Abort Intrinsic, Next: Abs Intrinsic, Up: Table of Intrinsic Functions
! Abort Intrinsic
! ...............
CALL Abort()
--- 7536,7544 ----
File: g77.info, Node: Abort Intrinsic, Next: Abs Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.1 Abort Intrinsic
! ........................
!
CALL Abort()
*************** Description:
*** 7549,7556 ****
File: g77.info, Node: Abs Intrinsic, Next: Access Intrinsic, Prev: Abort Intrinsic, Up: Table of Intrinsic Functions
! Abs Intrinsic
! .............
Abs(A)
--- 7551,7559 ----
File: g77.info, Node: Abs Intrinsic, Next: Access Intrinsic, Prev: Abort Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.2 Abs Intrinsic
! ......................
!
Abs(A)
*************** or negative form of the absolute value o
*** 7580,7587 ****
File: g77.info, Node: Access Intrinsic, Next: AChar Intrinsic, Prev: Abs Intrinsic, Up: Table of Intrinsic Functions
! Access Intrinsic
! ................
Access(NAME, MODE)
--- 7583,7591 ----
File: g77.info, Node: Access Intrinsic, Next: AChar Intrinsic, Prev: Abs Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.3 Access Intrinsic
! .........................
!
Access(NAME, MODE)
*************** concatenation of any of the following ch
*** 7617,7624 ****
File: g77.info, Node: AChar Intrinsic, Next: ACos Intrinsic, Prev: Access Intrinsic, Up: Table of Intrinsic Functions
! AChar Intrinsic
! ...............
AChar(I)
--- 7621,7629 ----
File: g77.info, Node: AChar Intrinsic, Next: ACos Intrinsic, Prev: Access Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.4 AChar Intrinsic
! ........................
!
AChar(I)
*************** system's native character set.
*** 7640,7647 ****
File: g77.info, Node: ACos Intrinsic, Next: AdjustL Intrinsic, Prev: AChar Intrinsic, Up: Table of Intrinsic Functions
! ACos Intrinsic
! ..............
ACos(X)
--- 7645,7653 ----
File: g77.info, Node: ACos Intrinsic, Next: AdjustL Intrinsic, Prev: AChar Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.5 ACos Intrinsic
! .......................
!
ACos(X)
*************** Description:
*** 7661,7688 ****
File: g77.info, Node: AdjustL Intrinsic, Next: AdjustR Intrinsic, Prev: ACos Intrinsic, Up: Table of Intrinsic Functions
! AdjustL Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL AdjustL' to use this name for
! an external procedure.
File: g77.info, Node: AdjustR Intrinsic, Next: AImag Intrinsic, Prev: AdjustL Intrinsic, Up: Table of Intrinsic Functions
! AdjustR Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL AdjustR' to use this name for
! an external procedure.
File: g77.info, Node: AImag Intrinsic, Next: AInt Intrinsic, Prev: AdjustR Intrinsic, Up: Table of Intrinsic Functions
! AImag Intrinsic
! ...............
AImag(Z)
--- 7667,7695 ----
File: g77.info, Node: AdjustL Intrinsic, Next: AdjustR Intrinsic, Prev: ACos Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.6 AdjustL Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL AdjustL' to use this name for an
! external procedure.
File: g77.info, Node: AdjustR Intrinsic, Next: AImag Intrinsic, Prev: AdjustL Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.7 AdjustR Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL AdjustR' to use this name for an
! external procedure.
File: g77.info, Node: AImag Intrinsic, Next: AInt Intrinsic, Prev: AdjustR Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.8 AImag Intrinsic
! ........................
!
AImag(Z)
*************** This expression converts the imaginary p
*** 7710,7717 ****
File: g77.info, Node: AInt Intrinsic, Next: Alarm Intrinsic, Prev: AImag Intrinsic, Up: Table of Intrinsic Functions
! AInt Intrinsic
! ..............
AInt(A)
--- 7717,7725 ----
File: g77.info, Node: AInt Intrinsic, Next: Alarm Intrinsic, Prev: AImag Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.9 AInt Intrinsic
! .......................
!
AInt(A)
*************** to `INTEGER'.
*** 7735,7742 ****
File: g77.info, Node: Alarm Intrinsic, Next: All Intrinsic, Prev: AInt Intrinsic, Up: Table of Intrinsic Functions
! Alarm Intrinsic
! ...............
CALL Alarm(SECONDS, HANDLER, STATUS)
--- 7743,7751 ----
File: g77.info, Node: Alarm Intrinsic, Next: All Intrinsic, Prev: AInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.10 Alarm Intrinsic
! .........................
!
CALL Alarm(SECONDS, HANDLER, STATUS)
*************** due to be delivered, or zero if there wa
*** 7761,7788 ****
File: g77.info, Node: All Intrinsic, Next: Allocated Intrinsic, Prev: Alarm Intrinsic, Up: Table of Intrinsic Functions
! All Intrinsic
! .............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL All' to use this name for an
! external procedure.
File: g77.info, Node: Allocated Intrinsic, Next: ALog Intrinsic, Prev: All Intrinsic, Up: Table of Intrinsic Functions
! Allocated Intrinsic
! ...................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Allocated' to use this name
! for an external procedure.
File: g77.info, Node: ALog Intrinsic, Next: ALog10 Intrinsic, Prev: Allocated Intrinsic, Up: Table of Intrinsic Functions
! ALog Intrinsic
! ..............
ALog(X)
--- 7770,7798 ----
File: g77.info, Node: All Intrinsic, Next: Allocated Intrinsic, Prev: Alarm Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.11 All Intrinsic
! .......................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL All' to use this name for an external
! procedure.
File: g77.info, Node: Allocated Intrinsic, Next: ALog Intrinsic, Prev: All Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.12 Allocated Intrinsic
! .............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Allocated' to use this name for an
! external procedure.
File: g77.info, Node: ALog Intrinsic, Next: ALog10 Intrinsic, Prev: Allocated Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.13 ALog Intrinsic
! ........................
!
ALog(X)
*************** Log Intrinsic::.
*** 7800,7807 ****
File: g77.info, Node: ALog10 Intrinsic, Next: AMax0 Intrinsic, Prev: ALog Intrinsic, Up: Table of Intrinsic Functions
! ALog10 Intrinsic
! ................
ALog10(X)
--- 7810,7818 ----
File: g77.info, Node: ALog10 Intrinsic, Next: AMax0 Intrinsic, Prev: ALog Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.14 ALog10 Intrinsic
! ..........................
!
ALog10(X)
*************** Log10 Intrinsic::.
*** 7819,7826 ****
File: g77.info, Node: AMax0 Intrinsic, Next: AMax1 Intrinsic, Prev: ALog10 Intrinsic, Up: Table of Intrinsic Functions
! AMax0 Intrinsic
! ...............
AMax0(A-1, A-2, ..., A-n)
--- 7830,7838 ----
File: g77.info, Node: AMax0 Intrinsic, Next: AMax1 Intrinsic, Prev: ALog10 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.15 AMax0 Intrinsic
! .........................
!
AMax0(A-1, A-2, ..., A-n)
*************** different return type. *Note Max Intrin
*** 7839,7846 ****
File: g77.info, Node: AMax1 Intrinsic, Next: AMin0 Intrinsic, Prev: AMax0 Intrinsic, Up: Table of Intrinsic Functions
! AMax1 Intrinsic
! ...............
AMax1(A-1, A-2, ..., A-n)
--- 7851,7859 ----
File: g77.info, Node: AMax1 Intrinsic, Next: AMin0 Intrinsic, Prev: AMax0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.16 AMax1 Intrinsic
! .........................
!
AMax1(A-1, A-2, ..., A-n)
*************** Max Intrinsic::.
*** 7859,7866 ****
File: g77.info, Node: AMin0 Intrinsic, Next: AMin1 Intrinsic, Prev: AMax1 Intrinsic, Up: Table of Intrinsic Functions
! AMin0 Intrinsic
! ...............
AMin0(A-1, A-2, ..., A-n)
--- 7872,7880 ----
File: g77.info, Node: AMin0 Intrinsic, Next: AMin1 Intrinsic, Prev: AMax1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.17 AMin0 Intrinsic
! .........................
!
AMin0(A-1, A-2, ..., A-n)
*************** different return type. *Note Min Intrin
*** 7879,7886 ****
File: g77.info, Node: AMin1 Intrinsic, Next: AMod Intrinsic, Prev: AMin0 Intrinsic, Up: Table of Intrinsic Functions
! AMin1 Intrinsic
! ...............
AMin1(A-1, A-2, ..., A-n)
--- 7893,7901 ----
File: g77.info, Node: AMin1 Intrinsic, Next: AMod Intrinsic, Prev: AMin0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.18 AMin1 Intrinsic
! .........................
!
AMin1(A-1, A-2, ..., A-n)
*************** Min Intrinsic::.
*** 7899,7906 ****
File: g77.info, Node: AMod Intrinsic, Next: And Intrinsic, Prev: AMin1 Intrinsic, Up: Table of Intrinsic Functions
! AMod Intrinsic
! ..............
AMod(A, P)
--- 7914,7922 ----
File: g77.info, Node: AMod Intrinsic, Next: And Intrinsic, Prev: AMin1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.19 AMod Intrinsic
! ........................
!
AMod(A, P)
*************** Mod Intrinsic::.
*** 7920,7927 ****
File: g77.info, Node: And Intrinsic, Next: ANInt Intrinsic, Prev: AMod Intrinsic, Up: Table of Intrinsic Functions
! And Intrinsic
! .............
And(I, J)
--- 7936,7944 ----
File: g77.info, Node: And Intrinsic, Next: ANInt Intrinsic, Prev: AMod Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.20 And Intrinsic
! .......................
!
And(I, J)
*************** I and J.
*** 7942,7949 ****
File: g77.info, Node: ANInt Intrinsic, Next: Any Intrinsic, Prev: And Intrinsic, Up: Table of Intrinsic Functions
! ANInt Intrinsic
! ...............
ANInt(A)
--- 7959,7967 ----
File: g77.info, Node: ANInt Intrinsic, Next: Any Intrinsic, Prev: And Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.21 ANInt Intrinsic
! .........................
!
ANInt(A)
*************** number that is larger in magnitude. (Al
*** 7970,7987 ****
File: g77.info, Node: Any Intrinsic, Next: ASin Intrinsic, Prev: ANInt Intrinsic, Up: Table of Intrinsic Functions
! Any Intrinsic
! .............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Any' to use this name for an
! external procedure.
File: g77.info, Node: ASin Intrinsic, Next: Associated Intrinsic, Prev: Any Intrinsic, Up: Table of Intrinsic Functions
! ASin Intrinsic
! ..............
ASin(X)
--- 7988,8006 ----
File: g77.info, Node: Any Intrinsic, Next: ASin Intrinsic, Prev: ANInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.22 Any Intrinsic
! .......................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Any' to use this name for an external
! procedure.
File: g77.info, Node: ASin Intrinsic, Next: Associated Intrinsic, Prev: Any Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.23 ASin Intrinsic
! ........................
!
ASin(X)
*************** Description:
*** 8001,8018 ****
File: g77.info, Node: Associated Intrinsic, Next: ATan Intrinsic, Prev: ASin Intrinsic, Up: Table of Intrinsic Functions
! Associated Intrinsic
! ....................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Associated' to use this name
! for an external procedure.
File: g77.info, Node: ATan Intrinsic, Next: ATan2 Intrinsic, Prev: Associated Intrinsic, Up: Table of Intrinsic Functions
! ATan Intrinsic
! ..............
ATan(X)
--- 8020,8038 ----
File: g77.info, Node: Associated Intrinsic, Next: ATan Intrinsic, Prev: ASin Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.24 Associated Intrinsic
! ..............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Associated' to use this name for an
! external procedure.
File: g77.info, Node: ATan Intrinsic, Next: ATan2 Intrinsic, Prev: Associated Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.25 ATan Intrinsic
! ........................
!
ATan(X)
*************** Description:
*** 8032,8039 ****
File: g77.info, Node: ATan2 Intrinsic, Next: BesJ0 Intrinsic, Prev: ATan Intrinsic, Up: Table of Intrinsic Functions
! ATan2 Intrinsic
! ...............
ATan2(Y, X)
--- 8052,8060 ----
File: g77.info, Node: ATan2 Intrinsic, Next: BesJ0 Intrinsic, Prev: ATan Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.26 ATan2 Intrinsic
! .........................
!
ATan2(Y, X)
*************** X) in radians.
*** 8056,8063 ****
File: g77.info, Node: BesJ0 Intrinsic, Next: BesJ1 Intrinsic, Prev: ATan2 Intrinsic, Up: Table of Intrinsic Functions
! BesJ0 Intrinsic
! ...............
BesJ0(X)
--- 8077,8085 ----
File: g77.info, Node: BesJ0 Intrinsic, Next: BesJ1 Intrinsic, Prev: ATan2 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.27 BesJ0 Intrinsic
! .........................
!
BesJ0(X)
*************** See `bessel(3m)', on whose implementatio
*** 8076,8083 ****
File: g77.info, Node: BesJ1 Intrinsic, Next: BesJN Intrinsic, Prev: BesJ0 Intrinsic, Up: Table of Intrinsic Functions
! BesJ1 Intrinsic
! ...............
BesJ1(X)
--- 8098,8106 ----
File: g77.info, Node: BesJ1 Intrinsic, Next: BesJN Intrinsic, Prev: BesJ0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.28 BesJ1 Intrinsic
! .........................
!
BesJ1(X)
*************** See `bessel(3m)', on whose implementatio
*** 8096,8103 ****
File: g77.info, Node: BesJN Intrinsic, Next: BesY0 Intrinsic, Prev: BesJ1 Intrinsic, Up: Table of Intrinsic Functions
! BesJN Intrinsic
! ...............
BesJN(N, X)
--- 8119,8127 ----
File: g77.info, Node: BesJN Intrinsic, Next: BesY0 Intrinsic, Prev: BesJ1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.29 BesJN Intrinsic
! .........................
!
BesJN(N, X)
*************** See `bessel(3m)', on whose implementatio
*** 8118,8125 ****
File: g77.info, Node: BesY0 Intrinsic, Next: BesY1 Intrinsic, Prev: BesJN Intrinsic, Up: Table of Intrinsic Functions
! BesY0 Intrinsic
! ...............
BesY0(X)
--- 8142,8150 ----
File: g77.info, Node: BesY0 Intrinsic, Next: BesY1 Intrinsic, Prev: BesJN Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.30 BesY0 Intrinsic
! .........................
!
BesY0(X)
*************** See `bessel(3m)', on whose implementatio
*** 8138,8145 ****
File: g77.info, Node: BesY1 Intrinsic, Next: BesYN Intrinsic, Prev: BesY0 Intrinsic, Up: Table of Intrinsic Functions
! BesY1 Intrinsic
! ...............
BesY1(X)
--- 8163,8171 ----
File: g77.info, Node: BesY1 Intrinsic, Next: BesYN Intrinsic, Prev: BesY0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.31 BesY1 Intrinsic
! .........................
!
BesY1(X)
*************** See `bessel(3m)', on whose implementatio
*** 8158,8165 ****
File: g77.info, Node: BesYN Intrinsic, Next: Bit_Size Intrinsic, Prev: BesY1 Intrinsic, Up: Table of Intrinsic Functions
! BesYN Intrinsic
! ...............
BesYN(N, X)
--- 8184,8192 ----
File: g77.info, Node: BesYN Intrinsic, Next: Bit_Size Intrinsic, Prev: BesY1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.32 BesYN Intrinsic
! .........................
!
BesYN(N, X)
*************** See `bessel(3m)', on whose implementatio
*** 8180,8187 ****
File: g77.info, Node: Bit_Size Intrinsic, Next: BTest Intrinsic, Prev: BesYN Intrinsic, Up: Table of Intrinsic Functions
! Bit_Size Intrinsic
! ..................
Bit_Size(I)
--- 8207,8215 ----
File: g77.info, Node: Bit_Size Intrinsic, Next: BTest Intrinsic, Prev: BesYN Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.33 Bit_Size Intrinsic
! ............................
!
Bit_Size(I)
*************** variable or array.
*** 8207,8214 ****
File: g77.info, Node: BTest Intrinsic, Next: CAbs Intrinsic, Prev: Bit_Size Intrinsic, Up: Table of Intrinsic Functions
! BTest Intrinsic
! ...............
BTest(I, POS)
--- 8235,8243 ----
File: g77.info, Node: BTest Intrinsic, Next: CAbs Intrinsic, Prev: Bit_Size Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.34 BTest Intrinsic
! .........................
!
BTest(I, POS)
*************** a type. The leftmost bit of I is `BIT_S
*** 8234,8241 ****
File: g77.info, Node: CAbs Intrinsic, Next: CCos Intrinsic, Prev: BTest Intrinsic, Up: Table of Intrinsic Functions
! CAbs Intrinsic
! ..............
CAbs(A)
--- 8263,8271 ----
File: g77.info, Node: CAbs Intrinsic, Next: CCos Intrinsic, Prev: BTest Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.35 CAbs Intrinsic
! ........................
!
CAbs(A)
*************** Abs Intrinsic::.
*** 8253,8260 ****
File: g77.info, Node: CCos Intrinsic, Next: Ceiling Intrinsic, Prev: CAbs Intrinsic, Up: Table of Intrinsic Functions
! CCos Intrinsic
! ..............
CCos(X)
--- 8283,8291 ----
File: g77.info, Node: CCos Intrinsic, Next: Ceiling Intrinsic, Prev: CAbs Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.36 CCos Intrinsic
! ........................
!
CCos(X)
*************** Cos Intrinsic::.
*** 8272,8289 ****
File: g77.info, Node: Ceiling Intrinsic, Next: CExp Intrinsic, Prev: CCos Intrinsic, Up: Table of Intrinsic Functions
! Ceiling Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Ceiling' to use this name for
! an external procedure.
File: g77.info, Node: CExp Intrinsic, Next: Char Intrinsic, Prev: Ceiling Intrinsic, Up: Table of Intrinsic Functions
! CExp Intrinsic
! ..............
CExp(X)
--- 8303,8321 ----
File: g77.info, Node: Ceiling Intrinsic, Next: CExp Intrinsic, Prev: CCos Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.37 Ceiling Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Ceiling' to use this name for an
! external procedure.
File: g77.info, Node: CExp Intrinsic, Next: Char Intrinsic, Prev: Ceiling Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.38 CExp Intrinsic
! ........................
!
CExp(X)
*************** Exp Intrinsic::.
*** 8301,8308 ****
File: g77.info, Node: Char Intrinsic, Next: ChDir Intrinsic (subroutine), Prev: CExp Intrinsic, Up: Table of Intrinsic Functions
! Char Intrinsic
! ..............
Char(I)
--- 8333,8341 ----
File: g77.info, Node: Char Intrinsic, Next: ChDir Intrinsic (subroutine), Prev: CExp Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.39 Char Intrinsic
! ........................
!
Char(I)
*************** character set.
*** 8348,8355 ****
File: g77.info, Node: ChDir Intrinsic (subroutine), Next: ChMod Intrinsic (subroutine), Prev: Char Intrinsic, Up: Table of Intrinsic Functions
! ChDir Intrinsic (subroutine)
! ............................
CALL ChDir(DIR, STATUS)
--- 8381,8389 ----
File: g77.info, Node: ChDir Intrinsic (subroutine), Next: ChMod Intrinsic (subroutine), Prev: Char Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.40 ChDir Intrinsic (subroutine)
! ......................................
!
CALL ChDir(DIR, STATUS)
*************** Intrinsic (function)::.
*** 8379,8386 ****
File: g77.info, Node: ChMod Intrinsic (subroutine), Next: CLog Intrinsic, Prev: ChDir Intrinsic (subroutine), Up: Table of Intrinsic Functions
! ChMod Intrinsic (subroutine)
! ............................
CALL ChMod(NAME, MODE, STATUS)
--- 8413,8421 ----
File: g77.info, Node: ChMod Intrinsic (subroutine), Next: CLog Intrinsic, Prev: ChDir Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.41 ChMod Intrinsic (subroutine)
! ......................................
!
CALL ChMod(NAME, MODE, STATUS)
*************** Intrinsic (function)::.
*** 8417,8424 ****
File: g77.info, Node: CLog Intrinsic, Next: Cmplx Intrinsic, Prev: ChMod Intrinsic (subroutine), Up: Table of Intrinsic Functions
! CLog Intrinsic
! ..............
CLog(X)
--- 8452,8460 ----
File: g77.info, Node: CLog Intrinsic, Next: Cmplx Intrinsic, Prev: ChMod Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.42 CLog Intrinsic
! ........................
!
CLog(X)
*************** Log Intrinsic::.
*** 8436,8443 ****
File: g77.info, Node: Cmplx Intrinsic, Next: Complex Intrinsic, Prev: CLog Intrinsic, Up: Table of Intrinsic Functions
! Cmplx Intrinsic
! ...............
Cmplx(X, Y)
--- 8472,8480 ----
File: g77.info, Node: Cmplx Intrinsic, Next: Complex Intrinsic, Prev: CLog Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.43 Cmplx Intrinsic
! .........................
!
Cmplx(X, Y)
*************** Y, respectively. If Y is omitted, `0.'
*** 8464,8471 ****
File: g77.info, Node: Complex Intrinsic, Next: Conjg Intrinsic, Prev: Cmplx Intrinsic, Up: Table of Intrinsic Functions
! Complex Intrinsic
! .................
Complex(REAL, IMAG)
--- 8501,8509 ----
File: g77.info, Node: Complex Intrinsic, Next: Conjg Intrinsic, Prev: Cmplx Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.44 Complex Intrinsic
! ...........................
!
Complex(REAL, IMAG)
*************** a `COMPLEX(KIND=1)' result even if `D1'
*** 8504,8511 ****
File: g77.info, Node: Conjg Intrinsic, Next: Cos Intrinsic, Prev: Complex Intrinsic, Up: Table of Intrinsic Functions
! Conjg Intrinsic
! ...............
Conjg(Z)
--- 8542,8550 ----
File: g77.info, Node: Conjg Intrinsic, Next: Cos Intrinsic, Prev: Complex Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.45 Conjg Intrinsic
! .........................
!
Conjg(Z)
*************** Description:
*** 8525,8532 ****
File: g77.info, Node: Cos Intrinsic, Next: CosH Intrinsic, Prev: Conjg Intrinsic, Up: Table of Intrinsic Functions
! Cos Intrinsic
! .............
Cos(X)
--- 8564,8572 ----
File: g77.info, Node: Cos Intrinsic, Next: CosH Intrinsic, Prev: Conjg Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.46 Cos Intrinsic
! .......................
!
Cos(X)
*************** Description:
*** 8546,8553 ****
File: g77.info, Node: CosH Intrinsic, Next: Count Intrinsic, Prev: Cos Intrinsic, Up: Table of Intrinsic Functions
! CosH Intrinsic
! ..............
CosH(X)
--- 8586,8594 ----
File: g77.info, Node: CosH Intrinsic, Next: Count Intrinsic, Prev: Cos Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.47 CosH Intrinsic
! ........................
!
CosH(X)
*************** Description:
*** 8565,8582 ****
File: g77.info, Node: Count Intrinsic, Next: CPU_Time Intrinsic, Prev: CosH Intrinsic, Up: Table of Intrinsic Functions
! Count Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Count' to use this name for an
! external procedure.
File: g77.info, Node: CPU_Time Intrinsic, Next: CShift Intrinsic, Prev: Count Intrinsic, Up: Table of Intrinsic Functions
! CPU_Time Intrinsic
! ..................
CALL CPU_Time(SECONDS)
--- 8606,8624 ----
File: g77.info, Node: Count Intrinsic, Next: CPU_Time Intrinsic, Prev: CosH Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.48 Count Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Count' to use this name for an external
! procedure.
File: g77.info, Node: CPU_Time Intrinsic, Next: CShift Intrinsic, Prev: Count Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.49 CPU_Time Intrinsic
! ............................
!
CALL CPU_Time(SECONDS)
*************** previous values, during a single run of
*** 8599,8616 ****
File: g77.info, Node: CShift Intrinsic, Next: CSin Intrinsic, Prev: CPU_Time Intrinsic, Up: Table of Intrinsic Functions
! CShift Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL CShift' to use this name for an
external procedure.
File: g77.info, Node: CSin Intrinsic, Next: CSqRt Intrinsic, Prev: CShift Intrinsic, Up: Table of Intrinsic Functions
! CSin Intrinsic
! ..............
CSin(X)
--- 8641,8659 ----
File: g77.info, Node: CShift Intrinsic, Next: CSin Intrinsic, Prev: CPU_Time Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.50 CShift Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL CShift' to use this name for an
external procedure.
File: g77.info, Node: CSin Intrinsic, Next: CSqRt Intrinsic, Prev: CShift Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.51 CSin Intrinsic
! ........................
!
CSin(X)
*************** Sin Intrinsic::.
*** 8628,8635 ****
File: g77.info, Node: CSqRt Intrinsic, Next: CTime Intrinsic (subroutine), Prev: CSin Intrinsic, Up: Table of Intrinsic Functions
! CSqRt Intrinsic
! ...............
CSqRt(X)
--- 8671,8679 ----
File: g77.info, Node: CSqRt Intrinsic, Next: CTime Intrinsic (subroutine), Prev: CSin Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.52 CSqRt Intrinsic
! .........................
!
CSqRt(X)
*************** SqRt Intrinsic::.
*** 8647,8654 ****
File: g77.info, Node: CTime Intrinsic (subroutine), Next: CTime Intrinsic (function), Prev: CSqRt Intrinsic, Up: Table of Intrinsic Functions
! CTime Intrinsic (subroutine)
! ............................
CALL CTime(STIME, RESULT)
--- 8691,8699 ----
File: g77.info, Node: CTime Intrinsic (subroutine), Next: CTime Intrinsic (function), Prev: CSqRt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.53 CTime Intrinsic (subroutine)
! ......................................
!
CALL CTime(STIME, RESULT)
*************** Intrinsic (function)::.
*** 8675,8682 ****
File: g77.info, Node: CTime Intrinsic (function), Next: DAbs Intrinsic, Prev: CTime Intrinsic (subroutine), Up: Table of Intrinsic Functions
! CTime Intrinsic (function)
! ..........................
CTime(STIME)
--- 8720,8728 ----
File: g77.info, Node: CTime Intrinsic (function), Next: DAbs Intrinsic, Prev: CTime Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.54 CTime Intrinsic (function)
! ....................................
!
CTime(STIME)
*************** Intrinsic (subroutine)::.
*** 8700,8707 ****
File: g77.info, Node: DAbs Intrinsic, Next: DACos Intrinsic, Prev: CTime Intrinsic (function), Up: Table of Intrinsic Functions
! DAbs Intrinsic
! ..............
DAbs(A)
--- 8746,8754 ----
File: g77.info, Node: DAbs Intrinsic, Next: DACos Intrinsic, Prev: CTime Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.55 DAbs Intrinsic
! ........................
!
DAbs(A)
*************** Abs Intrinsic::.
*** 8719,8726 ****
File: g77.info, Node: DACos Intrinsic, Next: DASin Intrinsic, Prev: DAbs Intrinsic, Up: Table of Intrinsic Functions
! DACos Intrinsic
! ...............
DACos(X)
--- 8766,8774 ----
File: g77.info, Node: DACos Intrinsic, Next: DASin Intrinsic, Prev: DAbs Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.56 DACos Intrinsic
! .........................
!
DACos(X)
*************** ACos Intrinsic::.
*** 8738,8745 ****
File: g77.info, Node: DASin Intrinsic, Next: DATan Intrinsic, Prev: DACos Intrinsic, Up: Table of Intrinsic Functions
! DASin Intrinsic
! ...............
DASin(X)
--- 8786,8794 ----
File: g77.info, Node: DASin Intrinsic, Next: DATan Intrinsic, Prev: DACos Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.57 DASin Intrinsic
! .........................
!
DASin(X)
*************** ASin Intrinsic::.
*** 8757,8764 ****
File: g77.info, Node: DATan Intrinsic, Next: DATan2 Intrinsic, Prev: DASin Intrinsic, Up: Table of Intrinsic Functions
! DATan Intrinsic
! ...............
DATan(X)
--- 8806,8814 ----
File: g77.info, Node: DATan Intrinsic, Next: DATan2 Intrinsic, Prev: DASin Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.58 DATan Intrinsic
! .........................
!
DATan(X)
*************** ATan Intrinsic::.
*** 8776,8783 ****
File: g77.info, Node: DATan2 Intrinsic, Next: Date_and_Time Intrinsic, Prev: DATan Intrinsic, Up: Table of Intrinsic Functions
! DATan2 Intrinsic
! ................
DATan2(Y, X)
--- 8826,8834 ----
File: g77.info, Node: DATan2 Intrinsic, Next: Date_and_Time Intrinsic, Prev: DATan Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.59 DATan2 Intrinsic
! ..........................
!
DATan2(Y, X)
*************** Description:
*** 8797,8804 ****
File: g77.info, Node: Date_and_Time Intrinsic, Next: DbesJ0 Intrinsic, Prev: DATan2 Intrinsic, Up: Table of Intrinsic Functions
! Date_and_Time Intrinsic
! .......................
CALL Date_and_Time(DATE, TIME, ZONE, VALUES)
--- 8848,8856 ----
File: g77.info, Node: Date_and_Time Intrinsic, Next: DbesJ0 Intrinsic, Prev: DATan2 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.60 Date_and_Time Intrinsic
! .................................
!
CALL Date_and_Time(DATE, TIME, ZONE, VALUES)
*************** value is returned as zero.
*** 8843,8850 ****
File: g77.info, Node: DbesJ0 Intrinsic, Next: DbesJ1 Intrinsic, Prev: Date_and_Time Intrinsic, Up: Table of Intrinsic Functions
! DbesJ0 Intrinsic
! ................
DbesJ0(X)
--- 8895,8903 ----
File: g77.info, Node: DbesJ0 Intrinsic, Next: DbesJ1 Intrinsic, Prev: Date_and_Time Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.61 DbesJ0 Intrinsic
! ..........................
!
DbesJ0(X)
*************** BesJ0 Intrinsic::.
*** 8862,8869 ****
File: g77.info, Node: DbesJ1 Intrinsic, Next: DbesJN Intrinsic, Prev: DbesJ0 Intrinsic, Up: Table of Intrinsic Functions
! DbesJ1 Intrinsic
! ................
DbesJ1(X)
--- 8915,8923 ----
File: g77.info, Node: DbesJ1 Intrinsic, Next: DbesJN Intrinsic, Prev: DbesJ0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.62 DbesJ1 Intrinsic
! ..........................
!
DbesJ1(X)
*************** BesJ1 Intrinsic::.
*** 8881,8888 ****
File: g77.info, Node: DbesJN Intrinsic, Next: DbesY0 Intrinsic, Prev: DbesJ1 Intrinsic, Up: Table of Intrinsic Functions
! DbesJN Intrinsic
! ................
DbesJN(N, X)
--- 8935,8943 ----
File: g77.info, Node: DbesJN Intrinsic, Next: DbesY0 Intrinsic, Prev: DbesJ1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.63 DbesJN Intrinsic
! ..........................
!
DbesJN(N, X)
*************** BesJN Intrinsic::.
*** 8902,8909 ****
File: g77.info, Node: DbesY0 Intrinsic, Next: DbesY1 Intrinsic, Prev: DbesJN Intrinsic, Up: Table of Intrinsic Functions
! DbesY0 Intrinsic
! ................
DbesY0(X)
--- 8957,8965 ----
File: g77.info, Node: DbesY0 Intrinsic, Next: DbesY1 Intrinsic, Prev: DbesJN Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.64 DbesY0 Intrinsic
! ..........................
!
DbesY0(X)
*************** BesY0 Intrinsic::.
*** 8921,8928 ****
File: g77.info, Node: DbesY1 Intrinsic, Next: DbesYN Intrinsic, Prev: DbesY0 Intrinsic, Up: Table of Intrinsic Functions
! DbesY1 Intrinsic
! ................
DbesY1(X)
--- 8977,8985 ----
File: g77.info, Node: DbesY1 Intrinsic, Next: DbesYN Intrinsic, Prev: DbesY0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.65 DbesY1 Intrinsic
! ..........................
!
DbesY1(X)
*************** BesY1 Intrinsic::.
*** 8940,8947 ****
File: g77.info, Node: DbesYN Intrinsic, Next: Dble Intrinsic, Prev: DbesY1 Intrinsic, Up: Table of Intrinsic Functions
! DbesYN Intrinsic
! ................
DbesYN(N, X)
--- 8997,9005 ----
File: g77.info, Node: DbesYN Intrinsic, Next: Dble Intrinsic, Prev: DbesY1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.66 DbesYN Intrinsic
! ..........................
!
DbesYN(N, X)
*************** BesYN Intrinsic::.
*** 8961,8968 ****
File: g77.info, Node: Dble Intrinsic, Next: DCos Intrinsic, Prev: DbesYN Intrinsic, Up: Table of Intrinsic Functions
! Dble Intrinsic
! ..............
Dble(A)
--- 9019,9027 ----
File: g77.info, Node: Dble Intrinsic, Next: DCos Intrinsic, Prev: DbesYN Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.67 Dble Intrinsic
! ........................
!
Dble(A)
*************** precision.
*** 8989,8996 ****
File: g77.info, Node: DCos Intrinsic, Next: DCosH Intrinsic, Prev: Dble Intrinsic, Up: Table of Intrinsic Functions
! DCos Intrinsic
! ..............
DCos(X)
--- 9048,9056 ----
File: g77.info, Node: DCos Intrinsic, Next: DCosH Intrinsic, Prev: Dble Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.68 DCos Intrinsic
! ........................
!
DCos(X)
*************** Cos Intrinsic::.
*** 9008,9015 ****
File: g77.info, Node: DCosH Intrinsic, Next: DDiM Intrinsic, Prev: DCos Intrinsic, Up: Table of Intrinsic Functions
! DCosH Intrinsic
! ...............
DCosH(X)
--- 9068,9076 ----
File: g77.info, Node: DCosH Intrinsic, Next: DDiM Intrinsic, Prev: DCos Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.69 DCosH Intrinsic
! .........................
!
DCosH(X)
*************** CosH Intrinsic::.
*** 9027,9034 ****
File: g77.info, Node: DDiM Intrinsic, Next: DErF Intrinsic, Prev: DCosH Intrinsic, Up: Table of Intrinsic Functions
! DDiM Intrinsic
! ..............
DDiM(X, Y)
--- 9088,9096 ----
File: g77.info, Node: DDiM Intrinsic, Next: DErF Intrinsic, Prev: DCosH Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.70 DDiM Intrinsic
! ........................
!
DDiM(X, Y)
*************** Description:
*** 9048,9055 ****
File: g77.info, Node: DErF Intrinsic, Next: DErFC Intrinsic, Prev: DDiM Intrinsic, Up: Table of Intrinsic Functions
! DErF Intrinsic
! ..............
DErF(X)
--- 9110,9118 ----
File: g77.info, Node: DErF Intrinsic, Next: DErFC Intrinsic, Prev: DDiM Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.71 DErF Intrinsic
! ........................
!
DErF(X)
*************** ErF Intrinsic::.
*** 9067,9074 ****
File: g77.info, Node: DErFC Intrinsic, Next: DExp Intrinsic, Prev: DErF Intrinsic, Up: Table of Intrinsic Functions
! DErFC Intrinsic
! ...............
DErFC(X)
--- 9130,9138 ----
File: g77.info, Node: DErFC Intrinsic, Next: DExp Intrinsic, Prev: DErF Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.72 DErFC Intrinsic
! .........................
!
DErFC(X)
*************** ErFC Intrinsic::.
*** 9086,9093 ****
File: g77.info, Node: DExp Intrinsic, Next: Digits Intrinsic, Prev: DErFC Intrinsic, Up: Table of Intrinsic Functions
! DExp Intrinsic
! ..............
DExp(X)
--- 9150,9158 ----
File: g77.info, Node: DExp Intrinsic, Next: Digits Intrinsic, Prev: DErFC Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.73 DExp Intrinsic
! ........................
!
DExp(X)
*************** Exp Intrinsic::.
*** 9105,9122 ****
File: g77.info, Node: Digits Intrinsic, Next: DiM Intrinsic, Prev: DExp Intrinsic, Up: Table of Intrinsic Functions
! Digits Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Digits' to use this name for an
external procedure.
File: g77.info, Node: DiM Intrinsic, Next: DInt Intrinsic, Prev: Digits Intrinsic, Up: Table of Intrinsic Functions
! DiM Intrinsic
! .............
DiM(X, Y)
--- 9170,9188 ----
File: g77.info, Node: Digits Intrinsic, Next: DiM Intrinsic, Prev: DExp Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.74 Digits Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Digits' to use this name for an
external procedure.
File: g77.info, Node: DiM Intrinsic, Next: DInt Intrinsic, Prev: Digits Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.75 DiM Intrinsic
! .......................
!
DiM(X, Y)
*************** Description:
*** 9136,9143 ****
File: g77.info, Node: DInt Intrinsic, Next: DLog Intrinsic, Prev: DiM Intrinsic, Up: Table of Intrinsic Functions
! DInt Intrinsic
! ..............
DInt(A)
--- 9202,9210 ----
File: g77.info, Node: DInt Intrinsic, Next: DLog Intrinsic, Prev: DiM Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.76 DInt Intrinsic
! ........................
!
DInt(A)
*************** AInt Intrinsic::.
*** 9155,9162 ****
File: g77.info, Node: DLog Intrinsic, Next: DLog10 Intrinsic, Prev: DInt Intrinsic, Up: Table of Intrinsic Functions
! DLog Intrinsic
! ..............
DLog(X)
--- 9222,9230 ----
File: g77.info, Node: DLog Intrinsic, Next: DLog10 Intrinsic, Prev: DInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.77 DLog Intrinsic
! ........................
!
DLog(X)
*************** Log Intrinsic::.
*** 9174,9181 ****
File: g77.info, Node: DLog10 Intrinsic, Next: DMax1 Intrinsic, Prev: DLog Intrinsic, Up: Table of Intrinsic Functions
! DLog10 Intrinsic
! ................
DLog10(X)
--- 9242,9250 ----
File: g77.info, Node: DLog10 Intrinsic, Next: DMax1 Intrinsic, Prev: DLog Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.78 DLog10 Intrinsic
! ..........................
!
DLog10(X)
*************** Log10 Intrinsic::.
*** 9193,9200 ****
File: g77.info, Node: DMax1 Intrinsic, Next: DMin1 Intrinsic, Prev: DLog10 Intrinsic, Up: Table of Intrinsic Functions
! DMax1 Intrinsic
! ...............
DMax1(A-1, A-2, ..., A-n)
--- 9262,9270 ----
File: g77.info, Node: DMax1 Intrinsic, Next: DMin1 Intrinsic, Prev: DLog10 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.79 DMax1 Intrinsic
! .........................
!
DMax1(A-1, A-2, ..., A-n)
*************** Max Intrinsic::.
*** 9213,9220 ****
File: g77.info, Node: DMin1 Intrinsic, Next: DMod Intrinsic, Prev: DMax1 Intrinsic, Up: Table of Intrinsic Functions
! DMin1 Intrinsic
! ...............
DMin1(A-1, A-2, ..., A-n)
--- 9283,9291 ----
File: g77.info, Node: DMin1 Intrinsic, Next: DMod Intrinsic, Prev: DMax1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.80 DMin1 Intrinsic
! .........................
!
DMin1(A-1, A-2, ..., A-n)
*************** Min Intrinsic::.
*** 9233,9240 ****
File: g77.info, Node: DMod Intrinsic, Next: DNInt Intrinsic, Prev: DMin1 Intrinsic, Up: Table of Intrinsic Functions
! DMod Intrinsic
! ..............
DMod(A, P)
--- 9304,9312 ----
File: g77.info, Node: DMod Intrinsic, Next: DNInt Intrinsic, Prev: DMin1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.81 DMod Intrinsic
! ........................
!
DMod(A, P)
*************** Mod Intrinsic::.
*** 9254,9261 ****
File: g77.info, Node: DNInt Intrinsic, Next: Dot_Product Intrinsic, Prev: DMod Intrinsic, Up: Table of Intrinsic Functions
! DNInt Intrinsic
! ...............
DNInt(A)
--- 9326,9334 ----
File: g77.info, Node: DNInt Intrinsic, Next: Dot_Product Intrinsic, Prev: DMod Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.82 DNInt Intrinsic
! .........................
!
DNInt(A)
*************** ANInt Intrinsic::.
*** 9273,9290 ****
File: g77.info, Node: Dot_Product Intrinsic, Next: DProd Intrinsic, Prev: DNInt Intrinsic, Up: Table of Intrinsic Functions
! Dot_Product Intrinsic
! .....................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Dot_Product' to use this name
! for an external procedure.
File: g77.info, Node: DProd Intrinsic, Next: DSign Intrinsic, Prev: Dot_Product Intrinsic, Up: Table of Intrinsic Functions
! DProd Intrinsic
! ...............
DProd(X, Y)
--- 9346,9364 ----
File: g77.info, Node: Dot_Product Intrinsic, Next: DProd Intrinsic, Prev: DNInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.83 Dot_Product Intrinsic
! ...............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Dot_Product' to use this name for an
! external procedure.
File: g77.info, Node: DProd Intrinsic, Next: DSign Intrinsic, Prev: Dot_Product Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.84 DProd Intrinsic
! .........................
!
DProd(X, Y)
*************** Description:
*** 9303,9310 ****
File: g77.info, Node: DSign Intrinsic, Next: DSin Intrinsic, Prev: DProd Intrinsic, Up: Table of Intrinsic Functions
! DSign Intrinsic
! ...............
DSign(A, B)
--- 9377,9385 ----
File: g77.info, Node: DSign Intrinsic, Next: DSin Intrinsic, Prev: DProd Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.85 DSign Intrinsic
! .........................
!
DSign(A, B)
*************** Description:
*** 9324,9331 ****
File: g77.info, Node: DSin Intrinsic, Next: DSinH Intrinsic, Prev: DSign Intrinsic, Up: Table of Intrinsic Functions
! DSin Intrinsic
! ..............
DSin(X)
--- 9399,9407 ----
File: g77.info, Node: DSin Intrinsic, Next: DSinH Intrinsic, Prev: DSign Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.86 DSin Intrinsic
! ........................
!
DSin(X)
*************** Sin Intrinsic::.
*** 9343,9350 ****
File: g77.info, Node: DSinH Intrinsic, Next: DSqRt Intrinsic, Prev: DSin Intrinsic, Up: Table of Intrinsic Functions
! DSinH Intrinsic
! ...............
DSinH(X)
--- 9419,9427 ----
File: g77.info, Node: DSinH Intrinsic, Next: DSqRt Intrinsic, Prev: DSin Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.87 DSinH Intrinsic
! .........................
!
DSinH(X)
*************** SinH Intrinsic::.
*** 9362,9369 ****
File: g77.info, Node: DSqRt Intrinsic, Next: DTan Intrinsic, Prev: DSinH Intrinsic, Up: Table of Intrinsic Functions
! DSqRt Intrinsic
! ...............
DSqRt(X)
--- 9439,9447 ----
File: g77.info, Node: DSqRt Intrinsic, Next: DTan Intrinsic, Prev: DSinH Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.88 DSqRt Intrinsic
! .........................
!
DSqRt(X)
*************** SqRt Intrinsic::.
*** 9381,9388 ****
File: g77.info, Node: DTan Intrinsic, Next: DTanH Intrinsic, Prev: DSqRt Intrinsic, Up: Table of Intrinsic Functions
! DTan Intrinsic
! ..............
DTan(X)
--- 9459,9467 ----
File: g77.info, Node: DTan Intrinsic, Next: DTanH Intrinsic, Prev: DSqRt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.89 DTan Intrinsic
! ........................
!
DTan(X)
*************** Tan Intrinsic::.
*** 9400,9407 ****
File: g77.info, Node: DTanH Intrinsic, Next: DTime Intrinsic (subroutine), Prev: DTan Intrinsic, Up: Table of Intrinsic Functions
! DTanH Intrinsic
! ...............
DTanH(X)
--- 9479,9487 ----
File: g77.info, Node: DTanH Intrinsic, Next: DTime Intrinsic (subroutine), Prev: DTan Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.90 DTanH Intrinsic
! .........................
!
DTanH(X)
*************** TanH Intrinsic::.
*** 9419,9426 ****
File: g77.info, Node: DTime Intrinsic (subroutine), Next: EOShift Intrinsic, Prev: DTanH Intrinsic, Up: Table of Intrinsic Functions
! DTime Intrinsic (subroutine)
! ............................
CALL DTime(TARRAY, RESULT)
--- 9499,9507 ----
File: g77.info, Node: DTime Intrinsic (subroutine), Next: EOShift Intrinsic, Prev: DTanH Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.91 DTime Intrinsic (subroutine)
! ......................................
!
CALL DTime(TARRAY, RESULT)
*************** Intrinsic (function)::.
*** 9455,9482 ****
File: g77.info, Node: EOShift Intrinsic, Next: Epsilon Intrinsic, Prev: DTime Intrinsic (subroutine), Up: Table of Intrinsic Functions
! EOShift Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL EOShift' to use this name for
! an external procedure.
File: g77.info, Node: Epsilon Intrinsic, Next: ErF Intrinsic, Prev: EOShift Intrinsic, Up: Table of Intrinsic Functions
! Epsilon Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Epsilon' to use this name for
! an external procedure.
File: g77.info, Node: ErF Intrinsic, Next: ErFC Intrinsic, Prev: Epsilon Intrinsic, Up: Table of Intrinsic Functions
! ErF Intrinsic
! .............
ErF(X)
--- 9536,9564 ----
File: g77.info, Node: EOShift Intrinsic, Next: Epsilon Intrinsic, Prev: DTime Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.92 EOShift Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL EOShift' to use this name for an
! external procedure.
File: g77.info, Node: Epsilon Intrinsic, Next: ErF Intrinsic, Prev: EOShift Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.93 Epsilon Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Epsilon' to use this name for an
! external procedure.
File: g77.info, Node: ErF Intrinsic, Next: ErFC Intrinsic, Prev: Epsilon Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.94 ErF Intrinsic
! .......................
!
ErF(X)
*************** implementation.
*** 9495,9502 ****
File: g77.info, Node: ErFC Intrinsic, Next: ETime Intrinsic (subroutine), Prev: ErF Intrinsic, Up: Table of Intrinsic Functions
! ErFC Intrinsic
! ..............
ErFC(X)
--- 9577,9585 ----
File: g77.info, Node: ErFC Intrinsic, Next: ETime Intrinsic (subroutine), Prev: ErF Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.95 ErFC Intrinsic
! ........................
!
ErFC(X)
*************** the implementation.
*** 9517,9524 ****
File: g77.info, Node: ETime Intrinsic (subroutine), Next: ETime Intrinsic (function), Prev: ErFC Intrinsic, Up: Table of Intrinsic Functions
! ETime Intrinsic (subroutine)
! ............................
CALL ETime(TARRAY, RESULT)
--- 9600,9608 ----
File: g77.info, Node: ETime Intrinsic (subroutine), Next: ETime Intrinsic (function), Prev: ErFC Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.96 ETime Intrinsic (subroutine)
! ......................................
!
CALL ETime(TARRAY, RESULT)
*************** Intrinsic (function)::.
*** 9550,9557 ****
File: g77.info, Node: ETime Intrinsic (function), Next: Exit Intrinsic, Prev: ETime Intrinsic (subroutine), Up: Table of Intrinsic Functions
! ETime Intrinsic (function)
! ..........................
ETime(TARRAY)
--- 9634,9642 ----
File: g77.info, Node: ETime Intrinsic (function), Next: Exit Intrinsic, Prev: ETime Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.97 ETime Intrinsic (function)
! ....................................
!
ETime(TARRAY)
*************** Intrinsic (subroutine)::.
*** 9580,9587 ****
File: g77.info, Node: Exit Intrinsic, Next: Exp Intrinsic, Prev: ETime Intrinsic (function), Up: Table of Intrinsic Functions
! Exit Intrinsic
! ..............
CALL Exit(STATUS)
--- 9665,9673 ----
File: g77.info, Node: Exit Intrinsic, Next: Exp Intrinsic, Prev: ETime Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.98 Exit Intrinsic
! ........................
!
CALL Exit(STATUS)
*************** canonical `success' value will be return
*** 9599,9606 ****
File: g77.info, Node: Exp Intrinsic, Next: Exponent Intrinsic, Prev: Exit Intrinsic, Up: Table of Intrinsic Functions
! Exp Intrinsic
! .............
Exp(X)
--- 9685,9693 ----
File: g77.info, Node: Exp Intrinsic, Next: Exponent Intrinsic, Prev: Exit Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.99 Exp Intrinsic
! .......................
!
Exp(X)
*************** Description:
*** 9620,9637 ****
File: g77.info, Node: Exponent Intrinsic, Next: FDate Intrinsic (subroutine), Prev: Exp Intrinsic, Up: Table of Intrinsic Functions
! Exponent Intrinsic
! ..................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Exponent' to use this name for
! an external procedure.
File: g77.info, Node: FDate Intrinsic (subroutine), Next: FDate Intrinsic (function), Prev: Exponent Intrinsic, Up: Table of Intrinsic Functions
! FDate Intrinsic (subroutine)
! ............................
CALL FDate(DATE)
--- 9707,9725 ----
File: g77.info, Node: Exponent Intrinsic, Next: FDate Intrinsic (subroutine), Prev: Exp Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.100 Exponent Intrinsic
! .............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Exponent' to use this name for an
! external procedure.
File: g77.info, Node: FDate Intrinsic (subroutine), Next: FDate Intrinsic (function), Prev: Exponent Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.101 FDate Intrinsic (subroutine)
! .......................................
!
CALL FDate(DATE)
*************** Intrinsic (function)::.
*** 9664,9671 ****
File: g77.info, Node: FDate Intrinsic (function), Next: FGet Intrinsic (subroutine), Prev: FDate Intrinsic (subroutine), Up: Table of Intrinsic Functions
! FDate Intrinsic (function)
! ..........................
FDate()
--- 9752,9760 ----
File: g77.info, Node: FDate Intrinsic (function), Next: FGet Intrinsic (subroutine), Prev: FDate Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.102 FDate Intrinsic (function)
! .....................................
!
FDate()
*************** Intrinsic (subroutine)::.
*** 9694,9701 ****
File: g77.info, Node: FGet Intrinsic (subroutine), Next: FGetC Intrinsic (subroutine), Prev: FDate Intrinsic (function), Up: Table of Intrinsic Functions
! FGet Intrinsic (subroutine)
! ...........................
CALL FGet(C, STATUS)
--- 9783,9791 ----
File: g77.info, Node: FGet Intrinsic (subroutine), Next: FGetC Intrinsic (subroutine), Prev: FDate Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.103 FGet Intrinsic (subroutine)
! ......................................
!
CALL FGet(C, STATUS)
*************** Intrinsic (function)::.
*** 9722,9729 ****
File: g77.info, Node: FGetC Intrinsic (subroutine), Next: Float Intrinsic, Prev: FGet Intrinsic (subroutine), Up: Table of Intrinsic Functions
! FGetC Intrinsic (subroutine)
! ............................
CALL FGetC(UNIT, C, STATUS)
--- 9812,9820 ----
File: g77.info, Node: FGetC Intrinsic (subroutine), Next: Float Intrinsic, Prev: FGet Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.104 FGetC Intrinsic (subroutine)
! .......................................
!
CALL FGetC(UNIT, C, STATUS)
*************** Intrinsic (function)::.
*** 9752,9759 ****
File: g77.info, Node: Float Intrinsic, Next: Floor Intrinsic, Prev: FGetC Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Float Intrinsic
! ...............
Float(A)
--- 9843,9851 ----
File: g77.info, Node: Float Intrinsic, Next: Floor Intrinsic, Prev: FGetC Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.105 Float Intrinsic
! ..........................
!
Float(A)
*************** Real Intrinsic::.
*** 9771,9788 ****
File: g77.info, Node: Floor Intrinsic, Next: Flush Intrinsic, Prev: Float Intrinsic, Up: Table of Intrinsic Functions
! Floor Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Floor' to use this name for an
! external procedure.
File: g77.info, Node: Flush Intrinsic, Next: FNum Intrinsic, Prev: Floor Intrinsic, Up: Table of Intrinsic Functions
! Flush Intrinsic
! ...............
CALL Flush(UNIT)
--- 9863,9881 ----
File: g77.info, Node: Floor Intrinsic, Next: Flush Intrinsic, Prev: Float Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.106 Floor Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Floor' to use this name for an external
! procedure.
File: g77.info, Node: Flush Intrinsic, Next: FNum Intrinsic, Prev: Floor Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.107 Flush Intrinsic
! ..........................
!
CALL Flush(UNIT)
*************** argument.
*** 9803,9810 ****
File: g77.info, Node: FNum Intrinsic, Next: FPut Intrinsic (subroutine), Prev: Flush Intrinsic, Up: Table of Intrinsic Functions
! FNum Intrinsic
! ..............
FNum(UNIT)
--- 9896,9904 ----
File: g77.info, Node: FNum Intrinsic, Next: FPut Intrinsic (subroutine), Prev: Flush Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.108 FNum Intrinsic
! .........................
!
FNum(UNIT)
*************** routines.
*** 9823,9830 ****
File: g77.info, Node: FPut Intrinsic (subroutine), Next: FPutC Intrinsic (subroutine), Prev: FNum Intrinsic, Up: Table of Intrinsic Functions
! FPut Intrinsic (subroutine)
! ...........................
CALL FPut(C, STATUS)
--- 9917,9925 ----
File: g77.info, Node: FPut Intrinsic (subroutine), Next: FPutC Intrinsic (subroutine), Prev: FNum Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.109 FPut Intrinsic (subroutine)
! ......................................
!
CALL FPut(C, STATUS)
*************** Intrinsic (function)::.
*** 9850,9857 ****
File: g77.info, Node: FPutC Intrinsic (subroutine), Next: Fraction Intrinsic, Prev: FPut Intrinsic (subroutine), Up: Table of Intrinsic Functions
! FPutC Intrinsic (subroutine)
! ............................
CALL FPutC(UNIT, C, STATUS)
--- 9945,9953 ----
File: g77.info, Node: FPutC Intrinsic (subroutine), Next: Fraction Intrinsic, Prev: FPut Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.110 FPutC Intrinsic (subroutine)
! .......................................
!
CALL FPutC(UNIT, C, STATUS)
*************** Intrinsic (function)::.
*** 9879,9896 ****
File: g77.info, Node: Fraction Intrinsic, Next: FSeek Intrinsic, Prev: FPutC Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Fraction Intrinsic
! ..................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Fraction' to use this name for
! an external procedure.
File: g77.info, Node: FSeek Intrinsic, Next: FStat Intrinsic (subroutine), Prev: Fraction Intrinsic, Up: Table of Intrinsic Functions
! FSeek Intrinsic
! ...............
CALL FSeek(UNIT, OFFSET, WHENCE, ERRLAB)
--- 9975,9993 ----
File: g77.info, Node: Fraction Intrinsic, Next: FSeek Intrinsic, Prev: FPutC Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.111 Fraction Intrinsic
! .............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Fraction' to use this name for an
! external procedure.
File: g77.info, Node: FSeek Intrinsic, Next: FStat Intrinsic (subroutine), Prev: Fraction Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.112 FSeek Intrinsic
! ..........................
!
CALL FSeek(UNIT, OFFSET, WHENCE, ERRLAB)
*************** ERRLAB if UNIT is not open or if the cal
*** 9915,9922 ****
File: g77.info, Node: FStat Intrinsic (subroutine), Next: FStat Intrinsic (function), Prev: FSeek Intrinsic, Up: Table of Intrinsic Functions
! FStat Intrinsic (subroutine)
! ............................
CALL FStat(UNIT, SARRAY, STATUS)
--- 10012,10020 ----
File: g77.info, Node: FStat Intrinsic (subroutine), Next: FStat Intrinsic (function), Prev: FSeek Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.113 FStat Intrinsic (subroutine)
! .......................................
!
CALL FStat(UNIT, SARRAY, STATUS)
*************** Intrinsic (function)::.
*** 9977,9984 ****
File: g77.info, Node: FStat Intrinsic (function), Next: FTell Intrinsic (subroutine), Prev: FStat Intrinsic (subroutine), Up: Table of Intrinsic Functions
! FStat Intrinsic (function)
! ..........................
FStat(UNIT, SARRAY)
--- 10075,10083 ----
File: g77.info, Node: FStat Intrinsic (function), Next: FTell Intrinsic (subroutine), Prev: FStat Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.114 FStat Intrinsic (function)
! .....................................
!
FStat(UNIT, SARRAY)
*************** Intrinsic (subroutine)::.
*** 10034,10041 ****
File: g77.info, Node: FTell Intrinsic (subroutine), Next: FTell Intrinsic (function), Prev: FStat Intrinsic (function), Up: Table of Intrinsic Functions
! FTell Intrinsic (subroutine)
! ............................
CALL FTell(UNIT, OFFSET)
--- 10133,10141 ----
File: g77.info, Node: FTell Intrinsic (subroutine), Next: FTell Intrinsic (function), Prev: FStat Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.115 FTell Intrinsic (subroutine)
! .......................................
!
CALL FTell(UNIT, OFFSET)
*************** Intrinsic (function)::.
*** 10059,10066 ****
File: g77.info, Node: FTell Intrinsic (function), Next: GError Intrinsic, Prev: FTell Intrinsic (subroutine), Up: Table of Intrinsic Functions
! FTell Intrinsic (function)
! ..........................
FTell(UNIT)
--- 10159,10167 ----
File: g77.info, Node: FTell Intrinsic (function), Next: GError Intrinsic, Prev: FTell Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.116 FTell Intrinsic (function)
! .....................................
!
FTell(UNIT)
*************** Intrinsic (subroutine)::.
*** 10081,10088 ****
File: g77.info, Node: GError Intrinsic, Next: GetArg Intrinsic, Prev: FTell Intrinsic (function), Up: Table of Intrinsic Functions
! GError Intrinsic
! ................
CALL GError(MESSAGE)
--- 10182,10190 ----
File: g77.info, Node: GError Intrinsic, Next: GetArg Intrinsic, Prev: FTell Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.117 GError Intrinsic
! ...........................
!
CALL GError(MESSAGE)
*************** error (C `errno').
*** 10098,10105 ****
File: g77.info, Node: GetArg Intrinsic, Next: GetCWD Intrinsic (subroutine), Prev: GError Intrinsic, Up: Table of Intrinsic Functions
! GetArg Intrinsic
! ................
CALL GetArg(POS, VALUE)
--- 10200,10208 ----
File: g77.info, Node: GetArg Intrinsic, Next: GetCWD Intrinsic (subroutine), Prev: GError Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.118 GetArg Intrinsic
! ...........................
!
CALL GetArg(POS, VALUE)
*************** arguments.
*** 10122,10129 ****
File: g77.info, Node: GetCWD Intrinsic (subroutine), Next: GetCWD Intrinsic (function), Prev: GetArg Intrinsic, Up: Table of Intrinsic Functions
! GetCWD Intrinsic (subroutine)
! .............................
CALL GetCWD(NAME, STATUS)
--- 10225,10233 ----
File: g77.info, Node: GetCWD Intrinsic (subroutine), Next: GetCWD Intrinsic (function), Prev: GetArg Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.119 GetCWD Intrinsic (subroutine)
! ........................................
!
CALL GetCWD(NAME, STATUS)
*************** Intrinsic (function)::.
*** 10150,10157 ****
File: g77.info, Node: GetCWD Intrinsic (function), Next: GetEnv Intrinsic, Prev: GetCWD Intrinsic (subroutine), Up: Table of Intrinsic Functions
! GetCWD Intrinsic (function)
! ...........................
GetCWD(NAME)
--- 10254,10262 ----
File: g77.info, Node: GetCWD Intrinsic (function), Next: GetEnv Intrinsic, Prev: GetCWD Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.120 GetCWD Intrinsic (function)
! ......................................
!
GetCWD(NAME)
*************** Intrinsic (subroutine)::.
*** 10173,10180 ****
File: g77.info, Node: GetEnv Intrinsic, Next: GetGId Intrinsic, Prev: GetCWD Intrinsic (function), Up: Table of Intrinsic Functions
! GetEnv Intrinsic
! ................
CALL GetEnv(NAME, VALUE)
--- 10278,10286 ----
File: g77.info, Node: GetEnv Intrinsic, Next: GetGId Intrinsic, Prev: GetCWD Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.121 GetEnv Intrinsic
! ...........................
!
CALL GetEnv(NAME, VALUE)
*************** NAME--otherwise, trailing blanks in NAME
*** 10194,10201 ****
File: g77.info, Node: GetGId Intrinsic, Next: GetLog Intrinsic, Prev: GetEnv Intrinsic, Up: Table of Intrinsic Functions
! GetGId Intrinsic
! ................
GetGId()
--- 10300,10308 ----
File: g77.info, Node: GetGId Intrinsic, Next: GetLog Intrinsic, Prev: GetEnv Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.122 GetGId Intrinsic
! ...........................
!
GetGId()
*************** Description:
*** 10210,10217 ****
File: g77.info, Node: GetLog Intrinsic, Next: GetPId Intrinsic, Prev: GetGId Intrinsic, Up: Table of Intrinsic Functions
! GetLog Intrinsic
! ................
CALL GetLog(LOGIN)
--- 10317,10325 ----
File: g77.info, Node: GetLog Intrinsic, Next: GetPId Intrinsic, Prev: GetGId Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.123 GetLog Intrinsic
! ...........................
!
CALL GetLog(LOGIN)
*************** LOGIN.
*** 10231,10238 ****
File: g77.info, Node: GetPId Intrinsic, Next: GetUId Intrinsic, Prev: GetLog Intrinsic, Up: Table of Intrinsic Functions
! GetPId Intrinsic
! ................
GetPId()
--- 10339,10347 ----
File: g77.info, Node: GetPId Intrinsic, Next: GetUId Intrinsic, Prev: GetLog Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.124 GetPId Intrinsic
! ...........................
!
GetPId()
*************** Description:
*** 10247,10254 ****
File: g77.info, Node: GetUId Intrinsic, Next: GMTime Intrinsic, Prev: GetPId Intrinsic, Up: Table of Intrinsic Functions
! GetUId Intrinsic
! ................
GetUId()
--- 10356,10364 ----
File: g77.info, Node: GetUId Intrinsic, Next: GMTime Intrinsic, Prev: GetPId Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.125 GetUId Intrinsic
! ...........................
!
GetUId()
*************** Description:
*** 10263,10270 ****
File: g77.info, Node: GMTime Intrinsic, Next: HostNm Intrinsic (subroutine), Prev: GetUId Intrinsic, Up: Table of Intrinsic Functions
! GMTime Intrinsic
! ................
CALL GMTime(STIME, TARRAY)
--- 10373,10381 ----
File: g77.info, Node: GMTime Intrinsic, Next: HostNm Intrinsic (subroutine), Prev: GetUId Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.126 GMTime Intrinsic
! ...........................
!
CALL GMTime(STIME, TARRAY)
*************** from it appropriate to the GMT time zone
*** 10305,10312 ****
File: g77.info, Node: HostNm Intrinsic (subroutine), Next: HostNm Intrinsic (function), Prev: GMTime Intrinsic, Up: Table of Intrinsic Functions
! HostNm Intrinsic (subroutine)
! .............................
CALL HostNm(NAME, STATUS)
--- 10416,10424 ----
File: g77.info, Node: HostNm Intrinsic (subroutine), Next: HostNm Intrinsic (function), Prev: GMTime Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.127 HostNm Intrinsic (subroutine)
! ........................................
!
CALL HostNm(NAME, STATUS)
*************** Intrinsic (function)::.
*** 10337,10344 ****
File: g77.info, Node: HostNm Intrinsic (function), Next: Huge Intrinsic, Prev: HostNm Intrinsic (subroutine), Up: Table of Intrinsic Functions
! HostNm Intrinsic (function)
! ...........................
HostNm(NAME)
--- 10449,10457 ----
File: g77.info, Node: HostNm Intrinsic (function), Next: Huge Intrinsic, Prev: HostNm Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.128 HostNm Intrinsic (function)
! ......................................
!
HostNm(NAME)
*************** Intrinsic (subroutine)::.
*** 10364,10381 ****
File: g77.info, Node: Huge Intrinsic, Next: IAbs Intrinsic, Prev: HostNm Intrinsic (function), Up: Table of Intrinsic Functions
! Huge Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Huge' to use this name for an
! external procedure.
File: g77.info, Node: IAbs Intrinsic, Next: IAChar Intrinsic, Prev: Huge Intrinsic, Up: Table of Intrinsic Functions
! IAbs Intrinsic
! ..............
IAbs(A)
--- 10477,10495 ----
File: g77.info, Node: Huge Intrinsic, Next: IAbs Intrinsic, Prev: HostNm Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.129 Huge Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Huge' to use this name for an external
! procedure.
File: g77.info, Node: IAbs Intrinsic, Next: IAChar Intrinsic, Prev: Huge Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.130 IAbs Intrinsic
! .........................
!
IAbs(A)
*************** Abs Intrinsic::.
*** 10393,10400 ****
File: g77.info, Node: IAChar Intrinsic, Next: IAnd Intrinsic, Prev: IAbs Intrinsic, Up: Table of Intrinsic Functions
! IAChar Intrinsic
! ................
IAChar(C)
--- 10507,10515 ----
File: g77.info, Node: IAChar Intrinsic, Next: IAnd Intrinsic, Prev: IAbs Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.131 IAChar Intrinsic
! ...........................
!
IAChar(C)
*************** system's native character set.
*** 10417,10424 ****
File: g77.info, Node: IAnd Intrinsic, Next: IArgC Intrinsic, Prev: IAChar Intrinsic, Up: Table of Intrinsic Functions
! IAnd Intrinsic
! ..............
IAnd(I, J)
--- 10532,10540 ----
File: g77.info, Node: IAnd Intrinsic, Next: IArgC Intrinsic, Prev: IAChar Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.132 IAnd Intrinsic
! .........................
!
IAnd(I, J)
*************** I and J.
*** 10439,10446 ****
File: g77.info, Node: IArgC Intrinsic, Next: IBClr Intrinsic, Prev: IAnd Intrinsic, Up: Table of Intrinsic Functions
! IArgC Intrinsic
! ...............
IArgC()
--- 10555,10563 ----
File: g77.info, Node: IArgC Intrinsic, Next: IBClr Intrinsic, Prev: IAnd Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.133 IArgC Intrinsic
! ..........................
!
IArgC()
*************** itself.
*** 10458,10465 ****
File: g77.info, Node: IBClr Intrinsic, Next: IBits Intrinsic, Prev: IArgC Intrinsic, Up: Table of Intrinsic Functions
! IBClr Intrinsic
! ...............
IBClr(I, POS)
--- 10575,10583 ----
File: g77.info, Node: IBClr Intrinsic, Next: IBits Intrinsic, Prev: IArgC Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.134 IBClr Intrinsic
! ..........................
!
IBClr(I, POS)
*************** BTest Intrinsic::, for information on bi
*** 10480,10487 ****
File: g77.info, Node: IBits Intrinsic, Next: IBSet Intrinsic, Prev: IBClr Intrinsic, Up: Table of Intrinsic Functions
! IBits Intrinsic
! ...............
IBits(I, POS, LEN)
--- 10598,10606 ----
File: g77.info, Node: IBits Intrinsic, Next: IBSet Intrinsic, Prev: IBClr Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.135 IBits Intrinsic
! ..........................
!
IBits(I, POS, LEN)
*************** than or equal to the value `BIT_SIZE(I)'
*** 10506,10513 ****
File: g77.info, Node: IBSet Intrinsic, Next: IChar Intrinsic, Prev: IBits Intrinsic, Up: Table of Intrinsic Functions
! IBSet Intrinsic
! ...............
IBSet(I, POS)
--- 10625,10633 ----
File: g77.info, Node: IBSet Intrinsic, Next: IChar Intrinsic, Prev: IBits Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.136 IBSet Intrinsic
! ..........................
!
IBSet(I, POS)
*************** Intrinsic::, for information on bit posi
*** 10528,10535 ****
File: g77.info, Node: IChar Intrinsic, Next: IDate Intrinsic (UNIX), Prev: IBSet Intrinsic, Up: Table of Intrinsic Functions
! IChar Intrinsic
! ...............
IChar(C)
--- 10648,10656 ----
File: g77.info, Node: IChar Intrinsic, Next: IDate Intrinsic (UNIX), Prev: IBSet Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.137 IChar Intrinsic
! ..........................
!
IChar(C)
*************** ASCII character set.
*** 10575,10582 ****
File: g77.info, Node: IDate Intrinsic (UNIX), Next: IDiM Intrinsic, Prev: IChar Intrinsic, Up: Table of Intrinsic Functions
! IDate Intrinsic (UNIX)
! ......................
CALL IDate(TARRAY)
--- 10696,10704 ----
File: g77.info, Node: IDate Intrinsic (UNIX), Next: IDiM Intrinsic, Prev: IChar Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.138 IDate Intrinsic (UNIX)
! .................................
!
CALL IDate(TARRAY)
*************** Intrinsic (VXT)::.
*** 10602,10609 ****
File: g77.info, Node: IDiM Intrinsic, Next: IDInt Intrinsic, Prev: IDate Intrinsic (UNIX), Up: Table of Intrinsic Functions
! IDiM Intrinsic
! ..............
IDiM(X, Y)
--- 10724,10732 ----
File: g77.info, Node: IDiM Intrinsic, Next: IDInt Intrinsic, Prev: IDate Intrinsic (UNIX), Up: Table of Intrinsic Functions
! 8.11.9.139 IDiM Intrinsic
! .........................
!
IDiM(X, Y)
*************** Description:
*** 10623,10630 ****
File: g77.info, Node: IDInt Intrinsic, Next: IDNInt Intrinsic, Prev: IDiM Intrinsic, Up: Table of Intrinsic Functions
! IDInt Intrinsic
! ...............
IDInt(A)
--- 10746,10754 ----
File: g77.info, Node: IDInt Intrinsic, Next: IDNInt Intrinsic, Prev: IDiM Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.140 IDInt Intrinsic
! ..........................
!
IDInt(A)
*************** Int Intrinsic::.
*** 10642,10649 ****
File: g77.info, Node: IDNInt Intrinsic, Next: IEOr Intrinsic, Prev: IDInt Intrinsic, Up: Table of Intrinsic Functions
! IDNInt Intrinsic
! ................
IDNInt(A)
--- 10766,10774 ----
File: g77.info, Node: IDNInt Intrinsic, Next: IEOr Intrinsic, Prev: IDInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.141 IDNInt Intrinsic
! ...........................
!
IDNInt(A)
*************** NInt Intrinsic::.
*** 10661,10668 ****
File: g77.info, Node: IEOr Intrinsic, Next: IErrNo Intrinsic, Prev: IDNInt Intrinsic, Up: Table of Intrinsic Functions
! IEOr Intrinsic
! ..............
IEOr(I, J)
--- 10786,10794 ----
File: g77.info, Node: IEOr Intrinsic, Next: IErrNo Intrinsic, Prev: IDNInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.142 IEOr Intrinsic
! .........................
!
IEOr(I, J)
*************** each of I and J.
*** 10683,10690 ****
File: g77.info, Node: IErrNo Intrinsic, Next: IFix Intrinsic, Prev: IEOr Intrinsic, Up: Table of Intrinsic Functions
! IErrNo Intrinsic
! ................
IErrNo()
--- 10809,10817 ----
File: g77.info, Node: IErrNo Intrinsic, Next: IFix Intrinsic, Prev: IEOr Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.143 IErrNo Intrinsic
! ...........................
!
IErrNo()
*************** Description:
*** 10700,10707 ****
File: g77.info, Node: IFix Intrinsic, Next: Imag Intrinsic, Prev: IErrNo Intrinsic, Up: Table of Intrinsic Functions
! IFix Intrinsic
! ..............
IFix(A)
--- 10827,10835 ----
File: g77.info, Node: IFix Intrinsic, Next: Imag Intrinsic, Prev: IErrNo Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.144 IFix Intrinsic
! .........................
!
IFix(A)
*************** Int Intrinsic::.
*** 10719,10726 ****
File: g77.info, Node: Imag Intrinsic, Next: ImagPart Intrinsic, Prev: IFix Intrinsic, Up: Table of Intrinsic Functions
! Imag Intrinsic
! ..............
Imag(Z)
--- 10847,10855 ----
File: g77.info, Node: Imag Intrinsic, Next: ImagPart Intrinsic, Prev: IFix Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.145 Imag Intrinsic
! .........................
!
Imag(Z)
*************** code.
*** 10751,10758 ****
File: g77.info, Node: ImagPart Intrinsic, Next: Index Intrinsic, Prev: Imag Intrinsic, Up: Table of Intrinsic Functions
! ImagPart Intrinsic
! ..................
ImagPart(Z)
--- 10880,10888 ----
File: g77.info, Node: ImagPart Intrinsic, Next: Index Intrinsic, Prev: Imag Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.146 ImagPart Intrinsic
! .............................
!
ImagPart(Z)
*************** code.
*** 10783,10790 ****
File: g77.info, Node: Index Intrinsic, Next: Int Intrinsic, Prev: ImagPart Intrinsic, Up: Table of Intrinsic Functions
! Index Intrinsic
! ...............
Index(STRING, SUBSTRING)
--- 10913,10921 ----
File: g77.info, Node: Index Intrinsic, Next: Int Intrinsic, Prev: ImagPart Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.147 Index Intrinsic
! ..........................
!
Index(STRING, SUBSTRING)
*************** doesn't occur in STRING, zero is returne
*** 10805,10812 ****
File: g77.info, Node: Int Intrinsic, Next: Int2 Intrinsic, Prev: Index Intrinsic, Up: Table of Intrinsic Functions
! Int Intrinsic
! .............
Int(A)
--- 10936,10944 ----
File: g77.info, Node: Int Intrinsic, Next: Int2 Intrinsic, Prev: Index Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.148 Int Intrinsic
! ........................
!
Int(A)
*************** converting.
*** 10833,10840 ****
File: g77.info, Node: Int2 Intrinsic, Next: Int8 Intrinsic, Prev: Int Intrinsic, Up: Table of Intrinsic Functions
! Int2 Intrinsic
! ..............
Int2(A)
--- 10965,10973 ----
File: g77.info, Node: Int2 Intrinsic, Next: Int8 Intrinsic, Prev: Int Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.149 Int2 Intrinsic
! .........................
!
Int2(A)
*************** used.
*** 10861,10868 ****
File: g77.info, Node: Int8 Intrinsic, Next: IOr Intrinsic, Prev: Int2 Intrinsic, Up: Table of Intrinsic Functions
! Int8 Intrinsic
! ..............
Int8(A)
--- 10994,11002 ----
File: g77.info, Node: Int8 Intrinsic, Next: IOr Intrinsic, Prev: Int2 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.150 Int8 Intrinsic
! .........................
!
Int8(A)
*************** used.
*** 10889,10896 ****
File: g77.info, Node: IOr Intrinsic, Next: IRand Intrinsic, Prev: Int8 Intrinsic, Up: Table of Intrinsic Functions
! IOr Intrinsic
! .............
IOr(I, J)
--- 11023,11031 ----
File: g77.info, Node: IOr Intrinsic, Next: IRand Intrinsic, Prev: Int8 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.151 IOr Intrinsic
! ........................
!
IOr(I, J)
*************** and J.
*** 10911,10918 ****
File: g77.info, Node: IRand Intrinsic, Next: IsaTty Intrinsic, Prev: IOr Intrinsic, Up: Table of Intrinsic Functions
! IRand Intrinsic
! ...............
IRand(FLAG)
--- 11046,11054 ----
File: g77.info, Node: IRand Intrinsic, Next: IsaTty Intrinsic, Prev: IOr Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.152 IRand Intrinsic
! ..........................
!
IRand(FLAG)
*************** use something better.
*** 10940,10947 ****
File: g77.info, Node: IsaTty Intrinsic, Next: IShft Intrinsic, Prev: IRand Intrinsic, Up: Table of Intrinsic Functions
! IsaTty Intrinsic
! ................
IsaTty(UNIT)
--- 11076,11084 ----
File: g77.info, Node: IsaTty Intrinsic, Next: IShft Intrinsic, Prev: IRand Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.153 IsaTty Intrinsic
! ...........................
!
IsaTty(UNIT)
*************** UNIT is connected to a terminal device.
*** 10959,10966 ****
File: g77.info, Node: IShft Intrinsic, Next: IShftC Intrinsic, Prev: IsaTty Intrinsic, Up: Table of Intrinsic Functions
! IShft Intrinsic
! ...............
IShft(I, SHIFT)
--- 11096,11104 ----
File: g77.info, Node: IShft Intrinsic, Next: IShftC Intrinsic, Prev: IsaTty Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.154 IShft Intrinsic
! ..........................
!
IShft(I, SHIFT)
*************** are shifted in from the opposite end.
*** 10987,10994 ****
File: g77.info, Node: IShftC Intrinsic, Next: ISign Intrinsic, Prev: IShft Intrinsic, Up: Table of Intrinsic Functions
! IShftC Intrinsic
! ................
IShftC(I, SHIFT, SIZE)
--- 11125,11133 ----
File: g77.info, Node: IShftC Intrinsic, Next: ISign Intrinsic, Prev: IShft Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.155 IShftC Intrinsic
! ...........................
!
IShftC(I, SHIFT, SIZE)
*************** must be greater than or equal to one and
*** 11018,11025 ****
File: g77.info, Node: ISign Intrinsic, Next: ITime Intrinsic, Prev: IShftC Intrinsic, Up: Table of Intrinsic Functions
! ISign Intrinsic
! ...............
ISign(A, B)
--- 11157,11165 ----
File: g77.info, Node: ISign Intrinsic, Next: ITime Intrinsic, Prev: IShftC Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.156 ISign Intrinsic
! ..........................
!
ISign(A, B)
*************** Description:
*** 11039,11046 ****
File: g77.info, Node: ITime Intrinsic, Next: Kill Intrinsic (subroutine), Prev: ISign Intrinsic, Up: Table of Intrinsic Functions
! ITime Intrinsic
! ...............
CALL ITime(TARRAY)
--- 11179,11187 ----
File: g77.info, Node: ITime Intrinsic, Next: Kill Intrinsic (subroutine), Prev: ISign Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.157 ITime Intrinsic
! ..........................
!
CALL ITime(TARRAY)
*************** Description:
*** 11056,11063 ****
File: g77.info, Node: Kill Intrinsic (subroutine), Next: Kind Intrinsic, Prev: ITime Intrinsic, Up: Table of Intrinsic Functions
! Kill Intrinsic (subroutine)
! ...........................
CALL Kill(PID, SIGNAL, STATUS)
--- 11197,11205 ----
File: g77.info, Node: Kill Intrinsic (subroutine), Next: Kind Intrinsic, Prev: ITime Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.158 Kill Intrinsic (subroutine)
! ......................................
!
CALL Kill(PID, SIGNAL, STATUS)
*************** Intrinsic (function)::.
*** 11085,11112 ****
File: g77.info, Node: Kind Intrinsic, Next: LBound Intrinsic, Prev: Kill Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Kind Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Kind' to use this name for an
! external procedure.
File: g77.info, Node: LBound Intrinsic, Next: Len Intrinsic, Prev: Kind Intrinsic, Up: Table of Intrinsic Functions
! LBound Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL LBound' to use this name for an
external procedure.
File: g77.info, Node: Len Intrinsic, Next: Len_Trim Intrinsic, Prev: LBound Intrinsic, Up: Table of Intrinsic Functions
! Len Intrinsic
! .............
Len(STRING)
--- 11227,11255 ----
File: g77.info, Node: Kind Intrinsic, Next: LBound Intrinsic, Prev: Kill Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.159 Kind Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Kind' to use this name for an external
! procedure.
File: g77.info, Node: LBound Intrinsic, Next: Len Intrinsic, Prev: Kind Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.160 LBound Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL LBound' to use this name for an
external procedure.
File: g77.info, Node: Len Intrinsic, Next: Len_Trim Intrinsic, Prev: LBound Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.161 Len Intrinsic
! ........................
!
Len(STRING)
*************** size of its argument in bits.
*** 11132,11139 ****
File: g77.info, Node: Len_Trim Intrinsic, Next: LGe Intrinsic, Prev: Len Intrinsic, Up: Table of Intrinsic Functions
! Len_Trim Intrinsic
! ..................
Len_Trim(STRING)
--- 11275,11283 ----
File: g77.info, Node: Len_Trim Intrinsic, Next: LGe Intrinsic, Prev: Len Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.162 Len_Trim Intrinsic
! .............................
!
Len_Trim(STRING)
*************** Description:
*** 11151,11158 ****
File: g77.info, Node: LGe Intrinsic, Next: LGt Intrinsic, Prev: Len_Trim Intrinsic, Up: Table of Intrinsic Functions
! LGe Intrinsic
! .............
LGe(STRING_A, STRING_B)
--- 11295,11303 ----
File: g77.info, Node: LGe Intrinsic, Next: LGt Intrinsic, Prev: Len_Trim Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.163 LGe Intrinsic
! ........................
!
LGe(STRING_A, STRING_B)
*************** and `.LE.'; and between `LLt' and `.LT.'
*** 11198,11205 ****
File: g77.info, Node: LGt Intrinsic, Next: Link Intrinsic (subroutine), Prev: LGe Intrinsic, Up: Table of Intrinsic Functions
! LGt Intrinsic
! .............
LGt(STRING_A, STRING_B)
--- 11343,11351 ----
File: g77.info, Node: LGt Intrinsic, Next: Link Intrinsic (subroutine), Prev: LGe Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.164 LGt Intrinsic
! ........................
!
LGt(STRING_A, STRING_B)
*************** the `LGT' intrinsic and the `.GT.' opera
*** 11228,11235 ****
File: g77.info, Node: Link Intrinsic (subroutine), Next: LLe Intrinsic, Prev: LGt Intrinsic, Up: Table of Intrinsic Functions
! Link Intrinsic (subroutine)
! ...........................
CALL Link(PATH1, PATH2, STATUS)
--- 11374,11382 ----
File: g77.info, Node: Link Intrinsic (subroutine), Next: LLe Intrinsic, Prev: LGt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.165 Link Intrinsic (subroutine)
! ......................................
!
CALL Link(PATH1, PATH2, STATUS)
*************** Intrinsic (function)::.
*** 11259,11266 ****
File: g77.info, Node: LLe Intrinsic, Next: LLt Intrinsic, Prev: Link Intrinsic (subroutine), Up: Table of Intrinsic Functions
! LLe Intrinsic
! .............
LLe(STRING_A, STRING_B)
--- 11406,11414 ----
File: g77.info, Node: LLe Intrinsic, Next: LLt Intrinsic, Prev: Link Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.166 LLe Intrinsic
! ........................
!
LLe(STRING_A, STRING_B)
*************** the `LLE' intrinsic and the `.LE.' opera
*** 11289,11296 ****
File: g77.info, Node: LLt Intrinsic, Next: LnBlnk Intrinsic, Prev: LLe Intrinsic, Up: Table of Intrinsic Functions
! LLt Intrinsic
! .............
LLt(STRING_A, STRING_B)
--- 11437,11445 ----
File: g77.info, Node: LLt Intrinsic, Next: LnBlnk Intrinsic, Prev: LLe Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.167 LLt Intrinsic
! ........................
!
LLt(STRING_A, STRING_B)
*************** the `LLT' intrinsic and the `.LT.' opera
*** 11319,11326 ****
File: g77.info, Node: LnBlnk Intrinsic, Next: Loc Intrinsic, Prev: LLt Intrinsic, Up: Table of Intrinsic Functions
! LnBlnk Intrinsic
! ................
LnBlnk(STRING)
--- 11468,11476 ----
File: g77.info, Node: LnBlnk Intrinsic, Next: Loc Intrinsic, Prev: LLt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.168 LnBlnk Intrinsic
! ...........................
!
LnBlnk(STRING)
*************** Description:
*** 11338,11345 ****
File: g77.info, Node: Loc Intrinsic, Next: Log Intrinsic, Prev: LnBlnk Intrinsic, Up: Table of Intrinsic Functions
! Loc Intrinsic
! .............
Loc(ENTITY)
--- 11488,11496 ----
File: g77.info, Node: Loc Intrinsic, Next: Log Intrinsic, Prev: LnBlnk Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.169 Loc Intrinsic
! ........................
!
Loc(ENTITY)
*************** Description:
*** 11357,11364 ****
File: g77.info, Node: Log Intrinsic, Next: Log10 Intrinsic, Prev: Loc Intrinsic, Up: Table of Intrinsic Functions
! Log Intrinsic
! .............
Log(X)
--- 11508,11516 ----
File: g77.info, Node: Log Intrinsic, Next: Log10 Intrinsic, Prev: Loc Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.170 Log Intrinsic
! ........................
!
Log(X)
*************** function.
*** 11382,11389 ****
File: g77.info, Node: Log10 Intrinsic, Next: Logical Intrinsic, Prev: Log Intrinsic, Up: Table of Intrinsic Functions
! Log10 Intrinsic
! ...............
Log10(X)
--- 11534,11542 ----
File: g77.info, Node: Log10 Intrinsic, Next: Logical Intrinsic, Prev: Log Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.171 Log10 Intrinsic
! ..........................
!
Log10(X)
*************** than zero.
*** 11406,11423 ****
File: g77.info, Node: Logical Intrinsic, Next: Long Intrinsic, Prev: Log10 Intrinsic, Up: Table of Intrinsic Functions
! Logical Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Logical' to use this name for
! an external procedure.
File: g77.info, Node: Long Intrinsic, Next: LShift Intrinsic, Prev: Logical Intrinsic, Up: Table of Intrinsic Functions
! Long Intrinsic
! ..............
Long(A)
--- 11559,11577 ----
File: g77.info, Node: Logical Intrinsic, Next: Long Intrinsic, Prev: Log10 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.172 Logical Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Logical' to use this name for an
! external procedure.
File: g77.info, Node: Long Intrinsic, Next: LShift Intrinsic, Prev: Logical Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.173 Long Intrinsic
! .........................
!
Long(A)
*************** used.
*** 11439,11446 ****
File: g77.info, Node: LShift Intrinsic, Next: LStat Intrinsic (subroutine), Prev: Long Intrinsic, Up: Table of Intrinsic Functions
! LShift Intrinsic
! ................
LShift(I, SHIFT)
--- 11593,11601 ----
File: g77.info, Node: LShift Intrinsic, Next: LStat Intrinsic (subroutine), Prev: Long Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.174 LShift Intrinsic
! ...........................
!
LShift(I, SHIFT)
*************** left-shifting intrinsic that is also mor
*** 11474,11481 ****
File: g77.info, Node: LStat Intrinsic (subroutine), Next: LStat Intrinsic (function), Prev: LShift Intrinsic, Up: Table of Intrinsic Functions
! LStat Intrinsic (subroutine)
! ............................
CALL LStat(FILE, SARRAY, STATUS)
--- 11629,11637 ----
File: g77.info, Node: LStat Intrinsic (subroutine), Next: LStat Intrinsic (function), Prev: LShift Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.175 LStat Intrinsic (subroutine)
! .......................................
!
CALL LStat(FILE, SARRAY, STATUS)
*************** Intrinsic (function)::.
*** 11541,11548 ****
File: g77.info, Node: LStat Intrinsic (function), Next: LTime Intrinsic, Prev: LStat Intrinsic (subroutine), Up: Table of Intrinsic Functions
! LStat Intrinsic (function)
! ..........................
LStat(FILE, SARRAY)
--- 11697,11705 ----
File: g77.info, Node: LStat Intrinsic (function), Next: LTime Intrinsic, Prev: LStat Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.176 LStat Intrinsic (function)
! .....................................
!
LStat(FILE, SARRAY)
*************** Intrinsic (subroutine)::.
*** 11603,11610 ****
File: g77.info, Node: LTime Intrinsic, Next: MatMul Intrinsic, Prev: LStat Intrinsic (function), Up: Table of Intrinsic Functions
! LTime Intrinsic
! ...............
CALL LTime(STIME, TARRAY)
--- 11760,11768 ----
File: g77.info, Node: LTime Intrinsic, Next: MatMul Intrinsic, Prev: LStat Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.177 LTime Intrinsic
! ..........................
!
CALL LTime(STIME, TARRAY)
*************** from it appropriate to the GMT time zone
*** 11645,11662 ****
File: g77.info, Node: MatMul Intrinsic, Next: Max Intrinsic, Prev: LTime Intrinsic, Up: Table of Intrinsic Functions
! MatMul Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MatMul' to use this name for an
external procedure.
File: g77.info, Node: Max Intrinsic, Next: Max0 Intrinsic, Prev: MatMul Intrinsic, Up: Table of Intrinsic Functions
! Max Intrinsic
! .............
Max(A-1, A-2, ..., A-n)
--- 11803,11821 ----
File: g77.info, Node: MatMul Intrinsic, Next: Max Intrinsic, Prev: LTime Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.178 MatMul Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MatMul' to use this name for an
external procedure.
File: g77.info, Node: Max Intrinsic, Next: Max0 Intrinsic, Prev: MatMul Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.179 Max Intrinsic
! ........................
!
Max(A-1, A-2, ..., A-n)
*************** Description:
*** 11677,11684 ****
File: g77.info, Node: Max0 Intrinsic, Next: Max1 Intrinsic, Prev: Max Intrinsic, Up: Table of Intrinsic Functions
! Max0 Intrinsic
! ..............
Max0(A-1, A-2, ..., A-n)
--- 11836,11844 ----
File: g77.info, Node: Max0 Intrinsic, Next: Max1 Intrinsic, Prev: Max Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.180 Max0 Intrinsic
! .........................
!
Max0(A-1, A-2, ..., A-n)
*************** Max Intrinsic::.
*** 11697,11704 ****
File: g77.info, Node: Max1 Intrinsic, Next: MaxExponent Intrinsic, Prev: Max0 Intrinsic, Up: Table of Intrinsic Functions
! Max1 Intrinsic
! ..............
Max1(A-1, A-2, ..., A-n)
--- 11857,11865 ----
File: g77.info, Node: Max1 Intrinsic, Next: MaxExponent Intrinsic, Prev: Max0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.181 Max1 Intrinsic
! .........................
!
Max1(A-1, A-2, ..., A-n)
*************** different return type. *Note Max Intrin
*** 11717,11754 ****
File: g77.info, Node: MaxExponent Intrinsic, Next: MaxLoc Intrinsic, Prev: Max1 Intrinsic, Up: Table of Intrinsic Functions
! MaxExponent Intrinsic
! .....................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MaxExponent' to use this name
! for an external procedure.
File: g77.info, Node: MaxLoc Intrinsic, Next: MaxVal Intrinsic, Prev: MaxExponent Intrinsic, Up: Table of Intrinsic Functions
! MaxLoc Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MaxLoc' to use this name for an
external procedure.
File: g77.info, Node: MaxVal Intrinsic, Next: MClock Intrinsic, Prev: MaxLoc Intrinsic, Up: Table of Intrinsic Functions
! MaxVal Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MaxVal' to use this name for an
external procedure.
File: g77.info, Node: MClock Intrinsic, Next: MClock8 Intrinsic, Prev: MaxVal Intrinsic, Up: Table of Intrinsic Functions
! MClock Intrinsic
! ................
MClock()
--- 11878,11916 ----
File: g77.info, Node: MaxExponent Intrinsic, Next: MaxLoc Intrinsic, Prev: Max1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.182 MaxExponent Intrinsic
! ................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MaxExponent' to use this name for an
! external procedure.
File: g77.info, Node: MaxLoc Intrinsic, Next: MaxVal Intrinsic, Prev: MaxExponent Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.183 MaxLoc Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MaxLoc' to use this name for an
external procedure.
File: g77.info, Node: MaxVal Intrinsic, Next: MClock Intrinsic, Prev: MaxLoc Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.184 MaxVal Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MaxVal' to use this name for an
external procedure.
File: g77.info, Node: MClock Intrinsic, Next: MClock8 Intrinsic, Prev: MaxVal Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.185 MClock Intrinsic
! ...........................
!
MClock()
*************** fewer Fortran compilers.
*** 11776,11783 ****
File: g77.info, Node: MClock8 Intrinsic, Next: Merge Intrinsic, Prev: MClock Intrinsic, Up: Table of Intrinsic Functions
! MClock8 Intrinsic
! .................
MClock8()
--- 11938,11946 ----
File: g77.info, Node: MClock8 Intrinsic, Next: Merge Intrinsic, Prev: MClock Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.186 MClock8 Intrinsic
! ............................
!
MClock8()
*************** implementations.
*** 11809,11826 ****
File: g77.info, Node: Merge Intrinsic, Next: Min Intrinsic, Prev: MClock8 Intrinsic, Up: Table of Intrinsic Functions
! Merge Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Merge' to use this name for an
! external procedure.
File: g77.info, Node: Min Intrinsic, Next: Min0 Intrinsic, Prev: Merge Intrinsic, Up: Table of Intrinsic Functions
! Min Intrinsic
! .............
Min(A-1, A-2, ..., A-n)
--- 11972,11990 ----
File: g77.info, Node: Merge Intrinsic, Next: Min Intrinsic, Prev: MClock8 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.187 Merge Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Merge' to use this name for an external
! procedure.
File: g77.info, Node: Min Intrinsic, Next: Min0 Intrinsic, Prev: Merge Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.188 Min Intrinsic
! ........................
!
Min(A-1, A-2, ..., A-n)
*************** Description:
*** 11841,11848 ****
File: g77.info, Node: Min0 Intrinsic, Next: Min1 Intrinsic, Prev: Min Intrinsic, Up: Table of Intrinsic Functions
! Min0 Intrinsic
! ..............
Min0(A-1, A-2, ..., A-n)
--- 12005,12013 ----
File: g77.info, Node: Min0 Intrinsic, Next: Min1 Intrinsic, Prev: Min Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.189 Min0 Intrinsic
! .........................
!
Min0(A-1, A-2, ..., A-n)
*************** Min Intrinsic::.
*** 11861,11868 ****
File: g77.info, Node: Min1 Intrinsic, Next: MinExponent Intrinsic, Prev: Min0 Intrinsic, Up: Table of Intrinsic Functions
! Min1 Intrinsic
! ..............
Min1(A-1, A-2, ..., A-n)
--- 12026,12034 ----
File: g77.info, Node: Min1 Intrinsic, Next: MinExponent Intrinsic, Prev: Min0 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.190 Min1 Intrinsic
! .........................
!
Min1(A-1, A-2, ..., A-n)
*************** different return type. *Note Min Intrin
*** 11881,11918 ****
File: g77.info, Node: MinExponent Intrinsic, Next: MinLoc Intrinsic, Prev: Min1 Intrinsic, Up: Table of Intrinsic Functions
! MinExponent Intrinsic
! .....................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MinExponent' to use this name
! for an external procedure.
File: g77.info, Node: MinLoc Intrinsic, Next: MinVal Intrinsic, Prev: MinExponent Intrinsic, Up: Table of Intrinsic Functions
! MinLoc Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MinLoc' to use this name for an
external procedure.
File: g77.info, Node: MinVal Intrinsic, Next: Mod Intrinsic, Prev: MinLoc Intrinsic, Up: Table of Intrinsic Functions
! MinVal Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL MinVal' to use this name for an
external procedure.
File: g77.info, Node: Mod Intrinsic, Next: Modulo Intrinsic, Prev: MinVal Intrinsic, Up: Table of Intrinsic Functions
! Mod Intrinsic
! .............
Mod(A, P)
--- 12047,12085 ----
File: g77.info, Node: MinExponent Intrinsic, Next: MinLoc Intrinsic, Prev: Min1 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.191 MinExponent Intrinsic
! ................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MinExponent' to use this name for an
! external procedure.
File: g77.info, Node: MinLoc Intrinsic, Next: MinVal Intrinsic, Prev: MinExponent Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.192 MinLoc Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MinLoc' to use this name for an
external procedure.
File: g77.info, Node: MinVal Intrinsic, Next: Mod Intrinsic, Prev: MinLoc Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.193 MinVal Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL MinVal' to use this name for an
external procedure.
File: g77.info, Node: Mod Intrinsic, Next: Modulo Intrinsic, Prev: MinVal Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.194 Mod Intrinsic
! ........................
!
Mod(A, P)
*************** Description:
*** 11936,11953 ****
File: g77.info, Node: Modulo Intrinsic, Next: MvBits Intrinsic, Prev: Mod Intrinsic, Up: Table of Intrinsic Functions
! Modulo Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Modulo' to use this name for an
external procedure.
File: g77.info, Node: MvBits Intrinsic, Next: Nearest Intrinsic, Prev: Modulo Intrinsic, Up: Table of Intrinsic Functions
! MvBits Intrinsic
! ................
CALL MvBits(FROM, FROMPOS, LEN, TO, TOPOS)
--- 12103,12121 ----
File: g77.info, Node: Modulo Intrinsic, Next: MvBits Intrinsic, Prev: Mod Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.195 Modulo Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Modulo' to use this name for an
external procedure.
File: g77.info, Node: MvBits Intrinsic, Next: Nearest Intrinsic, Prev: Modulo Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.196 MvBits Intrinsic
! ...........................
!
CALL MvBits(FROM, FROMPOS, LEN, TO, TOPOS)
*************** equal to `BIT_SIZE(FROM)'.
*** 11976,11993 ****
File: g77.info, Node: Nearest Intrinsic, Next: NInt Intrinsic, Prev: MvBits Intrinsic, Up: Table of Intrinsic Functions
! Nearest Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Nearest' to use this name for
! an external procedure.
File: g77.info, Node: NInt Intrinsic, Next: Not Intrinsic, Prev: Nearest Intrinsic, Up: Table of Intrinsic Functions
! NInt Intrinsic
! ..............
NInt(A)
--- 12144,12162 ----
File: g77.info, Node: Nearest Intrinsic, Next: NInt Intrinsic, Prev: MvBits Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.197 Nearest Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Nearest' to use this name for an
! external procedure.
File: g77.info, Node: NInt Intrinsic, Next: Not Intrinsic, Prev: Nearest Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.198 NInt Intrinsic
! .........................
!
NInt(A)
*************** without converting.
*** 12016,12023 ****
File: g77.info, Node: Not Intrinsic, Next: Or Intrinsic, Prev: NInt Intrinsic, Up: Table of Intrinsic Functions
! Not Intrinsic
! .............
Not(I)
--- 12185,12193 ----
File: g77.info, Node: Not Intrinsic, Next: Or Intrinsic, Prev: NInt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.199 Not Intrinsic
! ........................
!
Not(I)
*************** Description:
*** 12035,12042 ****
File: g77.info, Node: Or Intrinsic, Next: Pack Intrinsic, Prev: Not Intrinsic, Up: Table of Intrinsic Functions
! Or Intrinsic
! ............
Or(I, J)
--- 12205,12213 ----
File: g77.info, Node: Or Intrinsic, Next: Pack Intrinsic, Prev: Not Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.200 Or Intrinsic
! .......................
!
Or(I, J)
*************** and J.
*** 12057,12074 ****
File: g77.info, Node: Pack Intrinsic, Next: PError Intrinsic, Prev: Or Intrinsic, Up: Table of Intrinsic Functions
! Pack Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Pack' to use this name for an
! external procedure.
File: g77.info, Node: PError Intrinsic, Next: Precision Intrinsic, Prev: Pack Intrinsic, Up: Table of Intrinsic Functions
! PError Intrinsic
! ................
CALL PError(STRING)
--- 12228,12246 ----
File: g77.info, Node: Pack Intrinsic, Next: PError Intrinsic, Prev: Or Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.201 Pack Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Pack' to use this name for an external
! procedure.
File: g77.info, Node: PError Intrinsic, Next: Precision Intrinsic, Prev: Pack Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.202 PError Intrinsic
! ...........................
!
CALL PError(STRING)
*************** colon and a space. See `perror(3)'.
*** 12085,12132 ****
File: g77.info, Node: Precision Intrinsic, Next: Present Intrinsic, Prev: PError Intrinsic, Up: Table of Intrinsic Functions
! Precision Intrinsic
! ...................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Precision' to use this name
! for an external procedure.
File: g77.info, Node: Present Intrinsic, Next: Product Intrinsic, Prev: Precision Intrinsic, Up: Table of Intrinsic Functions
! Present Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Present' to use this name for
! an external procedure.
File: g77.info, Node: Product Intrinsic, Next: Radix Intrinsic, Prev: Present Intrinsic, Up: Table of Intrinsic Functions
! Product Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Product' to use this name for
! an external procedure.
File: g77.info, Node: Radix Intrinsic, Next: Rand Intrinsic, Prev: Product Intrinsic, Up: Table of Intrinsic Functions
! Radix Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Radix' to use this name for an
! external procedure.
File: g77.info, Node: Rand Intrinsic, Next: Random_Number Intrinsic, Prev: Radix Intrinsic, Up: Table of Intrinsic Functions
! Rand Intrinsic
! ..............
Rand(FLAG)
--- 12257,12305 ----
File: g77.info, Node: Precision Intrinsic, Next: Present Intrinsic, Prev: PError Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.203 Precision Intrinsic
! ..............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Precision' to use this name for an
! external procedure.
File: g77.info, Node: Present Intrinsic, Next: Product Intrinsic, Prev: Precision Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.204 Present Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Present' to use this name for an
! external procedure.
File: g77.info, Node: Product Intrinsic, Next: Radix Intrinsic, Prev: Present Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.205 Product Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Product' to use this name for an
! external procedure.
File: g77.info, Node: Radix Intrinsic, Next: Rand Intrinsic, Prev: Product Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.206 Radix Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Radix' to use this name for an external
! procedure.
File: g77.info, Node: Rand Intrinsic, Next: Random_Number Intrinsic, Prev: Radix Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.207 Rand Intrinsic
! .........................
!
Rand(FLAG)
*************** use something better.
*** 12154,12191 ****
File: g77.info, Node: Random_Number Intrinsic, Next: Random_Seed Intrinsic, Prev: Rand Intrinsic, Up: Table of Intrinsic Functions
! Random_Number Intrinsic
! .......................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Random_Number' to use this
! name for an external procedure.
File: g77.info, Node: Random_Seed Intrinsic, Next: Range Intrinsic, Prev: Random_Number Intrinsic, Up: Table of Intrinsic Functions
! Random_Seed Intrinsic
! .....................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Random_Seed' to use this name
! for an external procedure.
File: g77.info, Node: Range Intrinsic, Next: Real Intrinsic, Prev: Random_Seed Intrinsic, Up: Table of Intrinsic Functions
! Range Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Range' to use this name for an
! external procedure.
File: g77.info, Node: Real Intrinsic, Next: RealPart Intrinsic, Prev: Range Intrinsic, Up: Table of Intrinsic Functions
! Real Intrinsic
! ..............
Real(A)
--- 12327,12365 ----
File: g77.info, Node: Random_Number Intrinsic, Next: Random_Seed Intrinsic, Prev: Rand Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.208 Random_Number Intrinsic
! ..................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Random_Number' to use this name for an
! external procedure.
File: g77.info, Node: Random_Seed Intrinsic, Next: Range Intrinsic, Prev: Random_Number Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.209 Random_Seed Intrinsic
! ................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Random_Seed' to use this name for an
! external procedure.
File: g77.info, Node: Range Intrinsic, Next: Real Intrinsic, Prev: Random_Seed Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.210 Range Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Range' to use this name for an external
! procedure.
File: g77.info, Node: Real Intrinsic, Next: RealPart Intrinsic, Prev: Range Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.211 Real Intrinsic
! .........................
!
Real(A)
*************** intrinsic that extracts the real part of
*** 12218,12225 ****
File: g77.info, Node: RealPart Intrinsic, Next: Rename Intrinsic (subroutine), Prev: Real Intrinsic, Up: Table of Intrinsic Functions
! RealPart Intrinsic
! ..................
RealPart(Z)
--- 12392,12400 ----
File: g77.info, Node: RealPart Intrinsic, Next: Rename Intrinsic (subroutine), Prev: Real Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.212 RealPart Intrinsic
! .............................
!
RealPart(Z)
*************** doesn't support it to produce a diagnost
*** 12249,12256 ****
File: g77.info, Node: Rename Intrinsic (subroutine), Next: Repeat Intrinsic, Prev: RealPart Intrinsic, Up: Table of Intrinsic Functions
! Rename Intrinsic (subroutine)
! .............................
CALL Rename(PATH1, PATH2, STATUS)
--- 12424,12432 ----
File: g77.info, Node: Rename Intrinsic (subroutine), Next: Repeat Intrinsic, Prev: RealPart Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.213 Rename Intrinsic (subroutine)
! ........................................
!
CALL Rename(PATH1, PATH2, STATUS)
*************** Intrinsic (function)::.
*** 12280,12317 ****
File: g77.info, Node: Repeat Intrinsic, Next: Reshape Intrinsic, Prev: Rename Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Repeat Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Repeat' to use this name for an
external procedure.
File: g77.info, Node: Reshape Intrinsic, Next: RRSpacing Intrinsic, Prev: Repeat Intrinsic, Up: Table of Intrinsic Functions
! Reshape Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Reshape' to use this name for
! an external procedure.
File: g77.info, Node: RRSpacing Intrinsic, Next: RShift Intrinsic, Prev: Reshape Intrinsic, Up: Table of Intrinsic Functions
! RRSpacing Intrinsic
! ...................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL RRSpacing' to use this name
! for an external procedure.
File: g77.info, Node: RShift Intrinsic, Next: Scale Intrinsic, Prev: RRSpacing Intrinsic, Up: Table of Intrinsic Functions
! RShift Intrinsic
! ................
RShift(I, SHIFT)
--- 12456,12494 ----
File: g77.info, Node: Repeat Intrinsic, Next: Reshape Intrinsic, Prev: Rename Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.214 Repeat Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Repeat' to use this name for an
external procedure.
File: g77.info, Node: Reshape Intrinsic, Next: RRSpacing Intrinsic, Prev: Repeat Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.215 Reshape Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Reshape' to use this name for an
! external procedure.
File: g77.info, Node: RRSpacing Intrinsic, Next: RShift Intrinsic, Prev: Reshape Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.216 RRSpacing Intrinsic
! ..............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL RRSpacing' to use this name for an
! external procedure.
File: g77.info, Node: RShift Intrinsic, Next: Scale Intrinsic, Prev: RRSpacing Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.217 RShift Intrinsic
! ...........................
!
RShift(I, SHIFT)
*************** right-shifting intrinsic that is also mo
*** 12345,12372 ****
File: g77.info, Node: Scale Intrinsic, Next: Scan Intrinsic, Prev: RShift Intrinsic, Up: Table of Intrinsic Functions
! Scale Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Scale' to use this name for an
! external procedure.
File: g77.info, Node: Scan Intrinsic, Next: Second Intrinsic (function), Prev: Scale Intrinsic, Up: Table of Intrinsic Functions
! Scan Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Scan' to use this name for an
! external procedure.
File: g77.info, Node: Second Intrinsic (function), Next: Second Intrinsic (subroutine), Prev: Scan Intrinsic, Up: Table of Intrinsic Functions
! Second Intrinsic (function)
! ...........................
Second()
--- 12522,12550 ----
File: g77.info, Node: Scale Intrinsic, Next: Scan Intrinsic, Prev: RShift Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.218 Scale Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Scale' to use this name for an external
! procedure.
File: g77.info, Node: Scan Intrinsic, Next: Second Intrinsic (function), Prev: Scale Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.219 Scan Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Scan' to use this name for an external
! procedure.
File: g77.info, Node: Second Intrinsic (function), Next: Second Intrinsic (subroutine), Prev: Scan Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.220 Second Intrinsic (function)
! ......................................
!
Second()
*************** Intrinsic (subroutine)::.
*** 12391,12398 ****
File: g77.info, Node: Second Intrinsic (subroutine), Next: Selected_Int_Kind Intrinsic, Prev: Second Intrinsic (function), Up: Table of Intrinsic Functions
! Second Intrinsic (subroutine)
! .............................
CALL Second(SECONDS)
--- 12569,12577 ----
File: g77.info, Node: Second Intrinsic (subroutine), Next: Selected_Int_Kind Intrinsic, Prev: Second Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.221 Second Intrinsic (subroutine)
! ........................................
!
CALL Second(SECONDS)
*************** Intrinsic (function)::.
*** 12420,12467 ****
File: g77.info, Node: Selected_Int_Kind Intrinsic, Next: Selected_Real_Kind Intrinsic, Prev: Second Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Selected_Int_Kind Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Selected_Int_Kind' to use this
! name for an external procedure.
File: g77.info, Node: Selected_Real_Kind Intrinsic, Next: Set_Exponent Intrinsic, Prev: Selected_Int_Kind Intrinsic, Up: Table of Intrinsic Functions
! Selected_Real_Kind Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Selected_Real_Kind' to use
! this name for an external procedure.
File: g77.info, Node: Set_Exponent Intrinsic, Next: Shape Intrinsic, Prev: Selected_Real_Kind Intrinsic, Up: Table of Intrinsic Functions
! Set_Exponent Intrinsic
! ......................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Set_Exponent' to use this name
! for an external procedure.
File: g77.info, Node: Shape Intrinsic, Next: Short Intrinsic, Prev: Set_Exponent Intrinsic, Up: Table of Intrinsic Functions
! Shape Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Shape' to use this name for an
! external procedure.
File: g77.info, Node: Short Intrinsic, Next: Sign Intrinsic, Prev: Shape Intrinsic, Up: Table of Intrinsic Functions
! Short Intrinsic
! ...............
Short(A)
--- 12599,12647 ----
File: g77.info, Node: Selected_Int_Kind Intrinsic, Next: Selected_Real_Kind Intrinsic, Prev: Second Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.222 Selected_Int_Kind Intrinsic
! ......................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Selected_Int_Kind' to use this name for
! an external procedure.
File: g77.info, Node: Selected_Real_Kind Intrinsic, Next: Set_Exponent Intrinsic, Prev: Selected_Int_Kind Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.223 Selected_Real_Kind Intrinsic
! .......................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Selected_Real_Kind' to use this name
! for an external procedure.
File: g77.info, Node: Set_Exponent Intrinsic, Next: Shape Intrinsic, Prev: Selected_Real_Kind Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.224 Set_Exponent Intrinsic
! .................................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Set_Exponent' to use this name for an
! external procedure.
File: g77.info, Node: Shape Intrinsic, Next: Short Intrinsic, Prev: Set_Exponent Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.225 Shape Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Shape' to use this name for an external
! procedure.
File: g77.info, Node: Short Intrinsic, Next: Sign Intrinsic, Prev: Shape Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.226 Short Intrinsic
! ..........................
!
Short(A)
*************** used.
*** 12488,12495 ****
File: g77.info, Node: Sign Intrinsic, Next: Signal Intrinsic (subroutine), Prev: Short Intrinsic, Up: Table of Intrinsic Functions
! Sign Intrinsic
! ..............
Sign(A, B)
--- 12668,12676 ----
File: g77.info, Node: Sign Intrinsic, Next: Signal Intrinsic (subroutine), Prev: Short Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.227 Sign Intrinsic
! .........................
!
Sign(A, B)
*************** of a value.
*** 12512,12519 ****
File: g77.info, Node: Signal Intrinsic (subroutine), Next: Sin Intrinsic, Prev: Sign Intrinsic, Up: Table of Intrinsic Functions
! Signal Intrinsic (subroutine)
! .............................
CALL Signal(NUMBER, HANDLER, STATUS)
--- 12693,12701 ----
File: g77.info, Node: Signal Intrinsic (subroutine), Next: Sin Intrinsic, Prev: Sign Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.228 Signal Intrinsic (subroutine)
! ........................................
!
CALL Signal(NUMBER, HANDLER, STATUS)
*************** Intrinsic (function)::.
*** 12572,12579 ****
File: g77.info, Node: Sin Intrinsic, Next: SinH Intrinsic, Prev: Signal Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Sin Intrinsic
! .............
Sin(X)
--- 12754,12762 ----
File: g77.info, Node: Sin Intrinsic, Next: SinH Intrinsic, Prev: Signal Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.229 Sin Intrinsic
! ........................
!
Sin(X)
*************** Description:
*** 12593,12600 ****
File: g77.info, Node: SinH Intrinsic, Next: Sleep Intrinsic, Prev: Sin Intrinsic, Up: Table of Intrinsic Functions
! SinH Intrinsic
! ..............
SinH(X)
--- 12776,12784 ----
File: g77.info, Node: SinH Intrinsic, Next: Sleep Intrinsic, Prev: Sin Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.230 SinH Intrinsic
! .........................
!
SinH(X)
*************** Description:
*** 12612,12619 ****
File: g77.info, Node: Sleep Intrinsic, Next: Sngl Intrinsic, Prev: SinH Intrinsic, Up: Table of Intrinsic Functions
! Sleep Intrinsic
! ...............
CALL Sleep(SECONDS)
--- 12796,12804 ----
File: g77.info, Node: Sleep Intrinsic, Next: Sngl Intrinsic, Prev: SinH Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.231 Sleep Intrinsic
! ..........................
!
CALL Sleep(SECONDS)
*************** Description:
*** 12628,12635 ****
File: g77.info, Node: Sngl Intrinsic, Next: Spacing Intrinsic, Prev: Sleep Intrinsic, Up: Table of Intrinsic Functions
! Sngl Intrinsic
! ..............
Sngl(A)
--- 12813,12821 ----
File: g77.info, Node: Sngl Intrinsic, Next: Spacing Intrinsic, Prev: Sleep Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.232 Sngl Intrinsic
! .........................
!
Sngl(A)
*************** Real Intrinsic::.
*** 12647,12674 ****
File: g77.info, Node: Spacing Intrinsic, Next: Spread Intrinsic, Prev: Sngl Intrinsic, Up: Table of Intrinsic Functions
! Spacing Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Spacing' to use this name for
! an external procedure.
File: g77.info, Node: Spread Intrinsic, Next: SqRt Intrinsic, Prev: Spacing Intrinsic, Up: Table of Intrinsic Functions
! Spread Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Spread' to use this name for an
external procedure.
File: g77.info, Node: SqRt Intrinsic, Next: SRand Intrinsic, Prev: Spread Intrinsic, Up: Table of Intrinsic Functions
! SqRt Intrinsic
! ..............
SqRt(X)
--- 12833,12861 ----
File: g77.info, Node: Spacing Intrinsic, Next: Spread Intrinsic, Prev: Sngl Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.233 Spacing Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Spacing' to use this name for an
! external procedure.
File: g77.info, Node: Spread Intrinsic, Next: SqRt Intrinsic, Prev: Spacing Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.234 Spread Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Spread' to use this name for an
external procedure.
File: g77.info, Node: SqRt Intrinsic, Next: SRand Intrinsic, Prev: Spread Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.235 SqRt Intrinsic
! .........................
!
SqRt(X)
*************** complex arithmetic must be used. For ex
*** 12691,12698 ****
File: g77.info, Node: SRand Intrinsic, Next: Stat Intrinsic (subroutine), Prev: SqRt Intrinsic, Up: Table of Intrinsic Functions
! SRand Intrinsic
! ...............
CALL SRand(SEED)
--- 12878,12886 ----
File: g77.info, Node: SRand Intrinsic, Next: Stat Intrinsic (subroutine), Prev: SqRt Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.236 SRand Intrinsic
! ..........................
!
CALL SRand(SEED)
*************** Intrinsic::. *Note Rand Intrinsic::.
*** 12708,12715 ****
File: g77.info, Node: Stat Intrinsic (subroutine), Next: Stat Intrinsic (function), Prev: SRand Intrinsic, Up: Table of Intrinsic Functions
! Stat Intrinsic (subroutine)
! ...........................
CALL Stat(FILE, SARRAY, STATUS)
--- 12896,12904 ----
File: g77.info, Node: Stat Intrinsic (subroutine), Next: Stat Intrinsic (function), Prev: SRand Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.237 Stat Intrinsic (subroutine)
! ......................................
!
CALL Stat(FILE, SARRAY, STATUS)
*************** Intrinsic (function)::.
*** 12772,12779 ****
File: g77.info, Node: Stat Intrinsic (function), Next: Sum Intrinsic, Prev: Stat Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Stat Intrinsic (function)
! .........................
Stat(FILE, SARRAY)
--- 12961,12969 ----
File: g77.info, Node: Stat Intrinsic (function), Next: Sum Intrinsic, Prev: Stat Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.238 Stat Intrinsic (function)
! ....................................
!
Stat(FILE, SARRAY)
*************** Intrinsic (subroutine)::.
*** 12831,12848 ****
File: g77.info, Node: Sum Intrinsic, Next: SymLnk Intrinsic (subroutine), Prev: Stat Intrinsic (function), Up: Table of Intrinsic Functions
! Sum Intrinsic
! .............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Sum' to use this name for an
! external procedure.
File: g77.info, Node: SymLnk Intrinsic (subroutine), Next: System Intrinsic (subroutine), Prev: Sum Intrinsic, Up: Table of Intrinsic Functions
! SymLnk Intrinsic (subroutine)
! .............................
CALL SymLnk(PATH1, PATH2, STATUS)
--- 13021,13039 ----
File: g77.info, Node: Sum Intrinsic, Next: SymLnk Intrinsic (subroutine), Prev: Stat Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.239 Sum Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Sum' to use this name for an external
! procedure.
File: g77.info, Node: SymLnk Intrinsic (subroutine), Next: System Intrinsic (subroutine), Prev: Sum Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.240 SymLnk Intrinsic (subroutine)
! ........................................
!
CALL SymLnk(PATH1, PATH2, STATUS)
*************** Intrinsic (function)::.
*** 12872,12879 ****
File: g77.info, Node: System Intrinsic (subroutine), Next: System_Clock Intrinsic, Prev: SymLnk Intrinsic (subroutine), Up: Table of Intrinsic Functions
! System Intrinsic (subroutine)
! .............................
CALL System(COMMAND, STATUS)
--- 13063,13071 ----
File: g77.info, Node: System Intrinsic (subroutine), Next: System_Clock Intrinsic, Prev: SymLnk Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.241 System Intrinsic (subroutine)
! ........................................
!
CALL System(COMMAND, STATUS)
*************** Intrinsic (function)::.
*** 12901,12908 ****
File: g77.info, Node: System_Clock Intrinsic, Next: Tan Intrinsic, Prev: System Intrinsic (subroutine), Up: Table of Intrinsic Functions
! System_Clock Intrinsic
! ......................
CALL System_Clock(COUNT, RATE, MAX)
--- 13093,13101 ----
File: g77.info, Node: System_Clock Intrinsic, Next: Tan Intrinsic, Prev: System Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.242 System_Clock Intrinsic
! .................................
!
CALL System_Clock(COUNT, RATE, MAX)
*************** previous values, during a single run of
*** 12931,12938 ****
File: g77.info, Node: Tan Intrinsic, Next: TanH Intrinsic, Prev: System_Clock Intrinsic, Up: Table of Intrinsic Functions
! Tan Intrinsic
! .............
Tan(X)
--- 13124,13132 ----
File: g77.info, Node: Tan Intrinsic, Next: TanH Intrinsic, Prev: System_Clock Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.243 Tan Intrinsic
! ........................
!
Tan(X)
*************** Description:
*** 12952,12959 ****
File: g77.info, Node: TanH Intrinsic, Next: Time Intrinsic (UNIX), Prev: Tan Intrinsic, Up: Table of Intrinsic Functions
! TanH Intrinsic
! ..............
TanH(X)
--- 13146,13154 ----
File: g77.info, Node: TanH Intrinsic, Next: Time Intrinsic (UNIX), Prev: Tan Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.244 TanH Intrinsic
! .........................
!
TanH(X)
*************** Description:
*** 12971,12978 ****
File: g77.info, Node: Time Intrinsic (UNIX), Next: Time8 Intrinsic, Prev: TanH Intrinsic, Up: Table of Intrinsic Functions
! Time Intrinsic (UNIX)
! .....................
Time()
--- 13166,13174 ----
File: g77.info, Node: Time Intrinsic (UNIX), Next: Time8 Intrinsic, Prev: TanH Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.245 Time Intrinsic (UNIX)
! ................................
!
Time()
*************** Intrinsic (VXT)::.
*** 13002,13009 ****
File: g77.info, Node: Time8 Intrinsic, Next: Tiny Intrinsic, Prev: Time Intrinsic (UNIX), Up: Table of Intrinsic Functions
! Time8 Intrinsic
! ...............
Time8()
--- 13198,13206 ----
File: g77.info, Node: Time8 Intrinsic, Next: Tiny Intrinsic, Prev: Time Intrinsic (UNIX), Up: Table of Intrinsic Functions
! 8.11.9.246 Time8 Intrinsic
! ..........................
!
Time8()
*************** implementations.
*** 13034,13081 ****
File: g77.info, Node: Tiny Intrinsic, Next: Transfer Intrinsic, Prev: Time8 Intrinsic, Up: Table of Intrinsic Functions
! Tiny Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Tiny' to use this name for an
! external procedure.
File: g77.info, Node: Transfer Intrinsic, Next: Transpose Intrinsic, Prev: Tiny Intrinsic, Up: Table of Intrinsic Functions
! Transfer Intrinsic
! ..................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Transfer' to use this name for
! an external procedure.
File: g77.info, Node: Transpose Intrinsic, Next: Trim Intrinsic, Prev: Transfer Intrinsic, Up: Table of Intrinsic Functions
! Transpose Intrinsic
! ...................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Transpose' to use this name
! for an external procedure.
File: g77.info, Node: Trim Intrinsic, Next: TtyNam Intrinsic (subroutine), Prev: Transpose Intrinsic, Up: Table of Intrinsic Functions
! Trim Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Trim' to use this name for an
! external procedure.
File: g77.info, Node: TtyNam Intrinsic (subroutine), Next: TtyNam Intrinsic (function), Prev: Trim Intrinsic, Up: Table of Intrinsic Functions
! TtyNam Intrinsic (subroutine)
! .............................
CALL TtyNam(UNIT, NAME)
--- 13231,13279 ----
File: g77.info, Node: Tiny Intrinsic, Next: Transfer Intrinsic, Prev: Time8 Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.247 Tiny Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Tiny' to use this name for an external
! procedure.
File: g77.info, Node: Transfer Intrinsic, Next: Transpose Intrinsic, Prev: Tiny Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.248 Transfer Intrinsic
! .............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Transfer' to use this name for an
! external procedure.
File: g77.info, Node: Transpose Intrinsic, Next: Trim Intrinsic, Prev: Transfer Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.249 Transpose Intrinsic
! ..............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Transpose' to use this name for an
! external procedure.
File: g77.info, Node: Trim Intrinsic, Next: TtyNam Intrinsic (subroutine), Prev: Transpose Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.250 Trim Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Trim' to use this name for an external
! procedure.
File: g77.info, Node: TtyNam Intrinsic (subroutine), Next: TtyNam Intrinsic (function), Prev: Trim Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.251 TtyNam Intrinsic (subroutine)
! ........................................
!
CALL TtyNam(UNIT, NAME)
*************** Intrinsic (function)::.
*** 13099,13106 ****
File: g77.info, Node: TtyNam Intrinsic (function), Next: UBound Intrinsic, Prev: TtyNam Intrinsic (subroutine), Up: Table of Intrinsic Functions
! TtyNam Intrinsic (function)
! ...........................
TtyNam(UNIT)
--- 13297,13305 ----
File: g77.info, Node: TtyNam Intrinsic (function), Next: UBound Intrinsic, Prev: TtyNam Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.252 TtyNam Intrinsic (function)
! ......................................
!
TtyNam(UNIT)
*************** Intrinsic (subroutine)::.
*** 13121,13138 ****
File: g77.info, Node: UBound Intrinsic, Next: UMask Intrinsic (subroutine), Prev: TtyNam Intrinsic (function), Up: Table of Intrinsic Functions
! UBound Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL UBound' to use this name for an
external procedure.
File: g77.info, Node: UMask Intrinsic (subroutine), Next: Unlink Intrinsic (subroutine), Prev: UBound Intrinsic, Up: Table of Intrinsic Functions
! UMask Intrinsic (subroutine)
! ............................
CALL UMask(MASK, OLD)
--- 13320,13338 ----
File: g77.info, Node: UBound Intrinsic, Next: UMask Intrinsic (subroutine), Prev: TtyNam Intrinsic (function), Up: Table of Intrinsic Functions
! 8.11.9.253 UBound Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL UBound' to use this name for an
external procedure.
File: g77.info, Node: UMask Intrinsic (subroutine), Next: Unlink Intrinsic (subroutine), Prev: UBound Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.254 UMask Intrinsic (subroutine)
! .......................................
!
CALL UMask(MASK, OLD)
*************** Intrinsic (function)::.
*** 13156,13163 ****
File: g77.info, Node: Unlink Intrinsic (subroutine), Next: Unpack Intrinsic, Prev: UMask Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Unlink Intrinsic (subroutine)
! .............................
CALL Unlink(FILE, STATUS)
--- 13356,13364 ----
File: g77.info, Node: Unlink Intrinsic (subroutine), Next: Unpack Intrinsic, Prev: UMask Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.255 Unlink Intrinsic (subroutine)
! ........................................
!
CALL Unlink(FILE, STATUS)
*************** Intrinsic (function)::.
*** 13184,13211 ****
File: g77.info, Node: Unpack Intrinsic, Next: Verify Intrinsic, Prev: Unlink Intrinsic (subroutine), Up: Table of Intrinsic Functions
! Unpack Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Unpack' to use this name for an
external procedure.
File: g77.info, Node: Verify Intrinsic, Next: XOr Intrinsic, Prev: Unpack Intrinsic, Up: Table of Intrinsic Functions
! Verify Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL Verify' to use this name for an
external procedure.
File: g77.info, Node: XOr Intrinsic, Next: ZAbs Intrinsic, Prev: Verify Intrinsic, Up: Table of Intrinsic Functions
! XOr Intrinsic
! .............
XOr(I, J)
--- 13385,13413 ----
File: g77.info, Node: Unpack Intrinsic, Next: Verify Intrinsic, Prev: Unlink Intrinsic (subroutine), Up: Table of Intrinsic Functions
! 8.11.9.256 Unpack Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Unpack' to use this name for an
external procedure.
File: g77.info, Node: Verify Intrinsic, Next: XOr Intrinsic, Prev: Unpack Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.257 Verify Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL Verify' to use this name for an
external procedure.
File: g77.info, Node: XOr Intrinsic, Next: ZAbs Intrinsic, Prev: Verify Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.258 XOr Intrinsic
! ........................
!
XOr(I, J)
*************** each of I and J.
*** 13226,13233 ****
File: g77.info, Node: ZAbs Intrinsic, Next: ZCos Intrinsic, Prev: XOr Intrinsic, Up: Table of Intrinsic Functions
! ZAbs Intrinsic
! ..............
ZAbs(A)
--- 13428,13436 ----
File: g77.info, Node: ZAbs Intrinsic, Next: ZCos Intrinsic, Prev: XOr Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.259 ZAbs Intrinsic
! .........................
!
ZAbs(A)
*************** Abs Intrinsic::.
*** 13245,13252 ****
File: g77.info, Node: ZCos Intrinsic, Next: ZExp Intrinsic, Prev: ZAbs Intrinsic, Up: Table of Intrinsic Functions
! ZCos Intrinsic
! ..............
ZCos(X)
--- 13448,13456 ----
File: g77.info, Node: ZCos Intrinsic, Next: ZExp Intrinsic, Prev: ZAbs Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.260 ZCos Intrinsic
! .........................
!
ZCos(X)
*************** Cos Intrinsic::.
*** 13264,13271 ****
File: g77.info, Node: ZExp Intrinsic, Next: ZLog Intrinsic, Prev: ZCos Intrinsic, Up: Table of Intrinsic Functions
! ZExp Intrinsic
! ..............
ZExp(X)
--- 13468,13476 ----
File: g77.info, Node: ZExp Intrinsic, Next: ZLog Intrinsic, Prev: ZCos Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.261 ZExp Intrinsic
! .........................
!
ZExp(X)
*************** Exp Intrinsic::.
*** 13283,13290 ****
File: g77.info, Node: ZLog Intrinsic, Next: ZSin Intrinsic, Prev: ZExp Intrinsic, Up: Table of Intrinsic Functions
! ZLog Intrinsic
! ..............
ZLog(X)
--- 13488,13496 ----
File: g77.info, Node: ZLog Intrinsic, Next: ZSin Intrinsic, Prev: ZExp Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.262 ZLog Intrinsic
! .........................
!
ZLog(X)
*************** Log Intrinsic::.
*** 13302,13309 ****
File: g77.info, Node: ZSin Intrinsic, Next: ZSqRt Intrinsic, Prev: ZLog Intrinsic, Up: Table of Intrinsic Functions
! ZSin Intrinsic
! ..............
ZSin(X)
--- 13508,13516 ----
File: g77.info, Node: ZSin Intrinsic, Next: ZSqRt Intrinsic, Prev: ZLog Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.263 ZSin Intrinsic
! .........................
!
ZSin(X)
*************** Sin Intrinsic::.
*** 13321,13328 ****
File: g77.info, Node: ZSqRt Intrinsic, Prev: ZSin Intrinsic, Up: Table of Intrinsic Functions
! ZSqRt Intrinsic
! ...............
ZSqRt(X)
--- 13528,13536 ----
File: g77.info, Node: ZSqRt Intrinsic, Prev: ZSin Intrinsic, Up: Table of Intrinsic Functions
! 8.11.9.264 ZSqRt Intrinsic
! ..........................
!
ZSqRt(X)
*************** SqRt Intrinsic::.
*** 13340,13349 ****
File: g77.info, Node: Scope and Classes of Names, Next: I/O, Prev: Functions and Subroutines, Up: Language
! Scope and Classes of Symbolic Names
! ===================================
! (The following information augments or overrides the information in
Chapter 18 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 18 of that document otherwise serves as the basis
for the relevant aspects of GNU Fortran.)
--- 13548,13557 ----
File: g77.info, Node: Scope and Classes of Names, Next: I/O, Prev: Functions and Subroutines, Up: Language
! 8.12 Scope and Classes of Symbolic Names
! ========================================
! (The following information augments or overrides the information in
Chapter 18 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 18 of that document otherwise serves as the basis
for the relevant aspects of GNU Fortran.)
*************** for the relevant aspects of GNU Fortran.
*** 13355,13373 ****
File: g77.info, Node: Underscores in Symbol Names, Up: Scope and Classes of Names
! Underscores in Symbol Names
! ---------------------------
! Underscores (`_') are accepted in symbol names after the first
character (which must be a letter).
File: g77.info, Node: I/O, Next: Fortran 90 Features, Prev: Scope and Classes of Names, Up: Language
! I/O
! ===
! A dollar sign at the end of an output format specification suppresses
the newline at the end of the output.
Edit descriptors in `FORMAT' statements may contain compile-time
--- 13563,13581 ----
File: g77.info, Node: Underscores in Symbol Names, Up: Scope and Classes of Names
! 8.12.1 Underscores in Symbol Names
! ----------------------------------
! Underscores (`_') are accepted in symbol names after the first
character (which must be a letter).
File: g77.info, Node: I/O, Next: Fortran 90 Features, Prev: Scope and Classes of Names, Up: Language
! 8.13 I/O
! ========
! A dollar sign at the end of an output format specification suppresses
the newline at the end of the output.
Edit descriptors in `FORMAT' statements may contain compile-time
*************** the newline at the end of the output.
*** 13387,13396 ****
File: g77.info, Node: Fortran 90 Features, Prev: I/O, Up: Language
! Fortran 90 Features
! ===================
! For convenience this section collects a list (probably incomplete) of
the Fortran 90 features supported by the GNU Fortran language, even if
they are documented elsewhere. *Note Characters, Lines, and Execution
Sequence: Characters Lines Sequence, for information on additional
--- 13595,13604 ----
File: g77.info, Node: Fortran 90 Features, Prev: I/O, Up: Language
! 8.14 Fortran 90 Features
! ========================
! For convenience this section collects a list (probably incomplete) of
the Fortran 90 features supported by the GNU Fortran language, even if
they are documented elsewhere. *Note Characters, Lines, and Execution
Sequence: Characters Lines Sequence, for information on additional
*************** Specification statements
*** 13477,13488 ****
File: g77.info, Node: Other Dialects, Next: Other Compilers, Prev: Compiler, Up: Top
! Other Dialects
! **************
! GNU Fortran supports a variety of features that are not considered
! part of the GNU Fortran language itself, but are representative of
! various dialects of Fortran that `g77' supports in whole or in part.
Any of the features listed below might be disallowed by `g77' unless
some command-line option is specified. Currently, some of the features
--- 13685,13696 ----
File: g77.info, Node: Other Dialects, Next: Other Compilers, Prev: Compiler, Up: Top
! 9 Other Dialects
! ****************
! GNU Fortran supports a variety of features that are not considered part
! of the GNU Fortran language itself, but are representative of various
! dialects of Fortran that `g77' supports in whole or in part.
Any of the features listed below might be disallowed by `g77' unless
some command-line option is specified. Currently, some of the features
*************** work!_
*** 13507,13517 ****
File: g77.info, Node: Source Form, Next: Trailing Comment, Up: Other Dialects
! Source Form
! ===========
! GNU Fortran accepts programs written in either fixed form or free
! form.
Fixed form corresponds to ANSI FORTRAN 77 (plus popular extensions,
such as allowing tabs) and Fortran 90's fixed form.
--- 13715,13724 ----
File: g77.info, Node: Source Form, Next: Trailing Comment, Up: Other Dialects
! 9.1 Source Form
! ===============
! GNU Fortran accepts programs written in either fixed form or free form.
Fixed form corresponds to ANSI FORTRAN 77 (plus popular extensions,
such as allowing tabs) and Fortran 90's fixed form.
*************** popular compilers (`f2c', Digital ("DEC"
*** 13540,13560 ****
File: g77.info, Node: Carriage Returns, Next: Tabs, Up: Source Form
! Carriage Returns
! ----------------
! Carriage returns (`\r') in source lines are ignored. This is
! somewhat different from `f2c', which seems to treat them as spaces
! outside character/Hollerith constants, and encodes them as `\r' inside
! such constants.
File: g77.info, Node: Tabs, Next: Short Lines, Prev: Carriage Returns, Up: Source Form
! Tabs
! ----
! A source line with a character anywhere in it is treated as
entirely significant--however long it is--instead of ending in column
72 (for fixed-form source) or 132 (for free-form source). This also is
different from `f2c', which encodes tabs as `\t' (the ASCII
--- 13747,13767 ----
File: g77.info, Node: Carriage Returns, Next: Tabs, Up: Source Form
! 9.1.1 Carriage Returns
! ----------------------
! Carriage returns (`\r') in source lines are ignored. This is somewhat
! different from `f2c', which seems to treat them as spaces outside
! character/Hollerith constants, and encodes them as `\r' inside such
! constants.
File: g77.info, Node: Tabs, Next: Short Lines, Prev: Carriage Returns, Up: Source Form
! 9.1.2 Tabs
! ----------
! A source line with a character anywhere in it is treated as
entirely significant--however long it is--instead of ending in column
72 (for fixed-form source) or 132 (for free-form source). This also is
different from `f2c', which encodes tabs as `\t' (the ASCII
*************** the length of the line and continued con
*** 13571,13582 ****
File: g77.info, Node: Short Lines, Next: Long Lines, Prev: Tabs, Up: Source Form
! Short Lines
! -----------
! Source lines shorter than the applicable fixed-form length are
! treated as if they were padded with spaces to that length. (None of
! this is relevant to source files written in free form.)
This affects only continued character and Hollerith constants, and
is a different interpretation than provided by some other popular
--- 13778,13789 ----
File: g77.info, Node: Short Lines, Next: Long Lines, Prev: Tabs, Up: Source Form
! 9.1.3 Short Lines
! -----------------
! Source lines shorter than the applicable fixed-form length are treated
! as if they were padded with spaces to that length. (None of this is
! relevant to source files written in free form.)
This affects only continued character and Hollerith constants, and
is a different interpretation than provided by some other popular
*************** like `-ffixed-line-length-none', for exa
*** 13595,13604 ****
File: g77.info, Node: Long Lines, Next: Ampersands, Prev: Short Lines, Up: Source Form
! Long Lines
! ----------
! Source lines longer than the applicable length are truncated to that
length. Currently, `g77' does not warn if the truncated characters are
not spaces, to accommodate existing code written for systems that
treated truncated text as commentary (especially in columns 73 through
--- 13802,13811 ----
File: g77.info, Node: Long Lines, Next: Ampersands, Prev: Short Lines, Up: Source Form
! 9.1.4 Long Lines
! ----------------
! Source lines longer than the applicable length are truncated to that
length. Currently, `g77' does not warn if the truncated characters are
not spaces, to accommodate existing code written for systems that
treated truncated text as commentary (especially in columns 73 through
*************** used to set the line length applicable t
*** 13611,13629 ****
File: g77.info, Node: Ampersands, Prev: Long Lines, Up: Source Form
! Ampersand Continuation Line
! ---------------------------
! A `&' in column 1 of fixed-form source denotes an arbitrary-length
continuation line, imitating the behavior of `f2c'.
File: g77.info, Node: Trailing Comment, Next: Debug Line, Prev: Source Form, Up: Other Dialects
! Trailing Comment
! ================
! `g77' supports use of `/*' to start a trailing comment. In the GNU
Fortran language, `!' is used for this purpose.
`/*' is not in the GNU Fortran language because the use of `/*' in a
--- 13818,13836 ----
File: g77.info, Node: Ampersands, Prev: Long Lines, Up: Source Form
! 9.1.5 Ampersand Continuation Line
! ---------------------------------
! A `&' in column 1 of fixed-form source denotes an arbitrary-length
continuation line, imitating the behavior of `f2c'.
File: g77.info, Node: Trailing Comment, Next: Debug Line, Prev: Source Form, Up: Other Dialects
! 9.2 Trailing Comment
! ====================
! `g77' supports use of `/*' to start a trailing comment. In the GNU
Fortran language, `!' is used for this purpose.
`/*' is not in the GNU Fortran language because the use of `/*' in a
*************** that compiles without error (though it w
*** 13639,13648 ****
File: g77.info, Node: Debug Line, Next: Dollar Signs, Prev: Trailing Comment, Up: Other Dialects
! Debug Line
! ==========
! Use of `D' or `d' as the first character (column 1) of a source line
denotes a debug line.
In turn, a debug line is treated as either a comment line or a
--- 13846,13855 ----
File: g77.info, Node: Debug Line, Next: Dollar Signs, Prev: Trailing Comment, Up: Other Dialects
! 9.3 Debug Line
! ==============
! Use of `D' or `d' as the first character (column 1) of a source line
denotes a debug line.
In turn, a debug line is treated as either a comment line or a
*************** normal lines.)
*** 13659,13681 ****
File: g77.info, Node: Dollar Signs, Next: Case Sensitivity, Prev: Debug Line, Up: Other Dialects
! Dollar Signs in Symbol Names
! ============================
! Dollar signs (`$') are allowed in symbol names (after the first
character) when the `-fdollar-ok' option is specified.
File: g77.info, Node: Case Sensitivity, Next: VXT Fortran, Prev: Dollar Signs, Up: Other Dialects
! Case Sensitivity
! ================
! GNU Fortran offers the programmer way too much flexibility in
! deciding how source files are to be treated vis-a-vis uppercase and
! lowercase characters. There are 66 useful settings that affect case
! sensitivity, plus 10 settings that are nearly useless, with the
! remaining 116 settings being either redundant or useless.
None of these settings have any effect on the contents of comments
(the text after a `c' or `C' in Column 1, for example) or of character
--- 13866,13888 ----
File: g77.info, Node: Dollar Signs, Next: Case Sensitivity, Prev: Debug Line, Up: Other Dialects
! 9.4 Dollar Signs in Symbol Names
! ================================
! Dollar signs (`$') are allowed in symbol names (after the first
character) when the `-fdollar-ok' option is specified.
File: g77.info, Node: Case Sensitivity, Next: VXT Fortran, Prev: Dollar Signs, Up: Other Dialects
! 9.5 Case Sensitivity
! ====================
! GNU Fortran offers the programmer way too much flexibility in deciding
! how source files are to be treated vis-a-vis uppercase and lowercase
! characters. There are 66 useful settings that affect case sensitivity,
! plus 10 settings that are nearly useless, with the remaining 116
! settings being either redundant or useless.
None of these settings have any effect on the contents of comments
(the text after a `c' or `C' in Column 1, for example) or of character
*************** two-letter format specifiers, such as `B
*** 13762,13778 ****
A0: -fsource-case-preserve
A1: -fsource-case-upper
A2: -fsource-case-lower
!
B0: -fmatch-case-any
B1: -fmatch-case-upper
B2: -fmatch-case-lower
B3: -fmatch-case-initcap
!
C0: -fintrin-case-any
C1: -fintrin-case-upper
C2: -fintrin-case-lower
C3: -fintrin-case-initcap
!
D0: -fsymbol-case-any
D1: -fsymbol-case-upper
D2: -fsymbol-case-lower
--- 13969,13985 ----
A0: -fsource-case-preserve
A1: -fsource-case-upper
A2: -fsource-case-lower
!
B0: -fmatch-case-any
B1: -fmatch-case-upper
B2: -fmatch-case-lower
B3: -fmatch-case-initcap
!
C0: -fintrin-case-any
C1: -fintrin-case-upper
C2: -fintrin-case-lower
C3: -fintrin-case-initcap
!
D0: -fsymbol-case-any
D1: -fsymbol-case-upper
D2: -fsymbol-case-lower
*************** something other than comments).
*** 13900,13910 ****
File: g77.info, Node: VXT Fortran, Next: Fortran 90, Prev: Case Sensitivity, Up: Other Dialects
! VXT Fortran
! ===========
! `g77' supports certain constructs that have different meanings in
! VXT Fortran than they do in the GNU Fortran language.
Generally, this manual uses the invented term VXT Fortran to refer
VAX FORTRAN (circa v4). That compiler offered many popular features,
--- 14107,14117 ----
File: g77.info, Node: VXT Fortran, Next: Fortran 90, Prev: Case Sensitivity, Up: Other Dialects
! 9.6 VXT Fortran
! ===============
! `g77' supports certain constructs that have different meanings in VXT
! Fortran than they do in the GNU Fortran language.
Generally, this manual uses the invented term VXT Fortran to refer
VAX FORTRAN (circa v4). That compiler offered many popular features,
*************** VXT Fortran), the VXT Fortran meaning is
*** 13930,13939 ****
File: g77.info, Node: Double Quote Meaning, Next: Exclamation Point, Up: VXT Fortran
! Meaning of Double Quote
! -----------------------
! `g77' treats double-quote (`"') as beginning an octal constant of
`INTEGER(KIND=1)' type when the `-fvxt' option is specified. The form
of this octal constant is
--- 14137,14146 ----
File: g77.info, Node: Double Quote Meaning, Next: Exclamation Point, Up: VXT Fortran
! 9.6.1 Meaning of Double Quote
! -----------------------------
! `g77' treats double-quote (`"') as beginning an octal constant of
`INTEGER(KIND=1)' type when the `-fvxt' option is specified. The form
of this octal constant is
*************** like `PRINT *,"2000 !comment?"' would be
*** 13960,13969 ****
File: g77.info, Node: Exclamation Point, Prev: Double Quote Meaning, Up: VXT Fortran
! Meaning of Exclamation Point in Column 6
! ----------------------------------------
! `g77' treats an exclamation point (`!') in column 6 of a fixed-form
source file as a continuation character rather than as the beginning of
a comment (as it does in any other column) when the `-fvxt' option is
specified.
--- 14167,14176 ----
File: g77.info, Node: Exclamation Point, Prev: Double Quote Meaning, Up: VXT Fortran
! 9.6.2 Meaning of Exclamation Point in Column 6
! ----------------------------------------------
! `g77' treats an exclamation point (`!') in column 6 of a fixed-form
source file as a continuation character rather than as the beginning of
a comment (as it does in any other column) when the `-fvxt' option is
specified.
*************** as a continuation line when it appears i
*** 13987,13997 ****
File: g77.info, Node: Fortran 90, Next: Pedantic Compilation, Prev: VXT Fortran, Up: Other Dialects
! Fortran 90
! ==========
! The GNU Fortran language includes a number of features that are part
! of Fortran 90, even when the `-ff90' option is not specified. The
features enabled by `-ff90' are intended to be those that, when `-ff90'
is not specified, would have another meaning to `g77'--usually meaning
something invalid in the GNU Fortran language.
--- 14194,14204 ----
File: g77.info, Node: Fortran 90, Next: Pedantic Compilation, Prev: VXT Fortran, Up: Other Dialects
! 9.7 Fortran 90
! ==============
! The GNU Fortran language includes a number of features that are part of
! Fortran 90, even when the `-ff90' option is not specified. The
features enabled by `-ff90' are intended to be those that, when `-ff90'
is not specified, would have another meaning to `g77'--usually meaning
something invalid in the GNU Fortran language.
*************** implementation is certainly incomplete a
*** 14013,14022 ****
File: g77.info, Node: Pedantic Compilation, Next: Distensions, Prev: Fortran 90, Up: Other Dialects
! Pedantic Compilation
! ====================
! The `-fpedantic' command-line option specifies that `g77' is to warn
about code that is not standard-conforming. This is useful for finding
some extensions `g77' accepts that other compilers might not accept.
(Note that the `-pedantic' and `-pedantic-errors' options always imply
--- 14220,14229 ----
File: g77.info, Node: Pedantic Compilation, Next: Distensions, Prev: Fortran 90, Up: Other Dialects
! 9.8 Pedantic Compilation
! ========================
! The `-fpedantic' command-line option specifies that `g77' is to warn
about code that is not standard-conforming. This is useful for finding
some extensions `g77' accepts that other compilers might not accept.
(Note that the `-pedantic' and `-pedantic-errors' options always imply
*************** constructs result in diagnostics:
*** 14135,14149 ****
File: g77.info, Node: Distensions, Prev: Pedantic Compilation, Up: Other Dialects
! Distensions
! ===========
! The `-fugly-*' command-line options determine whether certain
! features supported by VAX FORTRAN and other such compilers, but
! considered too ugly to be in code that can be changed to use safer
! and/or more portable constructs, are accepted. These are humorously
! referred to as "distensions", extensions that just plain look ugly in
! the harsh light of day.
* Menu:
--- 14342,14356 ----
File: g77.info, Node: Distensions, Prev: Pedantic Compilation, Up: Other Dialects
! 9.9 Distensions
! ===============
! The `-fugly-*' command-line options determine whether certain features
! supported by VAX FORTRAN and other such compilers, but considered too
! ugly to be in code that can be changed to use safer and/or more
! portable constructs, are accepted. These are humorously referred to as
! "distensions", extensions that just plain look ugly in the harsh light
! of day.
* Menu:
*************** the harsh light of day.
*** 14158,14167 ****
File: g77.info, Node: Ugly Implicit Argument Conversion, Next: Ugly Assumed-Size Arrays, Up: Distensions
! Implicit Argument Conversion
! ----------------------------
! The `-fno-ugly-args' option disables passing typeless and Hollerith
constants as actual arguments in procedure invocations. For example:
CALL FOO(4HABCD)
--- 14365,14374 ----
File: g77.info, Node: Ugly Implicit Argument Conversion, Next: Ugly Assumed-Size Arrays, Up: Distensions
! 9.9.1 Implicit Argument Conversion
! ----------------------------------
! The `-fno-ugly-args' option disables passing typeless and Hollerith
constants as actual arguments in procedure invocations. For example:
CALL FOO(4HABCD)
*************** portable. Therefore, they are enabled b
*** 14175,14185 ****
File: g77.info, Node: Ugly Assumed-Size Arrays, Next: Ugly Null Arguments, Prev: Ugly Implicit Argument Conversion, Up: Distensions
! Ugly Assumed-Size Arrays
! ------------------------
! The `-fugly-assumed' option enables the treatment of any array with
! a final dimension specified as `1' as an assumed-size array, as if `*'
had been specified instead.
For example, `DIMENSION X(1)' is treated as if it had read
--- 14382,14392 ----
File: g77.info, Node: Ugly Assumed-Size Arrays, Next: Ugly Null Arguments, Prev: Ugly Implicit Argument Conversion, Up: Distensions
! 9.9.2 Ugly Assumed-Size Arrays
! ------------------------------
! The `-fugly-assumed' option enables the treatment of any array with a
! final dimension specified as `1' as an assumed-size array, as if `*'
had been specified instead.
For example, `DIMENSION X(1)' is treated as if it had read
*************** statement (presumably in an `ENTRY' stat
*** 14218,14227 ****
File: g77.info, Node: Ugly Complex Part Extraction, Next: Ugly Conversion of Initializers, Prev: Ugly Null Arguments, Up: Distensions
! Ugly Complex Part Extraction
! ----------------------------
! The `-fugly-complex' option enables use of the `REAL()' and `AIMAG()'
intrinsics with arguments that are `COMPLEX' types other than
`COMPLEX(KIND=1)'.
--- 14425,14434 ----
File: g77.info, Node: Ugly Complex Part Extraction, Next: Ugly Conversion of Initializers, Prev: Ugly Null Arguments, Up: Distensions
! 9.9.3 Ugly Complex Part Extraction
! ----------------------------------
! The `-fugly-complex' option enables use of the `REAL()' and `AIMAG()'
intrinsics with arguments that are `COMPLEX' types other than
`COMPLEX(KIND=1)'.
*************** expression without conversion.
*** 14259,14268 ****
File: g77.info, Node: Ugly Null Arguments, Next: Ugly Complex Part Extraction, Prev: Ugly Assumed-Size Arrays, Up: Distensions
! Ugly Null Arguments
! -------------------
! The `-fugly-comma' option enables use of a single trailing comma to
mean "pass an extra trailing null argument" in a list of actual
arguments to an external procedure, and use of an empty list of
arguments to such a procedure to mean "pass a single null argument".
--- 14466,14475 ----
File: g77.info, Node: Ugly Null Arguments, Next: Ugly Complex Part Extraction, Prev: Ugly Assumed-Size Arrays, Up: Distensions
! 9.9.4 Ugly Null Arguments
! -------------------------
! The `-fugly-comma' option enables use of a single trailing comma to
mean "pass an extra trailing null argument" in a list of actual
arguments to an external procedure, and use of an empty list of
arguments to such a procedure to mean "pass a single null argument".
*************** not expect any arguments to be passed.
*** 14296,14305 ****
File: g77.info, Node: Ugly Conversion of Initializers, Next: Ugly Integer Conversions, Prev: Ugly Complex Part Extraction, Up: Distensions
! Ugly Conversion of Initializers
! -------------------------------
! The constructs disabled by `-fno-ugly-init' are:
* Use of Hollerith and typeless constants in contexts where they set
initial (compile-time) values for variables, arrays, and named
--- 14503,14512 ----
File: g77.info, Node: Ugly Conversion of Initializers, Next: Ugly Integer Conversions, Prev: Ugly Complex Part Extraction, Up: Distensions
! 9.9.5 Ugly Conversion of Initializers
! -------------------------------------
! The constructs disabled by `-fno-ugly-init' are:
* Use of Hollerith and typeless constants in contexts where they set
initial (compile-time) values for variables, arrays, and named
*************** often are quite portable. Therefore, th
*** 14343,14352 ****
File: g77.info, Node: Ugly Integer Conversions, Next: Ugly Assigned Labels, Prev: Ugly Conversion of Initializers, Up: Distensions
! Ugly Integer Conversions
! ------------------------
! The constructs enabled via `-fugly-logint' are:
* Automatic conversion between `INTEGER' and `LOGICAL' as dictated by
context (typically implies nonportable dependencies on how a
--- 14550,14559 ----
File: g77.info, Node: Ugly Integer Conversions, Next: Ugly Assigned Labels, Prev: Ugly Conversion of Initializers, Up: Distensions
! 9.9.6 Ugly Integer Conversions
! ------------------------------
! The constructs enabled via `-fugly-logint' are:
* Automatic conversion between `INTEGER' and `LOGICAL' as dictated by
context (typically implies nonportable dependencies on how a
*************** using different encodings.
*** 14370,14379 ****
File: g77.info, Node: Ugly Assigned Labels, Prev: Ugly Integer Conversions, Up: Distensions
! Ugly Assigned Labels
! --------------------
! The `-fugly-assign' option forces `g77' to use the same storage for
assigned labels as it would for a normal assignment to the same
variable.
--- 14577,14586 ----
File: g77.info, Node: Ugly Assigned Labels, Prev: Ugly Integer Conversions, Up: Distensions
! 9.9.7 Ugly Assigned Labels
! --------------------------
! The `-fugly-assign' option forces `g77' to use the same storage for
assigned labels as it would for a normal assignment to the same
variable.
*************** labels.
*** 14423,14433 ****
File: g77.info, Node: Compiler, Next: Other Dialects, Prev: Language, Up: Top
! The GNU Fortran Compiler
! ************************
! The GNU Fortran compiler, `g77', supports programs written in the
! GNU Fortran language and in some other dialects of Fortran.
Some aspects of how `g77' works are universal regardless of dialect,
and yet are not properly part of the GNU Fortran language itself.
--- 14630,14640 ----
File: g77.info, Node: Compiler, Next: Other Dialects, Prev: Language, Up: Top
! 10 The GNU Fortran Compiler
! ***************************
! The GNU Fortran compiler, `g77', supports programs written in the GNU
! Fortran language and in some other dialects of Fortran.
Some aspects of how `g77' works are universal regardless of dialect,
and yet are not properly part of the GNU Fortran language itself.
*************** work!_
*** 14447,14458 ****
File: g77.info, Node: Compiler Limits, Next: Run-time Environment Limits, Up: Compiler
! Compiler Limits
! ===============
! `g77', as with GNU tools in general, imposes few arbitrary
! restrictions on lengths of identifiers, number of continuation lines,
! number of external symbols in a program, and so on.
For example, some other Fortran compiler have an option (such as
`-NlX') to increase the limit on the number of continuation lines.
--- 14654,14665 ----
File: g77.info, Node: Compiler Limits, Next: Run-time Environment Limits, Up: Compiler
! 10.1 Compiler Limits
! ====================
! `g77', as with GNU tools in general, imposes few arbitrary restrictions
! on lengths of identifiers, number of continuation lines, number of
! external symbols in a program, and so on.
For example, some other Fortran compiler have an option (such as
`-NlX') to increase the limit on the number of continuation lines.
*************** restriction might be lifted in a future
*** 14469,14478 ****
File: g77.info, Node: Run-time Environment Limits, Next: Compiler Types, Prev: Compiler Limits, Up: Compiler
! Run-time Environment Limits
! ===========================
! As a portable Fortran implementation, `g77' offers its users direct
access to, and otherwise depends upon, the underlying facilities of the
system used to build `g77', the system on which `g77' itself is used to
compile programs, and the system on which the `g77'-compiled program is
--- 14676,14685 ----
File: g77.info, Node: Run-time Environment Limits, Next: Compiler Types, Prev: Compiler Limits, Up: Compiler
! 10.2 Run-time Environment Limits
! ================================
! As a portable Fortran implementation, `g77' offers its users direct
access to, and otherwise depends upon, the underlying facilities of the
system used to build `g77', the system on which `g77' itself is used to
compile programs, and the system on which the `g77'-compiled program is
*************** the known limitations include:
*** 14517,14526 ****
File: g77.info, Node: Timer Wraparounds, Next: Year 2000 (Y2K) Problems, Up: Run-time Environment Limits
! Timer Wraparounds
! -----------------
! Intrinsics that return values computed from system timers, whether
elapsed (wall-clock) timers, process CPU timers, or other kinds of
timers, are prone to experiencing wrap-around errors (or returning
wrapped-around values from successive calls) due to insufficient ranges
--- 14724,14733 ----
File: g77.info, Node: Timer Wraparounds, Next: Year 2000 (Y2K) Problems, Up: Run-time Environment Limits
! 10.2.1 Timer Wraparounds
! ------------------------
! Intrinsics that return values computed from system timers, whether
elapsed (wall-clock) timers, process CPU timers, or other kinds of
timers, are prone to experiencing wrap-around errors (or returning
wrapped-around values from successive calls) due to insufficient ranges
*************** Intrinsic::.
*** 14544,14553 ****
File: g77.info, Node: Year 2000 (Y2K) Problems, Next: Array Size, Prev: Timer Wraparounds, Up: Run-time Environment Limits
! Year 2000 (Y2K) Problems
! ------------------------
! While the `g77' compiler itself is believed to be Year-2000 (Y2K)
compliant, some intrinsics are not, and, potentially, some underlying
systems are not, perhaps rendering some Y2K-compliant intrinsics
non-compliant when used on those particular systems.
--- 14751,14760 ----
File: g77.info, Node: Year 2000 (Y2K) Problems, Next: Array Size, Prev: Timer Wraparounds, Up: Run-time Environment Limits
! 10.2.2 Year 2000 (Y2K) Problems
! -------------------------------
! While the `g77' compiler itself is believed to be Year-2000 (Y2K)
compliant, some intrinsics are not, and, potentially, some underlying
systems are not, perhaps rendering some Y2K-compliant intrinsics
non-compliant when used on those particular systems.
*************** code to new versions of `g77' and `libg2
*** 14640,14649 ****
File: g77.info, Node: Array Size, Next: Character-variable Length, Prev: Year 2000 (Y2K) Problems, Up: Run-time Environment Limits
! Array Size
! ----------
! Currently, `g77' uses the default `INTEGER' type for array indexes,
which limits the sizes of single-dimension arrays on systems offering a
larger address space than can be addressed by that type. (That `g77'
puts all arrays in memory could be considered another limitation--it
--- 14847,14856 ----
File: g77.info, Node: Array Size, Next: Character-variable Length, Prev: Year 2000 (Y2K) Problems, Up: Run-time Environment Limits
! 10.2.3 Array Size
! -----------------
! Currently, `g77' uses the default `INTEGER' type for array indexes,
which limits the sizes of single-dimension arrays on systems offering a
larger address space than can be addressed by that type. (That `g77'
puts all arrays in memory could be considered another limitation--it
*************** and has not yet been fully investigated.
*** 14666,14675 ****
File: g77.info, Node: Character-variable Length, Next: Year 10000 (Y10K) Problems, Prev: Array Size, Up: Run-time Environment Limits
! Character-variable Length
! -------------------------
! Currently, `g77' uses the default `INTEGER' type for the lengths of
`CHARACTER' variables and array elements.
This means that, for example, a system with a 64-bit address space
--- 14873,14882 ----
File: g77.info, Node: Character-variable Length, Next: Year 10000 (Y10K) Problems, Prev: Array Size, Up: Run-time Environment Limits
! 10.2.4 Character-variable Length
! --------------------------------
! Currently, `g77' uses the default `INTEGER' type for the lengths of
`CHARACTER' variables and array elements.
This means that, for example, a system with a 64-bit address space
*************** and a 32-bit default `INTEGER' type does
*** 14679,14688 ****
File: g77.info, Node: Year 10000 (Y10K) Problems, Prev: Character-variable Length, Up: Run-time Environment Limits
! Year 10000 (Y10K) Problems
! --------------------------
! Most intrinsics returning, or computing values based on, date
information are prone to Year-10000 (Y10K) problems, due to supporting
only 4 digits for the year.
--- 14886,14895 ----
File: g77.info, Node: Year 10000 (Y10K) Problems, Prev: Character-variable Length, Up: Run-time Environment Limits
! 10.2.5 Year 10000 (Y10K) Problems
! ---------------------------------
! Most intrinsics returning, or computing values based on, date
information are prone to Year-10000 (Y10K) problems, due to supporting
only 4 digits for the year.
*************** only 4 digits for the year.
*** 14693,14708 ****
File: g77.info, Node: Compiler Types, Next: Compiler Constants, Prev: Run-time Environment Limits, Up: Compiler
! Compiler Types
! ==============
! Fortran implementations have a fair amount of freedom given them by
! the standard as far as how much storage space is used and how much
! precision and range is offered by the various types such as
! `LOGICAL(KIND=1)', `INTEGER(KIND=1)', `REAL(KIND=1)', `REAL(KIND=2)',
! `COMPLEX(KIND=1)', and `CHARACTER'. Further, many compilers offer
! so-called `*N' notation, but the interpretation of N varies across
! compilers and target architectures.
The standard requires that `LOGICAL(KIND=1)', `INTEGER(KIND=1)', and
`REAL(KIND=1)' occupy the same amount of storage space, and that
--- 14900,14915 ----
File: g77.info, Node: Compiler Types, Next: Compiler Constants, Prev: Run-time Environment Limits, Up: Compiler
! 10.3 Compiler Types
! ===================
! Fortran implementations have a fair amount of freedom given them by the
! standard as far as how much storage space is used and how much precision
! and range is offered by the various types such as `LOGICAL(KIND=1)',
! `INTEGER(KIND=1)', `REAL(KIND=1)', `REAL(KIND=2)', `COMPLEX(KIND=1)',
! and `CHARACTER'. Further, many compilers offer so-called `*N'
! notation, but the interpretation of N varies across compilers and
! target architectures.
The standard requires that `LOGICAL(KIND=1)', `INTEGER(KIND=1)', and
`REAL(KIND=1)' occupy the same amount of storage space, and that
*************** clarity, consistency, and portability.
*** 14810,14819 ****
File: g77.info, Node: Compiler Constants, Next: Compiler Intrinsics, Prev: Compiler Types, Up: Compiler
! Compiler Constants
! ==================
! `g77' strictly assigns types to _all_ constants not documented as
"typeless" (typeless constants including `'1'Z', for example). Many
other Fortran compilers attempt to assign types to typed constants
based on their context. This results in hard-to-find bugs, nonportable
--- 15017,15026 ----
File: g77.info, Node: Compiler Constants, Next: Compiler Intrinsics, Prev: Compiler Types, Up: Compiler
! 10.4 Compiler Constants
! =======================
! `g77' strictly assigns types to _all_ constants not documented as
"typeless" (typeless constants including `'1'Z', for example). Many
other Fortran compilers attempt to assign types to typed constants
based on their context. This results in hard-to-find bugs, nonportable
*************** issue.
*** 14831,14841 ****
File: g77.info, Node: Compiler Intrinsics, Prev: Compiler Constants, Up: Compiler
! Compiler Intrinsics
! ===================
! `g77' offers an ever-widening set of intrinsics. Currently these
! all are procedures (functions and subroutines).
Some of these intrinsics are unimplemented, but their names reserved
to reduce future problems with existing code as they are implemented.
--- 15038,15048 ----
File: g77.info, Node: Compiler Intrinsics, Prev: Compiler Constants, Up: Compiler
! 10.5 Compiler Intrinsics
! ========================
! `g77' offers an ever-widening set of intrinsics. Currently these all
! are procedures (functions and subroutines).
Some of these intrinsics are unimplemented, but their names reserved
to reduce future problems with existing code as they are implemented.
*************** by the GNU Fortran language.
*** 14856,14867 ****
File: g77.info, Node: Intrinsic Groups, Next: Other Intrinsics, Up: Compiler Intrinsics
! Intrinsic Groups
! ----------------
! A given specific intrinsic belongs in one or more groups. Each
! group is deleted, disabled, hidden, or enabled by default or a
! command-line option. The meaning of each term follows.
Deleted
No intrinsics are recognized as belonging to that group.
--- 15063,15074 ----
File: g77.info, Node: Intrinsic Groups, Next: Other Intrinsics, Up: Compiler Intrinsics
! 10.5.1 Intrinsic Groups
! -----------------------
! A given specific intrinsic belongs in one or more groups. Each group
! is deleted, disabled, hidden, or enabled by default or a command-line
! option. The meaning of each term follows.
Deleted
No intrinsics are recognized as belonging to that group.
*************** enabled, and so on.
*** 14948,14958 ****
File: g77.info, Node: Other Intrinsics, Prev: Intrinsic Groups, Up: Compiler Intrinsics
! Other Intrinsics
! ----------------
! `g77' supports intrinsics other than those in the GNU Fortran
! language proper. This set of intrinsics is described below.
(Note that the empty lines appearing in the menu below are not
intentional--they result from a bug in the `makeinfo' program.)
--- 15155,15165 ----
File: g77.info, Node: Other Intrinsics, Prev: Intrinsic Groups, Up: Compiler Intrinsics
! 10.5.2 Other Intrinsics
! -----------------------
! `g77' supports intrinsics other than those in the GNU Fortran language
! proper. This set of intrinsics is described below.
(Note that the empty lines appearing in the menu below are not
intentional--they result from a bug in the `makeinfo' program.)
*************** intentional--they result from a bug in t
*** 15149,15256 ****
File: g77.info, Node: ACosD Intrinsic, Next: AIMax0 Intrinsic, Up: Other Intrinsics
! ACosD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL ACosD' to use this name for an
! external procedure.
File: g77.info, Node: AIMax0 Intrinsic, Next: AIMin0 Intrinsic, Prev: ACosD Intrinsic, Up: Other Intrinsics
! AIMax0 Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL AIMax0' to use this name for an
external procedure.
File: g77.info, Node: AIMin0 Intrinsic, Next: AJMax0 Intrinsic, Prev: AIMax0 Intrinsic, Up: Other Intrinsics
! AIMin0 Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL AIMin0' to use this name for an
external procedure.
File: g77.info, Node: AJMax0 Intrinsic, Next: AJMin0 Intrinsic, Prev: AIMin0 Intrinsic, Up: Other Intrinsics
! AJMax0 Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL AJMax0' to use this name for an
external procedure.
File: g77.info, Node: AJMin0 Intrinsic, Next: ASinD Intrinsic, Prev: AJMax0 Intrinsic, Up: Other Intrinsics
! AJMin0 Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL AJMin0' to use this name for an
external procedure.
File: g77.info, Node: ASinD Intrinsic, Next: ATan2D Intrinsic, Prev: AJMin0 Intrinsic, Up: Other Intrinsics
! ASinD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL ASinD' to use this name for an
! external procedure.
File: g77.info, Node: ATan2D Intrinsic, Next: ATanD Intrinsic, Prev: ASinD Intrinsic, Up: Other Intrinsics
! ATan2D Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL ATan2D' to use this name for an
external procedure.
File: g77.info, Node: ATanD Intrinsic, Next: BITest Intrinsic, Prev: ATan2D Intrinsic, Up: Other Intrinsics
! ATanD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL ATanD' to use this name for an
! external procedure.
File: g77.info, Node: BITest Intrinsic, Next: BJTest Intrinsic, Prev: ATanD Intrinsic, Up: Other Intrinsics
! BITest Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL BITest' to use this name for an
external procedure.
File: g77.info, Node: BJTest Intrinsic, Next: CDAbs Intrinsic, Prev: BITest Intrinsic, Up: Other Intrinsics
! BJTest Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL BJTest' to use this name for an
external procedure.
File: g77.info, Node: CDAbs Intrinsic, Next: CDCos Intrinsic, Prev: BJTest Intrinsic, Up: Other Intrinsics
! CDAbs Intrinsic
! ...............
CDAbs(A)
--- 15356,15464 ----
File: g77.info, Node: ACosD Intrinsic, Next: AIMax0 Intrinsic, Up: Other Intrinsics
! 10.5.2.1 ACosD Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL ACosD' to use this name for an external
! procedure.
File: g77.info, Node: AIMax0 Intrinsic, Next: AIMin0 Intrinsic, Prev: ACosD Intrinsic, Up: Other Intrinsics
! 10.5.2.2 AIMax0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL AIMax0' to use this name for an
external procedure.
File: g77.info, Node: AIMin0 Intrinsic, Next: AJMax0 Intrinsic, Prev: AIMax0 Intrinsic, Up: Other Intrinsics
! 10.5.2.3 AIMin0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL AIMin0' to use this name for an
external procedure.
File: g77.info, Node: AJMax0 Intrinsic, Next: AJMin0 Intrinsic, Prev: AIMin0 Intrinsic, Up: Other Intrinsics
! 10.5.2.4 AJMax0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL AJMax0' to use this name for an
external procedure.
File: g77.info, Node: AJMin0 Intrinsic, Next: ASinD Intrinsic, Prev: AJMax0 Intrinsic, Up: Other Intrinsics
! 10.5.2.5 AJMin0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL AJMin0' to use this name for an
external procedure.
File: g77.info, Node: ASinD Intrinsic, Next: ATan2D Intrinsic, Prev: AJMin0 Intrinsic, Up: Other Intrinsics
! 10.5.2.6 ASinD Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL ASinD' to use this name for an external
! procedure.
File: g77.info, Node: ATan2D Intrinsic, Next: ATanD Intrinsic, Prev: ASinD Intrinsic, Up: Other Intrinsics
! 10.5.2.7 ATan2D Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL ATan2D' to use this name for an
external procedure.
File: g77.info, Node: ATanD Intrinsic, Next: BITest Intrinsic, Prev: ATan2D Intrinsic, Up: Other Intrinsics
! 10.5.2.8 ATanD Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL ATanD' to use this name for an external
! procedure.
File: g77.info, Node: BITest Intrinsic, Next: BJTest Intrinsic, Prev: ATanD Intrinsic, Up: Other Intrinsics
! 10.5.2.9 BITest Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL BITest' to use this name for an
external procedure.
File: g77.info, Node: BJTest Intrinsic, Next: CDAbs Intrinsic, Prev: BITest Intrinsic, Up: Other Intrinsics
! 10.5.2.10 BJTest Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL BJTest' to use this name for an
external procedure.
File: g77.info, Node: CDAbs Intrinsic, Next: CDCos Intrinsic, Prev: BJTest Intrinsic, Up: Other Intrinsics
! 10.5.2.11 CDAbs Intrinsic
! .........................
!
CDAbs(A)
*************** Abs Intrinsic::.
*** 15268,15275 ****
File: g77.info, Node: CDCos Intrinsic, Next: CDExp Intrinsic, Prev: CDAbs Intrinsic, Up: Other Intrinsics
! CDCos Intrinsic
! ...............
CDCos(X)
--- 15476,15484 ----
File: g77.info, Node: CDCos Intrinsic, Next: CDExp Intrinsic, Prev: CDAbs Intrinsic, Up: Other Intrinsics
! 10.5.2.12 CDCos Intrinsic
! .........................
!
CDCos(X)
*************** Cos Intrinsic::.
*** 15287,15294 ****
File: g77.info, Node: CDExp Intrinsic, Next: CDLog Intrinsic, Prev: CDCos Intrinsic, Up: Other Intrinsics
! CDExp Intrinsic
! ...............
CDExp(X)
--- 15496,15504 ----
File: g77.info, Node: CDExp Intrinsic, Next: CDLog Intrinsic, Prev: CDCos Intrinsic, Up: Other Intrinsics
! 10.5.2.13 CDExp Intrinsic
! .........................
!
CDExp(X)
*************** Exp Intrinsic::.
*** 15306,15313 ****
File: g77.info, Node: CDLog Intrinsic, Next: CDSin Intrinsic, Prev: CDExp Intrinsic, Up: Other Intrinsics
! CDLog Intrinsic
! ...............
CDLog(X)
--- 15516,15524 ----
File: g77.info, Node: CDLog Intrinsic, Next: CDSin Intrinsic, Prev: CDExp Intrinsic, Up: Other Intrinsics
! 10.5.2.14 CDLog Intrinsic
! .........................
!
CDLog(X)
*************** Log Intrinsic::.
*** 15325,15332 ****
File: g77.info, Node: CDSin Intrinsic, Next: CDSqRt Intrinsic, Prev: CDLog Intrinsic, Up: Other Intrinsics
! CDSin Intrinsic
! ...............
CDSin(X)
--- 15536,15544 ----
File: g77.info, Node: CDSin Intrinsic, Next: CDSqRt Intrinsic, Prev: CDLog Intrinsic, Up: Other Intrinsics
! 10.5.2.15 CDSin Intrinsic
! .........................
!
CDSin(X)
*************** Sin Intrinsic::.
*** 15344,15351 ****
File: g77.info, Node: CDSqRt Intrinsic, Next: ChDir Intrinsic (function), Prev: CDSin Intrinsic, Up: Other Intrinsics
! CDSqRt Intrinsic
! ................
CDSqRt(X)
--- 15556,15564 ----
File: g77.info, Node: CDSqRt Intrinsic, Next: ChDir Intrinsic (function), Prev: CDSin Intrinsic, Up: Other Intrinsics
! 10.5.2.16 CDSqRt Intrinsic
! ..........................
!
CDSqRt(X)
*************** SqRt Intrinsic::.
*** 15363,15370 ****
File: g77.info, Node: ChDir Intrinsic (function), Next: ChMod Intrinsic (function), Prev: CDSqRt Intrinsic, Up: Other Intrinsics
! ChDir Intrinsic (function)
! ..........................
ChDir(DIR)
--- 15576,15584 ----
File: g77.info, Node: ChDir Intrinsic (function), Next: ChMod Intrinsic (function), Prev: CDSqRt Intrinsic, Up: Other Intrinsics
! 10.5.2.17 ChDir Intrinsic (function)
! ....................................
!
ChDir(DIR)
*************** Intrinsic (subroutine)::.
*** 15392,15399 ****
File: g77.info, Node: ChMod Intrinsic (function), Next: CosD Intrinsic, Prev: ChDir Intrinsic (function), Up: Other Intrinsics
! ChMod Intrinsic (function)
! ..........................
ChMod(NAME, MODE)
--- 15606,15614 ----
File: g77.info, Node: ChMod Intrinsic (function), Next: CosD Intrinsic, Prev: ChDir Intrinsic (function), Up: Other Intrinsics
! 10.5.2.18 ChMod Intrinsic (function)
! ....................................
!
ChMod(NAME, MODE)
*************** Intrinsic (subroutine)::.
*** 15428,15485 ****
File: g77.info, Node: CosD Intrinsic, Next: DACosD Intrinsic, Prev: ChMod Intrinsic (function), Up: Other Intrinsics
! CosD Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL CosD' to use this name for an
! external procedure.
File: g77.info, Node: DACosD Intrinsic, Next: DASinD Intrinsic, Prev: CosD Intrinsic, Up: Other Intrinsics
! DACosD Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DACosD' to use this name for an
external procedure.
File: g77.info, Node: DASinD Intrinsic, Next: DATan2D Intrinsic, Prev: DACosD Intrinsic, Up: Other Intrinsics
! DASinD Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DASinD' to use this name for an
external procedure.
File: g77.info, Node: DATan2D Intrinsic, Next: DATanD Intrinsic, Prev: DASinD Intrinsic, Up: Other Intrinsics
! DATan2D Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DATan2D' to use this name for
! an external procedure.
File: g77.info, Node: DATanD Intrinsic, Next: Date Intrinsic, Prev: DATan2D Intrinsic, Up: Other Intrinsics
! DATanD Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DATanD' to use this name for an
external procedure.
File: g77.info, Node: Date Intrinsic, Next: DbleQ Intrinsic, Prev: DATanD Intrinsic, Up: Other Intrinsics
! Date Intrinsic
! ..............
CALL Date(DATE)
--- 15643,15701 ----
File: g77.info, Node: CosD Intrinsic, Next: DACosD Intrinsic, Prev: ChMod Intrinsic (function), Up: Other Intrinsics
! 10.5.2.19 CosD Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL CosD' to use this name for an external
! procedure.
File: g77.info, Node: DACosD Intrinsic, Next: DASinD Intrinsic, Prev: CosD Intrinsic, Up: Other Intrinsics
! 10.5.2.20 DACosD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DACosD' to use this name for an
external procedure.
File: g77.info, Node: DASinD Intrinsic, Next: DATan2D Intrinsic, Prev: DACosD Intrinsic, Up: Other Intrinsics
! 10.5.2.21 DASinD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DASinD' to use this name for an
external procedure.
File: g77.info, Node: DATan2D Intrinsic, Next: DATanD Intrinsic, Prev: DASinD Intrinsic, Up: Other Intrinsics
! 10.5.2.22 DATan2D Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DATan2D' to use this name for an
! external procedure.
File: g77.info, Node: DATanD Intrinsic, Next: Date Intrinsic, Prev: DATan2D Intrinsic, Up: Other Intrinsics
! 10.5.2.23 DATanD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DATanD' to use this name for an
external procedure.
File: g77.info, Node: Date Intrinsic, Next: DbleQ Intrinsic, Prev: DATanD Intrinsic, Up: Other Intrinsics
! 10.5.2.24 Date Intrinsic
! ........................
!
CALL Date(DATE)
*************** on obtaining more digits for the current
*** 15501,15518 ****
File: g77.info, Node: DbleQ Intrinsic, Next: DCmplx Intrinsic, Prev: Date Intrinsic, Up: Other Intrinsics
! DbleQ Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DbleQ' to use this name for an
! external procedure.
File: g77.info, Node: DCmplx Intrinsic, Next: DConjg Intrinsic, Prev: DbleQ Intrinsic, Up: Other Intrinsics
! DCmplx Intrinsic
! ................
DCmplx(X, Y)
--- 15717,15735 ----
File: g77.info, Node: DbleQ Intrinsic, Next: DCmplx Intrinsic, Prev: Date Intrinsic, Up: Other Intrinsics
! 10.5.2.25 DbleQ Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DbleQ' to use this name for an external
! procedure.
File: g77.info, Node: DCmplx Intrinsic, Next: DConjg Intrinsic, Prev: DbleQ Intrinsic, Up: Other Intrinsics
! 10.5.2.26 DCmplx Intrinsic
! ..........................
!
DCmplx(X, Y)
*************** precision. GNU Fortran provides such an
*** 15554,15561 ****
File: g77.info, Node: DConjg Intrinsic, Next: DCosD Intrinsic, Prev: DCmplx Intrinsic, Up: Other Intrinsics
! DConjg Intrinsic
! ................
DConjg(Z)
--- 15771,15779 ----
File: g77.info, Node: DConjg Intrinsic, Next: DCosD Intrinsic, Prev: DCmplx Intrinsic, Up: Other Intrinsics
! 10.5.2.27 DConjg Intrinsic
! ..........................
!
DConjg(Z)
*************** Conjg Intrinsic::.
*** 15573,15590 ****
File: g77.info, Node: DCosD Intrinsic, Next: DFloat Intrinsic, Prev: DConjg Intrinsic, Up: Other Intrinsics
! DCosD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DCosD' to use this name for an
! external procedure.
File: g77.info, Node: DFloat Intrinsic, Next: DFlotI Intrinsic, Prev: DCosD Intrinsic, Up: Other Intrinsics
! DFloat Intrinsic
! ................
DFloat(A)
--- 15791,15809 ----
File: g77.info, Node: DCosD Intrinsic, Next: DFloat Intrinsic, Prev: DConjg Intrinsic, Up: Other Intrinsics
! 10.5.2.28 DCosD Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DCosD' to use this name for an external
! procedure.
File: g77.info, Node: DFloat Intrinsic, Next: DFlotI Intrinsic, Prev: DCosD Intrinsic, Up: Other Intrinsics
! 10.5.2.29 DFloat Intrinsic
! ..........................
!
DFloat(A)
*************** Real Intrinsic::.
*** 15602,15629 ****
File: g77.info, Node: DFlotI Intrinsic, Next: DFlotJ Intrinsic, Prev: DFloat Intrinsic, Up: Other Intrinsics
! DFlotI Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DFlotI' to use this name for an
external procedure.
File: g77.info, Node: DFlotJ Intrinsic, Next: DImag Intrinsic, Prev: DFlotI Intrinsic, Up: Other Intrinsics
! DFlotJ Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DFlotJ' to use this name for an
external procedure.
File: g77.info, Node: DImag Intrinsic, Next: DReal Intrinsic, Prev: DFlotJ Intrinsic, Up: Other Intrinsics
! DImag Intrinsic
! ...............
DImag(Z)
--- 15821,15849 ----
File: g77.info, Node: DFlotI Intrinsic, Next: DFlotJ Intrinsic, Prev: DFloat Intrinsic, Up: Other Intrinsics
! 10.5.2.30 DFlotI Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DFlotI' to use this name for an
external procedure.
File: g77.info, Node: DFlotJ Intrinsic, Next: DImag Intrinsic, Prev: DFlotI Intrinsic, Up: Other Intrinsics
! 10.5.2.31 DFlotJ Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DFlotJ' to use this name for an
external procedure.
File: g77.info, Node: DImag Intrinsic, Next: DReal Intrinsic, Prev: DFlotJ Intrinsic, Up: Other Intrinsics
! 10.5.2.32 DImag Intrinsic
! .........................
!
DImag(Z)
*************** AImag Intrinsic::.
*** 15641,15648 ****
File: g77.info, Node: DReal Intrinsic, Next: DSinD Intrinsic, Prev: DImag Intrinsic, Up: Other Intrinsics
! DReal Intrinsic
! ...............
DReal(A)
--- 15861,15869 ----
File: g77.info, Node: DReal Intrinsic, Next: DSinD Intrinsic, Prev: DImag Intrinsic, Up: Other Intrinsics
! 10.5.2.33 DReal Intrinsic
! .........................
!
DReal(A)
*************** issue.
*** 15678,15705 ****
File: g77.info, Node: DSinD Intrinsic, Next: DTanD Intrinsic, Prev: DReal Intrinsic, Up: Other Intrinsics
! DSinD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DSinD' to use this name for an
! external procedure.
File: g77.info, Node: DTanD Intrinsic, Next: DTime Intrinsic (function), Prev: DSinD Intrinsic, Up: Other Intrinsics
! DTanD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL DTanD' to use this name for an
! external procedure.
File: g77.info, Node: DTime Intrinsic (function), Next: FGet Intrinsic (function), Prev: DTanD Intrinsic, Up: Other Intrinsics
! DTime Intrinsic (function)
! ..........................
DTime(TARRAY)
--- 15899,15927 ----
File: g77.info, Node: DSinD Intrinsic, Next: DTanD Intrinsic, Prev: DReal Intrinsic, Up: Other Intrinsics
! 10.5.2.34 DSinD Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DSinD' to use this name for an external
! procedure.
File: g77.info, Node: DTanD Intrinsic, Next: DTime Intrinsic (function), Prev: DSinD Intrinsic, Up: Other Intrinsics
! 10.5.2.35 DTanD Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL DTanD' to use this name for an external
! procedure.
File: g77.info, Node: DTime Intrinsic (function), Next: FGet Intrinsic (function), Prev: DTanD Intrinsic, Up: Other Intrinsics
! 10.5.2.36 DTime Intrinsic (function)
! ....................................
!
DTime(TARRAY)
*************** Intrinsic (subroutine)::.
*** 15734,15741 ****
File: g77.info, Node: FGet Intrinsic (function), Next: FGetC Intrinsic (function), Prev: DTime Intrinsic (function), Up: Other Intrinsics
! FGet Intrinsic (function)
! .........................
FGet(C)
--- 15956,15964 ----
File: g77.info, Node: FGet Intrinsic (function), Next: FGetC Intrinsic (function), Prev: DTime Intrinsic (function), Up: Other Intrinsics
! 10.5.2.37 FGet Intrinsic (function)
! ...................................
!
FGet(C)
*************** Intrinsic (subroutine)::.
*** 15762,15769 ****
File: g77.info, Node: FGetC Intrinsic (function), Next: FloatI Intrinsic, Prev: FGet Intrinsic (function), Up: Other Intrinsics
! FGetC Intrinsic (function)
! ..........................
FGetC(UNIT, C)
--- 15985,15993 ----
File: g77.info, Node: FGetC Intrinsic (function), Next: FloatI Intrinsic, Prev: FGet Intrinsic (function), Up: Other Intrinsics
! 10.5.2.38 FGetC Intrinsic (function)
! ....................................
!
FGetC(UNIT, C)
*************** Intrinsic (subroutine)::.
*** 15792,15819 ****
File: g77.info, Node: FloatI Intrinsic, Next: FloatJ Intrinsic, Prev: FGetC Intrinsic (function), Up: Other Intrinsics
! FloatI Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL FloatI' to use this name for an
external procedure.
File: g77.info, Node: FloatJ Intrinsic, Next: FPut Intrinsic (function), Prev: FloatI Intrinsic, Up: Other Intrinsics
! FloatJ Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL FloatJ' to use this name for an
external procedure.
File: g77.info, Node: FPut Intrinsic (function), Next: FPutC Intrinsic (function), Prev: FloatJ Intrinsic, Up: Other Intrinsics
! FPut Intrinsic (function)
! .........................
FPut(C)
--- 16016,16044 ----
File: g77.info, Node: FloatI Intrinsic, Next: FloatJ Intrinsic, Prev: FGetC Intrinsic (function), Up: Other Intrinsics
! 10.5.2.39 FloatI Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL FloatI' to use this name for an
external procedure.
File: g77.info, Node: FloatJ Intrinsic, Next: FPut Intrinsic (function), Prev: FloatI Intrinsic, Up: Other Intrinsics
! 10.5.2.40 FloatJ Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL FloatJ' to use this name for an
external procedure.
File: g77.info, Node: FPut Intrinsic (function), Next: FPutC Intrinsic (function), Prev: FloatJ Intrinsic, Up: Other Intrinsics
! 10.5.2.41 FPut Intrinsic (function)
! ...................................
!
FPut(C)
*************** Intrinsic (subroutine)::.
*** 15839,15846 ****
File: g77.info, Node: FPutC Intrinsic (function), Next: IDate Intrinsic (VXT), Prev: FPut Intrinsic (function), Up: Other Intrinsics
! FPutC Intrinsic (function)
! ..........................
FPutC(UNIT, C)
--- 16064,16072 ----
File: g77.info, Node: FPutC Intrinsic (function), Next: IDate Intrinsic (VXT), Prev: FPut Intrinsic (function), Up: Other Intrinsics
! 10.5.2.42 FPutC Intrinsic (function)
! ....................................
!
FPutC(UNIT, C)
*************** Intrinsic (subroutine)::.
*** 15868,15875 ****
File: g77.info, Node: IDate Intrinsic (VXT), Next: IIAbs Intrinsic, Prev: FPutC Intrinsic (function), Up: Other Intrinsics
! IDate Intrinsic (VXT)
! .....................
CALL IDate(M, D, Y)
--- 16094,16102 ----
File: g77.info, Node: IDate Intrinsic (VXT), Next: IIAbs Intrinsic, Prev: FPutC Intrinsic (function), Up: Other Intrinsics
! 10.5.2.43 IDate Intrinsic (VXT)
! ...............................
!
CALL IDate(M, D, Y)
*************** Intrinsic (UNIX)::.
*** 15903,16400 ****
File: g77.info, Node: IIAbs Intrinsic, Next: IIAnd Intrinsic, Prev: IDate Intrinsic (VXT), Up: Other Intrinsics
! IIAbs Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIAbs' to use this name for an
! external procedure.
File: g77.info, Node: IIAnd Intrinsic, Next: IIBClr Intrinsic, Prev: IIAbs Intrinsic, Up: Other Intrinsics
! IIAnd Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIAnd' to use this name for an
! external procedure.
File: g77.info, Node: IIBClr Intrinsic, Next: IIBits Intrinsic, Prev: IIAnd Intrinsic, Up: Other Intrinsics
! IIBClr Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIBClr' to use this name for an
external procedure.
File: g77.info, Node: IIBits Intrinsic, Next: IIBSet Intrinsic, Prev: IIBClr Intrinsic, Up: Other Intrinsics
! IIBits Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIBits' to use this name for an
external procedure.
File: g77.info, Node: IIBSet Intrinsic, Next: IIDiM Intrinsic, Prev: IIBits Intrinsic, Up: Other Intrinsics
! IIBSet Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIBSet' to use this name for an
external procedure.
File: g77.info, Node: IIDiM Intrinsic, Next: IIDInt Intrinsic, Prev: IIBSet Intrinsic, Up: Other Intrinsics
! IIDiM Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIDiM' to use this name for an
! external procedure.
File: g77.info, Node: IIDInt Intrinsic, Next: IIDNnt Intrinsic, Prev: IIDiM Intrinsic, Up: Other Intrinsics
! IIDInt Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIDInt' to use this name for an
external procedure.
File: g77.info, Node: IIDNnt Intrinsic, Next: IIEOr Intrinsic, Prev: IIDInt Intrinsic, Up: Other Intrinsics
! IIDNnt Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIDNnt' to use this name for an
external procedure.
File: g77.info, Node: IIEOr Intrinsic, Next: IIFix Intrinsic, Prev: IIDNnt Intrinsic, Up: Other Intrinsics
! IIEOr Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIEOr' to use this name for an
! external procedure.
File: g77.info, Node: IIFix Intrinsic, Next: IInt Intrinsic, Prev: IIEOr Intrinsic, Up: Other Intrinsics
! IIFix Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIFix' to use this name for an
! external procedure.
File: g77.info, Node: IInt Intrinsic, Next: IIOr Intrinsic, Prev: IIFix Intrinsic, Up: Other Intrinsics
! IInt Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IInt' to use this name for an
! external procedure.
File: g77.info, Node: IIOr Intrinsic, Next: IIQint Intrinsic, Prev: IInt Intrinsic, Up: Other Intrinsics
! IIOr Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIOr' to use this name for an
! external procedure.
File: g77.info, Node: IIQint Intrinsic, Next: IIQNnt Intrinsic, Prev: IIOr Intrinsic, Up: Other Intrinsics
! IIQint Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIQint' to use this name for an
external procedure.
File: g77.info, Node: IIQNnt Intrinsic, Next: IIShftC Intrinsic, Prev: IIQint Intrinsic, Up: Other Intrinsics
! IIQNnt Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIQNnt' to use this name for an
external procedure.
File: g77.info, Node: IIShftC Intrinsic, Next: IISign Intrinsic, Prev: IIQNnt Intrinsic, Up: Other Intrinsics
! IIShftC Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IIShftC' to use this name for
! an external procedure.
File: g77.info, Node: IISign Intrinsic, Next: IMax0 Intrinsic, Prev: IIShftC Intrinsic, Up: Other Intrinsics
! IISign Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IISign' to use this name for an
external procedure.
File: g77.info, Node: IMax0 Intrinsic, Next: IMax1 Intrinsic, Prev: IISign Intrinsic, Up: Other Intrinsics
! IMax0 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IMax0' to use this name for an
! external procedure.
File: g77.info, Node: IMax1 Intrinsic, Next: IMin0 Intrinsic, Prev: IMax0 Intrinsic, Up: Other Intrinsics
! IMax1 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IMax1' to use this name for an
! external procedure.
File: g77.info, Node: IMin0 Intrinsic, Next: IMin1 Intrinsic, Prev: IMax1 Intrinsic, Up: Other Intrinsics
! IMin0 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IMin0' to use this name for an
! external procedure.
File: g77.info, Node: IMin1 Intrinsic, Next: IMod Intrinsic, Prev: IMin0 Intrinsic, Up: Other Intrinsics
! IMin1 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IMin1' to use this name for an
! external procedure.
File: g77.info, Node: IMod Intrinsic, Next: INInt Intrinsic, Prev: IMin1 Intrinsic, Up: Other Intrinsics
! IMod Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IMod' to use this name for an
! external procedure.
File: g77.info, Node: INInt Intrinsic, Next: INot Intrinsic, Prev: IMod Intrinsic, Up: Other Intrinsics
! INInt Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL INInt' to use this name for an
! external procedure.
File: g77.info, Node: INot Intrinsic, Next: IZExt Intrinsic, Prev: INInt Intrinsic, Up: Other Intrinsics
! INot Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL INot' to use this name for an
! external procedure.
File: g77.info, Node: IZExt Intrinsic, Next: JIAbs Intrinsic, Prev: INot Intrinsic, Up: Other Intrinsics
! IZExt Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL IZExt' to use this name for an
! external procedure.
File: g77.info, Node: JIAbs Intrinsic, Next: JIAnd Intrinsic, Prev: IZExt Intrinsic, Up: Other Intrinsics
! JIAbs Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIAbs' to use this name for an
! external procedure.
File: g77.info, Node: JIAnd Intrinsic, Next: JIBClr Intrinsic, Prev: JIAbs Intrinsic, Up: Other Intrinsics
! JIAnd Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIAnd' to use this name for an
! external procedure.
File: g77.info, Node: JIBClr Intrinsic, Next: JIBits Intrinsic, Prev: JIAnd Intrinsic, Up: Other Intrinsics
! JIBClr Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIBClr' to use this name for an
external procedure.
File: g77.info, Node: JIBits Intrinsic, Next: JIBSet Intrinsic, Prev: JIBClr Intrinsic, Up: Other Intrinsics
! JIBits Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIBits' to use this name for an
external procedure.
File: g77.info, Node: JIBSet Intrinsic, Next: JIDiM Intrinsic, Prev: JIBits Intrinsic, Up: Other Intrinsics
! JIBSet Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIBSet' to use this name for an
external procedure.
File: g77.info, Node: JIDiM Intrinsic, Next: JIDInt Intrinsic, Prev: JIBSet Intrinsic, Up: Other Intrinsics
! JIDiM Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIDiM' to use this name for an
! external procedure.
File: g77.info, Node: JIDInt Intrinsic, Next: JIDNnt Intrinsic, Prev: JIDiM Intrinsic, Up: Other Intrinsics
! JIDInt Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIDInt' to use this name for an
external procedure.
File: g77.info, Node: JIDNnt Intrinsic, Next: JIEOr Intrinsic, Prev: JIDInt Intrinsic, Up: Other Intrinsics
! JIDNnt Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIDNnt' to use this name for an
external procedure.
File: g77.info, Node: JIEOr Intrinsic, Next: JIFix Intrinsic, Prev: JIDNnt Intrinsic, Up: Other Intrinsics
! JIEOr Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIEOr' to use this name for an
! external procedure.
File: g77.info, Node: JIFix Intrinsic, Next: JInt Intrinsic, Prev: JIEOr Intrinsic, Up: Other Intrinsics
! JIFix Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIFix' to use this name for an
! external procedure.
File: g77.info, Node: JInt Intrinsic, Next: JIOr Intrinsic, Prev: JIFix Intrinsic, Up: Other Intrinsics
! JInt Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JInt' to use this name for an
! external procedure.
File: g77.info, Node: JIOr Intrinsic, Next: JIQint Intrinsic, Prev: JInt Intrinsic, Up: Other Intrinsics
! JIOr Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIOr' to use this name for an
! external procedure.
File: g77.info, Node: JIQint Intrinsic, Next: JIQNnt Intrinsic, Prev: JIOr Intrinsic, Up: Other Intrinsics
! JIQint Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIQint' to use this name for an
external procedure.
File: g77.info, Node: JIQNnt Intrinsic, Next: JIShft Intrinsic, Prev: JIQint Intrinsic, Up: Other Intrinsics
! JIQNnt Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIQNnt' to use this name for an
external procedure.
File: g77.info, Node: JIShft Intrinsic, Next: JIShftC Intrinsic, Prev: JIQNnt Intrinsic, Up: Other Intrinsics
! JIShft Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIShft' to use this name for an
external procedure.
File: g77.info, Node: JIShftC Intrinsic, Next: JISign Intrinsic, Prev: JIShft Intrinsic, Up: Other Intrinsics
! JIShftC Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JIShftC' to use this name for
! an external procedure.
File: g77.info, Node: JISign Intrinsic, Next: JMax0 Intrinsic, Prev: JIShftC Intrinsic, Up: Other Intrinsics
! JISign Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JISign' to use this name for an
external procedure.
File: g77.info, Node: JMax0 Intrinsic, Next: JMax1 Intrinsic, Prev: JISign Intrinsic, Up: Other Intrinsics
! JMax0 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JMax0' to use this name for an
! external procedure.
File: g77.info, Node: JMax1 Intrinsic, Next: JMin0 Intrinsic, Prev: JMax0 Intrinsic, Up: Other Intrinsics
! JMax1 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JMax1' to use this name for an
! external procedure.
File: g77.info, Node: JMin0 Intrinsic, Next: JMin1 Intrinsic, Prev: JMax1 Intrinsic, Up: Other Intrinsics
! JMin0 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JMin0' to use this name for an
! external procedure.
File: g77.info, Node: JMin1 Intrinsic, Next: JMod Intrinsic, Prev: JMin0 Intrinsic, Up: Other Intrinsics
! JMin1 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JMin1' to use this name for an
! external procedure.
File: g77.info, Node: JMod Intrinsic, Next: JNInt Intrinsic, Prev: JMin1 Intrinsic, Up: Other Intrinsics
! JMod Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JMod' to use this name for an
! external procedure.
File: g77.info, Node: JNInt Intrinsic, Next: JNot Intrinsic, Prev: JMod Intrinsic, Up: Other Intrinsics
! JNInt Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JNInt' to use this name for an
! external procedure.
File: g77.info, Node: JNot Intrinsic, Next: JZExt Intrinsic, Prev: JNInt Intrinsic, Up: Other Intrinsics
! JNot Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JNot' to use this name for an
! external procedure.
File: g77.info, Node: JZExt Intrinsic, Next: Kill Intrinsic (function), Prev: JNot Intrinsic, Up: Other Intrinsics
! JZExt Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL JZExt' to use this name for an
! external procedure.
File: g77.info, Node: Kill Intrinsic (function), Next: Link Intrinsic (function), Prev: JZExt Intrinsic, Up: Other Intrinsics
! Kill Intrinsic (function)
! .........................
Kill(PID, SIGNAL)
--- 16130,16628 ----
File: g77.info, Node: IIAbs Intrinsic, Next: IIAnd Intrinsic, Prev: IDate Intrinsic (VXT), Up: Other Intrinsics
! 10.5.2.44 IIAbs Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIAbs' to use this name for an external
! procedure.
File: g77.info, Node: IIAnd Intrinsic, Next: IIBClr Intrinsic, Prev: IIAbs Intrinsic, Up: Other Intrinsics
! 10.5.2.45 IIAnd Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIAnd' to use this name for an external
! procedure.
File: g77.info, Node: IIBClr Intrinsic, Next: IIBits Intrinsic, Prev: IIAnd Intrinsic, Up: Other Intrinsics
! 10.5.2.46 IIBClr Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIBClr' to use this name for an
external procedure.
File: g77.info, Node: IIBits Intrinsic, Next: IIBSet Intrinsic, Prev: IIBClr Intrinsic, Up: Other Intrinsics
! 10.5.2.47 IIBits Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIBits' to use this name for an
external procedure.
File: g77.info, Node: IIBSet Intrinsic, Next: IIDiM Intrinsic, Prev: IIBits Intrinsic, Up: Other Intrinsics
! 10.5.2.48 IIBSet Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIBSet' to use this name for an
external procedure.
File: g77.info, Node: IIDiM Intrinsic, Next: IIDInt Intrinsic, Prev: IIBSet Intrinsic, Up: Other Intrinsics
! 10.5.2.49 IIDiM Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIDiM' to use this name for an external
! procedure.
File: g77.info, Node: IIDInt Intrinsic, Next: IIDNnt Intrinsic, Prev: IIDiM Intrinsic, Up: Other Intrinsics
! 10.5.2.50 IIDInt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIDInt' to use this name for an
external procedure.
File: g77.info, Node: IIDNnt Intrinsic, Next: IIEOr Intrinsic, Prev: IIDInt Intrinsic, Up: Other Intrinsics
! 10.5.2.51 IIDNnt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIDNnt' to use this name for an
external procedure.
File: g77.info, Node: IIEOr Intrinsic, Next: IIFix Intrinsic, Prev: IIDNnt Intrinsic, Up: Other Intrinsics
! 10.5.2.52 IIEOr Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIEOr' to use this name for an external
! procedure.
File: g77.info, Node: IIFix Intrinsic, Next: IInt Intrinsic, Prev: IIEOr Intrinsic, Up: Other Intrinsics
! 10.5.2.53 IIFix Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIFix' to use this name for an external
! procedure.
File: g77.info, Node: IInt Intrinsic, Next: IIOr Intrinsic, Prev: IIFix Intrinsic, Up: Other Intrinsics
! 10.5.2.54 IInt Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IInt' to use this name for an external
! procedure.
File: g77.info, Node: IIOr Intrinsic, Next: IIQint Intrinsic, Prev: IInt Intrinsic, Up: Other Intrinsics
! 10.5.2.55 IIOr Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIOr' to use this name for an external
! procedure.
File: g77.info, Node: IIQint Intrinsic, Next: IIQNnt Intrinsic, Prev: IIOr Intrinsic, Up: Other Intrinsics
! 10.5.2.56 IIQint Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIQint' to use this name for an
external procedure.
File: g77.info, Node: IIQNnt Intrinsic, Next: IIShftC Intrinsic, Prev: IIQint Intrinsic, Up: Other Intrinsics
! 10.5.2.57 IIQNnt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIQNnt' to use this name for an
external procedure.
File: g77.info, Node: IIShftC Intrinsic, Next: IISign Intrinsic, Prev: IIQNnt Intrinsic, Up: Other Intrinsics
! 10.5.2.58 IIShftC Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IIShftC' to use this name for an
! external procedure.
File: g77.info, Node: IISign Intrinsic, Next: IMax0 Intrinsic, Prev: IIShftC Intrinsic, Up: Other Intrinsics
! 10.5.2.59 IISign Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IISign' to use this name for an
external procedure.
File: g77.info, Node: IMax0 Intrinsic, Next: IMax1 Intrinsic, Prev: IISign Intrinsic, Up: Other Intrinsics
! 10.5.2.60 IMax0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IMax0' to use this name for an external
! procedure.
File: g77.info, Node: IMax1 Intrinsic, Next: IMin0 Intrinsic, Prev: IMax0 Intrinsic, Up: Other Intrinsics
! 10.5.2.61 IMax1 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IMax1' to use this name for an external
! procedure.
File: g77.info, Node: IMin0 Intrinsic, Next: IMin1 Intrinsic, Prev: IMax1 Intrinsic, Up: Other Intrinsics
! 10.5.2.62 IMin0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IMin0' to use this name for an external
! procedure.
File: g77.info, Node: IMin1 Intrinsic, Next: IMod Intrinsic, Prev: IMin0 Intrinsic, Up: Other Intrinsics
! 10.5.2.63 IMin1 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IMin1' to use this name for an external
! procedure.
File: g77.info, Node: IMod Intrinsic, Next: INInt Intrinsic, Prev: IMin1 Intrinsic, Up: Other Intrinsics
! 10.5.2.64 IMod Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IMod' to use this name for an external
! procedure.
File: g77.info, Node: INInt Intrinsic, Next: INot Intrinsic, Prev: IMod Intrinsic, Up: Other Intrinsics
! 10.5.2.65 INInt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL INInt' to use this name for an external
! procedure.
File: g77.info, Node: INot Intrinsic, Next: IZExt Intrinsic, Prev: INInt Intrinsic, Up: Other Intrinsics
! 10.5.2.66 INot Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL INot' to use this name for an external
! procedure.
File: g77.info, Node: IZExt Intrinsic, Next: JIAbs Intrinsic, Prev: INot Intrinsic, Up: Other Intrinsics
! 10.5.2.67 IZExt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL IZExt' to use this name for an external
! procedure.
File: g77.info, Node: JIAbs Intrinsic, Next: JIAnd Intrinsic, Prev: IZExt Intrinsic, Up: Other Intrinsics
! 10.5.2.68 JIAbs Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIAbs' to use this name for an external
! procedure.
File: g77.info, Node: JIAnd Intrinsic, Next: JIBClr Intrinsic, Prev: JIAbs Intrinsic, Up: Other Intrinsics
! 10.5.2.69 JIAnd Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIAnd' to use this name for an external
! procedure.
File: g77.info, Node: JIBClr Intrinsic, Next: JIBits Intrinsic, Prev: JIAnd Intrinsic, Up: Other Intrinsics
! 10.5.2.70 JIBClr Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIBClr' to use this name for an
external procedure.
File: g77.info, Node: JIBits Intrinsic, Next: JIBSet Intrinsic, Prev: JIBClr Intrinsic, Up: Other Intrinsics
! 10.5.2.71 JIBits Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIBits' to use this name for an
external procedure.
File: g77.info, Node: JIBSet Intrinsic, Next: JIDiM Intrinsic, Prev: JIBits Intrinsic, Up: Other Intrinsics
! 10.5.2.72 JIBSet Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIBSet' to use this name for an
external procedure.
File: g77.info, Node: JIDiM Intrinsic, Next: JIDInt Intrinsic, Prev: JIBSet Intrinsic, Up: Other Intrinsics
! 10.5.2.73 JIDiM Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIDiM' to use this name for an external
! procedure.
File: g77.info, Node: JIDInt Intrinsic, Next: JIDNnt Intrinsic, Prev: JIDiM Intrinsic, Up: Other Intrinsics
! 10.5.2.74 JIDInt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIDInt' to use this name for an
external procedure.
File: g77.info, Node: JIDNnt Intrinsic, Next: JIEOr Intrinsic, Prev: JIDInt Intrinsic, Up: Other Intrinsics
! 10.5.2.75 JIDNnt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIDNnt' to use this name for an
external procedure.
File: g77.info, Node: JIEOr Intrinsic, Next: JIFix Intrinsic, Prev: JIDNnt Intrinsic, Up: Other Intrinsics
! 10.5.2.76 JIEOr Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIEOr' to use this name for an external
! procedure.
File: g77.info, Node: JIFix Intrinsic, Next: JInt Intrinsic, Prev: JIEOr Intrinsic, Up: Other Intrinsics
! 10.5.2.77 JIFix Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIFix' to use this name for an external
! procedure.
File: g77.info, Node: JInt Intrinsic, Next: JIOr Intrinsic, Prev: JIFix Intrinsic, Up: Other Intrinsics
! 10.5.2.78 JInt Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JInt' to use this name for an external
! procedure.
File: g77.info, Node: JIOr Intrinsic, Next: JIQint Intrinsic, Prev: JInt Intrinsic, Up: Other Intrinsics
! 10.5.2.79 JIOr Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIOr' to use this name for an external
! procedure.
File: g77.info, Node: JIQint Intrinsic, Next: JIQNnt Intrinsic, Prev: JIOr Intrinsic, Up: Other Intrinsics
! 10.5.2.80 JIQint Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIQint' to use this name for an
external procedure.
File: g77.info, Node: JIQNnt Intrinsic, Next: JIShft Intrinsic, Prev: JIQint Intrinsic, Up: Other Intrinsics
! 10.5.2.81 JIQNnt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIQNnt' to use this name for an
external procedure.
File: g77.info, Node: JIShft Intrinsic, Next: JIShftC Intrinsic, Prev: JIQNnt Intrinsic, Up: Other Intrinsics
! 10.5.2.82 JIShft Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIShft' to use this name for an
external procedure.
File: g77.info, Node: JIShftC Intrinsic, Next: JISign Intrinsic, Prev: JIShft Intrinsic, Up: Other Intrinsics
! 10.5.2.83 JIShftC Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JIShftC' to use this name for an
! external procedure.
File: g77.info, Node: JISign Intrinsic, Next: JMax0 Intrinsic, Prev: JIShftC Intrinsic, Up: Other Intrinsics
! 10.5.2.84 JISign Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JISign' to use this name for an
external procedure.
File: g77.info, Node: JMax0 Intrinsic, Next: JMax1 Intrinsic, Prev: JISign Intrinsic, Up: Other Intrinsics
! 10.5.2.85 JMax0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JMax0' to use this name for an external
! procedure.
File: g77.info, Node: JMax1 Intrinsic, Next: JMin0 Intrinsic, Prev: JMax0 Intrinsic, Up: Other Intrinsics
! 10.5.2.86 JMax1 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JMax1' to use this name for an external
! procedure.
File: g77.info, Node: JMin0 Intrinsic, Next: JMin1 Intrinsic, Prev: JMax1 Intrinsic, Up: Other Intrinsics
! 10.5.2.87 JMin0 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JMin0' to use this name for an external
! procedure.
File: g77.info, Node: JMin1 Intrinsic, Next: JMod Intrinsic, Prev: JMin0 Intrinsic, Up: Other Intrinsics
! 10.5.2.88 JMin1 Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JMin1' to use this name for an external
! procedure.
File: g77.info, Node: JMod Intrinsic, Next: JNInt Intrinsic, Prev: JMin1 Intrinsic, Up: Other Intrinsics
! 10.5.2.89 JMod Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JMod' to use this name for an external
! procedure.
File: g77.info, Node: JNInt Intrinsic, Next: JNot Intrinsic, Prev: JMod Intrinsic, Up: Other Intrinsics
! 10.5.2.90 JNInt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JNInt' to use this name for an external
! procedure.
File: g77.info, Node: JNot Intrinsic, Next: JZExt Intrinsic, Prev: JNInt Intrinsic, Up: Other Intrinsics
! 10.5.2.91 JNot Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JNot' to use this name for an external
! procedure.
File: g77.info, Node: JZExt Intrinsic, Next: Kill Intrinsic (function), Prev: JNot Intrinsic, Up: Other Intrinsics
! 10.5.2.92 JZExt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL JZExt' to use this name for an external
! procedure.
File: g77.info, Node: Kill Intrinsic (function), Next: Link Intrinsic (function), Prev: JZExt Intrinsic, Up: Other Intrinsics
! 10.5.2.93 Kill Intrinsic (function)
! ...................................
!
Kill(PID, SIGNAL)
*************** Intrinsic (subroutine)::.
*** 16420,16427 ****
File: g77.info, Node: Link Intrinsic (function), Next: QAbs Intrinsic, Prev: Kill Intrinsic (function), Up: Other Intrinsics
! Link Intrinsic (function)
! .........................
Link(PATH1, PATH2)
--- 16648,16656 ----
File: g77.info, Node: Link Intrinsic (function), Next: QAbs Intrinsic, Prev: Kill Intrinsic (function), Up: Other Intrinsics
! 10.5.2.94 Link Intrinsic (function)
! ...................................
!
Link(PATH1, PATH2)
*************** Intrinsic (subroutine)::.
*** 16449,16766 ****
File: g77.info, Node: QAbs Intrinsic, Next: QACos Intrinsic, Prev: Link Intrinsic (function), Up: Other Intrinsics
! QAbs Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QAbs' to use this name for an
! external procedure.
File: g77.info, Node: QACos Intrinsic, Next: QACosD Intrinsic, Prev: QAbs Intrinsic, Up: Other Intrinsics
! QACos Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QACos' to use this name for an
! external procedure.
File: g77.info, Node: QACosD Intrinsic, Next: QASin Intrinsic, Prev: QACos Intrinsic, Up: Other Intrinsics
! QACosD Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QACosD' to use this name for an
external procedure.
File: g77.info, Node: QASin Intrinsic, Next: QASinD Intrinsic, Prev: QACosD Intrinsic, Up: Other Intrinsics
! QASin Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QASin' to use this name for an
! external procedure.
File: g77.info, Node: QASinD Intrinsic, Next: QATan Intrinsic, Prev: QASin Intrinsic, Up: Other Intrinsics
! QASinD Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QASinD' to use this name for an
external procedure.
File: g77.info, Node: QATan Intrinsic, Next: QATan2 Intrinsic, Prev: QASinD Intrinsic, Up: Other Intrinsics
! QATan Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QATan' to use this name for an
! external procedure.
File: g77.info, Node: QATan2 Intrinsic, Next: QATan2D Intrinsic, Prev: QATan Intrinsic, Up: Other Intrinsics
! QATan2 Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QATan2' to use this name for an
external procedure.
File: g77.info, Node: QATan2D Intrinsic, Next: QATanD Intrinsic, Prev: QATan2 Intrinsic, Up: Other Intrinsics
! QATan2D Intrinsic
! .................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QATan2D' to use this name for
! an external procedure.
File: g77.info, Node: QATanD Intrinsic, Next: QCos Intrinsic, Prev: QATan2D Intrinsic, Up: Other Intrinsics
! QATanD Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QATanD' to use this name for an
external procedure.
File: g77.info, Node: QCos Intrinsic, Next: QCosD Intrinsic, Prev: QATanD Intrinsic, Up: Other Intrinsics
! QCos Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QCos' to use this name for an
! external procedure.
File: g77.info, Node: QCosD Intrinsic, Next: QCosH Intrinsic, Prev: QCos Intrinsic, Up: Other Intrinsics
! QCosD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QCosD' to use this name for an
! external procedure.
File: g77.info, Node: QCosH Intrinsic, Next: QDiM Intrinsic, Prev: QCosD Intrinsic, Up: Other Intrinsics
! QCosH Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QCosH' to use this name for an
! external procedure.
File: g77.info, Node: QDiM Intrinsic, Next: QExp Intrinsic, Prev: QCosH Intrinsic, Up: Other Intrinsics
! QDiM Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QDiM' to use this name for an
! external procedure.
File: g77.info, Node: QExp Intrinsic, Next: QExt Intrinsic, Prev: QDiM Intrinsic, Up: Other Intrinsics
! QExp Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QExp' to use this name for an
! external procedure.
File: g77.info, Node: QExt Intrinsic, Next: QExtD Intrinsic, Prev: QExp Intrinsic, Up: Other Intrinsics
! QExt Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QExt' to use this name for an
! external procedure.
File: g77.info, Node: QExtD Intrinsic, Next: QFloat Intrinsic, Prev: QExt Intrinsic, Up: Other Intrinsics
! QExtD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QExtD' to use this name for an
! external procedure.
File: g77.info, Node: QFloat Intrinsic, Next: QInt Intrinsic, Prev: QExtD Intrinsic, Up: Other Intrinsics
! QFloat Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QFloat' to use this name for an
external procedure.
File: g77.info, Node: QInt Intrinsic, Next: QLog Intrinsic, Prev: QFloat Intrinsic, Up: Other Intrinsics
! QInt Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QInt' to use this name for an
! external procedure.
File: g77.info, Node: QLog Intrinsic, Next: QLog10 Intrinsic, Prev: QInt Intrinsic, Up: Other Intrinsics
! QLog Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QLog' to use this name for an
! external procedure.
File: g77.info, Node: QLog10 Intrinsic, Next: QMax1 Intrinsic, Prev: QLog Intrinsic, Up: Other Intrinsics
! QLog10 Intrinsic
! ................
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QLog10' to use this name for an
external procedure.
File: g77.info, Node: QMax1 Intrinsic, Next: QMin1 Intrinsic, Prev: QLog10 Intrinsic, Up: Other Intrinsics
! QMax1 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QMax1' to use this name for an
! external procedure.
File: g77.info, Node: QMin1 Intrinsic, Next: QMod Intrinsic, Prev: QMax1 Intrinsic, Up: Other Intrinsics
! QMin1 Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QMin1' to use this name for an
! external procedure.
File: g77.info, Node: QMod Intrinsic, Next: QNInt Intrinsic, Prev: QMin1 Intrinsic, Up: Other Intrinsics
! QMod Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QMod' to use this name for an
! external procedure.
File: g77.info, Node: QNInt Intrinsic, Next: QSin Intrinsic, Prev: QMod Intrinsic, Up: Other Intrinsics
! QNInt Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QNInt' to use this name for an
! external procedure.
File: g77.info, Node: QSin Intrinsic, Next: QSinD Intrinsic, Prev: QNInt Intrinsic, Up: Other Intrinsics
! QSin Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QSin' to use this name for an
! external procedure.
File: g77.info, Node: QSinD Intrinsic, Next: QSinH Intrinsic, Prev: QSin Intrinsic, Up: Other Intrinsics
! QSinD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QSinD' to use this name for an
! external procedure.
File: g77.info, Node: QSinH Intrinsic, Next: QSqRt Intrinsic, Prev: QSinD Intrinsic, Up: Other Intrinsics
! QSinH Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QSinH' to use this name for an
! external procedure.
File: g77.info, Node: QSqRt Intrinsic, Next: QTan Intrinsic, Prev: QSinH Intrinsic, Up: Other Intrinsics
! QSqRt Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QSqRt' to use this name for an
! external procedure.
File: g77.info, Node: QTan Intrinsic, Next: QTanD Intrinsic, Prev: QSqRt Intrinsic, Up: Other Intrinsics
! QTan Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QTan' to use this name for an
! external procedure.
File: g77.info, Node: QTanD Intrinsic, Next: QTanH Intrinsic, Prev: QTan Intrinsic, Up: Other Intrinsics
! QTanD Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QTanD' to use this name for an
! external procedure.
File: g77.info, Node: QTanH Intrinsic, Next: Rename Intrinsic (function), Prev: QTanD Intrinsic, Up: Other Intrinsics
! QTanH Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL QTanH' to use this name for an
! external procedure.
File: g77.info, Node: Rename Intrinsic (function), Next: Secnds Intrinsic, Prev: QTanH Intrinsic, Up: Other Intrinsics
! Rename Intrinsic (function)
! ...........................
Rename(PATH1, PATH2)
--- 16678,16996 ----
File: g77.info, Node: QAbs Intrinsic, Next: QACos Intrinsic, Prev: Link Intrinsic (function), Up: Other Intrinsics
! 10.5.2.95 QAbs Intrinsic
! ........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QAbs' to use this name for an external
! procedure.
File: g77.info, Node: QACos Intrinsic, Next: QACosD Intrinsic, Prev: QAbs Intrinsic, Up: Other Intrinsics
! 10.5.2.96 QACos Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QACos' to use this name for an external
! procedure.
File: g77.info, Node: QACosD Intrinsic, Next: QASin Intrinsic, Prev: QACos Intrinsic, Up: Other Intrinsics
! 10.5.2.97 QACosD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QACosD' to use this name for an
external procedure.
File: g77.info, Node: QASin Intrinsic, Next: QASinD Intrinsic, Prev: QACosD Intrinsic, Up: Other Intrinsics
! 10.5.2.98 QASin Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QASin' to use this name for an external
! procedure.
File: g77.info, Node: QASinD Intrinsic, Next: QATan Intrinsic, Prev: QASin Intrinsic, Up: Other Intrinsics
! 10.5.2.99 QASinD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QASinD' to use this name for an
external procedure.
File: g77.info, Node: QATan Intrinsic, Next: QATan2 Intrinsic, Prev: QASinD Intrinsic, Up: Other Intrinsics
! 10.5.2.100 QATan Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QATan' to use this name for an external
! procedure.
File: g77.info, Node: QATan2 Intrinsic, Next: QATan2D Intrinsic, Prev: QATan Intrinsic, Up: Other Intrinsics
! 10.5.2.101 QATan2 Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QATan2' to use this name for an
external procedure.
File: g77.info, Node: QATan2D Intrinsic, Next: QATanD Intrinsic, Prev: QATan2 Intrinsic, Up: Other Intrinsics
! 10.5.2.102 QATan2D Intrinsic
! ............................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QATan2D' to use this name for an
! external procedure.
File: g77.info, Node: QATanD Intrinsic, Next: QCos Intrinsic, Prev: QATan2D Intrinsic, Up: Other Intrinsics
! 10.5.2.103 QATanD Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QATanD' to use this name for an
external procedure.
File: g77.info, Node: QCos Intrinsic, Next: QCosD Intrinsic, Prev: QATanD Intrinsic, Up: Other Intrinsics
! 10.5.2.104 QCos Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QCos' to use this name for an external
! procedure.
File: g77.info, Node: QCosD Intrinsic, Next: QCosH Intrinsic, Prev: QCos Intrinsic, Up: Other Intrinsics
! 10.5.2.105 QCosD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QCosD' to use this name for an external
! procedure.
File: g77.info, Node: QCosH Intrinsic, Next: QDiM Intrinsic, Prev: QCosD Intrinsic, Up: Other Intrinsics
! 10.5.2.106 QCosH Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QCosH' to use this name for an external
! procedure.
File: g77.info, Node: QDiM Intrinsic, Next: QExp Intrinsic, Prev: QCosH Intrinsic, Up: Other Intrinsics
! 10.5.2.107 QDiM Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QDiM' to use this name for an external
! procedure.
File: g77.info, Node: QExp Intrinsic, Next: QExt Intrinsic, Prev: QDiM Intrinsic, Up: Other Intrinsics
! 10.5.2.108 QExp Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QExp' to use this name for an external
! procedure.
File: g77.info, Node: QExt Intrinsic, Next: QExtD Intrinsic, Prev: QExp Intrinsic, Up: Other Intrinsics
! 10.5.2.109 QExt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QExt' to use this name for an external
! procedure.
File: g77.info, Node: QExtD Intrinsic, Next: QFloat Intrinsic, Prev: QExt Intrinsic, Up: Other Intrinsics
! 10.5.2.110 QExtD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QExtD' to use this name for an external
! procedure.
File: g77.info, Node: QFloat Intrinsic, Next: QInt Intrinsic, Prev: QExtD Intrinsic, Up: Other Intrinsics
! 10.5.2.111 QFloat Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QFloat' to use this name for an
external procedure.
File: g77.info, Node: QInt Intrinsic, Next: QLog Intrinsic, Prev: QFloat Intrinsic, Up: Other Intrinsics
! 10.5.2.112 QInt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QInt' to use this name for an external
! procedure.
File: g77.info, Node: QLog Intrinsic, Next: QLog10 Intrinsic, Prev: QInt Intrinsic, Up: Other Intrinsics
! 10.5.2.113 QLog Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QLog' to use this name for an external
! procedure.
File: g77.info, Node: QLog10 Intrinsic, Next: QMax1 Intrinsic, Prev: QLog Intrinsic, Up: Other Intrinsics
! 10.5.2.114 QLog10 Intrinsic
! ...........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QLog10' to use this name for an
external procedure.
File: g77.info, Node: QMax1 Intrinsic, Next: QMin1 Intrinsic, Prev: QLog10 Intrinsic, Up: Other Intrinsics
! 10.5.2.115 QMax1 Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QMax1' to use this name for an external
! procedure.
File: g77.info, Node: QMin1 Intrinsic, Next: QMod Intrinsic, Prev: QMax1 Intrinsic, Up: Other Intrinsics
! 10.5.2.116 QMin1 Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QMin1' to use this name for an external
! procedure.
File: g77.info, Node: QMod Intrinsic, Next: QNInt Intrinsic, Prev: QMin1 Intrinsic, Up: Other Intrinsics
! 10.5.2.117 QMod Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QMod' to use this name for an external
! procedure.
File: g77.info, Node: QNInt Intrinsic, Next: QSin Intrinsic, Prev: QMod Intrinsic, Up: Other Intrinsics
! 10.5.2.118 QNInt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QNInt' to use this name for an external
! procedure.
File: g77.info, Node: QSin Intrinsic, Next: QSinD Intrinsic, Prev: QNInt Intrinsic, Up: Other Intrinsics
! 10.5.2.119 QSin Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QSin' to use this name for an external
! procedure.
File: g77.info, Node: QSinD Intrinsic, Next: QSinH Intrinsic, Prev: QSin Intrinsic, Up: Other Intrinsics
! 10.5.2.120 QSinD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QSinD' to use this name for an external
! procedure.
File: g77.info, Node: QSinH Intrinsic, Next: QSqRt Intrinsic, Prev: QSinD Intrinsic, Up: Other Intrinsics
! 10.5.2.121 QSinH Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QSinH' to use this name for an external
! procedure.
File: g77.info, Node: QSqRt Intrinsic, Next: QTan Intrinsic, Prev: QSinH Intrinsic, Up: Other Intrinsics
! 10.5.2.122 QSqRt Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QSqRt' to use this name for an external
! procedure.
File: g77.info, Node: QTan Intrinsic, Next: QTanD Intrinsic, Prev: QSqRt Intrinsic, Up: Other Intrinsics
! 10.5.2.123 QTan Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QTan' to use this name for an external
! procedure.
File: g77.info, Node: QTanD Intrinsic, Next: QTanH Intrinsic, Prev: QTan Intrinsic, Up: Other Intrinsics
! 10.5.2.124 QTanD Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QTanD' to use this name for an external
! procedure.
File: g77.info, Node: QTanH Intrinsic, Next: Rename Intrinsic (function), Prev: QTanD Intrinsic, Up: Other Intrinsics
! 10.5.2.125 QTanH Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL QTanH' to use this name for an external
! procedure.
File: g77.info, Node: Rename Intrinsic (function), Next: Secnds Intrinsic, Prev: QTanH Intrinsic, Up: Other Intrinsics
! 10.5.2.126 Rename Intrinsic (function)
! ......................................
!
Rename(PATH1, PATH2)
*************** Intrinsic (subroutine)::.
*** 16788,16795 ****
File: g77.info, Node: Secnds Intrinsic, Next: Signal Intrinsic (function), Prev: Rename Intrinsic (function), Up: Other Intrinsics
! Secnds Intrinsic
! ................
Secnds(T)
--- 17018,17026 ----
File: g77.info, Node: Secnds Intrinsic, Next: Signal Intrinsic (function), Prev: Rename Intrinsic (function), Up: Other Intrinsics
! 10.5.2.127 Secnds Intrinsic
! ...........................
!
Secnds(T)
*************** midnight hour).
*** 16811,16818 ****
File: g77.info, Node: Signal Intrinsic (function), Next: SinD Intrinsic, Prev: Secnds Intrinsic, Up: Other Intrinsics
! Signal Intrinsic (function)
! ...........................
Signal(NUMBER, HANDLER)
--- 17042,17050 ----
File: g77.info, Node: Signal Intrinsic (function), Next: SinD Intrinsic, Prev: Secnds Intrinsic, Up: Other Intrinsics
! 10.5.2.128 Signal Intrinsic (function)
! ......................................
!
Signal(NUMBER, HANDLER)
*************** Intrinsic (subroutine)::.
*** 16891,16918 ****
File: g77.info, Node: SinD Intrinsic, Next: SnglQ Intrinsic, Prev: Signal Intrinsic (function), Up: Other Intrinsics
! SinD Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL SinD' to use this name for an
! external procedure.
File: g77.info, Node: SnglQ Intrinsic, Next: SymLnk Intrinsic (function), Prev: SinD Intrinsic, Up: Other Intrinsics
! SnglQ Intrinsic
! ...............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL SnglQ' to use this name for an
! external procedure.
File: g77.info, Node: SymLnk Intrinsic (function), Next: System Intrinsic (function), Prev: SnglQ Intrinsic, Up: Other Intrinsics
! SymLnk Intrinsic (function)
! ...........................
SymLnk(PATH1, PATH2)
--- 17123,17151 ----
File: g77.info, Node: SinD Intrinsic, Next: SnglQ Intrinsic, Prev: Signal Intrinsic (function), Up: Other Intrinsics
! 10.5.2.129 SinD Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL SinD' to use this name for an external
! procedure.
File: g77.info, Node: SnglQ Intrinsic, Next: SymLnk Intrinsic (function), Prev: SinD Intrinsic, Up: Other Intrinsics
! 10.5.2.130 SnglQ Intrinsic
! ..........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL SnglQ' to use this name for an external
! procedure.
File: g77.info, Node: SymLnk Intrinsic (function), Next: System Intrinsic (function), Prev: SnglQ Intrinsic, Up: Other Intrinsics
! 10.5.2.131 SymLnk Intrinsic (function)
! ......................................
!
SymLnk(PATH1, PATH2)
*************** Intrinsic (subroutine)::.
*** 16941,16948 ****
File: g77.info, Node: System Intrinsic (function), Next: TanD Intrinsic, Prev: SymLnk Intrinsic (function), Up: Other Intrinsics
! System Intrinsic (function)
! ...........................
System(COMMAND)
--- 17174,17182 ----
File: g77.info, Node: System Intrinsic (function), Next: TanD Intrinsic, Prev: SymLnk Intrinsic (function), Up: Other Intrinsics
! 10.5.2.132 System Intrinsic (function)
! ......................................
!
System(COMMAND)
*************** Intrinsic (subroutine)::.
*** 16977,16994 ****
File: g77.info, Node: TanD Intrinsic, Next: Time Intrinsic (VXT), Prev: System Intrinsic (function), Up: Other Intrinsics
! TanD Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL TanD' to use this name for an
! external procedure.
File: g77.info, Node: Time Intrinsic (VXT), Next: UMask Intrinsic (function), Prev: TanD Intrinsic, Up: Other Intrinsics
! Time Intrinsic (VXT)
! ....................
CALL Time(TIME)
--- 17211,17229 ----
File: g77.info, Node: TanD Intrinsic, Next: Time Intrinsic (VXT), Prev: System Intrinsic (function), Up: Other Intrinsics
! 10.5.2.133 TanD Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL TanD' to use this name for an external
! procedure.
File: g77.info, Node: Time Intrinsic (VXT), Next: UMask Intrinsic (function), Prev: TanD Intrinsic, Up: Other Intrinsics
! 10.5.2.134 Time Intrinsic (VXT)
! ...............................
!
CALL Time(TIME)
*************** Intrinsic (UNIX)::.
*** 17014,17021 ****
File: g77.info, Node: UMask Intrinsic (function), Next: Unlink Intrinsic (function), Prev: Time Intrinsic (VXT), Up: Other Intrinsics
! UMask Intrinsic (function)
! ..........................
UMask(MASK)
--- 17249,17257 ----
File: g77.info, Node: UMask Intrinsic (function), Next: Unlink Intrinsic (function), Prev: Time Intrinsic (VXT), Up: Other Intrinsics
! 10.5.2.135 UMask Intrinsic (function)
! .....................................
!
UMask(MASK)
*************** Intrinsic (subroutine)::.
*** 17039,17046 ****
File: g77.info, Node: Unlink Intrinsic (function), Next: ZExt Intrinsic, Prev: UMask Intrinsic (function), Up: Other Intrinsics
! Unlink Intrinsic (function)
! ...........................
Unlink(FILE)
--- 17275,17283 ----
File: g77.info, Node: Unlink Intrinsic (function), Next: ZExt Intrinsic, Prev: UMask Intrinsic (function), Up: Other Intrinsics
! 10.5.2.136 Unlink Intrinsic (function)
! ......................................
!
Unlink(FILE)
*************** Intrinsic (subroutine)::.
*** 17065,17090 ****
File: g77.info, Node: ZExt Intrinsic, Prev: Unlink Intrinsic (function), Up: Other Intrinsics
! ZExt Intrinsic
! ..............
! This intrinsic is not yet implemented. The name is, however,
! reserved as an intrinsic. Use `EXTERNAL ZExt' to use this name for an
! external procedure.
File: g77.info, Node: Other Compilers, Next: Other Languages, Prev: Other Dialects, Up: Top
! Other Compilers
! ***************
! An individual Fortran source file can be compiled to an object
! (`*.o') file instead of to the final program executable. This allows
! several portions of a program to be compiled at different times and
! linked together whenever a new version of the program is needed.
! However, it introduces the issue of "object compatibility" across the
! various object files (and libraries, or `*.a' files) that are linked
! together to produce any particular executable file.
Object compatibility is an issue when combining, in one program,
Fortran code compiled by more than one compiler (or more than one
--- 17302,17327 ----
File: g77.info, Node: ZExt Intrinsic, Prev: Unlink Intrinsic (function), Up: Other Intrinsics
! 10.5.2.137 ZExt Intrinsic
! .........................
! This intrinsic is not yet implemented. The name is, however, reserved
! as an intrinsic. Use `EXTERNAL ZExt' to use this name for an external
! procedure.
File: g77.info, Node: Other Compilers, Next: Other Languages, Prev: Other Dialects, Up: Top
! 11 Other Compilers
! ******************
! An individual Fortran source file can be compiled to an object (`*.o')
! file instead of to the final program executable. This allows several
! portions of a program to be compiled at different times and linked
! together whenever a new version of the program is needed. However, it
! introduces the issue of "object compatibility" across the various
! object files (and libraries, or `*.a' files) that are linked together
! to produce any particular executable file.
Object compatibility is an issue when combining, in one program,
Fortran code compiled by more than one compiler (or more than one
*************** work!_
*** 17129,17140 ****
File: g77.info, Node: Dropping f2c Compatibility, Next: Compilers Other Than f2c, Up: Other Compilers
! Dropping `f2c' Compatibility
! ============================
! Specifying `-fno-f2c' allows `g77' to generate, in some cases,
! faster code, by not needing to allow to the possibility of linking with
! code compiled by `f2c'.
For example, this affects how `REAL(KIND=1)', `COMPLEX(KIND=1)', and
`COMPLEX(KIND=2)' functions are called. With `-fno-f2c', they are
--- 17366,17377 ----
File: g77.info, Node: Dropping f2c Compatibility, Next: Compilers Other Than f2c, Up: Other Compilers
! 11.1 Dropping `f2c' Compatibility
! =================================
! Specifying `-fno-f2c' allows `g77' to generate, in some cases, faster
! code, by not needing to allow to the possibility of linking with code
! compiled by `f2c'.
For example, this affects how `REAL(KIND=1)', `COMPLEX(KIND=1)', and
`COMPLEX(KIND=2)' functions are called. With `-fno-f2c', they are
*************** or some other as-yet-unused name.)
*** 17189,17198 ****
File: g77.info, Node: Compilers Other Than f2c, Prev: Dropping f2c Compatibility, Up: Other Compilers
! Compilers Other Than `f2c'
! ==========================
! On systems with Fortran compilers other than `f2c' and `g77', code
compiled by `g77' is not expected to work well with code compiled by
the native compiler. (This is true for `f2c'-compiled objects as well.)
Libraries compiled with the native compiler probably will have to be
--- 17426,17435 ----
File: g77.info, Node: Compilers Other Than f2c, Prev: Dropping f2c Compatibility, Up: Other Compilers
! 11.2 Compilers Other Than `f2c'
! ===============================
! On systems with Fortran compilers other than `f2c' and `g77', code
compiled by `g77' is not expected to work well with code compiled by
the native compiler. (This is true for `f2c'-compiled objects as well.)
Libraries compiled with the native compiler probably will have to be
*************** recompiled with `g77' to be used with `g
*** 17227,17236 ****
File: g77.info, Node: Other Languages, Next: Debugging and Interfacing, Prev: Other Compilers, Up: Top
! Other Languages
! ***************
! _Note: This portion of the documentation definitely needs a lot of
work!_
* Menu:
--- 17464,17473 ----
File: g77.info, Node: Other Languages, Next: Debugging and Interfacing, Prev: Other Compilers, Up: Top
! 12 Other Languages
! ******************
! _Note: This portion of the documentation definitely needs a lot of
work!_
* Menu:
*************** work!_
*** 17240,17249 ****
File: g77.info, Node: Interoperating with C and C++, Up: Other Languages
! Tools and advice for interoperating with C and C++
! ==================================================
! The following discussion assumes that you are running `g77' in `f2c'
compatibility mode, i.e. not using `-fno-f2c'. It provides some advice
about quick and simple techniques for linking Fortran and C (or C++),
the most common requirement. For the full story consult the
--- 17477,17486 ----
File: g77.info, Node: Interoperating with C and C++, Up: Other Languages
! 12.1 Tools and advice for interoperating with C and C++
! =======================================================
! The following discussion assumes that you are running `g77' in `f2c'
compatibility mode, i.e. not using `-fno-f2c'. It provides some advice
about quick and simple techniques for linking Fortran and C (or C++),
the most common requirement. For the full story consult the
*************** running `g77 -v'.
*** 17267,17276 ****
File: g77.info, Node: C Interfacing Tools, Next: C Access to Type Information, Up: Interoperating with C and C++
! C Interfacing Tools
! -------------------
! Even if you don't actually use it as a compiler, `f2c' from
`ftp://ftp.netlib.org/f2c/src', can be a useful tool when you're
interfacing (linking) Fortran and C. *Note Generating Skeletons and
Prototypes with `f2c': f2c Skeletons and Prototypes.
--- 17504,17513 ----
File: g77.info, Node: C Interfacing Tools, Next: C Access to Type Information, Up: Interoperating with C and C++
! 12.1.1 C Interfacing Tools
! --------------------------
! Even if you don't actually use it as a compiler, `f2c' from
`ftp://ftp.netlib.org/f2c/src', can be a useful tool when you're
interfacing (linking) Fortran and C. *Note Generating Skeletons and
Prototypes with `f2c': f2c Skeletons and Prototypes.
*************** between Fortran and C. It can be used i
*** 17289,17313 ****
File: g77.info, Node: C Access to Type Information, Next: f2c Skeletons and Prototypes, Prev: C Interfacing Tools, Up: Interoperating with C and C++
! Accessing Type Information in C
! -------------------------------
! Generally, C code written to link with `g77' code--calling and/or
! being called from Fortran--should `#include ' to define the C
! versions of the Fortran types. Don't assume Fortran `INTEGER' types
! correspond to C `int's, for instance; instead, declare them as
! `integer', a type defined by `g2c.h'. `g2c.h' is installed where `gcc'
! will find it by default, assuming you use a copy of `gcc' compatible
! with `g77', probably built at the same time as `g77'.
File: g77.info, Node: f2c Skeletons and Prototypes, Next: C++ Considerations, Prev: C Access to Type Information, Up: Interoperating with C and C++
! Generating Skeletons and Prototypes with `f2c'
! ----------------------------------------------
! A simple and foolproof way to write `g77'-callable C routines--e.g.
! to interface with an existing library--is to write a file (named, for
example, `fred.f') of dummy Fortran skeletons comprising just the
declaration of the routine(s) and dummy arguments plus `END' statements.
Then run `f2c' on file `fred.f' to produce `fred.c' into which you can
--- 17526,17550 ----
File: g77.info, Node: C Access to Type Information, Next: f2c Skeletons and Prototypes, Prev: C Interfacing Tools, Up: Interoperating with C and C++
! 12.1.2 Accessing Type Information in C
! --------------------------------------
! Generally, C code written to link with `g77' code--calling and/or being
! called from Fortran--should `#include ' to define the C versions
! of the Fortran types. Don't assume Fortran `INTEGER' types correspond
! to C `int's, for instance; instead, declare them as `integer', a type
! defined by `g2c.h'. `g2c.h' is installed where `gcc' will find it by
! default, assuming you use a copy of `gcc' compatible with `g77',
! probably built at the same time as `g77'.
File: g77.info, Node: f2c Skeletons and Prototypes, Next: C++ Considerations, Prev: C Access to Type Information, Up: Interoperating with C and C++
! 12.1.3 Generating Skeletons and Prototypes with `f2c'
! -----------------------------------------------------
! A simple and foolproof way to write `g77'-callable C routines--e.g. to
! interface with an existing library--is to write a file (named, for
example, `fred.f') of dummy Fortran skeletons comprising just the
declaration of the routine(s) and dummy arguments plus `END' statements.
Then run `f2c' on file `fred.f' to produce `fred.c' into which you can
*************** consistency checking of dummy and actual
*** 17337,17347 ****
File: g77.info, Node: C++ Considerations, Next: Startup Code, Prev: f2c Skeletons and Prototypes, Up: Interoperating with C and C++
! C++ Considerations
! ------------------
! `f2c' can be used to generate suitable code for compilation with a
! C++ system using the `-C++' option. The important thing about linking
`g77'-compiled code with C++ is that the prototypes for the `g77'
routines must specify C linkage to avoid name mangling. So, use an
`extern "C"' declaration. `f2c''s `-C++' option will not take care of
--- 17574,17584 ----
File: g77.info, Node: C++ Considerations, Next: Startup Code, Prev: f2c Skeletons and Prototypes, Up: Interoperating with C and C++
! 12.1.4 C++ Considerations
! -------------------------
! `f2c' can be used to generate suitable code for compilation with a C++
! system using the `-C++' option. The important thing about linking
`g77'-compiled code with C++ is that the prototypes for the `g77'
routines must specify C linkage to avoid name mangling. So, use an
`extern "C"' declaration. `f2c''s `-C++' option will not take care of
*************** will avoid clashes with C++ reserved wor
*** 17351,17360 ****
File: g77.info, Node: Startup Code, Prev: C++ Considerations, Up: Interoperating with C and C++
! Startup Code
! ------------
! Unlike with some runtime systems, it shouldn't be necessary (unless
there are bugs) to use a Fortran main program unit to ensure the
runtime--specifically the I/O system--is initialized.
--- 17588,17597 ----
File: g77.info, Node: Startup Code, Prev: C++ Considerations, Up: Interoperating with C and C++
! 12.1.5 Startup Code
! -------------------
! Unlike with some runtime systems, it shouldn't be necessary (unless
there are bugs) to use a Fortran main program unit to ensure the
runtime--specifically the I/O system--is initialized.
*************** open-code (inline) references to `IARGC'
*** 17462,17475 ****
File: g77.info, Node: Debugging and Interfacing, Next: Collected Fortran Wisdom, Prev: Other Languages, Up: Top
! Debugging and Interfacing
! *************************
! GNU Fortran currently generates code that is object-compatible with
! the `f2c' converter. Also, it avoids limitations in the current GBE,
! such as the inability to generate a procedure with multiple entry
! points, by generating code that is structured differently (in terms of
! procedure names, scopes, arguments, and so on) than might be expected.
As a result, writing code in other languages that calls on, is
called by, or shares in-memory data with `g77'-compiled code generally
--- 17699,17712 ----
File: g77.info, Node: Debugging and Interfacing, Next: Collected Fortran Wisdom, Prev: Other Languages, Up: Top
! 13 Debugging and Interfacing
! ****************************
! GNU Fortran currently generates code that is object-compatible with the
! `f2c' converter. Also, it avoids limitations in the current GBE, such
! as the inability to generate a procedure with multiple entry points, by
! generating code that is structured differently (in terms of procedure
! names, scopes, arguments, and so on) than might be expected.
As a result, writing code in other languages that calls on, is
called by, or shares in-memory data with `g77'-compiled code generally
*************** described in this section.
*** 17516,17525 ****
File: g77.info, Node: Main Program Unit, Next: Procedures, Up: Debugging and Interfacing
! Main Program Unit (PROGRAM)
! ===========================
! When `g77' compiles a main program unit, it gives it the public
procedure name `MAIN__'. The `libg2c' library has the actual `main()'
procedure as is typical of C-based environments, and it is this
procedure that performs some initial start-up activity and then calls
--- 17753,17762 ----
File: g77.info, Node: Main Program Unit, Next: Procedures, Up: Debugging and Interfacing
! 13.1 Main Program Unit (PROGRAM)
! ================================
! When `g77' compiles a main program unit, it gives it the public
procedure name `MAIN__'. The `libg2c' library has the actual `main()'
procedure as is typical of C-based environments, and it is this
procedure that performs some initial start-up activity and then calls
*************** breaking at `MAIN__', that should work f
*** 17572,17581 ****
File: g77.info, Node: Procedures, Next: Functions, Prev: Main Program Unit, Up: Debugging and Interfacing
! Procedures (SUBROUTINE and FUNCTION)
! ====================================
! Currently, `g77' passes arguments via reference--specifically, by
passing a pointer to the location in memory of a variable, array, array
element, a temporary location that holds the result of evaluating an
expression, or a temporary or permanent location that holds the value
--- 17809,17818 ----
File: g77.info, Node: Procedures, Next: Functions, Prev: Main Program Unit, Up: Debugging and Interfacing
! 13.2 Procedures (SUBROUTINE and FUNCTION)
! =========================================
! Currently, `g77' passes arguments via reference--specifically, by
passing a pointer to the location in memory of a variable, array, array
element, a temporary location that holds the result of evaluating an
expression, or a temporary or permanent location that holds the value
*************** appear.
*** 17635,17644 ****
File: g77.info, Node: Functions, Next: Names, Prev: Procedures, Up: Debugging and Interfacing
! Functions (FUNCTION and RETURN)
! ===============================
! `g77' handles in a special way functions that return the following
types:
* `CHARACTER'
--- 17872,17881 ----
File: g77.info, Node: Functions, Next: Names, Prev: Procedures, Up: Debugging and Interfacing
! 13.3 Functions (FUNCTION and RETURN)
! ====================================
! `g77' handles in a special way functions that return the following
types:
* `CHARACTER'
*************** type). When `-fno-f2c' is in force, `RE
*** 17674,17686 ****
File: g77.info, Node: Names, Next: Common Blocks, Prev: Functions, Up: Debugging and Interfacing
! Names
! =====
! Fortran permits each implementation to decide how to represent names
! as far as how they're seen in other contexts, such as debuggers and
! when interfacing to other languages, and especially as far as how
! casing is handled.
External names--names of entities that are public, or "accessible",
to all modules in a program--normally have an underscore (`_') appended
--- 17911,17923 ----
File: g77.info, Node: Names, Next: Common Blocks, Prev: Functions, Up: Debugging and Interfacing
! 13.4 Names
! ==========
! Fortran permits each implementation to decide how to represent names as
! far as how they're seen in other contexts, such as debuggers and when
! interfacing to other languages, and especially as far as how casing is
! handled.
External names--names of entities that are public, or "accessible",
to all modules in a program--normally have an underscore (`_') appended
*************** be used to inhibit the appending of the
*** 17750,17768 ****
File: g77.info, Node: Common Blocks, Next: Local Equivalence Areas, Prev: Names, Up: Debugging and Interfacing
! Common Blocks (COMMON)
! ======================
! `g77' names and lays out `COMMON' areas the same way `f2c' does, for
compatibility with `f2c'.
File: g77.info, Node: Local Equivalence Areas, Next: Complex Variables, Prev: Common Blocks, Up: Debugging and Interfacing
! Local Equivalence Areas (EQUIVALENCE)
! =====================================
! `g77' treats storage-associated areas involving a `COMMON' block as
explained in the section on common blocks.
A local `EQUIVALENCE' area is a collection of variables and arrays
--- 17987,18005 ----
File: g77.info, Node: Common Blocks, Next: Local Equivalence Areas, Prev: Names, Up: Debugging and Interfacing
! 13.5 Common Blocks (COMMON)
! ===========================
! `g77' names and lays out `COMMON' areas the same way `f2c' does, for
compatibility with `f2c'.
File: g77.info, Node: Local Equivalence Areas, Next: Complex Variables, Prev: Common Blocks, Up: Debugging and Interfacing
! 13.6 Local Equivalence Areas (EQUIVALENCE)
! ==========================================
! `g77' treats storage-associated areas involving a `COMMON' block as
explained in the section on common blocks.
A local `EQUIVALENCE' area is a collection of variables and arrays
*************** documentation.)
*** 17781,17792 ****
File: g77.info, Node: Complex Variables, Next: Arrays, Prev: Local Equivalence Areas, Up: Debugging and Interfacing
! Complex Variables (COMPLEX)
! ===========================
! As of 0.5.20, `g77' defaults to handling `COMPLEX' types (and
! related intrinsics, constants, functions, and so on) in a manner that
! makes direct debugging involving these types in Fortran language mode
difficult.
Essentially, `g77' implements these types using an internal
--- 18018,18029 ----
File: g77.info, Node: Complex Variables, Next: Arrays, Prev: Local Equivalence Areas, Up: Debugging and Interfacing
! 13.7 Complex Variables (COMPLEX)
! ================================
! As of 0.5.20, `g77' defaults to handling `COMPLEX' types (and related
! intrinsics, constants, functions, and so on) in a manner that makes
! direct debugging involving these types in Fortran language mode
difficult.
Essentially, `g77' implements these types using an internal
*************** afterward. (In `gdb', this is accomplis
*** 17807,17817 ****
File: g77.info, Node: Arrays, Next: Adjustable Arrays, Prev: Complex Variables, Up: Debugging and Interfacing
! Arrays (DIMENSION)
! ==================
! Fortran uses "column-major ordering" in its arrays. This differs
! from other languages, such as C, which use "row-major ordering". The
difference is that, with Fortran, array elements adjacent to each other
in memory differ in the _first_ subscript instead of the last;
`A(5,10,20)' immediately follows `A(4,10,20)', whereas with row-major
--- 18044,18054 ----
File: g77.info, Node: Arrays, Next: Adjustable Arrays, Prev: Complex Variables, Up: Debugging and Interfacing
! 13.8 Arrays (DIMENSION)
! =======================
! Fortran uses "column-major ordering" in its arrays. This differs from
! other languages, such as C, which use "row-major ordering". The
difference is that, with Fortran, array elements adjacent to each other
in memory differ in the _first_ subscript instead of the last;
`A(5,10,20)' immediately follows `A(4,10,20)', whereas with row-major
*************** subscripts equal to the corresponding lo
*** 17877,17886 ****
File: g77.info, Node: Adjustable Arrays, Next: Alternate Entry Points, Prev: Arrays, Up: Debugging and Interfacing
! Adjustable Arrays (DIMENSION)
! =============================
! Adjustable and automatic arrays in Fortran require the implementation
(in this case, the `g77' compiler) to "memorize" the expressions that
dimension the arrays each time the procedure is invoked. This is so
that subsequent changes to variables used in those expressions, made
--- 18114,18123 ----
File: g77.info, Node: Adjustable Arrays, Next: Alternate Entry Points, Prev: Arrays, Up: Debugging and Interfacing
! 13.9 Adjustable Arrays (DIMENSION)
! ==================================
! Adjustable and automatic arrays in Fortran require the implementation
(in this case, the `g77' compiler) to "memorize" the expressions that
dimension the arrays each time the procedure is invoked. This is so
that subsequent changes to variables used in those expressions, made
*************** the future!)
*** 17942,17951 ****
File: g77.info, Node: Alternate Entry Points, Next: Alternate Returns, Prev: Adjustable Arrays, Up: Debugging and Interfacing
! Alternate Entry Points (ENTRY)
! ==============================
! The GBE does not understand the general concept of alternate entry
points as Fortran provides via the ENTRY statement. `g77' gets around
this by using an approach to compiling procedures having at least one
`ENTRY' statement that is almost identical to the approach used by
--- 18179,18188 ----
File: g77.info, Node: Alternate Entry Points, Next: Alternate Returns, Prev: Adjustable Arrays, Up: Debugging and Interfacing
! 13.10 Alternate Entry Points (ENTRY)
! ====================================
! The GBE does not understand the general concept of alternate entry
points as Fortran provides via the ENTRY statement. `g77' gets around
this by using an approach to compiling procedures having at least one
`ENTRY' statement that is almost identical to the approach used by
*************** function.
*** 18078,18087 ****
File: g77.info, Node: Alternate Returns, Next: Assigned Statement Labels, Prev: Alternate Entry Points, Up: Debugging and Interfacing
! Alternate Returns (SUBROUTINE and RETURN)
! =========================================
! Subroutines with alternate returns (e.g. `SUBROUTINE X(*)' and `CALL
X(*50)') are implemented by `g77' as functions returning the C `int'
type. The actual alternate-return arguments are omitted from the
calling sequence. Instead, the caller uses the return value to do a
--- 18315,18324 ----
File: g77.info, Node: Alternate Returns, Next: Assigned Statement Labels, Prev: Alternate Entry Points, Up: Debugging and Interfacing
! 13.11 Alternate Returns (SUBROUTINE and RETURN)
! ===============================================
! Subroutines with alternate returns (e.g. `SUBROUTINE X(*)' and `CALL
X(*50)') are implemented by `g77' as functions returning the C `int'
type. The actual alternate-return arguments are omitted from the
calling sequence. Instead, the caller uses the return value to do a
*************** C, and `RETURN' by itself is `X = 0' and
*** 18095,18110 ****
File: g77.info, Node: Assigned Statement Labels, Next: Run-time Library Errors, Prev: Alternate Returns, Up: Debugging and Interfacing
! Assigned Statement Labels (ASSIGN and GOTO)
! ===========================================
! For portability to machines where a pointer (such as to a label,
! which is how `g77' implements `ASSIGN' and its relatives, the
! assigned-`GOTO' and assigned-`FORMAT'-I/O statements) is wider
! (bitwise) than an `INTEGER(KIND=1)', `g77' uses a different memory
! location to hold the `ASSIGN'ed value of a variable than it does the
! numerical value in that variable, unless the variable is wide enough
! (can hold enough bits).
In particular, while `g77' implements
--- 18332,18346 ----
File: g77.info, Node: Assigned Statement Labels, Next: Run-time Library Errors, Prev: Alternate Returns, Up: Debugging and Interfacing
! 13.12 Assigned Statement Labels (ASSIGN and GOTO)
! =================================================
! For portability to machines where a pointer (such as to a label, which
! is how `g77' implements `ASSIGN' and its relatives, the assigned-`GOTO'
! and assigned-`FORMAT'-I/O statements) is wider (bitwise) than an
! `INTEGER(KIND=1)', `g77' uses a different memory location to hold the
! `ASSIGN'ed value of a variable than it does the numerical value in that
! variable, unless the variable is wide enough (can hold enough bits).
In particular, while `g77' implements
*************** assigned-label uses of a variable.
*** 18137,18147 ****
File: g77.info, Node: Run-time Library Errors, Prev: Assigned Statement Labels, Up: Debugging and Interfacing
! Run-time Library Errors
! =======================
! The `libg2c' library currently has the following table to relate
! error code numbers, returned in `IOSTAT=' variables, to messages. This
information should, in future versions of this document, be expanded
upon to include detailed descriptions of each message.
--- 18373,18383 ----
File: g77.info, Node: Run-time Library Errors, Prev: Assigned Statement Labels, Up: Debugging and Interfacing
! 13.13 Run-time Library Errors
! =============================
! The `libg2c' library currently has the following table to relate error
! code numbers, returned in `IOSTAT=' variables, to messages. This
information should, in future versions of this document, be expanded
upon to include detailed descriptions of each message.
*************** actual numbers in the future.
*** 18190,18199 ****
File: g77.info, Node: Collected Fortran Wisdom, Next: Trouble, Prev: Debugging and Interfacing, Up: Top
! Collected Fortran Wisdom
! ************************
! Most users of `g77' can be divided into two camps:
* Those writing new Fortran code to be compiled by `g77'.
--- 18426,18435 ----
File: g77.info, Node: Collected Fortran Wisdom, Next: Trouble, Prev: Debugging and Interfacing, Up: Top
! 14 Collected Fortran Wisdom
! ***************************
! Most users of `g77' can be divided into two camps:
* Those writing new Fortran code to be compiled by `g77'.
*************** as well.
*** 18226,18235 ****
File: g77.info, Node: Advantages Over f2c, Next: Block Data and Libraries, Up: Collected Fortran Wisdom
! Advantages Over f2c
! ===================
! Without `f2c', `g77' would have taken much longer to do and probably
not been as good for quite a while. Sometimes people who notice how
much `g77' depends on, and documents encouragement to use, `f2c' ask
why `g77' was created if `f2c' already existed.
--- 18462,18471 ----
File: g77.info, Node: Advantages Over f2c, Next: Block Data and Libraries, Up: Collected Fortran Wisdom
! 14.1 Advantages Over f2c
! ========================
! Without `f2c', `g77' would have taken much longer to do and probably
not been as good for quite a while. Sometimes people who notice how
much `g77' depends on, and documents encouragement to use, `f2c' ask
why `g77' was created if `f2c' already existed.
*************** is not intended to be comprehensive.
*** 18250,18259 ****
File: g77.info, Node: Language Extensions, Next: Diagnostic Abilities, Up: Advantages Over f2c
! Language Extensions
! -------------------
! `g77' offers several extensions to FORTRAN 77 language that `f2c'
doesn't:
* Automatic arrays
--- 18486,18495 ----
File: g77.info, Node: Language Extensions, Next: Diagnostic Abilities, Up: Advantages Over f2c
! 14.1.1 Language Extensions
! --------------------------
! `g77' offers several extensions to FORTRAN 77 language that `f2c'
doesn't:
* Automatic arrays
*************** features at some time in the future.
*** 18294,18303 ****
File: g77.info, Node: Diagnostic Abilities, Next: Compiler Options, Prev: Language Extensions, Up: Advantages Over f2c
! Diagnostic Abilities
! --------------------
! `g77' offers better diagnosis of problems in `FORMAT' statements.
`f2c' doesn't, for example, emit any diagnostic for
`FORMAT(XZFAJG10324)', leaving that to be diagnosed, at run time, by
the `libf2c' run-time library.
--- 18530,18539 ----
File: g77.info, Node: Diagnostic Abilities, Next: Compiler Options, Prev: Language Extensions, Up: Advantages Over f2c
! 14.1.2 Diagnostic Abilities
! ---------------------------
! `g77' offers better diagnosis of problems in `FORMAT' statements.
`f2c' doesn't, for example, emit any diagnostic for
`FORMAT(XZFAJG10324)', leaving that to be diagnosed, at run time, by
the `libf2c' run-time library.
*************** the `libf2c' run-time library.
*** 18305,18314 ****
File: g77.info, Node: Compiler Options, Next: Compiler Speed, Prev: Diagnostic Abilities, Up: Advantages Over f2c
! Compiler Options
! ----------------
! `g77' offers compiler options that `f2c' doesn't, most of which are
designed to more easily accommodate legacy code:
* Two that control the automatic appending of extra underscores to
--- 18541,18550 ----
File: g77.info, Node: Compiler Options, Next: Compiler Speed, Prev: Diagnostic Abilities, Up: Advantages Over f2c
! 14.1.3 Compiler Options
! -----------------------
! `g77' offers compiler options that `f2c' doesn't, most of which are
designed to more easily accommodate legacy code:
* Two that control the automatic appending of extra underscores to
*************** some time in the future.
*** 18336,18345 ****
File: g77.info, Node: Compiler Speed, Next: Program Speed, Prev: Compiler Options, Up: Advantages Over f2c
! Compiler Speed
! --------------
! Saving the steps of writing and then rereading C code is a big reason
why `g77' should be able to compile code much faster than using `f2c'
in conjunction with the equivalent invocation of `gcc'.
--- 18572,18581 ----
File: g77.info, Node: Compiler Speed, Next: Program Speed, Prev: Compiler Options, Up: Advantages Over f2c
! 14.1.4 Compiler Speed
! ---------------------
! Saving the steps of writing and then rereading C code is a big reason
why `g77' should be able to compile code much faster than using `f2c'
in conjunction with the equivalent invocation of `gcc'.
*************** with `gcc'.
*** 18353,18363 ****
File: g77.info, Node: Program Speed, Next: Ease of Debugging, Prev: Compiler Speed, Up: Advantages Over f2c
! Program Speed
! -------------
! `g77' has the potential to better optimize code than `f2c', even
! when `gcc' is used to compile the output of `f2c', because `f2c' must
necessarily translate Fortran into a somewhat lower-level language (C)
that cannot preserve all the information that is potentially useful for
optimization, while `g77' can gather, preserve, and transmit that
--- 18589,18599 ----
File: g77.info, Node: Program Speed, Next: Ease of Debugging, Prev: Compiler Speed, Up: Advantages Over f2c
! 14.1.5 Program Speed
! --------------------
! `g77' has the potential to better optimize code than `f2c', even when
! `gcc' is used to compile the output of `f2c', because `f2c' must
necessarily translate Fortran into a somewhat lower-level language (C)
that cannot preserve all the information that is potentially useful for
optimization, while `g77' can gather, preserve, and transmit that
*************** available in an upcoming release of `gcc
*** 18387,18398 ****
File: g77.info, Node: Ease of Debugging, Next: Character and Hollerith Constants, Prev: Program Speed, Up: Advantages Over f2c
! Ease of Debugging
! -----------------
! Because `g77' compiles directly to assembler code like `gcc',
! instead of translating to an intermediate language (C) as does `f2c',
! support for debugging can be better for `g77' than `f2c'.
However, although `g77' might be somewhat more "native" in terms of
debugging support than `f2c' plus `gcc', there still are a lot of
--- 18623,18634 ----
File: g77.info, Node: Ease of Debugging, Next: Character and Hollerith Constants, Prev: Program Speed, Up: Advantages Over f2c
! 14.1.6 Ease of Debugging
! ------------------------
! Because `g77' compiles directly to assembler code like `gcc', instead
! of translating to an intermediate language (C) as does `f2c', support
! for debugging can be better for `g77' than `f2c'.
However, although `g77' might be somewhat more "native" in terms of
debugging support than `f2c' plus `gcc', there still are a lot of
*************** finding help improving the other product
*** 18435,18448 ****
File: g77.info, Node: Character and Hollerith Constants, Prev: Ease of Debugging, Up: Advantages Over f2c
! Character and Hollerith Constants
! ---------------------------------
! To avoid the extensive hassle that would be needed to avoid this,
! `f2c' uses C character constants to encode character and Hollerith
! constants. That means a constant like `'HELLO'' is translated to
! `"hello"' in C, which further means that an extra null byte is present
! at the end of the constant. This null byte is superfluous.
`g77' does not generate such null bytes. This represents significant
savings of resources, such as on systems where `/dev/null' or
--- 18671,18684 ----
File: g77.info, Node: Character and Hollerith Constants, Prev: Ease of Debugging, Up: Advantages Over f2c
! 14.1.7 Character and Hollerith Constants
! ----------------------------------------
! To avoid the extensive hassle that would be needed to avoid this, `f2c'
! uses C character constants to encode character and Hollerith constants.
! That means a constant like `'HELLO'' is translated to `"hello"' in C,
! which further means that an extra null byte is present at the end of
! the constant. This null byte is superfluous.
`g77' does not generate such null bytes. This represents significant
savings of resources, such as on systems where `/dev/null' or
*************** patent on the digits 0 and 1 is upheld.)
*** 18455,18467 ****
File: g77.info, Node: Block Data and Libraries, Next: Loops, Prev: Advantages Over f2c, Up: Collected Fortran Wisdom
! Block Data and Libraries
! ========================
! To ensure that block data program units are linked, especially a
! concern when they are put into libraries, give each one a name (as in
! `BLOCK DATA FOO') and make sure there is an `EXTERNAL FOO' statement in
! every program unit that uses any common block initialized by the
corresponding `BLOCK DATA'. `g77' currently compiles a `BLOCK DATA' as
if it were a `SUBROUTINE', that is, it generates an actual procedure
having the appropriate name. The procedure does nothing but return
--- 18691,18703 ----
File: g77.info, Node: Block Data and Libraries, Next: Loops, Prev: Advantages Over f2c, Up: Collected Fortran Wisdom
! 14.2 Block Data and Libraries
! =============================
! To ensure that block data program units are linked, especially a concern
! when they are put into libraries, give each one a name (as in `BLOCK
! DATA FOO') and make sure there is an `EXTERNAL FOO' statement in every
! program unit that uses any common block initialized by the
corresponding `BLOCK DATA'. `g77' currently compiles a `BLOCK DATA' as
if it were a `SUBROUTINE', that is, it generates an actual procedure
having the appropriate name. The procedure does nothing but return
*************** executable program.
*** 18530,18539 ****
File: g77.info, Node: Loops, Next: Working Programs, Prev: Block Data and Libraries, Up: Collected Fortran Wisdom
! Loops
! =====
! The meaning of a `DO' loop in Fortran is precisely specified in the
Fortran standard...and is quite different from what many programmers
might expect.
--- 18766,18775 ----
File: g77.info, Node: Loops, Next: Working Programs, Prev: Block Data and Libraries, Up: Collected Fortran Wisdom
! 14.3 Loops
! ==========
! The meaning of a `DO' loop in Fortran is precisely specified in the
Fortran standard...and is quite different from what many programmers
might expect.
*************** information on this option.
*** 18662,18671 ****
File: g77.info, Node: Working Programs, Next: Overly Convenient Options, Prev: Loops, Up: Collected Fortran Wisdom
! Working Programs
! ================
! Getting Fortran programs to work in the first place can be quite a
challenge--even when the programs already work on other systems, or
when using other compilers.
--- 18898,18907 ----
File: g77.info, Node: Working Programs, Next: Overly Convenient Options, Prev: Loops, Up: Collected Fortran Wisdom
! 14.4 Working Programs
! =====================
! Getting Fortran programs to work in the first place can be quite a
challenge--even when the programs already work on other systems, or
when using other compilers.
*************** bugs in such programs.
*** 18689,18699 ****
File: g77.info, Node: Not My Type, Next: Variables Assumed To Be Zero, Up: Working Programs
! Not My Type
! -----------
! A fruitful source of bugs in Fortran source code is use, or mis-use,
! of Fortran's implicit-typing feature, whereby the type of a variable,
array, or function is determined by the first character of its name.
Simple cases of this include statements like `LOGX=9.227', without a
--- 18925,18935 ----
File: g77.info, Node: Not My Type, Next: Variables Assumed To Be Zero, Up: Working Programs
! 14.4.1 Not My Type
! ------------------
! A fruitful source of bugs in Fortran source code is use, or mis-use, of
! Fortran's implicit-typing feature, whereby the type of a variable,
array, or function is determined by the first character of its name.
Simple cases of this include statements like `LOGX=9.227', without a
*************** evaluated. (In this particular case, th
*** 18729,18741 ****
File: g77.info, Node: Variables Assumed To Be Zero, Next: Variables Assumed To Be Saved, Prev: Not My Type, Up: Working Programs
! Variables Assumed To Be Zero
! ----------------------------
! Many Fortran programs were developed on systems that provided
! automatic initialization of all, or some, variables and arrays to zero.
! As a result, many of these programs depend, sometimes inadvertently, on
! this behavior, though to do so violates the Fortran standards.
You can ask `g77' for this behavior by specifying the
`-finit-local-zero' option when compiling Fortran code. (You might
--- 18965,18977 ----
File: g77.info, Node: Variables Assumed To Be Zero, Next: Variables Assumed To Be Saved, Prev: Not My Type, Up: Working Programs
! 14.4.2 Variables Assumed To Be Zero
! -----------------------------------
! Many Fortran programs were developed on systems that provided automatic
! initialization of all, or some, variables and arrays to zero. As a
! result, many of these programs depend, sometimes inadvertently, on this
! behavior, though to do so violates the Fortran standards.
You can ask `g77' for this behavior by specifying the
`-finit-local-zero' option when compiling Fortran code. (You might
*************** fixing them, using techniques such as co
*** 18752,18763 ****
File: g77.info, Node: Variables Assumed To Be Saved, Next: Unwanted Variables, Prev: Variables Assumed To Be Zero, Up: Working Programs
! Variables Assumed To Be Saved
! -----------------------------
! Many Fortran programs were developed on systems that saved the
! values of all, or some, variables and arrays across procedure calls.
! As a result, many of these programs depend, sometimes inadvertently, on
being able to assign a value to a variable, perform a `RETURN' to a
calling procedure, and, upon subsequent invocation, reference the
previously assigned variable to obtain the value.
--- 18988,18999 ----
File: g77.info, Node: Variables Assumed To Be Saved, Next: Unwanted Variables, Prev: Variables Assumed To Be Zero, Up: Working Programs
! 14.4.3 Variables Assumed To Be Saved
! ------------------------------------
! Many Fortran programs were developed on systems that saved the values
! of all, or some, variables and arrays across procedure calls. As a
! result, many of these programs depend, sometimes inadvertently, on
being able to assign a value to a variable, perform a `RETURN' to a
calling procedure, and, upon subsequent invocation, reference the
previously assigned variable to obtain the value.
*************** as compiling with the `-O -Wuninitialize
*** 18780,18793 ****
File: g77.info, Node: Unwanted Variables, Next: Unused Arguments, Prev: Variables Assumed To Be Saved, Up: Working Programs
! Unwanted Variables
! ------------------
! The `-Wunused' option can find bugs involving implicit typing,
! sometimes more easily than using `-Wimplicit' in code that makes heavy
! use of implicit typing. An unused variable or array might indicate
! that the spelling for its declaration is different from that of its
! intended uses.
Other than cases involving typos, unused variables rarely indicate
actual bugs in a program. However, investigating such cases thoroughly
--- 19016,19029 ----
File: g77.info, Node: Unwanted Variables, Next: Unused Arguments, Prev: Variables Assumed To Be Saved, Up: Working Programs
! 14.4.4 Unwanted Variables
! -------------------------
! The `-Wunused' option can find bugs involving implicit typing, sometimes
! more easily than using `-Wimplicit' in code that makes heavy use of
! implicit typing. An unused variable or array might indicate that the
! spelling for its declaration is different from that of its intended
! uses.
Other than cases involving typos, unused variables rarely indicate
actual bugs in a program. However, investigating such cases thoroughly
*************** algorithm, then got distracted and forgo
*** 18799,18808 ****
File: g77.info, Node: Unused Arguments, Next: Surprising Interpretations of Code, Prev: Unwanted Variables, Up: Working Programs
! Unused Arguments
! ----------------
! As with unused variables, It is possible that unused arguments to a
procedure might indicate a bug. Compile with `-W -Wunused' option to
catch cases of unused arguments.
--- 19035,19044 ----
File: g77.info, Node: Unused Arguments, Next: Surprising Interpretations of Code, Prev: Unwanted Variables, Up: Working Programs
! 14.4.5 Unused Arguments
! -----------------------
! As with unused variables, It is possible that unused arguments to a
procedure might indicate a bug. Compile with `-W -Wunused' option to
catch cases of unused arguments.
*************** floating-point constants under certain c
*** 18812,18821 ****
File: g77.info, Node: Surprising Interpretations of Code, Next: Aliasing Assumed To Work, Prev: Unused Arguments, Up: Working Programs
! Surprising Interpretations of Code
! ----------------------------------
! The `-Wsurprising' option can help find bugs involving expression
evaluation or in the way `DO' loops with non-integral iteration
variables are handled. Cases found by this option might indicate a
difference of interpretation between the author of the code involved,
--- 19048,19057 ----
File: g77.info, Node: Surprising Interpretations of Code, Next: Aliasing Assumed To Work, Prev: Unused Arguments, Up: Working Programs
! 14.4.6 Surprising Interpretations of Code
! -----------------------------------------
! The `-Wsurprising' option can help find bugs involving expression
evaluation or in the way `DO' loops with non-integral iteration
variables are handled. Cases found by this option might indicate a
difference of interpretation between the author of the code involved,
*************** especially if such changes make the prog
*** 18830,18839 ****
File: g77.info, Node: Aliasing Assumed To Work, Next: Output Assumed To Flush, Prev: Surprising Interpretations of Code, Up: Working Programs
! Aliasing Assumed To Work
! ------------------------
! The `-falias-check', `-fargument-alias', `-fargument-noalias', and
`-fno-argument-noalias-global' options, introduced in version 0.5.20 and
`g77''s version 2.7.2.2.f.2 of `gcc', were withdrawn as of `g77'
version 0.5.23 due to their not being supported by `gcc' version 2.8.
--- 19066,19075 ----
File: g77.info, Node: Aliasing Assumed To Work, Next: Output Assumed To Flush, Prev: Surprising Interpretations of Code, Up: Working Programs
! 14.4.7 Aliasing Assumed To Work
! -------------------------------
! The `-falias-check', `-fargument-alias', `-fargument-noalias', and
`-fno-argument-noalias-global' options, introduced in version 0.5.20 and
`g77''s version 2.7.2.2.f.2 of `gcc', were withdrawn as of `g77'
version 0.5.23 due to their not being supported by `gcc' version 2.8.
*************** results when executed:
*** 18899,18905 ****
CALL FOO(I, I)
PRINT *, I
END
!
SUBROUTINE FOO(J, K)
J = J + K
K = J * K
--- 19135,19141 ----
CALL FOO(I, I)
PRINT *, I
END
!
SUBROUTINE FOO(J, K)
J = J + K
K = J * K
*************** of detection are welcome.
*** 18967,18978 ****
File: g77.info, Node: Output Assumed To Flush, Next: Large File Unit Numbers, Prev: Aliasing Assumed To Work, Up: Working Programs
! Output Assumed To Flush
! -----------------------
! For several versions prior to 0.5.20, `g77' configured its version
! of the `libf2c' run-time library so that one of its configuration
! macros, `ALWAYS_FLUSH', was defined.
This was done as a result of a belief that many programs expected
output to be flushed to the operating system (under UNIX, via the
--- 19203,19214 ----
File: g77.info, Node: Output Assumed To Flush, Next: Large File Unit Numbers, Prev: Aliasing Assumed To Work, Up: Working Programs
! 14.4.8 Output Assumed To Flush
! ------------------------------
! For several versions prior to 0.5.20, `g77' configured its version of
! the `libf2c' run-time library so that one of its configuration macros,
! `ALWAYS_FLUSH', was defined.
This was done as a result of a belief that many programs expected
output to be flushed to the operating system (under UNIX, via the
*************** trailing ` */'.
*** 19030,19041 ****
File: g77.info, Node: Large File Unit Numbers, Next: Floating-point precision, Prev: Output Assumed To Flush, Up: Working Programs
! Large File Unit Numbers
! -----------------------
! If your program crashes at run time with a message including the
! text `illegal unit number', that probably is a message from the
! run-time library, `libg2c'.
The message means that your program has attempted to use a file unit
number that is out of the range accepted by `libg2c'. Normally, this
--- 19266,19277 ----
File: g77.info, Node: Large File Unit Numbers, Next: Floating-point precision, Prev: Output Assumed To Flush, Up: Working Programs
! 14.4.9 Large File Unit Numbers
! ------------------------------
! If your program crashes at run time with a message including the text
! `illegal unit number', that probably is a message from the run-time
! library, `libg2c'.
The message means that your program has attempted to use a file unit
number that is out of the range accepted by `libg2c'. Normally, this
*************** other limits should be found in your sys
*** 19080,19090 ****
File: g77.info, Node: Floating-point precision, Next: Inconsistent Calling Sequences, Prev: Large File Unit Numbers, Up: Working Programs
! Floating-point precision
! ------------------------
! If your program depends on exact IEEE 754 floating-point handling it
! may help on some systems--specifically x86 or m68k hardware--to use the
`-ffloat-store' option or to reset the precision flag on the
floating-point unit. *Note Optimize Options::.
--- 19316,19326 ----
File: g77.info, Node: Floating-point precision, Next: Inconsistent Calling Sequences, Prev: Large File Unit Numbers, Up: Working Programs
! 14.4.10 Floating-point precision
! --------------------------------
! If your program depends on exact IEEE 754 floating-point handling it may
! help on some systems--specifically x86 or m68k hardware--to use the
`-ffloat-store' option or to reset the precision flag on the
floating-point unit. *Note Optimize Options::.
*************** IEEE conformance. *Note Hardware Models
*** 19109,19118 ****
File: g77.info, Node: Inconsistent Calling Sequences, Prev: Floating-point precision, Up: Working Programs
! Inconsistent Calling Sequences
! ------------------------------
! Code containing inconsistent calling sequences in the same file is
normally rejected--see *Note GLOBALS::. (Use, say, `ftnchek' to ensure
consistency across source files. *Note Generating Skeletons and
Prototypes with `f2c': f2c Skeletons and Prototypes.)
--- 19345,19354 ----
File: g77.info, Node: Inconsistent Calling Sequences, Prev: Floating-point precision, Up: Working Programs
! 14.4.11 Inconsistent Calling Sequences
! --------------------------------------
! Code containing inconsistent calling sequences in the same file is
normally rejected--see *Note GLOBALS::. (Use, say, `ftnchek' to ensure
consistency across source files. *Note Generating Skeletons and
Prototypes with `f2c': f2c Skeletons and Prototypes.)
*************** later. Similarly if, say, external C ro
*** 19129,19143 ****
File: g77.info, Node: Overly Convenient Options, Next: Faster Programs, Prev: Working Programs, Up: Collected Fortran Wisdom
! Overly Convenient Command-line Options
! ======================================
! These options should be used only as a quick-and-dirty way to
! determine how well your program will run under different compilation
! models without having to change the source. Some are more problematic
! than others, depending on how portable and maintainable you want the
! program to be (and, of course, whether you are allowed to change it at
! all is crucial).
You should not continue to use these command-line options to compile
a given program, but rather should make changes to the source code:
--- 19365,19379 ----
File: g77.info, Node: Overly Convenient Options, Next: Faster Programs, Prev: Working Programs, Up: Collected Fortran Wisdom
! 14.5 Overly Convenient Command-line Options
! ===========================================
! These options should be used only as a quick-and-dirty way to determine
! how well your program will run under different compilation models
! without having to change the source. Some are more problematic than
! others, depending on how portable and maintainable you want the program
! to be (and, of course, whether you are allowed to change it at all is
! crucial).
You should not continue to use these command-line options to compile
a given program, but rather should make changes to the source code:
*************** a given program, but rather should make
*** 19197,19208 ****
File: g77.info, Node: Faster Programs, Prev: Overly Convenient Options, Up: Collected Fortran Wisdom
! Faster Programs
! ===============
! Aside from the usual `gcc' options, such as `-O', `-ffast-math', and
! so on, consider trying some of the following approaches to speed up
! your program (once you get it working).
* Menu:
--- 19433,19444 ----
File: g77.info, Node: Faster Programs, Prev: Overly Convenient Options, Up: Collected Fortran Wisdom
! 14.6 Faster Programs
! ====================
! Aside from the usual `gcc' options, such as `-O', `-ffast-math', and so
! on, consider trying some of the following approaches to speed up your
! program (once you get it working).
* Menu:
*************** your program (once you get it working).
*** 19214,19223 ****
File: g77.info, Node: Aligned Data, Next: Prefer Automatic Uninitialized Variables, Up: Faster Programs
! Aligned Data
! ------------
! On some systems, such as those with Pentium Pro CPUs, programs that
make heavy use of `REAL(KIND=2)' (`DOUBLE PRECISION') might run much
slower than possible due to the compiler not aligning these 64-bit
values to 64-bit boundaries in memory. (The effect also is present,
--- 19450,19459 ----
File: g77.info, Node: Aligned Data, Next: Prefer Automatic Uninitialized Variables, Up: Faster Programs
! 14.6.1 Aligned Data
! -------------------
! On some systems, such as those with Pentium Pro CPUs, programs that
make heavy use of `REAL(KIND=2)' (`DOUBLE PRECISION') might run much
slower than possible due to the compiler not aligning these 64-bit
values to 64-bit boundaries in memory. (The effect also is present,
*************** systems (such as GNU/Linux).
*** 19306,19315 ****
File: g77.info, Node: Prefer Automatic Uninitialized Variables, Next: Avoid f2c Compatibility, Prev: Aligned Data, Up: Faster Programs
! Prefer Automatic Uninitialized Variables
! ----------------------------------------
! If you're using `-fno-automatic' already, you probably should change
your code to allow compilation with `-fautomatic' (the default), to
allow the program to run faster.
--- 19542,19551 ----
File: g77.info, Node: Prefer Automatic Uninitialized Variables, Next: Avoid f2c Compatibility, Prev: Aligned Data, Up: Faster Programs
! 14.6.2 Prefer Automatic Uninitialized Variables
! -----------------------------------------------
! If you're using `-fno-automatic' already, you probably should change
your code to allow compilation with `-fautomatic' (the default), to
allow the program to run faster.
*************** changes in your own code.
*** 19335,19358 ****
File: g77.info, Node: Avoid f2c Compatibility, Next: Use Submodel Options, Prev: Prefer Automatic Uninitialized Variables, Up: Faster Programs
! Avoid f2c Compatibility
! -----------------------
! If you aren't linking with any code compiled using `f2c', try using
! the `-fno-f2c' option when compiling _all_ the code in your program.
! (Note that `libf2c' is _not_ an example of code that is compiled using
`f2c'--it is compiled by a C compiler, typically `gcc'.)
File: g77.info, Node: Use Submodel Options, Prev: Avoid f2c Compatibility, Up: Faster Programs
! Use Submodel Options
! --------------------
! Using an appropriate `-m' option to generate specific code for your
! CPU may be worthwhile, though it may mean the executable won't run on
! other versions of the CPU that don't support the same instruction set.
! *Note Hardware Models and Configurations: (gcc)Submodel Options. For
instance on an x86 system the compiler might have been built--as shown
by `g77 -v'--for the target `i386-pc-linux-gnu', i.e. an `i386' CPU.
In that case to generate code best optimized for a Pentium you could
--- 19571,19594 ----
File: g77.info, Node: Avoid f2c Compatibility, Next: Use Submodel Options, Prev: Prefer Automatic Uninitialized Variables, Up: Faster Programs
! 14.6.3 Avoid f2c Compatibility
! ------------------------------
! If you aren't linking with any code compiled using `f2c', try using the
! `-fno-f2c' option when compiling _all_ the code in your program. (Note
! that `libf2c' is _not_ an example of code that is compiled using
`f2c'--it is compiled by a C compiler, typically `gcc'.)
File: g77.info, Node: Use Submodel Options, Prev: Avoid f2c Compatibility, Up: Faster Programs
! 14.6.4 Use Submodel Options
! ---------------------------
! Using an appropriate `-m' option to generate specific code for your CPU
! may be worthwhile, though it may mean the executable won't run on other
! versions of the CPU that don't support the same instruction set. *Note
! Hardware Models and Configurations: (gcc)Submodel Options. For
instance on an x86 system the compiler might have been built--as shown
by `g77 -v'--for the target `i386-pc-linux-gnu', i.e. an `i386' CPU.
In that case to generate code best optimized for a Pentium you could
*************** is not turned on anyway by `-O'.
*** 19369,19381 ****
File: g77.info, Node: Trouble, Next: Open Questions, Prev: Collected Fortran Wisdom, Up: Top
! Known Causes of Trouble with GNU Fortran
! ****************************************
! This section describes known problems that affect users of GNU
! Fortran. Most of these are not GNU Fortran bugs per se--if they were,
! we would fix them. But the result for a user might be like the result
! of a bug.
Some of these problems are due to bugs in other software, some are
missing features that are too much work to add, and some are places
--- 19605,19616 ----
File: g77.info, Node: Trouble, Next: Open Questions, Prev: Collected Fortran Wisdom, Up: Top
! 15 Known Causes of Trouble with GNU Fortran
! *******************************************
! This section describes known problems that affect users of GNU Fortran.
! Most of these are not GNU Fortran bugs per se--if they were, we would
! fix them. But the result for a user might be like the result of a bug.
Some of these problems are due to bugs in other software, some are
missing features that are too much work to add, and some are places
*************** portion of `g77', see *Note Known Causes
*** 19400,19410 ****
File: g77.info, Node: But-bugs, Next: Known Bugs, Up: Trouble
! Bugs Not In GNU Fortran
! =======================
! These are bugs to which the maintainers often have to reply, "but
! that isn't a bug in `g77'...". Some of these already are fixed in new
versions of other software; some still need to be fixed; some are
problems with how `g77' is installed or is being used; some are the
result of bad hardware that causes software to misbehave in sometimes
--- 19635,19645 ----
File: g77.info, Node: But-bugs, Next: Known Bugs, Up: Trouble
! 15.1 Bugs Not In GNU Fortran
! ============================
! These are bugs to which the maintainers often have to reply, "but that
! isn't a bug in `g77'...". Some of these already are fixed in new
versions of other software; some still need to be fixed; some are
problems with how `g77' is installed or is being used; some are the
result of bad hardware that causes software to misbehave in sometimes
*************** _thought_ to indicate bugs.
*** 19439,19448 ****
File: g77.info, Node: Signal 11 and Friends, Next: Cannot Link Fortran Programs, Up: But-bugs
! Signal 11 and Friends
! ---------------------
! A whole variety of strange behaviors can occur when the software, or
the way you are using the software, stresses the hardware in a way that
triggers hardware bugs. This might seem hard to believe, but it
happens frequently enough that there exist documents explaining in
--- 19674,19683 ----
File: g77.info, Node: Signal 11 and Friends, Next: Cannot Link Fortran Programs, Up: But-bugs
! 15.1.1 Signal 11 and Friends
! ----------------------------
! A whole variety of strange behaviors can occur when the software, or
the way you are using the software, stresses the hardware in a way that
triggers hardware bugs. This might seem hard to believe, but it
happens frequently enough that there exist documents explaining in
*************** including a reference to it in future ve
*** 19486,19495 ****
File: g77.info, Node: Cannot Link Fortran Programs, Next: Large Common Blocks, Prev: Signal 11 and Friends, Up: But-bugs
! Cannot Link Fortran Programs
! ----------------------------
! On some systems, perhaps just those with out-of-date (shared?)
libraries, unresolved-reference errors happen when linking
`g77'-compiled programs (which should be done using `g77').
--- 19721,19730 ----
File: g77.info, Node: Cannot Link Fortran Programs, Next: Large Common Blocks, Prev: Signal 11 and Friends, Up: But-bugs
! 15.1.2 Cannot Link Fortran Programs
! -----------------------------------
! On some systems, perhaps just those with out-of-date (shared?)
libraries, unresolved-reference errors happen when linking
`g77'-compiled programs (which should be done using `g77').
*************** line, in case that helps.
*** 19515,19524 ****
File: g77.info, Node: Large Common Blocks, Next: Debugger Problems, Prev: Cannot Link Fortran Programs, Up: But-bugs
! Large Common Blocks
! -------------------
! On some older GNU/Linux systems, programs with common blocks larger
than 16MB cannot be linked without some kind of error message being
produced.
--- 19750,19759 ----
File: g77.info, Node: Large Common Blocks, Next: Debugger Problems, Prev: Cannot Link Fortran Programs, Up: But-bugs
! 15.1.3 Large Common Blocks
! --------------------------
! On some older GNU/Linux systems, programs with common blocks larger
than 16MB cannot be linked without some kind of error message being
produced.
*************** versions of `binutils', such as version
*** 19528,19537 ****
File: g77.info, Node: Debugger Problems, Next: NeXTStep Problems, Prev: Large Common Blocks, Up: But-bugs
! Debugger Problems
! -----------------
! There are some known problems when using `gdb' on code compiled by
`g77'. Inadequate investigation as of the release of 0.5.16 results in
not knowing which products are the culprit, but `gdb-4.14' definitely
crashes when, for example, an attempt is made to print the contents of
--- 19763,19772 ----
File: g77.info, Node: Debugger Problems, Next: NeXTStep Problems, Prev: Large Common Blocks, Up: But-bugs
! 15.1.4 Debugger Problems
! ------------------------
! There are some known problems when using `gdb' on code compiled by
`g77'. Inadequate investigation as of the release of 0.5.16 results in
not knowing which products are the culprit, but `gdb-4.14' definitely
crashes when, for example, an attempt is made to print the contents of
*************** done for a different compiler and isn't
*** 19543,19552 ****
File: g77.info, Node: NeXTStep Problems, Next: Stack Overflow, Prev: Debugger Problems, Up: But-bugs
! NeXTStep Problems
! -----------------
! Developers of Fortran code on NeXTStep (all architectures) have to
watch out for the following problem when writing programs with large,
statically allocated (i.e. non-stack based) data structures (common
blocks, saved arrays).
--- 19778,19787 ----
File: g77.info, Node: NeXTStep Problems, Next: Stack Overflow, Prev: Debugger Problems, Up: But-bugs
! 15.1.5 NeXTStep Problems
! ------------------------
! Developers of Fortran code on NeXTStep (all architectures) have to
watch out for the following problem when writing programs with large,
statically allocated (i.e. non-stack based) data structures (common
blocks, saved arrays).
*************** this somewhat, but probably not enough.)
*** 19590,19599 ****
File: g77.info, Node: Stack Overflow, Next: Nothing Happens, Prev: NeXTStep Problems, Up: But-bugs
! Stack Overflow
! --------------
! `g77' code might fail at runtime (probably with a "segmentation
violation") due to overflowing the stack. This happens most often on
systems with an environment that provides substantially more heap space
(for use when arbitrarily allocating and freeing memory) than stack
--- 19825,19834 ----
File: g77.info, Node: Stack Overflow, Next: Nothing Happens, Prev: NeXTStep Problems, Up: But-bugs
! 15.1.6 Stack Overflow
! ---------------------
! `g77' code might fail at runtime (probably with a "segmentation
violation") due to overflowing the stack. This happens most often on
systems with an environment that provides substantially more heap space
(for use when arbitrarily allocating and freeing memory) than stack
*************** system, or buggy.)
*** 19649,19661 ****
File: g77.info, Node: Nothing Happens, Next: Strange Behavior at Run Time, Prev: Stack Overflow, Up: But-bugs
! Nothing Happens
! ---------------
! It is occasionally reported that a "simple" program, such as a
! "Hello, World!" program, does nothing when it is run, even though the
! compiler reported no errors, despite the program containing nothing
! other than a simple `PRINT' statement.
This most often happens because the program has been compiled and
linked on a UNIX system and named `test', though other names can lead
--- 19884,19896 ----
File: g77.info, Node: Nothing Happens, Next: Strange Behavior at Run Time, Prev: Stack Overflow, Up: But-bugs
! 15.1.7 Nothing Happens
! ----------------------
! It is occasionally reported that a "simple" program, such as a "Hello,
! World!" program, does nothing when it is run, even though the compiler
! reported no errors, despite the program containing nothing other than a
! simple `PRINT' statement.
This most often happens because the program has been compiled and
linked on a UNIX system and named `test', though other names can lead
*************** and so on. The relevant UNIX commands t
*** 19690,19699 ****
File: g77.info, Node: Strange Behavior at Run Time, Next: Floating-point Errors, Prev: Nothing Happens, Up: But-bugs
! Strange Behavior at Run Time
! ----------------------------
! `g77' code might fail at runtime with "segmentation violation", "bus
error", or even something as subtle as a procedure call overwriting a
variable or array element that it is not supposed to touch.
--- 19925,19934 ----
File: g77.info, Node: Strange Behavior at Run Time, Next: Floating-point Errors, Prev: Nothing Happens, Up: But-bugs
! 15.1.8 Strange Behavior at Run Time
! -----------------------------------
! `g77' code might fail at runtime with "segmentation violation", "bus
error", or even something as subtle as a procedure call overwriting a
variable or array element that it is not supposed to touch.
*************** library from `/usr/ucblib'.
*** 19744,19753 ****
File: g77.info, Node: Floating-point Errors, Prev: Strange Behavior at Run Time, Up: But-bugs
! Floating-point Errors
! ---------------------
! Some programs appear to produce inconsistent floating-point results
compiled by `g77' versus by other compilers.
Often the reason for this behavior is the fact that floating-point
--- 19979,19988 ----
File: g77.info, Node: Floating-point Errors, Prev: Strange Behavior at Run Time, Up: But-bugs
! 15.1.9 Floating-point Errors
! ----------------------------
! Some programs appear to produce inconsistent floating-point results
compiled by `g77' versus by other compilers.
Often the reason for this behavior is the fact that floating-point
*************** other documentation about this.
*** 19867,19874 ****
File: g77.info, Node: Known Bugs, Next: Missing Features, Prev: But-bugs, Up: Trouble
! Known Bugs In GNU Fortran
! =========================
This section identifies bugs that `g77' _users_ might run into in
the GCC-3.4.4 version of `g77'. This includes bugs that are actually
--- 20102,20109 ----
File: g77.info, Node: Known Bugs, Next: Missing Features, Prev: But-bugs, Up: Trouble
! 15.2 Known Bugs In GNU Fortran
! ==============================
This section identifies bugs that `g77' _users_ might run into in
the GCC-3.4.4 version of `g77'. This includes bugs that are actually
*************** versions.
*** 20012,20023 ****
File: g77.info, Node: Missing Features, Next: Disappointments, Prev: Known Bugs, Up: Trouble
! Missing Features
! ================
! This section lists features we know are missing from `g77', and
! which we want to add someday. (There is no priority implied in the
! ordering below.)
* Menu:
--- 20247,20258 ----
File: g77.info, Node: Missing Features, Next: Disappointments, Prev: Known Bugs, Up: Trouble
! 15.3 Missing Features
! =====================
! This section lists features we know are missing from `g77', and which
! we want to add someday. (There is no priority implied in the ordering
! below.)
* Menu:
*************** Debugging:
*** 20087,20096 ****
File: g77.info, Node: Better Source Model, Next: Fortran 90 Support, Up: Missing Features
! Better Source Model
! -------------------
! `g77' needs to provide, as the default source-line model, a "pure
visual" mode, where the interpretation of a source program in this mode
can be accurately determined by a user looking at a traditionally
displayed rendition of the program (assuming the user knows whether the
--- 20322,20331 ----
File: g77.info, Node: Better Source Model, Next: Fortran 90 Support, Up: Missing Features
! 15.3.1 Better Source Model
! --------------------------
! `g77' needs to provide, as the default source-line model, a "pure
visual" mode, where the interpretation of a source program in this mode
can be accurately determined by a user looking at a traditionally
displayed rendition of the program (assuming the user knows whether the
*************** specify, say, a `-Wno-col73to80' option.
*** 20124,20134 ****
File: g77.info, Node: Fortran 90 Support, Next: Intrinsics in PARAMETER Statements, Prev: Better Source Model, Up: Missing Features
! Fortran 90 Support
! ------------------
! `g77' does not support many of the features that distinguish Fortran
! 90 (and, now, Fortran 95) from ANSI FORTRAN 77.
Some Fortran 90 features are supported, because they make sense to
offer even to die-hard users of F77. For example, many of them codify
--- 20359,20369 ----
File: g77.info, Node: Fortran 90 Support, Next: Intrinsics in PARAMETER Statements, Prev: Better Source Model, Up: Missing Features
! 15.3.2 Fortran 90 Support
! -------------------------
! `g77' does not support many of the features that distinguish Fortran 90
! (and, now, Fortran 95) from ANSI FORTRAN 77.
Some Fortran 90 features are supported, because they make sense to
offer even to die-hard users of F77. For example, many of them codify
*************** project to create GNU Fortran 95.
*** 20147,20156 ****
File: g77.info, Node: Intrinsics in PARAMETER Statements, Next: Arbitrary Concatenation, Prev: Fortran 90 Support, Up: Missing Features
! Intrinsics in `PARAMETER' Statements
! ------------------------------------
! `g77' doesn't allow intrinsics in `PARAMETER' statements.
Related to this, `g77' doesn't allow non-integral exponentiation in
`PARAMETER' statements, such as `PARAMETER (R=2**.25)'. It is unlikely
--- 20382,20391 ----
File: g77.info, Node: Intrinsics in PARAMETER Statements, Next: Arbitrary Concatenation, Prev: Fortran 90 Support, Up: Missing Features
! 15.3.3 Intrinsics in `PARAMETER' Statements
! -------------------------------------------
! `g77' doesn't allow intrinsics in `PARAMETER' statements.
Related to this, `g77' doesn't allow non-integral exponentiation in
`PARAMETER' statements, such as `PARAMETER (R=2**.25)'. It is unlikely
*************** in implementing this feature soon afterw
*** 20163,20173 ****
File: g77.info, Node: Arbitrary Concatenation, Next: SELECT CASE on CHARACTER Type, Prev: Intrinsics in PARAMETER Statements, Up: Missing Features
! Arbitrary Concatenation
! -----------------------
! `g77' doesn't support arbitrary operands for concatenation in
! contexts where run-time allocation is required. For example:
SUBROUTINE X(A)
CHARACTER*(*) A
--- 20398,20408 ----
File: g77.info, Node: Arbitrary Concatenation, Next: SELECT CASE on CHARACTER Type, Prev: Intrinsics in PARAMETER Statements, Up: Missing Features
! 15.3.4 Arbitrary Concatenation
! ------------------------------
! `g77' doesn't support arbitrary operands for concatenation in contexts
! where run-time allocation is required. For example:
SUBROUTINE X(A)
CHARACTER*(*) A
*************** contexts where run-time allocation is re
*** 20176,20194 ****
File: g77.info, Node: SELECT CASE on CHARACTER Type, Next: RECURSIVE Keyword, Prev: Arbitrary Concatenation, Up: Missing Features
! `SELECT CASE' on `CHARACTER' Type
! ---------------------------------
! Character-type selector/cases for `SELECT CASE' currently are not
supported.
File: g77.info, Node: RECURSIVE Keyword, Next: Popular Non-standard Types, Prev: SELECT CASE on CHARACTER Type, Up: Missing Features
! `RECURSIVE' Keyword
! -------------------
! `g77' doesn't support the `RECURSIVE' keyword that F90 compilers do.
Nor does it provide any means for compiling procedures designed to do
recursion.
--- 20411,20429 ----
File: g77.info, Node: SELECT CASE on CHARACTER Type, Next: RECURSIVE Keyword, Prev: Arbitrary Concatenation, Up: Missing Features
! 15.3.5 `SELECT CASE' on `CHARACTER' Type
! ----------------------------------------
! Character-type selector/cases for `SELECT CASE' currently are not
supported.
File: g77.info, Node: RECURSIVE Keyword, Next: Popular Non-standard Types, Prev: SELECT CASE on CHARACTER Type, Up: Missing Features
! 15.3.6 `RECURSIVE' Keyword
! --------------------------
! `g77' doesn't support the `RECURSIVE' keyword that F90 compilers do.
Nor does it provide any means for compiling procedures designed to do
recursion.
*************** result is not pretty.
*** 20198,20210 ****
File: g77.info, Node: Increasing Precision/Range, Next: Enabling Debug Lines, Prev: Support for Threads, Up: Missing Features
! Increasing Precision/Range
! --------------------------
! Some compilers, such as `f2c', have an option (`-r8', `-qrealsize=8'
! or similar) that provides automatic treatment of `REAL' entities such
! that they have twice the storage size, and a corresponding increase in
! the range and precision, of what would normally be the `REAL(KIND=1)'
(default `REAL') type. (This affects `COMPLEX' the same way.)
They also typically offer another option (`-i8') to increase
--- 20433,20445 ----
File: g77.info, Node: Increasing Precision/Range, Next: Enabling Debug Lines, Prev: Support for Threads, Up: Missing Features
! 15.3.7 Increasing Precision/Range
! ---------------------------------
! Some compilers, such as `f2c', have an option (`-r8', `-qrealsize=8' or
! similar) that provides automatic treatment of `REAL' entities such that
! they have twice the storage size, and a corresponding increase in the
! range and precision, of what would normally be the `REAL(KIND=1)'
(default `REAL') type. (This affects `COMPLEX' the same way.)
They also typically offer another option (`-i8') to increase
*************** problem).
*** 20232,20264 ****
File: g77.info, Node: Popular Non-standard Types, Next: Full Support for Compiler Types, Prev: RECURSIVE Keyword, Up: Missing Features
! Popular Non-standard Types
! --------------------------
! `g77' doesn't fully support `INTEGER*2', `LOGICAL*1', and similar.
! In the meantime, version 0.5.18 provides rudimentary support for them.
File: g77.info, Node: Full Support for Compiler Types, Next: Array Bounds Expressions, Prev: Popular Non-standard Types, Up: Missing Features
! Full Support for Compiler Types
! -------------------------------
! `g77' doesn't support `INTEGER', `REAL', and `COMPLEX' equivalents
! for _all_ applicable back-end-supported types (`char', `short int',
! `int', `long int', `long long int', and `long double'). This means
! providing intrinsic support, and maybe constant support (using F90
! syntax) as well, and, for most machines will result in automatic
! support of `INTEGER*1', `INTEGER*2', `INTEGER*8', maybe even `REAL*16',
! and so on.
File: g77.info, Node: Array Bounds Expressions, Next: POINTER Statements, Prev: Full Support for Compiler Types, Up: Missing Features
! Array Bounds Expressions
! ------------------------
! `g77' doesn't support more general expressions to dimension arrays,
such as array element references, function references, etc.
For example, `g77' currently does not accept the following:
--- 20467,20498 ----
File: g77.info, Node: Popular Non-standard Types, Next: Full Support for Compiler Types, Prev: RECURSIVE Keyword, Up: Missing Features
! 15.3.8 Popular Non-standard Types
! ---------------------------------
! `g77' doesn't fully support `INTEGER*2', `LOGICAL*1', and similar. In
! the meantime, version 0.5.18 provides rudimentary support for them.
File: g77.info, Node: Full Support for Compiler Types, Next: Array Bounds Expressions, Prev: Popular Non-standard Types, Up: Missing Features
! 15.3.9 Full Support for Compiler Types
! --------------------------------------
! `g77' doesn't support `INTEGER', `REAL', and `COMPLEX' equivalents for
! _all_ applicable back-end-supported types (`char', `short int', `int',
! `long int', `long long int', and `long double'). This means providing
! intrinsic support, and maybe constant support (using F90 syntax) as
! well, and, for most machines will result in automatic support of
! `INTEGER*1', `INTEGER*2', `INTEGER*8', maybe even `REAL*16', and so on.
File: g77.info, Node: Array Bounds Expressions, Next: POINTER Statements, Prev: Full Support for Compiler Types, Up: Missing Features
! 15.3.10 Array Bounds Expressions
! --------------------------------
! `g77' doesn't support more general expressions to dimension arrays,
such as array element references, function references, etc.
For example, `g77' currently does not accept the following:
*************** such as array element references, functi
*** 20269,20278 ****
File: g77.info, Node: POINTER Statements, Next: Sensible Non-standard Constructs, Prev: Array Bounds Expressions, Up: Missing Features
! POINTER Statements
! ------------------
! `g77' doesn't support pointers or allocatable objects (other than
automatic arrays). This set of features is probably considered just
behind intrinsics in `PARAMETER' statements on the list of large,
important things to add to `g77'.
--- 20503,20512 ----
File: g77.info, Node: POINTER Statements, Next: Sensible Non-standard Constructs, Prev: Array Bounds Expressions, Up: Missing Features
! 15.3.11 POINTER Statements
! --------------------------
! `g77' doesn't support pointers or allocatable objects (other than
automatic arrays). This set of features is probably considered just
behind intrinsics in `PARAMETER' statements on the list of large,
important things to add to `g77'.
*************** pointers to procedures written in langua
*** 20289,20302 ****
File: g77.info, Node: Sensible Non-standard Constructs, Next: READONLY Keyword, Prev: POINTER Statements, Up: Missing Features
! Sensible Non-standard Constructs
! --------------------------------
! `g77' rejects things other compilers accept, like `INTRINSIC
! SQRT,SQRT'. As time permits in the future, some of these things that
! are easy for humans to read and write and unlikely to be intended to
! mean something else will be accepted by `g77' (though `-fpedantic'
! should trigger warnings about such non-standard constructs).
Until `g77' no longer gratuitously rejects sensible code, you might
as well fix your code to be more standard-conforming and portable.
--- 20523,20536 ----
File: g77.info, Node: Sensible Non-standard Constructs, Next: READONLY Keyword, Prev: POINTER Statements, Up: Missing Features
! 15.3.12 Sensible Non-standard Constructs
! ----------------------------------------
! `g77' rejects things other compilers accept, like `INTRINSIC SQRT,SQRT'.
! As time permits in the future, some of these things that are easy for
! humans to read and write and unlikely to be intended to mean something
! else will be accepted by `g77' (though `-fpedantic' should trigger
! warnings about such non-standard constructs).
Until `g77' no longer gratuitously rejects sensible code, you might
as well fix your code to be more standard-conforming and portable.
*************** explanation, so we can consider fixing `
*** 20336,20349 ****
File: g77.info, Node: READONLY Keyword, Next: FLUSH Statement, Prev: Sensible Non-standard Constructs, Up: Missing Features
! `READONLY' Keyword
! ------------------
! Support for `READONLY', in `OPEN' statements, requires `libg2c'
! support, to make sure that `CLOSE(...,STATUS='DELETE')' does not delete
! a file opened on a unit with the `READONLY' keyword, and perhaps to
! trigger a fatal diagnostic if a `WRITE' or `PRINT' to such a unit is
! attempted.
_Note:_ It is not sufficient for `g77' and `libg2c' (its version of
`libf2c') to assume that `READONLY' does not need some kind of explicit
--- 20570,20582 ----
File: g77.info, Node: READONLY Keyword, Next: FLUSH Statement, Prev: Sensible Non-standard Constructs, Up: Missing Features
! 15.3.13 `READONLY' Keyword
! --------------------------
! Support for `READONLY', in `OPEN' statements, requires `libg2c' support,
! to make sure that `CLOSE(...,STATUS='DELETE')' does not delete a file
! opened on a unit with the `READONLY' keyword, and perhaps to trigger a
! fatal diagnostic if a `WRITE' or `PRINT' to such a unit is attempted.
_Note:_ It is not sufficient for `g77' and `libg2c' (its version of
`libf2c') to assume that `READONLY' does not need some kind of explicit
*************** keyword.)
*** 20359,20378 ****
File: g77.info, Node: FLUSH Statement, Next: Expressions in FORMAT Statements, Prev: READONLY Keyword, Up: Missing Features
! `FLUSH' Statement
! -----------------
! `g77' could perhaps use a `FLUSH' statement that does what `CALL
! FLUSH' does, but that supports `*' as the unit designator (same unit as
! for `PRINT') and accepts `ERR=' and/or `IOSTAT=' specifiers.
File: g77.info, Node: Expressions in FORMAT Statements, Next: Explicit Assembler Code, Prev: FLUSH Statement, Up: Missing Features
! Expressions in `FORMAT' Statements
! ----------------------------------
! `g77' doesn't support `FORMAT(I)' and the like. Supporting this
requires a significant redesign or replacement of `libg2c'.
However, `g77' does support this construct when the expression is
--- 20592,20611 ----
File: g77.info, Node: FLUSH Statement, Next: Expressions in FORMAT Statements, Prev: READONLY Keyword, Up: Missing Features
! 15.3.14 `FLUSH' Statement
! -------------------------
! `g77' could perhaps use a `FLUSH' statement that does what `CALL FLUSH'
! does, but that supports `*' as the unit designator (same unit as for
! `PRINT') and accepts `ERR=' and/or `IOSTAT=' specifiers.
File: g77.info, Node: Expressions in FORMAT Statements, Next: Explicit Assembler Code, Prev: FLUSH Statement, Up: Missing Features
! 15.3.15 Expressions in `FORMAT' Statements
! ------------------------------------------
! `g77' doesn't support `FORMAT(I)' and the like. Supporting this
requires a significant redesign or replacement of `libg2c'.
However, `g77' does support this construct when the expression is
*************** well, but not all can. For example, thi
*** 20402,20421 ****
File: g77.info, Node: Explicit Assembler Code, Next: Q Edit Descriptor, Prev: Expressions in FORMAT Statements, Up: Missing Features
! Explicit Assembler Code
! -----------------------
! `g77' needs to provide some way, a la `gcc', for `g77' code to
! specify explicit assembler code.
File: g77.info, Node: Q Edit Descriptor, Next: Old-style PARAMETER Statements, Prev: Explicit Assembler Code, Up: Missing Features
! Q Edit Descriptor
! -----------------
! The `Q' edit descriptor in `FORMAT's isn't supported. (This is
! meant to get the number of characters remaining in an input record.)
Supporting this requires a significant redesign or replacement of
`libg2c'.
--- 20635,20654 ----
File: g77.info, Node: Explicit Assembler Code, Next: Q Edit Descriptor, Prev: Expressions in FORMAT Statements, Up: Missing Features
! 15.3.16 Explicit Assembler Code
! -------------------------------
! `g77' needs to provide some way, a la `gcc', for `g77' code to specify
! explicit assembler code.
File: g77.info, Node: Q Edit Descriptor, Next: Old-style PARAMETER Statements, Prev: Explicit Assembler Code, Up: Missing Features
! 15.3.17 Q Edit Descriptor
! -------------------------
! The `Q' edit descriptor in `FORMAT's isn't supported. (This is meant
! to get the number of characters remaining in an input record.)
Supporting this requires a significant redesign or replacement of
`libg2c'.
*************** intrinsics. *Note FGetC Intrinsic (subr
*** 20425,20436 ****
File: g77.info, Node: Old-style PARAMETER Statements, Next: TYPE and ACCEPT I/O Statements, Prev: Q Edit Descriptor, Up: Missing Features
! Old-style PARAMETER Statements
! ------------------------------
! `g77' doesn't accept `PARAMETER I=1'. Supporting this obsolete form
! of the `PARAMETER' statement would not be particularly hard, as most of
! the parsing code is already in place and working.
Until time/money is spent implementing it, you might as well fix
your code to use the standard form, `PARAMETER (I=1)' (possibly needing
--- 20658,20669 ----
File: g77.info, Node: Old-style PARAMETER Statements, Next: TYPE and ACCEPT I/O Statements, Prev: Q Edit Descriptor, Up: Missing Features
! 15.3.18 Old-style PARAMETER Statements
! --------------------------------------
! `g77' doesn't accept `PARAMETER I=1'. Supporting this obsolete form of
! the `PARAMETER' statement would not be particularly hard, as most of the
! parsing code is already in place and working.
Until time/money is spent implementing it, you might as well fix
your code to use the standard form, `PARAMETER (I=1)' (possibly needing
*************** the type of the constant being assigned
*** 20441,20450 ****
File: g77.info, Node: TYPE and ACCEPT I/O Statements, Next: STRUCTURE UNION RECORD MAP, Prev: Old-style PARAMETER Statements, Up: Missing Features
! `TYPE' and `ACCEPT' I/O Statements
! ----------------------------------
! `g77' doesn't support the I/O statements `TYPE' and `ACCEPT'. These
are common extensions that should be easy to support, but also are
fairly easy to work around in user code.
--- 20674,20683 ----
File: g77.info, Node: TYPE and ACCEPT I/O Statements, Next: STRUCTURE UNION RECORD MAP, Prev: Old-style PARAMETER Statements, Up: Missing Features
! 15.3.19 `TYPE' and `ACCEPT' I/O Statements
! ------------------------------------------
! `g77' doesn't support the I/O statements `TYPE' and `ACCEPT'. These
are common extensions that should be easy to support, but also are
fairly easy to work around in user code.
*************** by `READ fmt,list'.
*** 20455,20477 ****
File: g77.info, Node: STRUCTURE UNION RECORD MAP, Next: OPEN CLOSE and INQUIRE Keywords, Prev: TYPE and ACCEPT I/O Statements, Up: Missing Features
! `STRUCTURE', `UNION', `RECORD', `MAP'
! -------------------------------------
! `g77' doesn't support `STRUCTURE', `UNION', `RECORD', `MAP'. This
! set of extensions is quite a bit lower on the list of large, important
things to add to `g77', partly because it requires a great deal of work
either upgrading or replacing `libg2c'.
File: g77.info, Node: OPEN CLOSE and INQUIRE Keywords, Next: ENCODE and DECODE, Prev: STRUCTURE UNION RECORD MAP, Up: Missing Features
! `OPEN', `CLOSE', and `INQUIRE' Keywords
! ---------------------------------------
! `g77' doesn't have support for keywords such as `DISP='DELETE'' in
! the `OPEN', `CLOSE', and `INQUIRE' statements. These extensions are
! easy to add to `g77' itself, but require much more work on `libg2c'.
`g77' doesn't support `FORM='PRINT'' or an equivalent to translate
the traditional `carriage control' characters in column 1 of output to
--- 20688,20710 ----
File: g77.info, Node: STRUCTURE UNION RECORD MAP, Next: OPEN CLOSE and INQUIRE Keywords, Prev: TYPE and ACCEPT I/O Statements, Up: Missing Features
! 15.3.20 `STRUCTURE', `UNION', `RECORD', `MAP'
! ---------------------------------------------
! `g77' doesn't support `STRUCTURE', `UNION', `RECORD', `MAP'. This set
! of extensions is quite a bit lower on the list of large, important
things to add to `g77', partly because it requires a great deal of work
either upgrading or replacing `libg2c'.
File: g77.info, Node: OPEN CLOSE and INQUIRE Keywords, Next: ENCODE and DECODE, Prev: STRUCTURE UNION RECORD MAP, Up: Missing Features
! 15.3.21 `OPEN', `CLOSE', and `INQUIRE' Keywords
! -----------------------------------------------
! `g77' doesn't have support for keywords such as `DISP='DELETE'' in the
! `OPEN', `CLOSE', and `INQUIRE' statements. These extensions are easy
! to add to `g77' itself, but require much more work on `libg2c'.
`g77' doesn't support `FORM='PRINT'' or an equivalent to translate
the traditional `carriage control' characters in column 1 of output to
*************** Alternatively, `fpr' is in BSD distribut
*** 20485,20494 ****
File: g77.info, Node: ENCODE and DECODE, Next: AUTOMATIC Statement, Prev: OPEN CLOSE and INQUIRE Keywords, Up: Missing Features
! `ENCODE' and `DECODE'
! ---------------------
! `g77' doesn't support `ENCODE' or `DECODE'.
These statements are best replaced by READ and WRITE statements
involving internal files (CHARACTER variables and arrays).
--- 20718,20727 ----
File: g77.info, Node: ENCODE and DECODE, Next: AUTOMATIC Statement, Prev: OPEN CLOSE and INQUIRE Keywords, Up: Missing Features
! 15.3.22 `ENCODE' and `DECODE'
! -----------------------------
! `g77' doesn't support `ENCODE' or `DECODE'.
These statements are best replaced by READ and WRITE statements
involving internal files (CHARACTER variables and arrays).
*************** by a future version of `g77'.
*** 20531,20540 ****
File: g77.info, Node: AUTOMATIC Statement, Next: Suppressing Space Padding, Prev: ENCODE and DECODE, Up: Missing Features
! `AUTOMATIC' Statement
! ---------------------
! `g77' doesn't support the `AUTOMATIC' statement that `f2c' does.
`AUTOMATIC' would identify a variable or array as not being
`SAVE''d, which is normally the default, but which would be especially
--- 20764,20773 ----
File: g77.info, Node: AUTOMATIC Statement, Next: Suppressing Space Padding, Prev: ENCODE and DECODE, Up: Missing Features
! 15.3.23 `AUTOMATIC' Statement
! -----------------------------
! `g77' doesn't support the `AUTOMATIC' statement that `f2c' does.
`AUTOMATIC' would identify a variable or array as not being
`SAVE''d, which is normally the default, but which would be especially
*************** statements.
*** 20564,20574 ****
File: g77.info, Node: Suppressing Space Padding, Next: Fortran Preprocessor, Prev: AUTOMATIC Statement, Up: Missing Features
! Suppressing Space Padding of Source Lines
! -----------------------------------------
! `g77' should offer VXT-Fortran-style suppression of virtual spaces
! at the end of a source line if an appropriate command-line option is
specified.
This affects cases where a character constant is continued onto the
--- 20797,20807 ----
File: g77.info, Node: Suppressing Space Padding, Next: Fortran Preprocessor, Prev: AUTOMATIC Statement, Up: Missing Features
! 15.3.24 Suppressing Space Padding of Source Lines
! -------------------------------------------------
! `g77' should offer VXT-Fortran-style suppression of virtual spaces at
! the end of a source line if an appropriate command-line option is
specified.
This affects cases where a character constant is continued onto the
*************** Digital's approach to handling the above
*** 20592,20602 ****
File: g77.info, Node: Fortran Preprocessor, Next: Bit Operations on Floating-point Data, Prev: Suppressing Space Padding, Up: Missing Features
! Fortran Preprocessor
! --------------------
! `g77' should offer a preprocessor designed specifically for Fortran
! to replace `cpp -traditional'. There are several out there worth
evaluating, at least.
Such a preprocessor would recognize Hollerith constants, properly
--- 20825,20835 ----
File: g77.info, Node: Fortran Preprocessor, Next: Bit Operations on Floating-point Data, Prev: Suppressing Space Padding, Up: Missing Features
! 15.3.25 Fortran Preprocessor
! ----------------------------
! `g77' should offer a preprocessor designed specifically for Fortran to
! replace `cpp -traditional'. There are several out there worth
evaluating, at least.
Such a preprocessor would recognize Hollerith constants, properly
*************** recognize, process, and thus preprocess
*** 20607,20617 ****
File: g77.info, Node: Bit Operations on Floating-point Data, Next: Really Ugly Character Assignments, Prev: Fortran Preprocessor, Up: Missing Features
! Bit Operations on Floating-point Data
! -------------------------------------
! `g77' does not allow `REAL' and other non-integral types for
! arguments to intrinsics like `And', `Or', and `Shift'.
For example, this program is rejected by `g77', because the
intrinsic `Iand' does not accept `REAL' arguments:
--- 20840,20850 ----
File: g77.info, Node: Bit Operations on Floating-point Data, Next: Really Ugly Character Assignments, Prev: Fortran Preprocessor, Up: Missing Features
! 15.3.26 Bit Operations on Floating-point Data
! ---------------------------------------------
! `g77' does not allow `REAL' and other non-integral types for arguments
! to intrinsics like `And', `Or', and `Shift'.
For example, this program is rejected by `g77', because the
intrinsic `Iand' does not accept `REAL' arguments:
*************** intrinsic `Iand' does not accept `REAL'
*** 20623,20632 ****
File: g77.info, Node: Really Ugly Character Assignments, Next: POSIX Standard, Prev: Bit Operations on Floating-point Data, Up: Missing Features
! Really Ugly Character Assignments
! ---------------------------------
! An option such as `-fugly-char' should be provided to allow
REAL*8 A1
DATA A1 / '12345678' /
--- 20856,20865 ----
File: g77.info, Node: Really Ugly Character Assignments, Next: POSIX Standard, Prev: Bit Operations on Floating-point Data, Up: Missing Features
! 15.3.27 Really Ugly Character Assignments
! -----------------------------------------
! An option such as `-fugly-char' should be provided to allow
REAL*8 A1
DATA A1 / '12345678' /
*************** Really Ugly Character Assignments
*** 20639,20656 ****
File: g77.info, Node: POSIX Standard, Next: Floating-point Exception Handling, Prev: Really Ugly Character Assignments, Up: Missing Features
! `POSIX' Standard
! ----------------
! `g77' should support the POSIX standard for Fortran.
File: g77.info, Node: Floating-point Exception Handling, Next: Nonportable Conversions, Prev: POSIX Standard, Up: Missing Features
! Floating-point Exception Handling
! ---------------------------------
! The `gcc' backend and, consequently, `g77', currently provides no
general control over whether or not floating-point exceptions are
trapped or ignored. (Ignoring them typically results in NaN values
being propagated in systems that conform to IEEE 754.) The behavior is
--- 20872,20889 ----
File: g77.info, Node: POSIX Standard, Next: Floating-point Exception Handling, Prev: Really Ugly Character Assignments, Up: Missing Features
! 15.3.28 `POSIX' Standard
! ------------------------
! `g77' should support the POSIX standard for Fortran.
File: g77.info, Node: Floating-point Exception Handling, Next: Nonportable Conversions, Prev: POSIX Standard, Up: Missing Features
! 15.3.29 Floating-point Exception Handling
! -----------------------------------------
! The `gcc' backend and, consequently, `g77', currently provides no
general control over whether or not floating-point exceptions are
trapped or ignored. (Ignoring them typically results in NaN values
being propagated in systems that conform to IEEE 754.) The behavior is
*************** a GNU system using glibc 2.2 or newer:
*** 20670,20676 ****
trapfpe ()
{
/* Enable some exceptions. At startup all exceptions are masked. */
!
feenableexcept (FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW);
}
--- 20903,20909 ----
trapfpe ()
{
/* Enable some exceptions. At startup all exceptions are masked. */
!
feenableexcept (FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW);
}
*************** linking.
*** 20682,20691 ****
File: g77.info, Node: Nonportable Conversions, Next: Large Automatic Arrays, Prev: Floating-point Exception Handling, Up: Missing Features
! Nonportable Conversions
! -----------------------
! `g77' doesn't accept some particularly nonportable, silent data-type
conversions such as `LOGICAL' to `REAL' (as in `A=.FALSE.', where `A'
is type `REAL'), that other compilers might quietly accept.
--- 20915,20924 ----
File: g77.info, Node: Nonportable Conversions, Next: Large Automatic Arrays, Prev: Floating-point Exception Handling, Up: Missing Features
! 15.3.30 Nonportable Conversions
! -------------------------------
! `g77' doesn't accept some particularly nonportable, silent data-type
conversions such as `LOGICAL' to `REAL' (as in `A=.FALSE.', where `A'
is type `REAL'), that other compilers might quietly accept.
*************** all of them.
*** 20696,20705 ****
File: g77.info, Node: Large Automatic Arrays, Next: Support for Threads, Prev: Nonportable Conversions, Up: Missing Features
! Large Automatic Arrays
! ----------------------
! Currently, automatic arrays always are allocated on the stack. For
situations where the stack cannot be made large enough, `g77' should
offer a compiler option that specifies allocation of automatic arrays
in heap storage.
--- 20929,20938 ----
File: g77.info, Node: Large Automatic Arrays, Next: Support for Threads, Prev: Nonportable Conversions, Up: Missing Features
! 15.3.31 Large Automatic Arrays
! ------------------------------
! Currently, automatic arrays always are allocated on the stack. For
situations where the stack cannot be made large enough, `g77' should
offer a compiler option that specifies allocation of automatic arrays
in heap storage.
*************** in heap storage.
*** 20707,20716 ****
File: g77.info, Node: Support for Threads, Next: Increasing Precision/Range, Prev: Large Automatic Arrays, Up: Missing Features
! Support for Threads
! -------------------
! Neither the code produced by `g77' nor the `libg2c' library are
thread-safe, nor does `g77' have support for parallel processing (other
than the instruction-level parallelism available on some processors).
A package such as PVM might help here.
--- 20940,20949 ----
File: g77.info, Node: Support for Threads, Next: Increasing Precision/Range, Prev: Large Automatic Arrays, Up: Missing Features
! 15.3.32 Support for Threads
! ---------------------------
! Neither the code produced by `g77' nor the `libg2c' library are
thread-safe, nor does `g77' have support for parallel processing (other
than the instruction-level parallelism available on some processors).
A package such as PVM might help here.
*************** A package such as PVM might help here.
*** 20718,20738 ****
File: g77.info, Node: Enabling Debug Lines, Next: Better Warnings, Prev: Increasing Precision/Range, Up: Missing Features
! Enabling Debug Lines
! --------------------
! An option such as `-fdebug-lines' should be provided to turn
! fixed-form lines beginning with `D' to be treated as if they began with
! a space, instead of as if they began with a `C' (as comment lines).
File: g77.info, Node: Better Warnings, Next: Gracefully Handle Sensible Bad Code, Prev: Enabling Debug Lines, Up: Missing Features
! Better Warnings
! ---------------
! Because of how `g77' generates code via the back end, it doesn't
! always provide warnings the user wants. Consider:
PROGRAM X
PRINT *, A
--- 20951,20971 ----
File: g77.info, Node: Enabling Debug Lines, Next: Better Warnings, Prev: Increasing Precision/Range, Up: Missing Features
! 15.3.33 Enabling Debug Lines
! ----------------------------
! An option such as `-fdebug-lines' should be provided to turn fixed-form
! lines beginning with `D' to be treated as if they began with a space,
! instead of as if they began with a `C' (as comment lines).
File: g77.info, Node: Better Warnings, Next: Gracefully Handle Sensible Bad Code, Prev: Enabling Debug Lines, Up: Missing Features
! 15.3.34 Better Warnings
! -----------------------
! Because of how `g77' generates code via the back end, it doesn't always
! provide warnings the user wants. Consider:
PROGRAM X
PRINT *, A
*************** would!)
*** 20772,20783 ****
File: g77.info, Node: Gracefully Handle Sensible Bad Code, Next: Non-standard Conversions, Prev: Better Warnings, Up: Missing Features
! Gracefully Handle Sensible Bad Code
! -----------------------------------
! `g77' generally should continue processing for warnings and
! recoverable (user) errors whenever possible--that is, it shouldn't
! gratuitously make bad or useless code.
For example:
--- 21005,21016 ----
File: g77.info, Node: Gracefully Handle Sensible Bad Code, Next: Non-standard Conversions, Prev: Better Warnings, Up: Missing Features
! 15.3.35 Gracefully Handle Sensible Bad Code
! -------------------------------------------
! `g77' generally should continue processing for warnings and recoverable
! (user) errors whenever possible--that is, it shouldn't gratuitously
! make bad or useless code.
For example:
*************** are analyzed.)
*** 20794,20812 ****
File: g77.info, Node: Non-standard Conversions, Next: Non-standard Intrinsics, Prev: Gracefully Handle Sensible Bad Code, Up: Missing Features
! Non-standard Conversions
! ------------------------
! `-Wconversion' and related should flag places where non-standard
conversions are found. Perhaps much of this would be part of `-Wugly*'.
File: g77.info, Node: Non-standard Intrinsics, Next: Modifying DO Variable, Prev: Non-standard Conversions, Up: Missing Features
! Non-standard Intrinsics
! -----------------------
! `g77' needs a new option, like `-Wintrinsics', to warn about use of
non-standard intrinsics without explicit `INTRINSIC' statements for
them. This would help find code that might fail silently when ported
to another compiler.
--- 21027,21045 ----
File: g77.info, Node: Non-standard Conversions, Next: Non-standard Intrinsics, Prev: Gracefully Handle Sensible Bad Code, Up: Missing Features
! 15.3.36 Non-standard Conversions
! --------------------------------
! `-Wconversion' and related should flag places where non-standard
conversions are found. Perhaps much of this would be part of `-Wugly*'.
File: g77.info, Node: Non-standard Intrinsics, Next: Modifying DO Variable, Prev: Non-standard Conversions, Up: Missing Features
! 15.3.37 Non-standard Intrinsics
! -------------------------------
! `g77' needs a new option, like `-Wintrinsics', to warn about use of
non-standard intrinsics without explicit `INTRINSIC' statements for
them. This would help find code that might fail silently when ported
to another compiler.
*************** to another compiler.
*** 20814,20823 ****
File: g77.info, Node: Modifying DO Variable, Next: Better Pedantic Compilation, Prev: Non-standard Intrinsics, Up: Missing Features
! Modifying `DO' Variable
! -----------------------
! `g77' should warn about modifying `DO' variables via `EQUIVALENCE'.
(The internal information gathered to produce this warning might also
be useful in setting the internal "doiter" flag for a variable or even
array reference within a loop, since that might produce faster code
--- 21047,21056 ----
File: g77.info, Node: Modifying DO Variable, Next: Better Pedantic Compilation, Prev: Non-standard Intrinsics, Up: Missing Features
! 15.3.38 Modifying `DO' Variable
! -------------------------------
! `g77' should warn about modifying `DO' variables via `EQUIVALENCE'.
(The internal information gathered to produce this warning might also
be useful in setting the internal "doiter" flag for a variable or even
array reference within a loop, since that might produce faster code
*************** invalid assignment to `NOTHER':
*** 20834,20844 ****
File: g77.info, Node: Better Pedantic Compilation, Next: Warn About Implicit Conversions, Prev: Modifying DO Variable, Up: Missing Features
! Better Pedantic Compilation
! ---------------------------
! `g77' needs to support `-fpedantic' more thoroughly, and use it only
! to generate warnings instead of rejecting constructs outright. Have it
warn: if a variable that dimensions an array is not a dummy or placed
explicitly in `COMMON' (F77 does not allow it to be placed in `COMMON'
via `EQUIVALENCE'); if specification statements follow
--- 21067,21077 ----
File: g77.info, Node: Better Pedantic Compilation, Next: Warn About Implicit Conversions, Prev: Modifying DO Variable, Up: Missing Features
! 15.3.39 Better Pedantic Compilation
! -----------------------------------
! `g77' needs to support `-fpedantic' more thoroughly, and use it only to
! generate warnings instead of rejecting constructs outright. Have it
warn: if a variable that dimensions an array is not a dummy or placed
explicitly in `COMMON' (F77 does not allow it to be placed in `COMMON'
via `EQUIVALENCE'); if specification statements follow
*************** extensions.
*** 20848,20858 ****
File: g77.info, Node: Warn About Implicit Conversions, Next: Invalid Use of Hollerith Constant, Prev: Better Pedantic Compilation, Up: Missing Features
! Warn About Implicit Conversions
! -------------------------------
! `g77' needs a `-Wpromotions' option to warn if source code appears
! to expect automatic, silent, and somewhat dangerous compiler-assisted
conversion of `REAL(KIND=1)' constants to `REAL(KIND=2)' based on
context.
--- 21081,21091 ----
File: g77.info, Node: Warn About Implicit Conversions, Next: Invalid Use of Hollerith Constant, Prev: Better Pedantic Compilation, Up: Missing Features
! 15.3.40 Warn About Implicit Conversions
! ---------------------------------------
! `g77' needs a `-Wpromotions' option to warn if source code appears to
! expect automatic, silent, and somewhat dangerous compiler-assisted
conversion of `REAL(KIND=1)' constants to `REAL(KIND=2)' based on
context.
*************** context.
*** 20865,20886 ****
File: g77.info, Node: Invalid Use of Hollerith Constant, Next: Dummy Array Without Dimensioning Dummy, Prev: Warn About Implicit Conversions, Up: Missing Features
! Invalid Use of Hollerith Constant
! ---------------------------------
! `g77' should disallow statements like `RETURN 2HAB', which are
! invalid in both source forms (unlike `RETURN (2HAB)', which probably
! still makes no sense but at least can be reliably parsed). Fixed-form
processing rejects it, but not free-form, except in a way that is a bit
difficult to understand.
File: g77.info, Node: Dummy Array Without Dimensioning Dummy, Next: Invalid FORMAT Specifiers, Prev: Invalid Use of Hollerith Constant, Up: Missing Features
! Dummy Array Without Dimensioning Dummy
! --------------------------------------
! `g77' should complain when a list of dummy arguments containing an
adjustable dummy array does not also contain every variable listed in
the dimension list of the adjustable array.
--- 21098,21119 ----
File: g77.info, Node: Invalid Use of Hollerith Constant, Next: Dummy Array Without Dimensioning Dummy, Prev: Warn About Implicit Conversions, Up: Missing Features
! 15.3.41 Invalid Use of Hollerith Constant
! -----------------------------------------
! `g77' should disallow statements like `RETURN 2HAB', which are invalid
! in both source forms (unlike `RETURN (2HAB)', which probably still
! makes no sense but at least can be reliably parsed). Fixed-form
processing rejects it, but not free-form, except in a way that is a bit
difficult to understand.
File: g77.info, Node: Dummy Array Without Dimensioning Dummy, Next: Invalid FORMAT Specifiers, Prev: Invalid Use of Hollerith Constant, Up: Missing Features
! 15.3.42 Dummy Array Without Dimensioning Dummy
! ----------------------------------------------
! `g77' should complain when a list of dummy arguments containing an
adjustable dummy array does not also contain every variable listed in
the dimension list of the adjustable array.
*************** since it includes `ARRAY' but not `ISIZE
*** 20899,20909 ****
File: g77.info, Node: Invalid FORMAT Specifiers, Next: Ambiguous Dialects, Prev: Dummy Array Without Dimensioning Dummy, Up: Missing Features
! Invalid FORMAT Specifiers
! -------------------------
! `g77' should check `FORMAT' specifiers for validity as it does
! `FORMAT' statements.
For example, a diagnostic would be produced for:
--- 21132,21142 ----
File: g77.info, Node: Invalid FORMAT Specifiers, Next: Ambiguous Dialects, Prev: Dummy Array Without Dimensioning Dummy, Up: Missing Features
! 15.3.43 Invalid FORMAT Specifiers
! ---------------------------------
! `g77' should check `FORMAT' specifiers for validity as it does `FORMAT'
! statements.
For example, a diagnostic would be produced for:
*************** Invalid FORMAT Specifiers
*** 20912,20941 ****
File: g77.info, Node: Ambiguous Dialects, Next: Unused Labels, Prev: Invalid FORMAT Specifiers, Up: Missing Features
! Ambiguous Dialects
! ------------------
! `g77' needs a set of options such as `-Wugly*', `-Wautomatic',
! `-Wvxt', `-Wf90', and so on. These would warn about places in the
! user's source where ambiguities are found, helpful in resolving
! ambiguities in the program's dialect or dialects.
File: g77.info, Node: Unused Labels, Next: Informational Messages, Prev: Ambiguous Dialects, Up: Missing Features
! Unused Labels
! -------------
! `g77' should warn about unused labels when `-Wunused' is in effect.
File: g77.info, Node: Informational Messages, Next: Uninitialized Variables at Run Time, Prev: Unused Labels, Up: Missing Features
! Informational Messages
! ----------------------
! `g77' needs an option to suppress information messages (notes).
! `-w' does this but also suppresses warnings. The default should be to
suppress info messages.
Perhaps info messages should simply be eliminated.
--- 21145,21174 ----
File: g77.info, Node: Ambiguous Dialects, Next: Unused Labels, Prev: Invalid FORMAT Specifiers, Up: Missing Features
! 15.3.44 Ambiguous Dialects
! --------------------------
! `g77' needs a set of options such as `-Wugly*', `-Wautomatic', `-Wvxt',
! `-Wf90', and so on. These would warn about places in the user's source
! where ambiguities are found, helpful in resolving ambiguities in the
! program's dialect or dialects.
File: g77.info, Node: Unused Labels, Next: Informational Messages, Prev: Ambiguous Dialects, Up: Missing Features
! 15.3.45 Unused Labels
! ---------------------
! `g77' should warn about unused labels when `-Wunused' is in effect.
File: g77.info, Node: Informational Messages, Next: Uninitialized Variables at Run Time, Prev: Unused Labels, Up: Missing Features
! 15.3.46 Informational Messages
! ------------------------------
! `g77' needs an option to suppress information messages (notes). `-w'
! does this but also suppresses warnings. The default should be to
suppress info messages.
Perhaps info messages should simply be eliminated.
*************** suppress info messages.
*** 20943,20952 ****
File: g77.info, Node: Uninitialized Variables at Run Time, Next: Portable Unformatted Files, Prev: Informational Messages, Up: Missing Features
! Uninitialized Variables at Run Time
! -----------------------------------
! `g77' needs an option to initialize everything (not otherwise
explicitly initialized) to "weird" (machine-dependent) values, e.g.
NaNs, bad (non-`NULL') pointers, and largest-magnitude integers, would
help track down references to some kinds of uninitialized variables at
--- 21176,21185 ----
File: g77.info, Node: Uninitialized Variables at Run Time, Next: Portable Unformatted Files, Prev: Informational Messages, Up: Missing Features
! 15.3.47 Uninitialized Variables at Run Time
! -------------------------------------------
! `g77' needs an option to initialize everything (not otherwise
explicitly initialized) to "weird" (machine-dependent) values, e.g.
NaNs, bad (non-`NULL') pointers, and largest-magnitude integers, would
help track down references to some kinds of uninitialized variables at
*************** such bugs at compile time.
*** 20958,20967 ****
File: g77.info, Node: Portable Unformatted Files, Next: Better List-directed I/O, Prev: Uninitialized Variables at Run Time, Up: Missing Features
! Portable Unformatted Files
! --------------------------
! `g77' has no facility for exchanging unformatted files with systems
using different number formats--even differing only in endianness (byte
order)--or written by other compilers. Some compilers provide
facilities at least for doing byte-swapping during unformatted I/O.
--- 21191,21200 ----
File: g77.info, Node: Portable Unformatted Files, Next: Better List-directed I/O, Prev: Uninitialized Variables at Run Time, Up: Missing Features
! 15.3.48 Portable Unformatted Files
! ----------------------------------
! `g77' has no facility for exchanging unformatted files with systems
using different number formats--even differing only in endianness (byte
order)--or written by other compilers. Some compilers provide
facilities at least for doing byte-swapping during unformatted I/O.
*************** techniques.
*** 21021,21030 ****
File: g77.info, Node: Better List-directed I/O, Next: Default to Console I/O, Prev: Portable Unformatted Files, Up: Missing Features
! Better List-directed I/O
! ------------------------
! Values output using list-directed I/O (`PRINT *, R, D') should be
written with a field width, precision, and so on appropriate for the
type (precision) of each value.
--- 21254,21263 ----
File: g77.info, Node: Better List-directed I/O, Next: Default to Console I/O, Prev: Portable Unformatted Files, Up: Missing Features
! 15.3.49 Better List-directed I/O
! --------------------------------
! Values output using list-directed I/O (`PRINT *, R, D') should be
written with a field width, precision, and so on appropriate for the
type (precision) of each value.
*************** controlled by preprocessing directives.
*** 21044,21054 ****
File: g77.info, Node: Default to Console I/O, Next: Labels Visible to Debugger, Prev: Better List-directed I/O, Up: Missing Features
! Default to Console I/O
! ----------------------
! The default I/O units, specified by `READ FMT', `READ (UNIT=*)',
! `WRITE (UNIT=*)', and `PRINT FMT', should not be units 5 (input) and 6
(output), but, rather, unit numbers not normally available for use in
statements such as `OPEN' and `CLOSE'.
--- 21277,21287 ----
File: g77.info, Node: Default to Console I/O, Next: Labels Visible to Debugger, Prev: Better List-directed I/O, Up: Missing Features
! 15.3.50 Default to Console I/O
! ------------------------------
! The default I/O units, specified by `READ FMT', `READ (UNIT=*)', `WRITE
! (UNIT=*)', and `PRINT FMT', should not be units 5 (input) and 6
(output), but, rather, unit numbers not normally available for use in
statements such as `OPEN' and `CLOSE'.
*************** to the "console".
*** 21061,21070 ****
File: g77.info, Node: Labels Visible to Debugger, Prev: Default to Console I/O, Up: Missing Features
! Labels Visible to Debugger
! --------------------------
! `g77' should output debugging information for statements labels, for
use by debuggers that know how to support them. Same with weirder
things like construct names. It is not yet known if any debug formats
or debuggers support these.
--- 21294,21303 ----
File: g77.info, Node: Labels Visible to Debugger, Prev: Default to Console I/O, Up: Missing Features
! 15.3.51 Labels Visible to Debugger
! ----------------------------------
! `g77' should output debugging information for statements labels, for
use by debuggers that know how to support them. Same with weirder
things like construct names. It is not yet known if any debug formats
or debuggers support these.
*************** or debuggers support these.
*** 21072,21082 ****
File: g77.info, Node: Disappointments, Next: Non-bugs, Prev: Missing Features, Up: Trouble
! Disappointments and Misunderstandings
! =====================================
! These problems are perhaps regrettable, but we don't know any
! practical way around them for now.
* Menu:
--- 21305,21315 ----
File: g77.info, Node: Disappointments, Next: Non-bugs, Prev: Missing Features, Up: Trouble
! 15.4 Disappointments and Misunderstandings
! ==========================================
! These problems are perhaps regrettable, but we don't know any practical
! way around them for now.
* Menu:
*************** practical way around them for now.
*** 21089,21098 ****
File: g77.info, Node: Mangling of Names, Next: Multiple Definitions of External Names, Up: Disappointments
! Mangling of Names in Source Code
! --------------------------------
! The current external-interface design, which includes naming of
external procedures, COMMON blocks, and the library interface, has
various usability problems, including things like adding underscores
where not really necessary (and preventing easier inter-language
--- 21322,21331 ----
File: g77.info, Node: Mangling of Names, Next: Multiple Definitions of External Names, Up: Disappointments
! 15.4.1 Mangling of Names in Source Code
! ---------------------------------------
! The current external-interface design, which includes naming of
external procedures, COMMON blocks, and the library interface, has
various usability problems, including things like adding underscores
where not really necessary (and preventing easier inter-language
*************** existing compilers.
*** 21108,21119 ****
File: g77.info, Node: Multiple Definitions of External Names, Next: Limitation on Implicit Declarations, Prev: Mangling of Names, Up: Disappointments
! Multiple Definitions of External Names
! --------------------------------------
! `g77' doesn't allow a common block and an external procedure or
! `BLOCK DATA' to have the same name. Some systems allow this, but `g77'
! does not, to be compatible with `f2c'.
`g77' could special-case the way it handles `BLOCK DATA', since it
is not compatible with `f2c' in this particular area (necessarily,
--- 21341,21352 ----
File: g77.info, Node: Multiple Definitions of External Names, Next: Limitation on Implicit Declarations, Prev: Mangling of Names, Up: Disappointments
! 15.4.2 Multiple Definitions of External Names
! ---------------------------------------------
! `g77' doesn't allow a common block and an external procedure or `BLOCK
! DATA' to have the same name. Some systems allow this, but `g77' does
! not, to be compatible with `f2c'.
`g77' could special-case the way it handles `BLOCK DATA', since it
is not compatible with `f2c' in this particular area (necessarily,
*************** more trouble than it's worth.)
*** 21137,21156 ****
File: g77.info, Node: Limitation on Implicit Declarations, Prev: Multiple Definitions of External Names, Up: Disappointments
! Limitation on Implicit Declarations
! -----------------------------------
! `g77' disallows `IMPLICIT CHARACTER*(*)'. This is not
standard-conforming.
File: g77.info, Node: Non-bugs, Next: Warnings and Errors, Prev: Disappointments, Up: Trouble
! Certain Changes We Don't Want to Make
! =====================================
! This section lists changes that people frequently request, but which
! we do not make because we think GNU Fortran is better without them.
* Menu:
--- 21370,21389 ----
File: g77.info, Node: Limitation on Implicit Declarations, Prev: Multiple Definitions of External Names, Up: Disappointments
! 15.4.3 Limitation on Implicit Declarations
! ------------------------------------------
! `g77' disallows `IMPLICIT CHARACTER*(*)'. This is not
standard-conforming.
File: g77.info, Node: Non-bugs, Next: Warnings and Errors, Prev: Disappointments, Up: Trouble
! 15.5 Certain Changes We Don't Want to Make
! ==========================================
! This section lists changes that people frequently request, but which we
! do not make because we think GNU Fortran is better without them.
* Menu:
*************** we do not make because we think GNU Fort
*** 21170,21179 ****
File: g77.info, Node: Backslash in Constants, Next: Initializing Before Specifying, Up: Non-bugs
! Backslash in Constants
! ----------------------
! In the opinion of many experienced Fortran users, `-fno-backslash'
should be the default, not `-fbackslash', as currently set by `g77'.
First of all, you can always specify `-fno-backslash' to turn off
--- 21403,21412 ----
File: g77.info, Node: Backslash in Constants, Next: Initializing Before Specifying, Up: Non-bugs
! 15.5.1 Backslash in Constants
! -----------------------------
! In the opinion of many experienced Fortran users, `-fno-backslash'
should be the default, not `-fbackslash', as currently set by `g77'.
First of all, you can always specify `-fno-backslash' to turn off
*************** used instead, for readability.)
*** 21271,21281 ****
File: g77.info, Node: Initializing Before Specifying, Next: Context-Sensitive Intrinsicness, Prev: Backslash in Constants, Up: Non-bugs
! Initializing Before Specifying
! ------------------------------
! `g77' does not allow `DATA VAR/1/' to appear in the source code
! before `COMMON VAR', `DIMENSION VAR(10)', `INTEGER VAR', and so on. In
general, `g77' requires initialization of a variable or array to be
specified _after_ all other specifications of attributes (type, size,
placement, and so on) of that variable or array are specified (though
--- 21504,21514 ----
File: g77.info, Node: Initializing Before Specifying, Next: Context-Sensitive Intrinsicness, Prev: Backslash in Constants, Up: Non-bugs
! 15.5.2 Initializing Before Specifying
! -------------------------------------
! `g77' does not allow `DATA VAR/1/' to appear in the source code before
! `COMMON VAR', `DIMENSION VAR(10)', `INTEGER VAR', and so on. In
general, `g77' requires initialization of a variable or array to be
specified _after_ all other specifications of attributes (type, size,
placement, and so on) of that variable or array are specified (though
*************** cannot be followed by `COMMON A'.
*** 21296,21305 ****
File: g77.info, Node: Context-Sensitive Intrinsicness, Next: Context-Sensitive Constants, Prev: Initializing Before Specifying, Up: Non-bugs
! Context-Sensitive Intrinsicness
! -------------------------------
! `g77' treats procedure references to _possible_ intrinsic names as
always enabling their intrinsic nature, regardless of whether the
_form_ of the reference is valid for that intrinsic.
--- 21529,21538 ----
File: g77.info, Node: Context-Sensitive Intrinsicness, Next: Context-Sensitive Constants, Prev: Initializing Before Specifying, Up: Non-bugs
! 15.5.3 Context-Sensitive Intrinsicness
! --------------------------------------
! `g77' treats procedure references to _possible_ intrinsic names as
always enabling their intrinsic nature, regardless of whether the
_form_ of the reference is valid for that intrinsic.
*************** user-written subroutine named `SQRT'.
*** 21341,21352 ****
File: g77.info, Node: Context-Sensitive Constants, Next: Equivalence Versus Equality, Prev: Context-Sensitive Intrinsicness, Up: Non-bugs
! Context-Sensitive Constants
! ---------------------------
! `g77' does not use context to determine the types of constants or
! named constants (`PARAMETER'), except for (non-standard) typeless
! constants such as `'123'O'.
For example, consider the following statement:
--- 21574,21585 ----
File: g77.info, Node: Context-Sensitive Constants, Next: Equivalence Versus Equality, Prev: Context-Sensitive Intrinsicness, Up: Non-bugs
! 15.5.4 Context-Sensitive Constants
! ----------------------------------
! `g77' does not use context to determine the types of constants or named
! constants (`PARAMETER'), except for (non-standard) typeless constants
! such as `'123'O'.
For example, consider the following statement:
*************** in such code could be very helpful.
*** 21409,21420 ****
File: g77.info, Node: Equivalence Versus Equality, Next: Order of Side Effects, Prev: Context-Sensitive Constants, Up: Non-bugs
! Equivalence Versus Equality
! ---------------------------
! Use of `.EQ.' and `.NE.' on `LOGICAL' operands is not supported,
! except via `-fugly-logint', which is not recommended except for legacy
! code (where the behavior expected by the _code_ is assumed).
Legacy code should be changed, as resources permit, to use `.EQV.'
and `.NEQV.' instead, as these are permitted by the various Fortran
--- 21642,21653 ----
File: g77.info, Node: Equivalence Versus Equality, Next: Order of Side Effects, Prev: Context-Sensitive Constants, Up: Non-bugs
! 15.5.5 Equivalence Versus Equality
! ----------------------------------
! Use of `.EQ.' and `.NE.' on `LOGICAL' operands is not supported, except
! via `-fugly-logint', which is not recommended except for legacy code
! (where the behavior expected by the _code_ is assumed).
Legacy code should be changed, as resources permit, to use `.EQV.'
and `.NEQV.' instead, as these are permitted by the various Fortran
*************** diagnose it.
*** 21478,21491 ****
File: g77.info, Node: Order of Side Effects, Prev: Equivalence Versus Equality, Up: Non-bugs
! Order of Side Effects
! ---------------------
! `g77' does not necessarily produce code that, when run, performs
! side effects (such as those performed by function invocations) in the
! same order as in some other compiler--or even in the same order as
! another version, port, or invocation (using different command-line
! options) of `g77'.
It is never safe to depend on the order of evaluation of side
effects. For example, an expression like this may very well behave
--- 21711,21724 ----
File: g77.info, Node: Order of Side Effects, Prev: Equivalence Versus Equality, Up: Non-bugs
! 15.5.6 Order of Side Effects
! ----------------------------
! `g77' does not necessarily produce code that, when run, performs side
! effects (such as those performed by function invocations) in the same
! order as in some other compiler--or even in the same order as another
! version, port, or invocation (using different command-line options) of
! `g77'.
It is never safe to depend on the order of evaluation of side
effects. For example, an expression like this may very well behave
*************** being speeded up).
*** 21520,21529 ****
File: g77.info, Node: Warnings and Errors, Prev: Non-bugs, Up: Trouble
! Warning Messages and Error Messages
! ===================================
! The GNU compiler can produce two kinds of diagnostics: errors and
warnings. Each kind has a different purpose:
_Errors_ report problems that make it impossible to compile your
--- 21753,21762 ----
File: g77.info, Node: Warnings and Errors, Prev: Non-bugs, Up: Trouble
! 15.6 Warning Messages and Error Messages
! ========================================
! The GNU compiler can produce two kinds of diagnostics: errors and
warnings. Each kind has a different purpose:
_Errors_ report problems that make it impossible to compile your
*************** more detail on these and related command
*** 21552,21561 ****
File: g77.info, Node: Open Questions, Next: Bugs, Prev: Trouble, Up: Top
! Open Questions
! **************
! Please consider offering useful answers to these questions!
* `LOC()' and other intrinsics are probably somewhat misclassified.
Is the a need for more precise classification of intrinsics, and
--- 21785,21794 ----
File: g77.info, Node: Open Questions, Next: Bugs, Prev: Trouble, Up: Top
! 16 Open Questions
! *****************
! Please consider offering useful answers to these questions!
* `LOC()' and other intrinsics are probably somewhat misclassified.
Is the a need for more precise classification of intrinsics, and
*************** Open Questions
*** 21566,21576 ****
File: g77.info, Node: Bugs, Next: Service, Prev: Open Questions, Up: Top
! Reporting Bugs
! **************
! Your bug reports play an essential role in making GNU Fortran
! reliable.
When you encounter a problem, the first thing to do is to see if it
is already known. *Note Trouble::. If it isn't known, then you should
--- 21799,21808 ----
File: g77.info, Node: Bugs, Next: Service, Prev: Open Questions, Up: Top
! 17 Reporting Bugs
! *****************
! Your bug reports play an essential role in making GNU Fortran reliable.
When you encounter a problem, the first thing to do is to see if it
is already known. *Note Trouble::. If it isn't known, then you should
*************** where to ask for help.
*** 21590,21599 ****
File: g77.info, Node: Bug Criteria, Next: Bug Reporting, Up: Bugs
! Have You Found a Bug?
! =====================
! If you are not sure whether you have found a bug, here are some
guidelines:
* If the compiler gets a fatal signal, for any input whatever, that
--- 21822,21831 ----
File: g77.info, Node: Bug Criteria, Next: Bug Reporting, Up: Bugs
! 17.1 Have You Found a Bug?
! ==========================
! If you are not sure whether you have found a bug, here are some
guidelines:
* If the compiler gets a fatal signal, for any input whatever, that
*************** the code you're compiling with `g77':
*** 21684,21729 ****
# Dummy suffix for ftnchek targets:
.SUFFIXES: .chek
.PHONY: chekall
!
# How to compile .f files (for implicit rule):
FC = g77
# Assume `include' directory:
FFLAGS = -Iinclude -g -O -Wall
!
# Flags for ftnchek:
CHEK1 = -array=0 -include=includes -noarray
CHEK2 = -nonovice -usage=1 -notruncation
CHEKFLAGS = $(CHEK1) $(CHEK2)
!
# Run ftnchek with all the .prj files except the one corresponding
# to the target's root:
%.chek : %.f ; \
ftnchek $(filter-out $*.prj,$(PRJS)) $(CHEKFLAGS) \
-noextern -library $<
!
# Derive a project file from a source file:
%.prj : %.f ; \
ftnchek $(CHEKFLAGS) -noextern -project -library $<
!
# The list of objects is assumed to be in variable OBJS.
# Sources corresponding to the objects:
SRCS = $(OBJS:%.o=%.f)
# ftnchek project files:
PRJS = $(OBJS:%.o=%.prj)
!
# Build the program
prog: $(OBJS) ; \
$(FC) -o $ $(OBJS)
!
chekall: $(PRJS) ; \
ftnchek $(CHEKFLAGS) $(PRJS)
!
prjs: $(PRJS)
!
# For Emacs M-x find-tag:
TAGS: $(SRCS) ; \
etags $(SRCS)
!
# Rebuild dependencies:
depend: ; \
sfmakedepend -I $(PLTLIBDIR) -I includes -a prj $(SRCS1)
--- 21916,21961 ----
# Dummy suffix for ftnchek targets:
.SUFFIXES: .chek
.PHONY: chekall
!
# How to compile .f files (for implicit rule):
FC = g77
# Assume `include' directory:
FFLAGS = -Iinclude -g -O -Wall
!
# Flags for ftnchek:
CHEK1 = -array=0 -include=includes -noarray
CHEK2 = -nonovice -usage=1 -notruncation
CHEKFLAGS = $(CHEK1) $(CHEK2)
!
# Run ftnchek with all the .prj files except the one corresponding
# to the target's root:
%.chek : %.f ; \
ftnchek $(filter-out $*.prj,$(PRJS)) $(CHEKFLAGS) \
-noextern -library $<
!
# Derive a project file from a source file:
%.prj : %.f ; \
ftnchek $(CHEKFLAGS) -noextern -project -library $<
!
# The list of objects is assumed to be in variable OBJS.
# Sources corresponding to the objects:
SRCS = $(OBJS:%.o=%.f)
# ftnchek project files:
PRJS = $(OBJS:%.o=%.prj)
!
# Build the program
prog: $(OBJS) ; \
$(FC) -o $ $(OBJS)
!
chekall: $(PRJS) ; \
ftnchek $(CHEKFLAGS) $(PRJS)
!
prjs: $(PRJS)
!
# For Emacs M-x find-tag:
TAGS: $(SRCS) ; \
etags $(SRCS)
!
# Rebuild dependencies:
depend: ; \
sfmakedepend -I $(PLTLIBDIR) -I includes -a prj $(SRCS1)
*************** the code you're compiling with `g77':
*** 21741,21750 ****
File: g77.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Bugs
! How to Report Bugs
! ==================
! Bugs should be reported to our bug database. Please refer to
`http://gcc.gnu.org/bugs.html' for up-to-date instructions how to
submit bug reports. Copies of this file in HTML (`bugs.html') and
plain text (`BUGS') are also part of GCC releases.
--- 21973,21982 ----
File: g77.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Bugs
! 17.2 How to Report Bugs
! =======================
! Bugs should be reported to our bug database. Please refer to
`http://gcc.gnu.org/bugs.html' for up-to-date instructions how to
submit bug reports. Copies of this file in HTML (`bugs.html') and
plain text (`BUGS') are also part of GCC releases.
*************** plain text (`BUGS') are also part of GCC
*** 21752,21762 ****
File: g77.info, Node: Service, Next: Adding Options, Prev: Bugs, Up: Top
! How To Get Help with GNU Fortran
! ********************************
! If you need help installing, using or changing GNU Fortran, there
! are two ways to find it:
* Look in the service directory for someone who might help you for a
fee. The service directory is found in the file named `SERVICE'
--- 21984,21994 ----
File: g77.info, Node: Service, Next: Adding Options, Prev: Bugs, Up: Top
! 18 How To Get Help with GNU Fortran
! ***********************************
! If you need help installing, using or changing GNU Fortran, there are
! two ways to find it:
* Look in the service directory for someone who might help you for a
fee. The service directory is found in the file named `SERVICE'
*************** are two ways to find it:
*** 21767,21776 ****
File: g77.info, Node: Adding Options, Next: Projects, Prev: Service, Up: Top
! Adding Options
! **************
! To add a new command-line option to `g77', first decide what kind of
option you wish to add. Search the `g77' and `gcc' documentation for
one or more options that is most closely like the one you want to add
(in terms of what kind of effect it has, and so on) to help clarify its
--- 21999,22008 ----
File: g77.info, Node: Adding Options, Next: Projects, Prev: Service, Up: Top
! 19 Adding Options
! *****************
! To add a new command-line option to `g77', first decide what kind of
option you wish to add. Search the `g77' and `gcc' documentation for
one or more options that is most closely like the one you want to add
(in terms of what kind of effect it has, and so on) to help clarify its
*************** _Fortran-reticent_ compiler options by c
*** 21868,21877 ****
File: g77.info, Node: Projects, Next: Front End, Prev: Adding Options, Up: Top
! Projects
! ********
! If you want to contribute to `g77' by doing research, design,
specification, documentation, coding, or testing, the following
information should give you some ideas.
--- 22100,22109 ----
File: g77.info, Node: Projects, Next: Front End, Prev: Adding Options, Up: Top
! 20 Projects
! ***********
! If you want to contribute to `g77' by doing research, design,
specification, documentation, coding, or testing, the following
information should give you some ideas.
*************** information should give you some ideas.
*** 21890,21902 ****
File: g77.info, Node: Efficiency, Next: Better Optimization, Up: Projects
! Improve Efficiency
! ==================
! Don't bother doing any performance analysis until most of the
! following items are taken care of, because there's no question they
! represent serious space/time problems, although some of them show up
! only given certain kinds of (popular) input.
* Improve `malloc' package and its uses to specify more info about
memory pools and, where feasible, use obstacks to implement them.
--- 22122,22134 ----
File: g77.info, Node: Efficiency, Next: Better Optimization, Up: Projects
! 20.1 Improve Efficiency
! =======================
! Don't bother doing any performance analysis until most of the following
! items are taken care of, because there's no question they represent
! serious space/time problems, although some of them show up only given
! certain kinds of (popular) input.
* Improve `malloc' package and its uses to specify more info about
memory pools and, where feasible, use obstacks to implement them.
*************** only given certain kinds of (popular) in
*** 21949,21958 ****
File: g77.info, Node: Better Optimization, Next: Simplify Porting, Prev: Efficiency, Up: Projects
! Better Optimization
! ===================
! Much of this work should be put off until after `g77' has all the
features necessary for its widespread acceptance as a useful F77
compiler. However, perhaps this work can be done in parallel during
the feature-adding work.
--- 22181,22190 ----
File: g77.info, Node: Better Optimization, Next: Simplify Porting, Prev: Efficiency, Up: Projects
! 20.2 Better Optimization
! ========================
! Much of this work should be put off until after `g77' has all the
features necessary for its widespread acceptance as a useful F77
compiler. However, perhaps this work can be done in parallel during
the feature-adding work.
*************** the feature-adding work.
*** 22015,22026 ****
File: g77.info, Node: Simplify Porting, Next: More Extensions, Prev: Better Optimization, Up: Projects
! Simplify Porting
! ================
! Making `g77' easier to configure, port, build, and install, either
! as a single-system compiler or as a cross-compiler, would be very
! useful.
* A new library (replacing `libg2c') should improve portability as
well as produce more optimal code. Further, `g77' and the new
--- 22247,22257 ----
File: g77.info, Node: Simplify Porting, Next: More Extensions, Prev: Better Optimization, Up: Projects
! 20.3 Simplify Porting
! =====================
! Making `g77' easier to configure, port, build, and install, either as a
! single-system compiler or as a cross-compiler, would be very useful.
* A new library (replacing `libg2c') should improve portability as
well as produce more optimal code. Further, `g77' and the new
*************** useful.
*** 22053,22062 ****
File: g77.info, Node: More Extensions, Next: Machine Model, Prev: Simplify Porting, Up: Projects
! More Extensions
! ===============
! These extensions are not the sort of things users ask for "by name",
but they might improve the usability of `g77', and Fortran in general,
in the long run. Some of these items really pertain to improving `g77'
internals so that some popular extensions can be more easily supported.
--- 22284,22293 ----
File: g77.info, Node: More Extensions, Next: Machine Model, Prev: Simplify Porting, Up: Projects
! 20.4 More Extensions
! ====================
! These extensions are not the sort of things users ask for "by name",
but they might improve the usability of `g77', and Fortran in general,
in the long run. Some of these items really pertain to improving `g77'
internals so that some popular extensions can be more easily supported.
*************** internals so that some popular extension
*** 22120,22130 ****
File: g77.info, Node: Machine Model, Next: Internals Documentation, Prev: More Extensions, Up: Projects
! Machine Model
! =============
! This items pertain to generalizing `g77''s view of the machine model
! to more fully accept whatever the GBE provides it via its configuration.
* Switch to using `REAL_VALUE_TYPE' to represent floating-point
constants exclusively so the target float format need not be
--- 22351,22361 ----
File: g77.info, Node: Machine Model, Next: Internals Documentation, Prev: More Extensions, Up: Projects
! 20.5 Machine Model
! ==================
! This items pertain to generalizing `g77''s view of the machine model to
! more fully accept whatever the GBE provides it via its configuration.
* Switch to using `REAL_VALUE_TYPE' to represent floating-point
constants exclusively so the target float format need not be
*************** to more fully accept whatever the GBE pr
*** 22148,22157 ****
File: g77.info, Node: Internals Documentation, Next: Internals Improvements, Prev: Machine Model, Up: Projects
! Internals Documentation
! =======================
! Better info on how `g77' works and how to port it is needed.
*Note Front End::, which contains some information on `g77'
internals.
--- 22379,22388 ----
File: g77.info, Node: Internals Documentation, Next: Internals Improvements, Prev: Machine Model, Up: Projects
! 20.6 Internals Documentation
! ============================
! Better info on how `g77' works and how to port it is needed.
*Note Front End::, which contains some information on `g77'
internals.
*************** internals.
*** 22159,22168 ****
File: g77.info, Node: Internals Improvements, Next: Better Diagnostics, Prev: Internals Documentation, Up: Projects
! Internals Improvements
! ======================
! Some more items that would make `g77' more reliable and easier to
maintain:
* Generally make expression handling focus more on critical syntax
--- 22390,22399 ----
File: g77.info, Node: Internals Improvements, Next: Better Diagnostics, Prev: Internals Documentation, Up: Projects
! 20.7 Internals Improvements
! ===========================
! Some more items that would make `g77' more reliable and easier to
maintain:
* Generally make expression handling focus more on critical syntax
*************** maintain:
*** 22234,22245 ****
File: g77.info, Node: Better Diagnostics, Prev: Internals Improvements, Up: Projects
! Better Diagnostics
! ==================
! These are things users might not ask about, or that need to be
! looked into, before worrying about. Also here are items that involve
! reducing unnecessary diagnostic clutter.
* When `FUNCTION' and `ENTRY' point types disagree (`CHARACTER'
lengths, type classes, and so on), `ANY'-ize the offending `ENTRY'
--- 22465,22476 ----
File: g77.info, Node: Better Diagnostics, Prev: Internals Improvements, Up: Projects
! 20.8 Better Diagnostics
! =======================
! These are things users might not ask about, or that need to be looked
! into, before worrying about. Also here are items that involve reducing
! unnecessary diagnostic clutter.
* When `FUNCTION' and `ENTRY' point types disagree (`CHARACTER'
lengths, type classes, and so on), `ANY'-ize the offending `ENTRY'
*************** reducing unnecessary diagnostic clutter.
*** 22261,22271 ****
File: g77.info, Node: Front End, Next: Diagnostics, Prev: Projects, Up: Top
! Front End
! *********
! This chapter describes some aspects of the design and implementation
! of the `g77' front end.
To find about things that are "To Be Determined" or "To Be Done",
search for the string TBD. If you want to help by working on one or
--- 22492,22502 ----
File: g77.info, Node: Front End, Next: Diagnostics, Prev: Projects, Up: Top
! 21 Front End
! ************
! This chapter describes some aspects of the design and implementation of
! the `g77' front end.
To find about things that are "To Be Determined" or "To Be Done",
search for the string TBD. If you want to help by working on one or
*************** first.
*** 22288,22297 ****
File: g77.info, Node: Overview of Sources, Next: Overview of Translation Process, Up: Front End
! Overview of Sources
! ===================
! The current directory layout includes the following:
`SRCDIR/gcc/'
Non-g77 files in gcc
--- 22519,22528 ----
File: g77.info, Node: Overview of Sources, Next: Overview of Translation Process, Up: Front End
! 21.1 Overview of Sources
! ========================
! The current directory layout includes the following:
`SRCDIR/gcc/'
Non-g77 files in gcc
*************** around a bug in `g77' until a fix is ava
*** 22466,22476 ****
File: g77.info, Node: Overview of Translation Process, Next: Philosophy of Code Generation, Prev: Overview of Sources, Up: Front End
! Overview of Translation Process
! ===============================
! The order of phases translating source code to the form accepted by
! the GBE is:
1. Stripping punched-card sources (`g77stripcard.c')
--- 22697,22707 ----
File: g77.info, Node: Overview of Translation Process, Next: Philosophy of Code Generation, Prev: Overview of Sources, Up: Front End
! 21.2 Overview of Translation Process
! ====================================
! The order of phases translating source code to the form accepted by the
! GBE is:
1. Stripping punched-card sources (`g77stripcard.c')
*************** decimal numbering is used, and so on.
*** 22598,22607 ****
File: g77.info, Node: g77stripcard, Next: lex.c, Up: Overview of Translation Process
! g77stripcard
! ------------
! The `g77stripcard' program handles removing content beyond column 72
(adjustable via a command-line option), optionally warning about that
content being something other than trailing whitespace or Fortran
commentary.
--- 22829,22838 ----
File: g77.info, Node: g77stripcard, Next: lex.c, Up: Overview of Translation Process
! 21.2.1 g77stripcard
! -------------------
! The `g77stripcard' program handles removing content beyond column 72
(adjustable via a command-line option), optionally warning about that
content being something other than trailing whitespace or Fortran
commentary.
*************** tomorrow's Fortran programmers to read.)
*** 22652,22664 ****
File: g77.info, Node: lex.c, Next: sta.c, Prev: g77stripcard, Up: Overview of Translation Process
! lex.c
! -----
! To help make the lexer simple, fast, and easy to maintain, while
! also having `g77' generally encourage Fortran programmers to write
! simple, maintainable, portable code by maximizing the performance of
! compiling that kind of code:
* There'll be just one lexer, for both fixed-form and free-form
source.
--- 22883,22895 ----
File: g77.info, Node: lex.c, Next: sta.c, Prev: g77stripcard, Up: Overview of Translation Process
! 21.2.2 lex.c
! ------------
! To help make the lexer simple, fast, and easy to maintain, while also
! having `g77' generally encourage Fortran programmers to write simple,
! maintainable, portable code by maximizing the performance of compiling
! that kind of code:
* There'll be just one lexer, for both fixed-form and free-form
source.
*************** phase of `g77'. Mainly, they need not w
*** 22855,22920 ****
File: g77.info, Node: sta.c, Next: sti.c, Prev: lex.c, Up: Overview of Translation Process
! sta.c
! -----
File: g77.info, Node: sti.c, Next: stq.c, Prev: sta.c, Up: Overview of Translation Process
! sti.c
! -----
File: g77.info, Node: stq.c, Next: stb.c, Prev: sti.c, Up: Overview of Translation Process
! stq.c
! -----
File: g77.info, Node: stb.c, Next: expr.c, Prev: stq.c, Up: Overview of Translation Process
! stb.c
! -----
File: g77.info, Node: expr.c, Next: stc.c, Prev: stb.c, Up: Overview of Translation Process
! expr.c
! ------
File: g77.info, Node: stc.c, Next: std.c, Prev: expr.c, Up: Overview of Translation Process
! stc.c
! -----
File: g77.info, Node: std.c, Next: ste.c, Prev: stc.c, Up: Overview of Translation Process
! std.c
! -----
File: g77.info, Node: ste.c, Next: Gotchas (Transforming), Prev: std.c, Up: Overview of Translation Process
! ste.c
! -----
File: g77.info, Node: Gotchas (Transforming), Next: TBD (Transforming), Prev: ste.c, Up: Overview of Translation Process
! Gotchas (Transforming)
! ----------------------
! This section is not about transforming "gotchas" into something else.
It is about the weirder aspects of transforming Fortran, however that's
defined, into a more modern, canonical form.
! Multi-character Lexemes
! .......................
! Each lexeme carries with it a pointer to where it appears in the
! source.
To provide the ability for diagnostics to point to column numbers,
in addition to line numbers and names, lexemes that represent more than
--- 23086,23150 ----
File: g77.info, Node: sta.c, Next: sti.c, Prev: lex.c, Up: Overview of Translation Process
! 21.2.3 sta.c
! ------------
File: g77.info, Node: sti.c, Next: stq.c, Prev: sta.c, Up: Overview of Translation Process
! 21.2.4 sti.c
! ------------
File: g77.info, Node: stq.c, Next: stb.c, Prev: sti.c, Up: Overview of Translation Process
! 21.2.5 stq.c
! ------------
File: g77.info, Node: stb.c, Next: expr.c, Prev: stq.c, Up: Overview of Translation Process
! 21.2.6 stb.c
! ------------
File: g77.info, Node: expr.c, Next: stc.c, Prev: stb.c, Up: Overview of Translation Process
! 21.2.7 expr.c
! -------------
File: g77.info, Node: stc.c, Next: std.c, Prev: expr.c, Up: Overview of Translation Process
! 21.2.8 stc.c
! ------------
File: g77.info, Node: std.c, Next: ste.c, Prev: stc.c, Up: Overview of Translation Process
! 21.2.9 std.c
! ------------
File: g77.info, Node: ste.c, Next: Gotchas (Transforming), Prev: std.c, Up: Overview of Translation Process
! 21.2.10 ste.c
! -------------
File: g77.info, Node: Gotchas (Transforming), Next: TBD (Transforming), Prev: ste.c, Up: Overview of Translation Process
! 21.2.11 Gotchas (Transforming)
! ------------------------------
! This section is not about transforming "gotchas" into something else.
It is about the weirder aspects of transforming Fortran, however that's
defined, into a more modern, canonical form.
! 21.2.11.1 Multi-character Lexemes
! .................................
! Each lexeme carries with it a pointer to where it appears in the source.
To provide the ability for diagnostics to point to column numbers,
in addition to line numbers and names, lexemes that represent more than
*************** a row much easier than the old design, s
*** 22983,23002 ****
sacrifice. It probably makes the lexer much easier to implement than
it makes the parser harder.
! Space-padding Lexemes
! .....................
! Certain lexemes need to be padded with virtual spaces when the end
! of the line (or file) is encountered.
This is necessary in fixed form, to handle lines that don't extend
to column 72, assuming that's the line length in effect.
! Bizarre Free-form Hollerith Constants
! .....................................
! Last I checked, the Fortran 90 standard actually required the
! compiler to silently accept something like
FORMAT ( 1 2 Htwelve chars )
--- 23213,23232 ----
sacrifice. It probably makes the lexer much easier to implement than
it makes the parser harder.
! 21.2.11.2 Space-padding Lexemes
! ...............................
! Certain lexemes need to be padded with virtual spaces when the end of
! the line (or file) is encountered.
This is necessary in fixed form, to handle lines that don't extend
to column 72, assuming that's the line length in effect.
! 21.2.11.3 Bizarre Free-form Hollerith Constants
! ...............................................
! Last I checked, the Fortran 90 standard actually required the compiler
! to silently accept something like
FORMAT ( 1 2 Htwelve chars )
*************** subsequent phases to pull them apart as
*** 23033,23042 ****
must be treated--the former must be diagnosed, due to the separation
between lexemes, the latter must be accepted as a proper declaration.
! Hollerith Constants
! ...................
! Recognizing a Hollerith constant--specifically, that an `H' or `h'
after a digit string begins such a constant--requires some knowledge of
context.
--- 23263,23272 ----
must be treated--the former must be diagnosed, due to the separation
between lexemes, the latter must be accepted as a proper declaration.
! 21.2.11.4 Hollerith Constants
! .............................
! Recognizing a Hollerith constant--specifically, that an `H' or `h'
after a digit string begins such a constant--requires some knowledge of
context.
*************** context.
*** 23057,23066 ****
* `CHARACTER*', which can be treated generally as any `*' that is
the second lexeme of a statement
! Confusing Function Keyword
! ..........................
! While
REAL FUNCTION FOO ()
--- 23287,23296 ----
* `CHARACTER*', which can be treated generally as any `*' that is
the second lexeme of a statement
! 21.2.11.5 Confusing Function Keyword
! ....................................
! While
REAL FUNCTION FOO ()
*************** already-started program unit (but not at
*** 23087,23096 ****
begins a function program unit (external, or, within `CONTAINS',
nested).
! Weird READ
! ..........
! The statement
READ (N)
--- 23317,23326 ----
begins a function program unit (external, or, within `CONTAINS',
nested).
! 21.2.11.6 Weird READ
! ....................
! The statement
READ (N)
*************** the standard is always assumed, and we'r
*** 23139,23148 ****
File: g77.info, Node: TBD (Transforming), Prev: Gotchas (Transforming), Up: Overview of Translation Process
! TBD (Transforming)
! ------------------
! Continue researching gotchas, designing the transformational process,
and implementing it.
Specific issues to resolve:
--- 23369,23378 ----
File: g77.info, Node: TBD (Transforming), Prev: Gotchas (Transforming), Up: Overview of Translation Process
! 21.2.12 TBD (Transforming)
! --------------------------
! Continue researching gotchas, designing the transformational process,
and implementing it.
Specific issues to resolve:
*************** and implementing it.
*** 23200,23209 ****
File: g77.info, Node: Philosophy of Code Generation, Next: Two-pass Design, Prev: Overview of Translation Process, Up: Front End
! Philosophy of Code Generation
! =============================
! Don't poke the bear.
The `g77' front end generates code via the `gcc' back end.
--- 23430,23439 ----
File: g77.info, Node: Philosophy of Code Generation, Next: Two-pass Design, Prev: Overview of Translation Process, Up: Front End
! 21.3 Philosophy of Code Generation
! ==================================
! Don't poke the bear.
The `g77' front end generates code via the `gcc' back end.
*************** over shorter timeframes), for some of th
*** 23328,23341 ****
File: g77.info, Node: Two-pass Design, Next: Challenges Posed, Prev: Philosophy of Code Generation, Up: Front End
! Two-pass Design
! ===============
! The FFE does not tell the GBE anything about a program unit until
! after the last statement in that unit has been parsed. (A program unit
! is a Fortran concept that corresponds, in the C world, mostly closely
! to functions definitions in ISO C. That is, a program unit in Fortran
! is like a top-level function in C. Nested functions, found among the
extensions offered by GNU C, correspond roughly to Fortran's statement
functions.)
--- 23558,23571 ----
File: g77.info, Node: Two-pass Design, Next: Challenges Posed, Prev: Philosophy of Code Generation, Up: Front End
! 21.4 Two-pass Design
! ====================
! The FFE does not tell the GBE anything about a program unit until after
! the last statement in that unit has been parsed. (A program unit is a
! Fortran concept that corresponds, in the C world, mostly closely to
! functions definitions in ISO C. That is, a program unit in Fortran is
! like a top-level function in C. Nested functions, found among the
extensions offered by GNU C, correspond roughly to Fortran's statement
functions.)
*************** could be viewed as a "two-plus-pass" des
*** 23359,23369 ****
File: g77.info, Node: Two-pass Code, Next: Why Two Passes, Up: Two-pass Design
! Two-pass Code
! -------------
! Most of the code that turns the first pass (parsing) into a second
! pass for code generation is in `gcc/gcc/f/std.c'.
It has external functions, called mainly by siblings in
`gcc/gcc/f/stc.c', that record the information on statements and
--- 23589,23599 ----
File: g77.info, Node: Two-pass Code, Next: Why Two Passes, Up: Two-pass Design
! 21.4.1 Two-pass Code
! --------------------
! Most of the code that turns the first pass (parsing) into a second pass
! for code generation is in `gcc/gcc/f/std.c'.
It has external functions, called mainly by siblings in
`gcc/gcc/f/stc.c', that record the information on statements and
*************** routines to represent and specify expres
*** 23378,23393 ****
File: g77.info, Node: Why Two Passes, Prev: Two-pass Code, Up: Two-pass Design
! Why Two Passes
! --------------
! The need for two passes was not immediately evident during the
! design and implementation of the code in the FFE that was to produce
! GBEL. Only after a few kludges, to handle things like
! incorrectly-guessed `ASSIGN' label nature, had been implemented, did
! enough evidence pile up to make it clear that `std.c' had to be
! introduced to intercept, save, then revisit as part of a second pass,
! the digested contents of a program unit.
Other such missteps have occurred during the evolution of the FFE,
because of the different goals of the FFE and the GBE.
--- 23608,23623 ----
File: g77.info, Node: Why Two Passes, Prev: Two-pass Code, Up: Two-pass Design
! 21.4.2 Why Two Passes
! ---------------------
! The need for two passes was not immediately evident during the design
! and implementation of the code in the FFE that was to produce GBEL.
! Only after a few kludges, to handle things like incorrectly-guessed
! `ASSIGN' label nature, had been implemented, did enough evidence pile
! up to make it clear that `std.c' had to be introduced to intercept,
! save, then revisit as part of a second pass, the digested contents of a
! program unit.
Other such missteps have occurred during the evolution of the FFE,
because of the different goals of the FFE and the GBE.
*************** achieve its goals.
*** 23412,23423 ****
foo (int a, int b)
{
int c = 0;
!
if ((c = bar (c)) == 0)
goto done;
!
quux (c << 1);
!
done:
return c;
}
--- 23642,23653 ----
foo (int a, int b)
{
int c = 0;
!
if ((c = bar (c)) == 0)
goto done;
!
quux (c << 1);
!
done:
return c;
}
*************** Consider:
*** 23459,23470 ****
REAL ARRAY(ID1*ID2)
COMMON ID2
EXTERNAL FRED
!
ASSIGN 100 TO J
CALL FOO (I)
IF (I .EQ. 0) PRINT *, A(0)
GOTO 200
!
ENTRY Y (Z)
ASSIGN 101 TO J
200 PRINT *, A(1)
--- 23689,23700 ----
REAL ARRAY(ID1*ID2)
COMMON ID2
EXTERNAL FRED
!
ASSIGN 100 TO J
CALL FOO (I)
IF (I .EQ. 0) PRINT *, A(0)
GOTO 200
!
ENTRY Y (Z)
ASSIGN 101 TO J
200 PRINT *, A(1)
*************** supported by `g77'.)
*** 23546,23555 ****
File: g77.info, Node: Challenges Posed, Next: Transforming Statements, Prev: Two-pass Design, Up: Front End
! Challenges Posed
! ================
! Consider the following Fortran code, which uses various extensions
(including some to Fortran 90):
SUBROUTINE X(A)
--- 23776,23785 ----
File: g77.info, Node: Challenges Posed, Next: Transforming Statements, Prev: Two-pass Design, Up: Front End
! 21.5 Challenges Posed
! =====================
! Consider the following Fortran code, which uses various extensions
(including some to Fortran 90):
SUBROUTINE X(A)
*************** Challenges Posed
*** 23557,23563 ****
COMPLEX CFUNC
INTEGER*2 CLOCKS(200)
INTEGER IFUNC
!
CALL SYSTEM_CLOCK (CLOCKS (IFUNC (CFUNC ('('//A//')'))))
The above poses the following challenges to any Fortran compiler
--- 23787,23793 ----
COMPLEX CFUNC
INTEGER*2 CLOCKS(200)
INTEGER IFUNC
!
CALL SYSTEM_CLOCK (CLOCKS (IFUNC (CFUNC ('('//A//')'))))
The above poses the following challenges to any Fortran compiler
*************** conforming to the requirements of the GB
*** 23607,23617 ****
File: g77.info, Node: Transforming Statements, Next: Transforming Expressions, Prev: Challenges Posed, Up: Front End
! Transforming Statements
! =======================
! Most Fortran statements are given their own block, and, for
! temporary variables they might need, their own scope. (A block is what
distinguishes `{ foo (); }' from just `foo ();' in C. A scope is
included with every such block, providing a distinct name space for
local variables.)
--- 23837,23847 ----
File: g77.info, Node: Transforming Statements, Next: Transforming Expressions, Prev: Challenges Posed, Up: Front End
! 21.6 Transforming Statements
! ============================
! Most Fortran statements are given their own block, and, for temporary
! variables they might need, their own scope. (A block is what
distinguishes `{ foo (); }' from just `foo ();' in C. A scope is
included with every such block, providing a distinct name space for
local variables.)
*************** of this document).
*** 23632,23643 ****
File: g77.info, Node: Statements Needing Temporaries, Next: Transforming DO WHILE, Up: Transforming Statements
! Statements Needing Temporaries
! ------------------------------
! Any temporaries needed during, but not beyond, execution of a
! Fortran statement, are made local to the scope of that statement's
! block.
This allows the GBE to share storage for these temporaries among the
various statements without the FFE having to manage that itself.
--- 23862,23872 ----
File: g77.info, Node: Statements Needing Temporaries, Next: Transforming DO WHILE, Up: Transforming Statements
! 21.6.1 Statements Needing Temporaries
! -------------------------------------
! Any temporaries needed during, but not beyond, execution of a Fortran
! statement, are made local to the scope of that statement's block.
This allows the GBE to share storage for these temporaries among the
various statements without the FFE having to manage that itself.
*************** in the first item.
*** 23689,23698 ****
File: g77.info, Node: Transforming DO WHILE, Next: Transforming Iterative DO, Prev: Statements Needing Temporaries, Up: Transforming Statements
! Transforming DO WHILE
! ---------------------
! `DO WHILE(expr)' _must_ be implemented so that temporaries needed to
evaluate `expr' are generated just for the test, each time.
Consider how `DO WHILE (A//B .NE. 'END'); ...; END DO' is
--- 23918,23927 ----
File: g77.info, Node: Transforming DO WHILE, Next: Transforming Iterative DO, Prev: Statements Needing Temporaries, Up: Transforming Statements
! 21.6.2 Transforming DO WHILE
! ----------------------------
! `DO WHILE(expr)' _must_ be implemented so that temporaries needed to
evaluate `expr' are generated just for the test, each time.
Consider how `DO WHILE (A//B .NE. 'END'); ...; END DO' is
*************** transformed:
*** 23701,23717 ****
for (;;)
{
int temp0;
!
{
char temp1[large];
!
libg77_catenate (temp1, a, b);
temp0 = libg77_ne (temp1, 'END');
}
!
if (! temp0)
break;
!
...
}
--- 23930,23946 ----
for (;;)
{
int temp0;
!
{
char temp1[large];
!
libg77_catenate (temp1, a, b);
temp0 = libg77_ne (temp1, 'END');
}
!
if (! temp0)
break;
!
...
}
*************** be used in specific circumstances.
*** 23730,23739 ****
File: g77.info, Node: Transforming Iterative DO, Next: Transforming Block IF, Prev: Transforming DO WHILE, Up: Transforming Statements
! Transforming Iterative DO
! -------------------------
! An iterative `DO' loop (one that specifies an iteration variable) is
required by the Fortran standards to be implemented as though an
iteration count is computed before entering the loop body, and that
iteration count used to determine the number of times the loop body is
--- 23959,23968 ----
File: g77.info, Node: Transforming Iterative DO, Next: Transforming Block IF, Prev: Transforming DO WHILE, Up: Transforming Statements
! 21.6.3 Transforming Iterative DO
! --------------------------------
! An iterative `DO' loop (one that specifies an iteration variable) is
required by the Fortran standards to be implemented as though an
iteration count is computed before entering the loop body, and that
iteration count used to determine the number of times the loop body is
*************** loop, and the variable declared as belon
*** 23748,23762 ****
File: g77.info, Node: Transforming Block IF, Next: Transforming SELECT CASE, Prev: Transforming Iterative DO, Up: Transforming Statements
! Transforming Block IF
! ---------------------
! Consider:
SUBROUTINE X(A,B,C)
CHARACTER*(*) A, B, C
LOGICAL LFUNC
!
IF (LFUNC (A//B)) THEN
CALL SUBR1
ELSE IF (LFUNC (A//C)) THEN
--- 23977,23991 ----
File: g77.info, Node: Transforming Block IF, Next: Transforming SELECT CASE, Prev: Transforming Iterative DO, Up: Transforming Statements
! 21.6.4 Transforming Block IF
! ----------------------------
! Consider:
SUBROUTINE X(A,B,C)
CHARACTER*(*) A, B, C
LOGICAL LFUNC
!
IF (LFUNC (A//B)) THEN
CALL SUBR1
ELSE IF (LFUNC (A//C)) THEN
*************** inner block.
*** 23789,23799 ****
File: g77.info, Node: Transforming SELECT CASE, Prev: Transforming Block IF, Up: Transforming Statements
! Transforming SELECT CASE
! ------------------------
! `SELECT CASE' poses a few interesting problems for code generation,
! if efficiency and frugal stack management are important.
Consider `SELECT CASE (I('PREFIX'//A))', where `A' is
`CHARACTER*(*)'. In a case like this--basically, in any case where
--- 24018,24028 ----
File: g77.info, Node: Transforming SELECT CASE, Prev: Transforming Block IF, Up: Transforming Statements
! 21.6.5 Transforming SELECT CASE
! -------------------------------
! `SELECT CASE' poses a few interesting problems for code generation, if
! efficiency and frugal stack management are important.
Consider `SELECT CASE (I('PREFIX'//A))', where `A' is
`CHARACTER*(*)'. In a case like this--basically, in any case where
*************** block).
*** 23810,23818 ****
{
char temp[large];
!
libg77_catenate (temp, 'prefix', a);
!
switch (i (temp))
{
case 0:
--- 24039,24047 ----
{
char temp[large];
!
libg77_catenate (temp, 'prefix', a);
!
switch (i (temp))
{
case 0:
*************** them, and thus free that temp before exe
*** 23828,23841 ****
{
int temp0;
!
{
char temp1[large];
!
libg77_catenate (temp1, 'prefix', a);
temp0 = i (temp1);
}
!
switch (temp0)
{
case 0:
--- 24057,24070 ----
{
int temp0;
!
{
char temp1[large];
!
libg77_catenate (temp1, 'prefix', a);
temp0 = i (temp1);
}
!
switch (temp0)
{
case 0:
*************** actual code generation for `SELECT CASE'
*** 23883,23893 ****
File: g77.info, Node: Transforming Expressions, Next: Internal Naming Conventions, Prev: Transforming Statements, Up: Front End
! Transforming Expressions
! ========================
! The interactions between statements, expressions, and subexpressions
! at program run time can be viewed as:
ACTION(EXPR)
--- 24112,24122 ----
File: g77.info, Node: Transforming Expressions, Next: Internal Naming Conventions, Prev: Transforming Statements, Up: Front End
! 21.7 Transforming Expressions
! =============================
! The interactions between statements, expressions, and subexpressions at
! program run time can be viewed as:
ACTION(EXPR)
*************** least two other streams implement the ev
*** 23937,23951 ****
File: g77.info, Node: Internal Naming Conventions, Prev: Transforming Expressions, Up: Front End
! Internal Naming Conventions
! ===========================
! Names exported by FFE modules have the following
! (regular-expression) forms. Note that all names beginning `ffeMOD' or
! `FFEMOD', where MOD is lowercase or uppercase alphanumerics,
! respectively, are exported by the module `ffeMOD', with the source code
! doing the exporting in `MOD.h'. (Usually, the source code for the
! implementation is in `MOD.c'.)
Identifiers that don't fit the following forms are not considered
exported, even if they are according to the C language. (For example,
--- 24166,24180 ----
File: g77.info, Node: Internal Naming Conventions, Prev: Transforming Expressions, Up: Front End
! 21.8 Internal Naming Conventions
! ================================
! Names exported by FFE modules have the following (regular-expression)
! forms. Note that all names beginning `ffeMOD' or `FFEMOD', where MOD
! is lowercase or uppercase alphanumerics, respectively, are exported by
! the module `ffeMOD', with the source code doing the exporting in
! `MOD.h'. (Usually, the source code for the implementation is in
! `MOD.c'.)
Identifiers that don't fit the following forms are not considered
exported, even if they are according to the C language. (For example,
*************** definitions.
*** 24039,24049 ****
File: g77.info, Node: Diagnostics, Next: Keyword Index, Prev: Front End, Up: Top
! Diagnostics
! ***********
! Some diagnostics produced by `g77' require sufficient explanation
! that the explanations are given below, and the diagnostics themselves
identify the appropriate explanation.
Identification uses the GNU Info format--specifically, the `info'
--- 24268,24278 ----
File: g77.info, Node: Diagnostics, Next: Keyword Index, Prev: Front End, Up: Top
! 22 Diagnostics
! **************
! Some diagnostics produced by `g77' require sufficient explanation that
! the explanations are given below, and the diagnostics themselves
identify the appropriate explanation.
Identification uses the GNU Info format--specifically, the `info'
*************** text you're reading now), `FOOEY' is the
*** 24075,24082 ****
File: g77.info, Node: CMPAMBIG, Next: EXPIMP, Up: Diagnostics
! `CMPAMBIG'
! ==========
Ambiguous use of intrinsic INTRINSIC ...
--- 24304,24312 ----
File: g77.info, Node: CMPAMBIG, Next: EXPIMP, Up: Diagnostics
! 22.1 `CMPAMBIG'
! ===============
!
Ambiguous use of intrinsic INTRINSIC ...
*************** compiler, run away!
*** 24241,24248 ****
File: g77.info, Node: EXPIMP, Next: INTGLOB, Prev: CMPAMBIG, Up: Diagnostics
! `EXPIMP'
! ========
Intrinsic INTRINSIC referenced ...
--- 24471,24479 ----
File: g77.info, Node: EXPIMP, Next: INTGLOB, Prev: CMPAMBIG, Up: Diagnostics
! 22.2 `EXPIMP'
! =============
!
Intrinsic INTRINSIC referenced ...
*************** procedures as intrinsics provided as ext
*** 24272,24279 ****
File: g77.info, Node: INTGLOB, Next: LEX, Prev: EXPIMP, Up: Diagnostics
! `INTGLOB'
! =========
Same name `INTRINSIC' given ...
--- 24503,24511 ----
File: g77.info, Node: INTGLOB, Next: LEX, Prev: EXPIMP, Up: Diagnostics
! 22.3 `INTGLOB'
! ==============
!
Same name `INTRINSIC' given ...
*************** procedures as intrinsics provided as ext
*** 24332,24339 ****
File: g77.info, Node: LEX, Next: GLOBALS, Prev: INTGLOB, Up: Diagnostics
! `LEX'
! =====
Unrecognized character ...
Invalid first character ...
--- 24564,24572 ----
File: g77.info, Node: LEX, Next: GLOBALS, Prev: INTGLOB, Up: Diagnostics
! 22.4 `LEX'
! ==========
!
Unrecognized character ...
Invalid first character ...
*************** produced when general problems such as t
*** 24372,24381 ****
of a line, the sixth column is reserved to denote continuation
lines, and actual statements start at or beyond column 7. Spaces
generally are not significant, so if you see statements such as
! `REALX,Y' and `DO10I=1,100', you are looking at fixed-form code.
! Comment lines are indicated by the letter `C' or the symbol `*' in
! column 1. (Some code uses `!' or `/*' to begin in-line comments,
! which many compilers support.)
Free-form code is distinguished from fixed-form source primarily
by the fact that statements may start anywhere. (If lots of
--- 24605,24614 ----
of a line, the sixth column is reserved to denote continuation
lines, and actual statements start at or beyond column 7. Spaces
generally are not significant, so if you see statements such as
! `REALX,Y' and `DO10I=1,100', you are looking at fixed-form code. Comment
! lines are indicated by the letter `C' or the symbol `*' in column
! 1. (Some code uses `!' or `/*' to begin in-line comments, which
! many compilers support.)
Free-form code is distinguished from fixed-form source primarily
by the fact that statements may start anywhere. (If lots of
*************** produced when general problems such as t
*** 24458,24465 ****
File: g77.info, Node: GLOBALS, Next: LINKFAIL, Prev: LEX, Up: Diagnostics
! `GLOBALS'
! =========
Global name NAME defined at ... already defined...
Global name NAME at ... has different type...
--- 24691,24699 ----
File: g77.info, Node: GLOBALS, Next: LINKFAIL, Prev: LEX, Up: Diagnostics
! 22.5 `GLOBALS'
! ==============
!
Global name NAME defined at ... already defined...
Global name NAME at ... has different type...
*************** exhibiting any other outward manifestati
*** 24517,24524 ****
File: g77.info, Node: LINKFAIL, Next: Y2KBAD, Prev: GLOBALS, Up: Diagnostics
! `LINKFAIL'
! ==========
On AIX 4.1, `g77' might not build with the native (non-GNU) tools due
to a linker bug in coping with the `-bbigtoc' option which leads to a
--- 24751,24758 ----
File: g77.info, Node: LINKFAIL, Next: Y2KBAD, Prev: GLOBALS, Up: Diagnostics
! 22.6 `LINKFAIL'
! ===============
On AIX 4.1, `g77' might not build with the native (non-GNU) tools due
to a linker bug in coping with the `-bbigtoc' option which leads to a
*************** adding
*** 24535,24542 ****
File: g77.info, Node: Y2KBAD, Prev: LINKFAIL, Up: Diagnostics
! `Y2KBAD'
! ========
Intrinsic `NAME', invoked at (^), known to be non-Y2K-compliant...
--- 24769,24777 ----
File: g77.info, Node: Y2KBAD, Prev: LINKFAIL, Up: Diagnostics
! 22.7 `Y2KBAD'
! =============
!
Intrinsic `NAME', invoked at (^), known to be non-Y2K-compliant...
*************** File: g77.info, Node: Keyword Index, P
*** 24552,27476 ****
Keyword Index
*************
* Menu:
! * ! <1>: LEX.
! * ! <2>: Exclamation Point.
! * ! <3>: Trailing Comment.
! * ! <4>: Character Set.
* !: Statements Comments Lines.
! * ": Character Set.
* # <1>: Cpp-style directives.
! * #: Character Set.
! * #define: Overall Options.
! * #if: Overall Options.
! * #include: Overall Options.
! * $: Dollar Signs.
! * %: Character Set.
! * %DESCR() construct: %DESCR().
! * %LOC() construct: %LOC().
! * %REF() construct: %REF().
! * %VAL() construct: %VAL().
! * &: Character Set.
! * *: LEX.
! * *N notation <1>: Compiler Types.
! * *N notation: Star Notation.
! * --driver option <1>: Changes.
! * --driver option: News.
* -falias-check option <1>: Aliasing Assumed To Work.
! * -falias-check option: Code Gen Options.
* -fargument-alias option <1>: Aliasing Assumed To Work.
! * -fargument-alias option: Code Gen Options.
* -fargument-noalias option <1>: Aliasing Assumed To Work.
! * -fargument-noalias option: Code Gen Options.
* -fbadu77-intrinsics-delete option: Fortran Dialect Options.
* -fbadu77-intrinsics-disable option: Fortran Dialect Options.
* -fbadu77-intrinsics-enable option: Fortran Dialect Options.
* -fbadu77-intrinsics-hide option: Fortran Dialect Options.
! * -fbounds-check option: Code Gen Options.
! * -fcaller-saves option: Optimize Options.
* -fcase-initcap option: Fortran Dialect Options.
* -fcase-lower option: Fortran Dialect Options.
* -fcase-preserve option: Fortran Dialect Options.
* -fcase-strict-lower option: Fortran Dialect Options.
* -fcase-strict-upper option: Fortran Dialect Options.
* -fcase-upper option: Fortran Dialect Options.
! * -fdelayed-branch option: Optimize Options.
* -fdollar-ok option: Fortran Dialect Options.
! * -femulate-complex option: Code Gen Options.
! * -fexpensive-optimizations option: Optimize Options.
* -ff2c-intrinsics-delete option: Fortran Dialect Options.
* -ff2c-intrinsics-disable option: Fortran Dialect Options.
* -ff2c-intrinsics-enable option: Fortran Dialect Options.
* -ff2c-intrinsics-hide option: Fortran Dialect Options.
! * -ff2c-library option: Code Gen Options.
! * -ff66 option: Shorthand Options.
! * -ff77 option: Shorthand Options.
! * -ff90: Fortran 90 Features.
* -ff90 option: Fortran Dialect Options.
* -ff90-intrinsics-delete option: Fortran Dialect Options.
* -ff90-intrinsics-disable option: Fortran Dialect Options.
* -ff90-intrinsics-enable option: Fortran Dialect Options.
* -ff90-intrinsics-hide option: Fortran Dialect Options.
! * -ffast-math option: Optimize Options.
! * -ffinite-math-only option: Optimize Options.
* -ffixed-line-length-N option: Fortran Dialect Options.
! * -fflatten-arrays option: Code Gen Options.
! * -ffloat-store option: Optimize Options.
! * -fforce-addr option: Optimize Options.
! * -fforce-mem option: Optimize Options.
! * -ffortran-bounds-check option: Code Gen Options.
! * -ffree-form: Fortran 90 Features.
* -ffree-form option: Fortran Dialect Options.
* -fgnu-intrinsics-delete option: Fortran Dialect Options.
* -fgnu-intrinsics-disable option: Fortran Dialect Options.
* -fgnu-intrinsics-enable option: Fortran Dialect Options.
* -fgnu-intrinsics-hide option: Fortran Dialect Options.
* -fGROUP-intrinsics-hide option: Overly Convenient Options.
* -finit-local-zero option <1>: Overly Convenient Options.
! * -finit-local-zero option: Code Gen Options.
* -fintrin-case-any option: Fortran Dialect Options.
* -fintrin-case-initcap option: Fortran Dialect Options.
* -fintrin-case-lower option: Fortran Dialect Options.
* -fintrin-case-upper option: Fortran Dialect Options.
* -fmatch-case-any option: Fortran Dialect Options.
* -fmatch-case-initcap option: Fortran Dialect Options.
* -fmatch-case-lower option: Fortran Dialect Options.
* -fmatch-case-upper option: Fortran Dialect Options.
* -fmil-intrinsics-delete option: Fortran Dialect Options.
* -fmil-intrinsics-disable option: Fortran Dialect Options.
* -fmil-intrinsics-enable option: Fortran Dialect Options.
* -fmil-intrinsics-hide option: Fortran Dialect Options.
* -fno-argument-noalias-global option <1>: Aliasing Assumed To Work.
! * -fno-argument-noalias-global option: Code Gen Options.
* -fno-automatic option <1>: Overly Convenient Options.
! * -fno-automatic option: Code Gen Options.
* -fno-backslash option: Fortran Dialect Options.
! * -fno-common option: Code Gen Options.
* -fno-f2c option <1>: Avoid f2c Compatibility.
! * -fno-f2c option: Code Gen Options.
! * -fno-f77 option: Shorthand Options.
* -fno-fixed-form option: Fortran Dialect Options.
! * -fno-globals option: Code Gen Options.
! * -fno-ident option: Code Gen Options.
! * -fno-inline option: Optimize Options.
! * -fno-move-all-movables option: Optimize Options.
! * -fno-reduce-all-givs option: Optimize Options.
! * -fno-rerun-loop-opt option: Optimize Options.
* -fno-second-underscore: f2c Skeletons and Prototypes.
! * -fno-second-underscore option <1>: Names.
! * -fno-second-underscore option: Code Gen Options.
! * -fno-silent option: Overall Options.
! * -fno-trapping-math option: Optimize Options.
! * -fno-ugly option: Shorthand Options.
* -fno-ugly-args option: Fortran Dialect Options.
* -fno-ugly-init option: Fortran Dialect Options.
! * -fno-underscoring option <1>: Names.
! * -fno-underscoring option: Code Gen Options.
* -fonetrip option: Fortran Dialect Options.
! * -fpack-struct option: Code Gen Options.
! * -fpcc-struct-return option: Code Gen Options.
! * -fpedantic option: Warning Options.
! * -fPIC option: News.
! * -freg-struct-return option: Code Gen Options.
! * -frerun-cse-after-loop option: Optimize Options.
! * -fschedule-insns option: Optimize Options.
! * -fschedule-insns2 option: Optimize Options.
! * -fset-g77-defaults option: Overall Options.
! * -fshort-double option: Code Gen Options.
* -fsource-case-lower option: Fortran Dialect Options.
* -fsource-case-preserve option: Fortran Dialect Options.
* -fsource-case-upper option: Fortran Dialect Options.
! * -fstrength-reduce option: Optimize Options.
* -fsymbol-case-any option: Fortran Dialect Options.
* -fsymbol-case-initcap option: Fortran Dialect Options.
* -fsymbol-case-lower option: Fortran Dialect Options.
* -fsymbol-case-upper option: Fortran Dialect Options.
! * -fsyntax-only option: Warning Options.
* -ftypeless-boz option: Fortran Dialect Options.
! * -fugly option: Shorthand Options.
* -fugly-assign option: Fortran Dialect Options.
* -fugly-assumed option: Fortran Dialect Options.
* -fugly-comma option: Fortran Dialect Options.
* -fugly-complex option: Fortran Dialect Options.
* -fugly-logint option: Fortran Dialect Options.
* -funix-intrinsics-delete option: Fortran Dialect Options.
* -funix-intrinsics-disable option: Fortran Dialect Options.
* -funix-intrinsics-enable option: Fortran Dialect Options.
* -funix-intrinsics-hide option: Fortran Dialect Options.
! * -funroll-all-loops option: Optimize Options.
! * -funroll-loops option: Optimize Options.
! * -funsafe-math-optimizations option: Optimize Options.
! * -fversion option: Overall Options.
* -fvxt option: Fortran Dialect Options.
* -fvxt-intrinsics-delete option: Fortran Dialect Options.
* -fvxt-intrinsics-disable option: Fortran Dialect Options.
* -fvxt-intrinsics-enable option: Fortran Dialect Options.
* -fvxt-intrinsics-hide option: Fortran Dialect Options.
! * -fzeros option: Code Gen Options.
! * -g option: Debugging Options.
! * -I- option: Directory Options.
* -i8: Increasing Precision/Range.
! * -Idir option: Directory Options.
! * -malign-double <1>: Changes.
! * -malign-double: News.
! * -malign-double option <1>: Aligned Data.
! * -malign-double option: Optimize Options.
! * -Nl option: Compiler Limits.
! * -Nx option: Compiler Limits.
! * -O2: News.
! * -pedantic option: Warning Options.
! * -pedantic-errors option: Warning Options.
* -qrealsize=8: Increasing Precision/Range.
* -r8: Increasing Precision/Range.
! * -u option: Warning Options.
! * -v option: G77 and GCC.
! * -W option: Warning Options.
! * -w option: Warning Options.
! * -Waggregate-return option: Warning Options.
! * -Wall option: Warning Options.
! * -Wcomment option: Warning Options.
! * -Wconversion option: Warning Options.
! * -Werror option: Warning Options.
! * -Wformat option: Warning Options.
! * -Wid-clash-LEN option: Warning Options.
! * -Wimplicit option: Warning Options.
! * -Wlarger-than-LEN option: Warning Options.
! * -Wno-globals option: Warning Options.
! * -Wparentheses option: Warning Options.
! * -Wredundant-decls option: Warning Options.
! * -Wshadow option: Warning Options.
! * -Wsurprising option: Warning Options.
! * -Wswitch option: Warning Options.
! * -Wswitch-default option: Warning Options.
! * -Wswitch-enum option: Warning Options.
! * -Wtraditional option: Warning Options.
! * -Wuninitialized option: Warning Options.
! * -Wunused option: Warning Options.
! * -x f77-cpp-input option: LEX.
* .EQV., with integer operands: Equivalence Versus Equality.
! * .F filename suffix: Overall Options.
! * .f filename suffix: Overall Options.
! * .FOR filename suffix: Overall Options.
! * .for filename suffix: Overall Options.
! * .FPP filename suffix: Overall Options.
! * .fpp filename suffix: Overall Options.
! * .gdbinit: Main Program Unit.
! * .r filename suffix: Overall Options.
! * /* <1>: Trailing Comment.
! * /*: Overall Options.
! * /WARNINGS=DECLARATIONS switch: Warning Options.
* 80-bit spills: Floating-point Errors.
! * ; <1>: Character Set.
* ;: Statements Comments Lines.
! * <: Character Set.
! * <> edit descriptor: I/O.
! * >: Character Set.
! * ?: Character Set.
! * \: Character Set.
! * _: Character Set.
! * Abort intrinsic: Abort Intrinsic.
! * Abs intrinsic: Abs Intrinsic.
* ACCEPT statement: TYPE and ACCEPT I/O Statements.
! * Access intrinsic: Access Intrinsic.
! * AChar intrinsic: AChar Intrinsic.
! * ACos intrinsic: ACos Intrinsic.
! * ACosD intrinsic: ACosD Intrinsic.
! * adding options: Adding Options.
! * adjustable arrays: Adjustable Arrays.
! * AdjustL intrinsic: AdjustL Intrinsic.
! * AdjustR intrinsic: AdjustR Intrinsic.
! * AImag intrinsic <1>: AImag Intrinsic.
* AImag intrinsic: REAL() and AIMAG() of Complex.
! * AIMax0 intrinsic: AIMax0 Intrinsic.
! * AIMin0 intrinsic: AIMin0 Intrinsic.
! * AInt intrinsic: AInt Intrinsic.
! * AJMax0 intrinsic: AJMax0 Intrinsic.
! * AJMin0 intrinsic: AJMin0 Intrinsic.
! * Alarm intrinsic: Alarm Intrinsic.
! * aliasing <1>: Known Bugs.
* aliasing: Aliasing Assumed To Work.
! * aligned data: Aligned Data.
! * aligned stack: Aligned Data.
! * alignment <1>: Aligned Data.
! * alignment <2>: Changes.
! * alignment: News.
! * All intrinsic: All Intrinsic.
! * all warnings: Warning Options.
! * Allocated intrinsic: Allocated Intrinsic.
! * ALog intrinsic: ALog Intrinsic.
! * ALog10 intrinsic: ALog10 Intrinsic.
! * Alpha, support: Known Bugs.
* alternate entry points: Alternate Entry Points.
! * alternate returns: Alternate Returns.
* ALWAYS_FLUSH: Output Assumed To Flush.
! * AMax0 intrinsic: AMax0 Intrinsic.
! * AMax1 intrinsic: AMax1 Intrinsic.
! * AMin0 intrinsic: AMin0 Intrinsic.
! * AMin1 intrinsic: AMin1 Intrinsic.
! * AMod intrinsic: AMod Intrinsic.
! * ampersand: Character Set.
! * ampersand continuation line: Ampersands.
* And intrinsic <1>: Bit Operations on Floating-point Data.
! * And intrinsic: And Intrinsic.
! * ANInt intrinsic: ANInt Intrinsic.
* ANS carriage control: OPEN CLOSE and INQUIRE Keywords.
! * ANSI FORTRAN 77 standard: Language.
! * ANSI FORTRAN 77 support: Standard Support.
* anti-aliasing: Aliasing Assumed To Work.
! * Any intrinsic: Any Intrinsic.
! * arguments, null: Ugly Null Arguments.
! * arguments, omitting: Ugly Null Arguments.
! * arguments, unused <1>: Unused Arguments.
! * arguments, unused: Warning Options.
! * array bounds checking: Code Gen Options.
* array bounds, adjustable: Array Bounds Expressions.
* array elements, in adjustable array bounds: Array Bounds Expressions.
! * array ordering: Arrays.
! * array performance: Code Gen Options.
! * array size: Array Size.
! * arrays: Arrays.
! * arrays, adjustable: Adjustable Arrays.
* arrays, assumed-size: Ugly Assumed-Size Arrays.
* arrays, automatic <1>: Large Automatic Arrays.
! * arrays, automatic <2>: Stack Overflow.
* arrays, automatic <3>: Overly Convenient Options.
! * arrays, automatic: Adjustable Arrays.
! * arrays, dimensioning <1>: Adjustable Arrays.
! * arrays, dimensioning: Array Size.
! * arrays, flattening: Code Gen Options.
* as command: What is GNU Fortran?.
! * ASin intrinsic: ASin Intrinsic.
! * ASinD intrinsic: ASinD Intrinsic.
* assembler: What is GNU Fortran?.
* assembly code: What is GNU Fortran?.
! * assembly code, invalid: Bug Criteria.
* ASSIGN statement <1>: Assigned Statement Labels.
* ASSIGN statement: Ugly Assigned Labels.
* assigned labels: Ugly Assigned Labels.
* assigned statement labels: Assigned Statement Labels.
* Associated intrinsic: Associated Intrinsic.
* association, storage: Aliasing Assumed To Work.
* assumed-size arrays: Ugly Assumed-Size Arrays.
! * asterisk: LEX.
! * ATan intrinsic: ATan Intrinsic.
! * ATan2 intrinsic: ATan2 Intrinsic.
! * ATan2D intrinsic: ATan2D Intrinsic.
! * ATanD intrinsic: ATanD Intrinsic.
* automatic arrays <1>: Large Automatic Arrays.
! * automatic arrays <2>: Stack Overflow.
* automatic arrays <3>: Overly Convenient Options.
! * automatic arrays: Adjustable Arrays.
! * AUTOMATIC statement: AUTOMATIC Statement.
! * automatic variables: AUTOMATIC Statement.
* back end, gcc <1>: Philosophy of Code Generation.
* back end, gcc: What is GNU Fortran?.
* backslash <1>: Backslash in Constants.
! * backslash <2>: Character Set.
* backslash: Fortran Dialect Options.
* badu77 intrinsics: Fortran Dialect Options.
! * badu77 intrinsics group: Intrinsic Groups.
* basic concepts: What is GNU Fortran?.
* Bear-poking: Philosophy of Code Generation.
! * beginners: Getting Started.
! * BesJ0 intrinsic: BesJ0 Intrinsic.
! * BesJ1 intrinsic: BesJ1 Intrinsic.
! * BesJN intrinsic: BesJN Intrinsic.
! * BesY0 intrinsic: BesY0 Intrinsic.
! * BesY1 intrinsic: BesY1 Intrinsic.
! * BesYN intrinsic: BesYN Intrinsic.
* binary data: Portable Unformatted Files.
! * Bit_Size intrinsic: Bit_Size Intrinsic.
! * BITest intrinsic: BITest Intrinsic.
! * BJTest intrinsic: BJTest Intrinsic.
! * blank <1>: Lines.
! * blank: Character Set.
* block data: Multiple Definitions of External Names.
* block data and libraries: Block Data and Libraries.
* BLOCK DATA statement <1>: Multiple Definitions of External Names.
* BLOCK DATA statement: Block Data and Libraries.
! * bounds checking: Code Gen Options.
! * BTest intrinsic: BTest Intrinsic.
! * bug criteria: Bug Criteria.
! * bugs: Bugs.
* bugs, finding: What is GNU Fortran?.
! * bugs, known: Trouble.
* bus error <1>: Strange Behavior at Run Time.
! * bus error: NeXTStep Problems.
! * but-bugs: But-bugs.
* byte ordering: Portable Unformatted Files.
* C library: Strange Behavior at Run Time.
! * C preprocessor: Overall Options.
* C routines calling Fortran: Debugging and Interfacing.
! * C++: C++ Considerations.
* C++, linking with: Interoperating with C and C++.
* C, linking with: Interoperating with C and C++.
! * CAbs intrinsic: CAbs Intrinsic.
* calling C routines: Debugging and Interfacing.
* card image: Fortran Dialect Options.
* carriage control: OPEN CLOSE and INQUIRE Keywords.
! * carriage returns: Carriage Returns.
! * case sensitivity: Case Sensitivity.
* cc1 program: What is GNU Fortran?.
* cc1plus program: What is GNU Fortran?.
! * CCos intrinsic: CCos Intrinsic.
! * CDAbs intrinsic: CDAbs Intrinsic.
! * CDCos intrinsic: CDCos Intrinsic.
! * CDExp intrinsic: CDExp Intrinsic.
! * CDLog intrinsic: CDLog Intrinsic.
! * CDSin intrinsic: CDSin Intrinsic.
! * CDSqRt intrinsic: CDSqRt Intrinsic.
! * Ceiling intrinsic: Ceiling Intrinsic.
! * CExp intrinsic: CExp Intrinsic.
! * cfortran.h: C Interfacing Tools.
! * changes, user-visible: Changes.
! * Char intrinsic: Char Intrinsic.
! * character assignments: Fortran 90 Features.
* character constants <1>: Character and Hollerith Constants.
* character constants <2>: Ugly Conversion of Initializers.
* character constants <3>: Double Quote Meaning.
* character constants: Fortran Dialect Options.
* character set: Fortran Dialect Options.
* CHARACTER*(*): Arbitrary Concatenation.
! * CHARACTER, null: Character Type.
* character-variable length: Character-variable Length.
! * characters: Character Set.
! * characters, comma: Ugly Null Arguments.
! * characters, comment <1>: LEX.
! * characters, comment <2>: Exclamation Point.
! * characters, comment <3>: Trailing Comment.
* characters, comment: Statements Comments Lines.
! * characters, continuation <1>: LEX.
! * characters, continuation <2>: Exclamation Point.
* characters, continuation: Statements Comments Lines.
* ChDir intrinsic <1>: ChDir Intrinsic (function).
* ChDir intrinsic: ChDir Intrinsic (subroutine).
! * checking subscripts: Code Gen Options.
! * checking substrings: Code Gen Options.
! * checks, of internal consistency: Overall Options.
* ChMod intrinsic <1>: ChMod Intrinsic (function).
* ChMod intrinsic: ChMod Intrinsic (subroutine).
! * CLog intrinsic: CLog Intrinsic.
! * close angle: Character Set.
! * close bracket: Character Set.
* CLOSE statement: OPEN CLOSE and INQUIRE Keywords.
! * Cmplx intrinsic <1>: Cmplx Intrinsic.
* Cmplx intrinsic: CMPLX() of DOUBLE PRECISION.
! * code generation, conventions: Code Gen Options.
! * code generation, improving: Better Optimization.
* code generator <1>: Philosophy of Code Generation.
* code generator: What is GNU Fortran?.
* code, assembly: What is GNU Fortran?.
! * code, displaying main source: Known Bugs.
* code, in-line: What is GNU Fortran?.
* code, legacy: Collected Fortran Wisdom.
* code, machine: What is GNU Fortran?.
! * code, source <1>: Case Sensitivity.
! * code, source <2>: Source Form.
! * code, source <3>: Lines.
* code, source: What is GNU Fortran?.
* code, user: Cannot Link Fortran Programs.
* code, writing: Collected Fortran Wisdom.
! * column-major ordering: Arrays.
! * columns 73 through 80: Better Source Model.
! * comma, trailing: Ugly Null Arguments.
! * command options: Invoking G77.
* commands, as: What is GNU Fortran?.
! * commands, g77 <1>: G77 and GCC.
* commands, g77: What is GNU Fortran?.
! * commands, gcc <1>: G77 and GCC.
* commands, gcc: What is GNU Fortran?.
* commands, gdb: What is GNU Fortran?.
* commands, ld: What is GNU Fortran?.
! * comment <1>: LEX.
! * comment <2>: Trailing Comment.
* comment: Statements Comments Lines.
! * comment character: Exclamation Point.
* comment line, debug <1>: Enabling Debug Lines.
! * comment line, debug: Debug Line.
! * common blocks <1>: Mangling of Names.
! * common blocks <2>: Known Bugs.
! * common blocks: Common Blocks.
! * common blocks, large: Large Common Blocks.
! * COMMON layout: Aligned Data.
* COMMON statement <1>: Multiple Definitions of External Names.
! * COMMON statement: Common Blocks.
* comparing logical expressions: Equivalence Versus Equality.
* compatibility, f2c <1>: Avoid f2c Compatibility.
* compatibility, f2c <2>: Block Data and Libraries.
! * compatibility, f2c <3>: Code Gen Options.
! * compatibility, f2c <4>: Shorthand Options.
! * compatibility, f2c: Overall Options.
! * compatibility, f77: Shorthand Options.
* compatibility, FORTRAN 66 <1>: Fortran Dialect Options.
! * compatibility, FORTRAN 66: Shorthand Options.
! * compatibility, FORTRAN 77: Standard Support.
! * compatibility, Fortran 90: Fortran 90.
! * compilation, in-line <1>: GLOBALS.
! * compilation, in-line <2>: Code Gen Options.
! * compilation, in-line: Optimize Options.
* compilation, pedantic: Pedantic Compilation.
! * compilation, status: Overall Options.
! * compiler bugs, reporting: Bug Reporting.
! * compiler limits: Compiler Limits.
! * compiler memory usage: Known Bugs.
! * compiler speed: Known Bugs.
* compilers: What is GNU Fortran?.
! * compiling programs: G77 and GCC.
! * Complex intrinsic: Complex Intrinsic.
* COMPLEX intrinsics: Fortran Dialect Options.
! * complex performance: Known Bugs.
! * COMPLEX statement: Complex Variables.
* complex values: Ugly Complex Part Extraction.
! * complex variables: Complex Variables.
! * COMPLEX(KIND=1) type: Compiler Types.
! * COMPLEX(KIND=2) type: Compiler Types.
* components of g77: What is GNU Fortran?.
* concatenation: Arbitrary Concatenation.
* concepts, basic: What is GNU Fortran?.
* conformance, IEEE 754 <1>: Floating-point precision.
! * conformance, IEEE 754: Optimize Options.
! * Conjg intrinsic: Conjg Intrinsic.
! * consistency checks: Overall Options.
! * constants <1>: Compiler Constants.
! * constants: Constants.
* constants, character <1>: Character and Hollerith Constants.
* constants, character <2>: Ugly Conversion of Initializers.
* constants, character: Double Quote Meaning.
* constants, context-sensitive: Context-Sensitive Constants.
* constants, Hollerith <1>: Character and Hollerith Constants.
* constants, Hollerith <2>: Ugly Conversion of Initializers.
* constants, Hollerith: Ugly Implicit Argument Conversion.
! * constants, integer: Known Bugs.
* constants, octal: Double Quote Meaning.
* constants, prefix-radix: Fortran Dialect Options.
* constants, types: Fortran Dialect Options.
! * construct names: Construct Names.
* context-sensitive constants: Context-Sensitive Constants.
* context-sensitive intrinsics: Context-Sensitive Intrinsicness.
! * continuation character <1>: LEX.
! * continuation character <2>: Exclamation Point.
* continuation character: Statements Comments Lines.
! * continuation line, ampersand: Ampersands.
! * continuation line, number of: Continuation Line.
! * contributors: Contributors.
* conversions, nonportable: Nonportable Conversions.
! * core dump: Bug Criteria.
! * Cos intrinsic: Cos Intrinsic.
! * CosD intrinsic: CosD Intrinsic.
! * CosH intrinsic: CosH Intrinsic.
! * Count intrinsic: Count Intrinsic.
! * cpp preprocessor: Overall Options.
! * cpp program <1>: LEX.
* cpp program <2>: Preprocessor Options.
! * cpp program <3>: Overall Options.
* cpp program: What is GNU Fortran?.
! * CPU_Time intrinsic: CPU_Time Intrinsic.
! * Cray pointers: POINTER Statements.
! * credits: Contributors.
! * CShift intrinsic: CShift Intrinsic.
! * CSin intrinsic: CSin Intrinsic.
! * CSqRt intrinsic: CSqRt Intrinsic.
* CTime intrinsic <1>: CTime Intrinsic (function).
* CTime intrinsic: CTime Intrinsic (subroutine).
! * CYCLE statement: CYCLE and EXIT.
! * DAbs intrinsic: DAbs Intrinsic.
! * DACos intrinsic: DACos Intrinsic.
! * DACosD intrinsic: DACosD Intrinsic.
! * DASin intrinsic: DASin Intrinsic.
! * DASinD intrinsic: DASinD Intrinsic.
! * DATA statement <1>: Known Bugs.
! * DATA statement: Code Gen Options.
! * data types: Compiler Types.
! * data, aligned: Aligned Data.
* data, overwritten: Strange Behavior at Run Time.
! * DATan intrinsic: DATan Intrinsic.
! * DATan2 intrinsic: DATan2 Intrinsic.
! * DATan2D intrinsic: DATan2D Intrinsic.
! * DATanD intrinsic: DATanD Intrinsic.
! * Date intrinsic: Date Intrinsic.
* Date_and_Time intrinsic: Date_and_Time Intrinsic.
* date_y2kbuggy_0: Year 2000 (Y2K) Problems.
! * DbesJ0 intrinsic: DbesJ0 Intrinsic.
! * DbesJ1 intrinsic: DbesJ1 Intrinsic.
! * DbesJN intrinsic: DbesJN Intrinsic.
! * DbesY0 intrinsic: DbesY0 Intrinsic.
! * DbesY1 intrinsic: DbesY1 Intrinsic.
! * DbesYN intrinsic: DbesYN Intrinsic.
! * Dble intrinsic: Dble Intrinsic.
! * DbleQ intrinsic: DbleQ Intrinsic.
! * DCmplx intrinsic: DCmplx Intrinsic.
! * DConjg intrinsic: DConjg Intrinsic.
! * DCos intrinsic: DCos Intrinsic.
! * DCosD intrinsic: DCosD Intrinsic.
! * DCosH intrinsic: DCosH Intrinsic.
! * DDiM intrinsic: DDiM Intrinsic.
* debug line <1>: Enabling Debug Lines.
! * debug line: Debug Line.
! * debugger <1>: Known Bugs.
* debugger: What is GNU Fortran?.
! * debugging <1>: Names.
! * debugging <2>: Main Program Unit.
* debugging: Debugging and Interfacing.
! * debugging information options: Debugging Options.
! * debugging main source code: Known Bugs.
! * DECODE statement: ENCODE and DECODE.
! * deleted intrinsics: Intrinsic Groups.
! * DErF intrinsic: DErF Intrinsic.
! * DErFC intrinsic: DErFC Intrinsic.
! * DExp intrinsic: DExp Intrinsic.
! * DFloat intrinsic: DFloat Intrinsic.
! * DFlotI intrinsic: DFlotI Intrinsic.
! * DFlotJ intrinsic: DFlotJ Intrinsic.
! * diagnostics: Diagnostics.
* diagnostics, incorrect: What is GNU Fortran?.
* dialect options: Fortran Dialect Options.
* Digital Fortran features: Fortran Dialect Options.
! * Digits intrinsic: Digits Intrinsic.
! * DiM intrinsic: DiM Intrinsic.
! * DImag intrinsic: DImag Intrinsic.
* DIMENSION statement <1>: Array Bounds Expressions.
! * DIMENSION statement <2>: Adjustable Arrays.
! * DIMENSION statement: Arrays.
* DIMENSION X(1): Ugly Assumed-Size Arrays.
! * dimensioning arrays: Adjustable Arrays.
! * DInt intrinsic: DInt Intrinsic.
* direction of language development: Direction of Language Development.
! * directive, INCLUDE <1>: Directory Options.
* directive, INCLUDE: Preprocessor Options.
! * directory, options: Directory Options.
! * directory, search paths for inclusion: Directory Options.
! * disabled intrinsics: Intrinsic Groups.
* disk full: Output Assumed To Flush.
! * displaying main source code: Known Bugs.
* disposition of files: OPEN CLOSE and INQUIRE Keywords.
! * distensions: Distensions.
! * DLog intrinsic: DLog Intrinsic.
! * DLog10 intrinsic: DLog10 Intrinsic.
! * DMax1 intrinsic: DMax1 Intrinsic.
! * DMin1 intrinsic: DMin1 Intrinsic.
! * DMod intrinsic: DMod Intrinsic.
! * DNInt intrinsic: DNInt Intrinsic.
! * DNRM2: News.
! * DO: DO WHILE.
* DO loops, one-trip: Fortran Dialect Options.
* DO loops, zero-trip: Fortran Dialect Options.
! * DO statement <1>: Loops.
! * DO statement: Warning Options.
! * DO WHILE <1>: DO WHILE.
! * DO WHILE: Optimize Options.
! * dollar sign <1>: Dollar Signs.
! * dollar sign <2>: I/O.
* dollar sign: Fortran Dialect Options.
* Dot_Product intrinsic: Dot_Product Intrinsic.
! * DOUBLE COMPLEX: DOUBLE COMPLEX.
! * DOUBLE COMPLEX type: Compiler Types.
! * DOUBLE PRECISION type: Compiler Types.
! * double quote: Character Set.
! * double quoted character constants <1>: Fortran 90 Features.
! * double quoted character constants: Character Type.
* double quotes: Double Quote Meaning.
! * double-precision performance <1>: Changes.
! * double-precision performance: News.
! * DProd intrinsic: DProd Intrinsic.
! * DReal intrinsic: DReal Intrinsic.
* driver, gcc command as: What is GNU Fortran?.
! * DSign intrinsic: DSign Intrinsic.
! * DSin intrinsic: DSin Intrinsic.
! * DSinD intrinsic: DSinD Intrinsic.
! * DSinH intrinsic: DSinH Intrinsic.
! * DSqRt intrinsic: DSqRt Intrinsic.
! * DTan intrinsic: DTan Intrinsic.
! * DTanD intrinsic: DTanD Intrinsic.
! * DTanH intrinsic: DTanH Intrinsic.
* DTime intrinsic <1>: DTime Intrinsic (function).
* DTime intrinsic: DTime Intrinsic (subroutine).
! * dummies, unused: Warning Options.
! * edit descriptor, <>: I/O.
! * edit descriptor, O: I/O.
! * edit descriptor, Q: Q Edit Descriptor.
! * edit descriptor, Z <1>: Fortran 90 Features.
! * edit descriptor, Z: I/O.
! * effecting IMPLICIT NONE: Warning Options.
! * efficiency: Efficiency.
! * ELF support: News.
! * empty CHARACTER strings: Character Type.
! * enabled intrinsics: Intrinsic Groups.
! * ENCODE statement: ENCODE and DECODE.
! * END DO: END DO.
* entry points: Alternate Entry Points.
* ENTRY statement: Alternate Entry Points.
* environment variables: Environment Variables.
! * EOShift intrinsic: EOShift Intrinsic.
! * Epsilon intrinsic: Epsilon Intrinsic.
! * equivalence areas <1>: Known Bugs.
* equivalence areas: Local Equivalence Areas.
* EQUIVALENCE statement: Local Equivalence Areas.
! * ErF intrinsic: ErF Intrinsic.
! * ErFC intrinsic: ErFC Intrinsic.
! * error messages <1>: Warnings and Errors.
* error messages: Run-time Library Errors.
* error messages, incorrect: What is GNU Fortran?.
* error values: Run-time Library Errors.
! * errors, linker: Large Common Blocks.
* ETime intrinsic <1>: ETime Intrinsic (function).
* ETime intrinsic: ETime Intrinsic (subroutine).
* exceptions, floating-point: Floating-point Exception Handling.
! * exclamation point <1>: LEX.
! * exclamation point <2>: Exclamation Point.
! * exclamation point <3>: Trailing Comment.
! * exclamation point <4>: Character Set.
* exclamation point: Statements Comments Lines.
* executable file: What is GNU Fortran?.
! * Exit intrinsic: Exit Intrinsic.
! * EXIT statement: CYCLE and EXIT.
! * Exp intrinsic: Exp Intrinsic.
! * Exponent intrinsic: Exponent Intrinsic.
* extended-source option: Fortran Dialect Options.
! * extensions, file name: Overall Options.
! * extensions, from Fortran 90: Fortran 90 Features.
! * extensions, more: More Extensions.
! * extensions, VXT: VXT Fortran.
! * external names: Mangling of Names.
! * extra warnings: Warning Options.
* f2c: Increasing Precision/Range.
* f2c compatibility <1>: Avoid f2c Compatibility.
* f2c compatibility <2>: Block Data and Libraries.
* f2c compatibility <3>: Debugging and Interfacing.
! * f2c compatibility <4>: Code Gen Options.
! * f2c compatibility <5>: Shorthand Options.
! * f2c compatibility: Overall Options.
* f2c intrinsics: Fortran Dialect Options.
! * f2c intrinsics group: Intrinsic Groups.
! * f77 compatibility: Shorthand Options.
* f77 support: Backslash in Constants.
* f771, program: What is GNU Fortran?.
! * f90 intrinsics group: Intrinsic Groups.
! * fatal signal: Bug Criteria.
* FDate intrinsic <1>: FDate Intrinsic (function).
* FDate intrinsic: FDate Intrinsic (subroutine).
* FDL, GNU Free Documentation License: GNU Free Documentation License.
* features, language: Direction of Language Development.
! * features, ugly <1>: Distensions.
! * features, ugly: Shorthand Options.
! * FFE <1>: Front End.
* FFE: What is GNU Fortran?.
* fflush(): Output Assumed To Flush.
* FGet intrinsic <1>: FGet Intrinsic (function).
* FGet intrinsic: FGet Intrinsic (subroutine).
* FGetC intrinsic <1>: FGetC Intrinsic (function).
* FGetC intrinsic: FGetC Intrinsic (subroutine).
* file format not recognized: What is GNU Fortran?.
* file formats: Portable Unformatted Files.
! * file name extension: Overall Options.
! * file name suffix: Overall Options.
! * file type: Overall Options.
! * file, source <1>: Source Form.
! * file, source <2>: Lines.
* file, source: What is GNU Fortran?.
* files, executable: What is GNU Fortran?.
! * fixed form <1>: Source Form.
! * fixed form <2>: Lines.
* fixed form: Fortran Dialect Options.
! * Float intrinsic: Float Intrinsic.
! * FloatI intrinsic: FloatI Intrinsic.
* floating-point errors: Floating-point Errors.
* floating-point, errors: Inconsistent Calling Sequences.
* floating-point, exceptions: Floating-point Exception Handling.
* floating-point, precision <1>: Floating-point precision.
! * floating-point, precision: Optimize Options.
! * FloatJ intrinsic: FloatJ Intrinsic.
! * Floor intrinsic: Floor Intrinsic.
! * Flush intrinsic: Flush Intrinsic.
* flushing output: Output Assumed To Flush.
! * FNum intrinsic: FNum Intrinsic.
* FORM='PRINT': OPEN CLOSE and INQUIRE Keywords.
! * FORMAT descriptors <1>: Fortran 90 Features.
! * FORMAT descriptors: I/O.
! * FORMAT statement <1>: Q Edit Descriptor.
* FORMAT statement: Expressions in FORMAT Statements.
* FORTRAN 66 <1>: Fortran Dialect Options.
! * FORTRAN 66: Shorthand Options.
! * FORTRAN 77 compatibility: Standard Support.
! * Fortran 90: Fortran 90 Features.
! * Fortran 90, compatibility: Fortran 90.
* Fortran 90, features: Fortran Dialect Options.
* Fortran 90, intrinsics: Fortran Dialect Options.
! * Fortran 90, support: Fortran 90 Support.
! * Fortran preprocessor: Overall Options.
! * forward references: GLOBALS.
* FPE handling: Floating-point Exception Handling.
* FPut intrinsic <1>: FPut Intrinsic (function).
* FPut intrinsic: FPut Intrinsic (subroutine).
* FPutC intrinsic <1>: FPutC Intrinsic (function).
* FPutC intrinsic: FPutC Intrinsic (subroutine).
! * Fraction intrinsic: Fraction Intrinsic.
! * free form <1>: Source Form.
! * free form <2>: Lines.
* free form: Fortran Dialect Options.
! * front end, g77 <1>: Front End.
* front end, g77: What is GNU Fortran?.
! * FSeek intrinsic: FSeek Intrinsic.
! * FSF, funding the: Funding GNU Fortran.
* FStat intrinsic <1>: FStat Intrinsic (function).
* FStat intrinsic: FStat Intrinsic (subroutine).
* FTell intrinsic <1>: FTell Intrinsic (function).
* FTell intrinsic: FTell Intrinsic (subroutine).
* function references, in adjustable array bounds: Array Bounds Expressions.
! * FUNCTION statement <1>: Functions.
! * FUNCTION statement: Procedures.
! * functions: Functions.
! * functions, mistyped: Not My Type.
! * funding improvements: Funding GNU Fortran.
! * funding the FSF: Funding GNU Fortran.
! * g77 options, --driver <1>: Changes.
! * g77 options, --driver: News.
! * g77 options, -v: G77 and GCC.
! * g77, command <1>: G77 and GCC.
* g77, command: What is GNU Fortran?.
* g77, components of: What is GNU Fortran?.
! * g77, front end <1>: Front End.
* g77, front end: What is GNU Fortran?.
! * g77, modifying: Overall Options.
* G77_date_y2kbuggy_0: Year 2000 (Y2K) Problems.
* G77_vxtidate_y2kbuggy_0: Year 2000 (Y2K) Problems.
* GBE <1>: Philosophy of Code Generation.
* GBE: What is GNU Fortran?.
* GBEL: Philosophy of Code Generation.
* gcc, back end <1>: Philosophy of Code Generation.
* gcc, back end: What is GNU Fortran?.
! * gcc, command <1>: G77 and GCC.
* gcc, command: What is GNU Fortran?.
* gcc, command as driver: What is GNU Fortran?.
* gcc, not recognizing Fortran source: What is GNU Fortran?.
* gdb, command: What is GNU Fortran?.
! * gdb, support: Debugger Problems.
* generic intrinsics: Generics and Specifics.
! * GError intrinsic: GError Intrinsic.
! * GetArg intrinsic <1>: Main Program Unit.
! * GetArg intrinsic: GetArg Intrinsic.
* GetCWD intrinsic <1>: GetCWD Intrinsic (function).
* GetCWD intrinsic: GetCWD Intrinsic (subroutine).
! * GetEnv intrinsic: GetEnv Intrinsic.
! * GetGId intrinsic: GetGId Intrinsic.
! * GetLog intrinsic: GetLog Intrinsic.
! * GetPId intrinsic: GetPId Intrinsic.
! * getting started: Getting Started.
! * GetUId intrinsic: GetUId Intrinsic.
! * global names, warning <1>: Code Gen Options.
! * global names, warning: Warning Options.
! * GMTime intrinsic: GMTime Intrinsic.
* GNU Back End (GBE) <1>: Philosophy of Code Generation.
* GNU Back End (GBE): What is GNU Fortran?.
* GNU Back End Language (GBEL): Philosophy of Code Generation.
! * GNU Fortran command options: Invoking G77.
! * GNU Fortran Front End (FFE) <1>: Front End.
* GNU Fortran Front End (FFE): What is GNU Fortran?.
! * gnu intrinsics group: Intrinsic Groups.
* GOTO statement: Assigned Statement Labels.
! * groups of intrinsics: Intrinsic Groups.
* hardware errors: Signal 11 and Friends.
! * hash mark: Character Set.
* HDF: Portable Unformatted Files.
! * hidden intrinsics: Intrinsic Groups.
* Hollerith constants <1>: Character and Hollerith Constants.
* Hollerith constants <2>: Ugly Conversion of Initializers.
* Hollerith constants <3>: Ugly Implicit Argument Conversion.
* Hollerith constants: Fortran Dialect Options.
! * horizontal tab: Tabs.
* HostNm intrinsic <1>: HostNm Intrinsic (function).
* HostNm intrinsic: HostNm Intrinsic (subroutine).
! * Huge intrinsic: Huge Intrinsic.
* I/O, errors: Run-time Library Errors.
* I/O, flushing: Output Assumed To Flush.
! * IAbs intrinsic: IAbs Intrinsic.
! * IAChar intrinsic: IAChar Intrinsic.
! * IAnd intrinsic: IAnd Intrinsic.
! * IArgC intrinsic <1>: Main Program Unit.
! * IArgC intrinsic: IArgC Intrinsic.
! * IBClr intrinsic: IBClr Intrinsic.
! * IBits intrinsic: IBits Intrinsic.
! * IBSet intrinsic: IBSet Intrinsic.
! * IChar intrinsic: IChar Intrinsic.
* IDate intrinsic <1>: IDate Intrinsic (VXT).
* IDate intrinsic: IDate Intrinsic (UNIX).
! * IDiM intrinsic: IDiM Intrinsic.
! * IDInt intrinsic: IDInt Intrinsic.
! * IDNInt intrinsic: IDNInt Intrinsic.
* IEEE 754 conformance <1>: Floating-point precision.
! * IEEE 754 conformance: Optimize Options.
! * IEOr intrinsic: IEOr Intrinsic.
! * IErrNo intrinsic: IErrNo Intrinsic.
! * IFix intrinsic: IFix Intrinsic.
! * IIAbs intrinsic: IIAbs Intrinsic.
! * IIAnd intrinsic: IIAnd Intrinsic.
! * IIBClr intrinsic: IIBClr Intrinsic.
! * IIBits intrinsic: IIBits Intrinsic.
! * IIBSet intrinsic: IIBSet Intrinsic.
! * IIDiM intrinsic: IIDiM Intrinsic.
! * IIDInt intrinsic: IIDInt Intrinsic.
! * IIDNnt intrinsic: IIDNnt Intrinsic.
! * IIEOr intrinsic: IIEOr Intrinsic.
! * IIFix intrinsic: IIFix Intrinsic.
! * IInt intrinsic: IInt Intrinsic.
! * IIOr intrinsic: IIOr Intrinsic.
! * IIQint intrinsic: IIQint Intrinsic.
! * IIQNnt intrinsic: IIQNnt Intrinsic.
! * IIShftC intrinsic: IIShftC Intrinsic.
! * IISign intrinsic: IISign Intrinsic.
* illegal unit number: Large File Unit Numbers.
! * Imag intrinsic: Imag Intrinsic.
! * imaginary part <1>: Complex Variables.
* imaginary part: Ugly Complex Part Extraction.
! * ImagPart intrinsic: ImagPart Intrinsic.
! * IMax0 intrinsic: IMax0 Intrinsic.
! * IMax1 intrinsic: IMax1 Intrinsic.
! * IMin0 intrinsic: IMin0 Intrinsic.
! * IMin1 intrinsic: IMin1 Intrinsic.
! * IMod intrinsic: IMod Intrinsic.
* IMPLICIT CHARACTER*(*) statement: Limitation on Implicit Declarations.
! * implicit declaration, warning: Warning Options.
! * IMPLICIT NONE, similar effect: Warning Options.
! * implicit typing: Not My Type.
! * improvements, funding: Funding GNU Fortran.
! * in-line code <1>: GLOBALS.
! * in-line code <2>: Code Gen Options.
! * in-line code <3>: Optimize Options.
* in-line code: What is GNU Fortran?.
! * INCLUDE directive <1>: INCLUDE.
! * INCLUDE directive <2>: Directory Options.
* INCLUDE directive: Preprocessor Options.
! * inclusion, directory search paths for: Directory Options.
* inconsistent floating-point results: Floating-point Errors.
* incorrect diagnostics: What is GNU Fortran?.
* incorrect error messages: What is GNU Fortran?.
* incorrect use of language: What is GNU Fortran?.
* increasing maximum unit number: Large File Unit Numbers.
* increasing precision: Increasing Precision/Range.
* increasing range: Increasing Precision/Range.
! * Index intrinsic: Index Intrinsic.
! * indexed (iterative) DO: Optimize Options.
* infinite spaces printed: Strange Behavior at Run Time.
! * INInt intrinsic: INInt Intrinsic.
! * initialization, bug: Known Bugs.
! * initialization, of local variables: Code Gen Options.
! * initialization, run-time: Startup Code.
* initialization, statement placement: Initializing Before Specifying.
! * INot intrinsic: INot Intrinsic.
* INQUIRE statement: OPEN CLOSE and INQUIRE Keywords.
! * installation trouble: Trouble.
! * Int intrinsic: Int Intrinsic.
! * Int2 intrinsic: Int2 Intrinsic.
! * Int8 intrinsic: Int8 Intrinsic.
! * integer constants: Known Bugs.
! * INTEGER(KIND=1) type: Compiler Types.
! * INTEGER(KIND=2) type: Compiler Types.
! * INTEGER(KIND=3) type: Compiler Types.
! * INTEGER(KIND=6) type: Compiler Types.
* INTEGER*2 support: Popular Non-standard Types.
* INTEGER*8 support: Full Support for Compiler Types.
! * Intel x86: News.
* interfacing: Debugging and Interfacing.
! * internal consistency checks: Overall Options.
! * intrinsics, Abort: Abort Intrinsic.
! * intrinsics, Abs: Abs Intrinsic.
! * intrinsics, Access: Access Intrinsic.
! * intrinsics, AChar: AChar Intrinsic.
! * intrinsics, ACos: ACos Intrinsic.
! * intrinsics, ACosD: ACosD Intrinsic.
! * intrinsics, AdjustL: AdjustL Intrinsic.
! * intrinsics, AdjustR: AdjustR Intrinsic.
! * intrinsics, AImag <1>: AImag Intrinsic.
* intrinsics, AImag: REAL() and AIMAG() of Complex.
! * intrinsics, AIMax0: AIMax0 Intrinsic.
! * intrinsics, AIMin0: AIMin0 Intrinsic.
! * intrinsics, AInt: AInt Intrinsic.
! * intrinsics, AJMax0: AJMax0 Intrinsic.
! * intrinsics, AJMin0: AJMin0 Intrinsic.
! * intrinsics, Alarm: Alarm Intrinsic.
! * intrinsics, All: All Intrinsic.
! * intrinsics, Allocated: Allocated Intrinsic.
! * intrinsics, ALog: ALog Intrinsic.
! * intrinsics, ALog10: ALog10 Intrinsic.
! * intrinsics, AMax0: AMax0 Intrinsic.
! * intrinsics, AMax1: AMax1 Intrinsic.
! * intrinsics, AMin0: AMin0 Intrinsic.
! * intrinsics, AMin1: AMin1 Intrinsic.
! * intrinsics, AMod: AMod Intrinsic.
* intrinsics, And <1>: Bit Operations on Floating-point Data.
! * intrinsics, And: And Intrinsic.
! * intrinsics, ANInt: ANInt Intrinsic.
! * intrinsics, Any: Any Intrinsic.
! * intrinsics, ASin: ASin Intrinsic.
! * intrinsics, ASinD: ASinD Intrinsic.
* intrinsics, Associated: Associated Intrinsic.
! * intrinsics, ATan: ATan Intrinsic.
! * intrinsics, ATan2: ATan2 Intrinsic.
! * intrinsics, ATan2D: ATan2D Intrinsic.
! * intrinsics, ATanD: ATanD Intrinsic.
* intrinsics, badu77: Fortran Dialect Options.
! * intrinsics, BesJ0: BesJ0 Intrinsic.
! * intrinsics, BesJ1: BesJ1 Intrinsic.
! * intrinsics, BesJN: BesJN Intrinsic.
! * intrinsics, BesY0: BesY0 Intrinsic.
! * intrinsics, BesY1: BesY1 Intrinsic.
! * intrinsics, BesYN: BesYN Intrinsic.
! * intrinsics, Bit_Size: Bit_Size Intrinsic.
! * intrinsics, BITest: BITest Intrinsic.
! * intrinsics, BJTest: BJTest Intrinsic.
! * intrinsics, BTest: BTest Intrinsic.
! * intrinsics, CAbs: CAbs Intrinsic.
! * intrinsics, CCos: CCos Intrinsic.
! * intrinsics, CDAbs: CDAbs Intrinsic.
! * intrinsics, CDCos: CDCos Intrinsic.
! * intrinsics, CDExp: CDExp Intrinsic.
! * intrinsics, CDLog: CDLog Intrinsic.
! * intrinsics, CDSin: CDSin Intrinsic.
! * intrinsics, CDSqRt: CDSqRt Intrinsic.
! * intrinsics, Ceiling: Ceiling Intrinsic.
! * intrinsics, CExp: CExp Intrinsic.
! * intrinsics, Char: Char Intrinsic.
* intrinsics, ChDir <1>: ChDir Intrinsic (function).
* intrinsics, ChDir: ChDir Intrinsic (subroutine).
* intrinsics, ChMod <1>: ChMod Intrinsic (function).
* intrinsics, ChMod: ChMod Intrinsic (subroutine).
! * intrinsics, CLog: CLog Intrinsic.
! * intrinsics, Cmplx <1>: Cmplx Intrinsic.
* intrinsics, Cmplx: CMPLX() of DOUBLE PRECISION.
! * intrinsics, Complex: Complex Intrinsic.
* intrinsics, COMPLEX: Fortran Dialect Options.
! * intrinsics, Conjg: Conjg Intrinsic.
* intrinsics, context-sensitive: Context-Sensitive Intrinsicness.
! * intrinsics, Cos: Cos Intrinsic.
! * intrinsics, CosD: CosD Intrinsic.
! * intrinsics, CosH: CosH Intrinsic.
! * intrinsics, Count: Count Intrinsic.
! * intrinsics, CPU_Time: CPU_Time Intrinsic.
! * intrinsics, CShift: CShift Intrinsic.
! * intrinsics, CSin: CSin Intrinsic.
! * intrinsics, CSqRt: CSqRt Intrinsic.
* intrinsics, CTime <1>: CTime Intrinsic (function).
* intrinsics, CTime: CTime Intrinsic (subroutine).
! * intrinsics, DAbs: DAbs Intrinsic.
! * intrinsics, DACos: DACos Intrinsic.
! * intrinsics, DACosD: DACosD Intrinsic.
! * intrinsics, DASin: DASin Intrinsic.
! * intrinsics, DASinD: DASinD Intrinsic.
! * intrinsics, DATan: DATan Intrinsic.
! * intrinsics, DATan2: DATan2 Intrinsic.
! * intrinsics, DATan2D: DATan2D Intrinsic.
! * intrinsics, DATanD: DATanD Intrinsic.
! * intrinsics, Date: Date Intrinsic.
* intrinsics, Date_and_Time: Date_and_Time Intrinsic.
! * intrinsics, DbesJ0: DbesJ0 Intrinsic.
! * intrinsics, DbesJ1: DbesJ1 Intrinsic.
! * intrinsics, DbesJN: DbesJN Intrinsic.
! * intrinsics, DbesY0: DbesY0 Intrinsic.
! * intrinsics, DbesY1: DbesY1 Intrinsic.
! * intrinsics, DbesYN: DbesYN Intrinsic.
! * intrinsics, Dble: Dble Intrinsic.
! * intrinsics, DbleQ: DbleQ Intrinsic.
! * intrinsics, DCmplx: DCmplx Intrinsic.
! * intrinsics, DConjg: DConjg Intrinsic.
! * intrinsics, DCos: DCos Intrinsic.
! * intrinsics, DCosD: DCosD Intrinsic.
! * intrinsics, DCosH: DCosH Intrinsic.
! * intrinsics, DDiM: DDiM Intrinsic.
! * intrinsics, deleted: Intrinsic Groups.
! * intrinsics, DErF: DErF Intrinsic.
! * intrinsics, DErFC: DErFC Intrinsic.
! * intrinsics, DExp: DExp Intrinsic.
! * intrinsics, DFloat: DFloat Intrinsic.
! * intrinsics, DFlotI: DFlotI Intrinsic.
! * intrinsics, DFlotJ: DFlotJ Intrinsic.
! * intrinsics, Digits: Digits Intrinsic.
! * intrinsics, DiM: DiM Intrinsic.
! * intrinsics, DImag: DImag Intrinsic.
! * intrinsics, DInt: DInt Intrinsic.
! * intrinsics, disabled: Intrinsic Groups.
! * intrinsics, DLog: DLog Intrinsic.
! * intrinsics, DLog10: DLog10 Intrinsic.
! * intrinsics, DMax1: DMax1 Intrinsic.
! * intrinsics, DMin1: DMin1 Intrinsic.
! * intrinsics, DMod: DMod Intrinsic.
! * intrinsics, DNInt: DNInt Intrinsic.
* intrinsics, Dot_Product: Dot_Product Intrinsic.
! * intrinsics, DProd: DProd Intrinsic.
! * intrinsics, DReal: DReal Intrinsic.
! * intrinsics, DSign: DSign Intrinsic.
! * intrinsics, DSin: DSin Intrinsic.
! * intrinsics, DSinD: DSinD Intrinsic.
! * intrinsics, DSinH: DSinH Intrinsic.
! * intrinsics, DSqRt: DSqRt Intrinsic.
! * intrinsics, DTan: DTan Intrinsic.
! * intrinsics, DTanD: DTanD Intrinsic.
! * intrinsics, DTanH: DTanH Intrinsic.
* intrinsics, DTime <1>: DTime Intrinsic (function).
* intrinsics, DTime: DTime Intrinsic (subroutine).
! * intrinsics, enabled: Intrinsic Groups.
! * intrinsics, EOShift: EOShift Intrinsic.
! * intrinsics, Epsilon: Epsilon Intrinsic.
! * intrinsics, ErF: ErF Intrinsic.
! * intrinsics, ErFC: ErFC Intrinsic.
* intrinsics, ETime <1>: ETime Intrinsic (function).
* intrinsics, ETime: ETime Intrinsic (subroutine).
! * intrinsics, Exit: Exit Intrinsic.
! * intrinsics, Exp: Exp Intrinsic.
! * intrinsics, Exponent: Exponent Intrinsic.
* intrinsics, f2c: Fortran Dialect Options.
* intrinsics, FDate <1>: FDate Intrinsic (function).
* intrinsics, FDate: FDate Intrinsic (subroutine).
* intrinsics, FGet <1>: FGet Intrinsic (function).
* intrinsics, FGet: FGet Intrinsic (subroutine).
* intrinsics, FGetC <1>: FGetC Intrinsic (function).
* intrinsics, FGetC: FGetC Intrinsic (subroutine).
! * intrinsics, Float: Float Intrinsic.
! * intrinsics, FloatI: FloatI Intrinsic.
! * intrinsics, FloatJ: FloatJ Intrinsic.
! * intrinsics, Floor: Floor Intrinsic.
! * intrinsics, Flush: Flush Intrinsic.
! * intrinsics, FNum: FNum Intrinsic.
* intrinsics, Fortran 90: Fortran Dialect Options.
* intrinsics, FPut <1>: FPut Intrinsic (function).
* intrinsics, FPut: FPut Intrinsic (subroutine).
* intrinsics, FPutC <1>: FPutC Intrinsic (function).
* intrinsics, FPutC: FPutC Intrinsic (subroutine).
! * intrinsics, Fraction: Fraction Intrinsic.
! * intrinsics, FSeek: FSeek Intrinsic.
* intrinsics, FStat <1>: FStat Intrinsic (function).
* intrinsics, FStat: FStat Intrinsic (subroutine).
* intrinsics, FTell <1>: FTell Intrinsic (function).
* intrinsics, FTell: FTell Intrinsic (subroutine).
* intrinsics, generic: Generics and Specifics.
! * intrinsics, GError: GError Intrinsic.
! * intrinsics, GetArg <1>: Main Program Unit.
! * intrinsics, GetArg: GetArg Intrinsic.
* intrinsics, GetCWD <1>: GetCWD Intrinsic (function).
* intrinsics, GetCWD: GetCWD Intrinsic (subroutine).
! * intrinsics, GetEnv: GetEnv Intrinsic.
! * intrinsics, GetGId: GetGId Intrinsic.
! * intrinsics, GetLog: GetLog Intrinsic.
! * intrinsics, GetPId: GetPId Intrinsic.
! * intrinsics, GetUId: GetUId Intrinsic.
! * intrinsics, GMTime: GMTime Intrinsic.
! * intrinsics, groups: Intrinsic Groups.
! * intrinsics, groups of: Intrinsic Groups.
! * intrinsics, hidden: Intrinsic Groups.
* intrinsics, HostNm <1>: HostNm Intrinsic (function).
* intrinsics, HostNm: HostNm Intrinsic (subroutine).
! * intrinsics, Huge: Huge Intrinsic.
! * intrinsics, IAbs: IAbs Intrinsic.
! * intrinsics, IAChar: IAChar Intrinsic.
! * intrinsics, IAnd: IAnd Intrinsic.
! * intrinsics, IArgC <1>: Main Program Unit.
! * intrinsics, IArgC: IArgC Intrinsic.
! * intrinsics, IBClr: IBClr Intrinsic.
! * intrinsics, IBits: IBits Intrinsic.
! * intrinsics, IBSet: IBSet Intrinsic.
! * intrinsics, IChar: IChar Intrinsic.
* intrinsics, IDate <1>: IDate Intrinsic (VXT).
* intrinsics, IDate: IDate Intrinsic (UNIX).
! * intrinsics, IDiM: IDiM Intrinsic.
! * intrinsics, IDInt: IDInt Intrinsic.
! * intrinsics, IDNInt: IDNInt Intrinsic.
! * intrinsics, IEOr: IEOr Intrinsic.
! * intrinsics, IErrNo: IErrNo Intrinsic.
! * intrinsics, IFix: IFix Intrinsic.
! * intrinsics, IIAbs: IIAbs Intrinsic.
! * intrinsics, IIAnd: IIAnd Intrinsic.
! * intrinsics, IIBClr: IIBClr Intrinsic.
! * intrinsics, IIBits: IIBits Intrinsic.
! * intrinsics, IIBSet: IIBSet Intrinsic.
! * intrinsics, IIDiM: IIDiM Intrinsic.
! * intrinsics, IIDInt: IIDInt Intrinsic.
! * intrinsics, IIDNnt: IIDNnt Intrinsic.
! * intrinsics, IIEOr: IIEOr Intrinsic.
! * intrinsics, IIFix: IIFix Intrinsic.
! * intrinsics, IInt: IInt Intrinsic.
! * intrinsics, IIOr: IIOr Intrinsic.
! * intrinsics, IIQint: IIQint Intrinsic.
! * intrinsics, IIQNnt: IIQNnt Intrinsic.
! * intrinsics, IIShftC: IIShftC Intrinsic.
! * intrinsics, IISign: IISign Intrinsic.
! * intrinsics, Imag: Imag Intrinsic.
! * intrinsics, ImagPart: ImagPart Intrinsic.
! * intrinsics, IMax0: IMax0 Intrinsic.
! * intrinsics, IMax1: IMax1 Intrinsic.
! * intrinsics, IMin0: IMin0 Intrinsic.
! * intrinsics, IMin1: IMin1 Intrinsic.
! * intrinsics, IMod: IMod Intrinsic.
! * intrinsics, Index: Index Intrinsic.
! * intrinsics, INInt: INInt Intrinsic.
! * intrinsics, INot: INot Intrinsic.
! * intrinsics, Int: Int Intrinsic.
! * intrinsics, Int2: Int2 Intrinsic.
! * intrinsics, Int8: Int8 Intrinsic.
! * intrinsics, IOr: IOr Intrinsic.
! * intrinsics, IRand: IRand Intrinsic.
! * intrinsics, IsaTty: IsaTty Intrinsic.
! * intrinsics, IShft: IShft Intrinsic.
! * intrinsics, IShftC: IShftC Intrinsic.
! * intrinsics, ISign: ISign Intrinsic.
! * intrinsics, ITime: ITime Intrinsic.
! * intrinsics, IZExt: IZExt Intrinsic.
! * intrinsics, JIAbs: JIAbs Intrinsic.
! * intrinsics, JIAnd: JIAnd Intrinsic.
! * intrinsics, JIBClr: JIBClr Intrinsic.
! * intrinsics, JIBits: JIBits Intrinsic.
! * intrinsics, JIBSet: JIBSet Intrinsic.
! * intrinsics, JIDiM: JIDiM Intrinsic.
! * intrinsics, JIDInt: JIDInt Intrinsic.
! * intrinsics, JIDNnt: JIDNnt Intrinsic.
! * intrinsics, JIEOr: JIEOr Intrinsic.
! * intrinsics, JIFix: JIFix Intrinsic.
! * intrinsics, JInt: JInt Intrinsic.
! * intrinsics, JIOr: JIOr Intrinsic.
! * intrinsics, JIQint: JIQint Intrinsic.
! * intrinsics, JIQNnt: JIQNnt Intrinsic.
! * intrinsics, JIShft: JIShft Intrinsic.
! * intrinsics, JIShftC: JIShftC Intrinsic.
! * intrinsics, JISign: JISign Intrinsic.
! * intrinsics, JMax0: JMax0 Intrinsic.
! * intrinsics, JMax1: JMax1 Intrinsic.
! * intrinsics, JMin0: JMin0 Intrinsic.
! * intrinsics, JMin1: JMin1 Intrinsic.
! * intrinsics, JMod: JMod Intrinsic.
! * intrinsics, JNInt: JNInt Intrinsic.
! * intrinsics, JNot: JNot Intrinsic.
! * intrinsics, JZExt: JZExt Intrinsic.
* intrinsics, Kill <1>: Kill Intrinsic (function).
* intrinsics, Kill: Kill Intrinsic (subroutine).
! * intrinsics, Kind: Kind Intrinsic.
! * intrinsics, LBound: LBound Intrinsic.
! * intrinsics, Len: Len Intrinsic.
! * intrinsics, Len_Trim: Len_Trim Intrinsic.
! * intrinsics, LGe: LGe Intrinsic.
! * intrinsics, LGt: LGt Intrinsic.
* intrinsics, Link <1>: Link Intrinsic (function).
* intrinsics, Link: Link Intrinsic (subroutine).
! * intrinsics, LLe: LLe Intrinsic.
! * intrinsics, LLt: LLt Intrinsic.
! * intrinsics, LnBlnk: LnBlnk Intrinsic.
! * intrinsics, Loc: Loc Intrinsic.
! * intrinsics, Log: Log Intrinsic.
! * intrinsics, Log10: Log10 Intrinsic.
! * intrinsics, Logical: Logical Intrinsic.
! * intrinsics, Long: Long Intrinsic.
! * intrinsics, LShift: LShift Intrinsic.
* intrinsics, LStat <1>: LStat Intrinsic (function).
* intrinsics, LStat: LStat Intrinsic (subroutine).
! * intrinsics, LTime: LTime Intrinsic.
! * intrinsics, MatMul: MatMul Intrinsic.
! * intrinsics, Max: Max Intrinsic.
! * intrinsics, Max0: Max0 Intrinsic.
! * intrinsics, Max1: Max1 Intrinsic.
* intrinsics, MaxExponent: MaxExponent Intrinsic.
! * intrinsics, MaxLoc: MaxLoc Intrinsic.
! * intrinsics, MaxVal: MaxVal Intrinsic.
! * intrinsics, MClock: MClock Intrinsic.
! * intrinsics, MClock8: MClock8 Intrinsic.
! * intrinsics, Merge: Merge Intrinsic.
* intrinsics, MIL-STD 1753: Fortran Dialect Options.
! * intrinsics, Min: Min Intrinsic.
! * intrinsics, Min0: Min0 Intrinsic.
! * intrinsics, Min1: Min1 Intrinsic.
* intrinsics, MinExponent: MinExponent Intrinsic.
! * intrinsics, MinLoc: MinLoc Intrinsic.
! * intrinsics, MinVal: MinVal Intrinsic.
! * intrinsics, Mod: Mod Intrinsic.
! * intrinsics, Modulo: Modulo Intrinsic.
! * intrinsics, MvBits: MvBits Intrinsic.
! * intrinsics, Nearest: Nearest Intrinsic.
! * intrinsics, NInt: NInt Intrinsic.
! * intrinsics, Not: Not Intrinsic.
* intrinsics, Or <1>: Bit Operations on Floating-point Data.
! * intrinsics, Or: Or Intrinsic.
! * intrinsics, others: Other Intrinsics.
! * intrinsics, Pack: Pack Intrinsic.
! * intrinsics, PError: PError Intrinsic.
! * intrinsics, Precision: Precision Intrinsic.
! * intrinsics, Present: Present Intrinsic.
! * intrinsics, Product: Product Intrinsic.
! * intrinsics, QAbs: QAbs Intrinsic.
! * intrinsics, QACos: QACos Intrinsic.
! * intrinsics, QACosD: QACosD Intrinsic.
! * intrinsics, QASin: QASin Intrinsic.
! * intrinsics, QASinD: QASinD Intrinsic.
! * intrinsics, QATan: QATan Intrinsic.
! * intrinsics, QATan2: QATan2 Intrinsic.
! * intrinsics, QATan2D: QATan2D Intrinsic.
! * intrinsics, QATanD: QATanD Intrinsic.
! * intrinsics, QCos: QCos Intrinsic.
! * intrinsics, QCosD: QCosD Intrinsic.
! * intrinsics, QCosH: QCosH Intrinsic.
! * intrinsics, QDiM: QDiM Intrinsic.
! * intrinsics, QExp: QExp Intrinsic.
! * intrinsics, QExt: QExt Intrinsic.
! * intrinsics, QExtD: QExtD Intrinsic.
! * intrinsics, QFloat: QFloat Intrinsic.
! * intrinsics, QInt: QInt Intrinsic.
! * intrinsics, QLog: QLog Intrinsic.
! * intrinsics, QLog10: QLog10 Intrinsic.
! * intrinsics, QMax1: QMax1 Intrinsic.
! * intrinsics, QMin1: QMin1 Intrinsic.
! * intrinsics, QMod: QMod Intrinsic.
! * intrinsics, QNInt: QNInt Intrinsic.
! * intrinsics, QSin: QSin Intrinsic.
! * intrinsics, QSinD: QSinD Intrinsic.
! * intrinsics, QSinH: QSinH Intrinsic.
! * intrinsics, QSqRt: QSqRt Intrinsic.
! * intrinsics, QTan: QTan Intrinsic.
! * intrinsics, QTanD: QTanD Intrinsic.
! * intrinsics, QTanH: QTanH Intrinsic.
! * intrinsics, Radix: Radix Intrinsic.
! * intrinsics, Rand: Rand Intrinsic.
* intrinsics, Random_Number: Random_Number Intrinsic.
* intrinsics, Random_Seed: Random_Seed Intrinsic.
! * intrinsics, Range: Range Intrinsic.
! * intrinsics, Real <1>: Real Intrinsic.
* intrinsics, Real: REAL() and AIMAG() of Complex.
! * intrinsics, RealPart: RealPart Intrinsic.
* intrinsics, Rename <1>: Rename Intrinsic (function).
* intrinsics, Rename: Rename Intrinsic (subroutine).
! * intrinsics, Repeat: Repeat Intrinsic.
! * intrinsics, Reshape: Reshape Intrinsic.
! * intrinsics, RRSpacing: RRSpacing Intrinsic.
! * intrinsics, RShift: RShift Intrinsic.
! * intrinsics, Scale: Scale Intrinsic.
! * intrinsics, Scan: Scan Intrinsic.
! * intrinsics, Secnds: Secnds Intrinsic.
* intrinsics, Second <1>: Second Intrinsic (subroutine).
* intrinsics, Second: Second Intrinsic (function).
* intrinsics, Selected_Int_Kind: Selected_Int_Kind Intrinsic.
* intrinsics, Selected_Real_Kind: Selected_Real_Kind Intrinsic.
* intrinsics, Set_Exponent: Set_Exponent Intrinsic.
! * intrinsics, Shape: Shape Intrinsic.
* intrinsics, Shift: Bit Operations on Floating-point Data.
! * intrinsics, Short: Short Intrinsic.
! * intrinsics, Sign: Sign Intrinsic.
* intrinsics, Signal <1>: Signal Intrinsic (function).
* intrinsics, Signal: Signal Intrinsic (subroutine).
! * intrinsics, Sin: Sin Intrinsic.
! * intrinsics, SinD: SinD Intrinsic.
! * intrinsics, SinH: SinH Intrinsic.
! * intrinsics, Sleep: Sleep Intrinsic.
! * intrinsics, Sngl: Sngl Intrinsic.
! * intrinsics, SnglQ: SnglQ Intrinsic.
! * intrinsics, Spacing: Spacing Intrinsic.
! * intrinsics, Spread: Spread Intrinsic.
! * intrinsics, SqRt: SqRt Intrinsic.
! * intrinsics, SRand: SRand Intrinsic.
* intrinsics, Stat <1>: Stat Intrinsic (function).
* intrinsics, Stat: Stat Intrinsic (subroutine).
! * intrinsics, Sum: Sum Intrinsic.
* intrinsics, SymLnk <1>: SymLnk Intrinsic (function).
* intrinsics, SymLnk: SymLnk Intrinsic (subroutine).
* intrinsics, System <1>: System Intrinsic (function).
* intrinsics, System: System Intrinsic (subroutine).
* intrinsics, System_Clock: System_Clock Intrinsic.
* intrinsics, table of: Table of Intrinsic Functions.
! * intrinsics, Tan: Tan Intrinsic.
! * intrinsics, TanD: TanD Intrinsic.
! * intrinsics, TanH: TanH Intrinsic.
* intrinsics, Time <1>: Time Intrinsic (VXT).
* intrinsics, Time: Time Intrinsic (UNIX).
! * intrinsics, Time8: Time8 Intrinsic.
! * intrinsics, Tiny: Tiny Intrinsic.
! * intrinsics, Transfer: Transfer Intrinsic.
! * intrinsics, Transpose: Transpose Intrinsic.
! * intrinsics, Trim: Trim Intrinsic.
* intrinsics, TtyNam <1>: TtyNam Intrinsic (function).
* intrinsics, TtyNam: TtyNam Intrinsic (subroutine).
! * intrinsics, UBound: UBound Intrinsic.
* intrinsics, UMask <1>: UMask Intrinsic (function).
* intrinsics, UMask: UMask Intrinsic (subroutine).
* intrinsics, UNIX: Fortran Dialect Options.
* intrinsics, Unlink <1>: Unlink Intrinsic (function).
* intrinsics, Unlink: Unlink Intrinsic (subroutine).
! * intrinsics, Unpack: Unpack Intrinsic.
! * intrinsics, Verify: Verify Intrinsic.
* intrinsics, VXT: Fortran Dialect Options.
! * intrinsics, XOr: XOr Intrinsic.
! * intrinsics, ZAbs: ZAbs Intrinsic.
! * intrinsics, ZCos: ZCos Intrinsic.
! * intrinsics, ZExp: ZExp Intrinsic.
! * intrinsics, ZExt: ZExt Intrinsic.
! * intrinsics, ZLog: ZLog Intrinsic.
! * intrinsics, ZSin: ZSin Intrinsic.
! * intrinsics, ZSqRt: ZSqRt Intrinsic.
! * Introduction: Top.
! * invalid assembly code: Bug Criteria.
! * invalid input: Bug Criteria.
! * IOr intrinsic: IOr Intrinsic.
* IOSTAT=: Run-time Library Errors.
! * IRand intrinsic: IRand Intrinsic.
! * IsaTty intrinsic: IsaTty Intrinsic.
! * IShft intrinsic: IShft Intrinsic.
! * IShftC intrinsic: IShftC Intrinsic.
! * ISign intrinsic: ISign Intrinsic.
! * iterative DO: Optimize Options.
! * ITime intrinsic: ITime Intrinsic.
* ix86 floating-point: Floating-point precision.
* ix86 FPU stack: Inconsistent Calling Sequences.
! * IZExt intrinsic: IZExt Intrinsic.
* JCB002 program: Generics and Specifics.
! * JCB003 program: CMPAMBIG.
! * JIAbs intrinsic: JIAbs Intrinsic.
! * JIAnd intrinsic: JIAnd Intrinsic.
! * JIBClr intrinsic: JIBClr Intrinsic.
! * JIBits intrinsic: JIBits Intrinsic.
! * JIBSet intrinsic: JIBSet Intrinsic.
! * JIDiM intrinsic: JIDiM Intrinsic.
! * JIDInt intrinsic: JIDInt Intrinsic.
! * JIDNnt intrinsic: JIDNnt Intrinsic.
! * JIEOr intrinsic: JIEOr Intrinsic.
! * JIFix intrinsic: JIFix Intrinsic.
! * JInt intrinsic: JInt Intrinsic.
! * JIOr intrinsic: JIOr Intrinsic.
! * JIQint intrinsic: JIQint Intrinsic.
! * JIQNnt intrinsic: JIQNnt Intrinsic.
! * JIShft intrinsic: JIShft Intrinsic.
! * JIShftC intrinsic: JIShftC Intrinsic.
! * JISign intrinsic: JISign Intrinsic.
! * JMax0 intrinsic: JMax0 Intrinsic.
! * JMax1 intrinsic: JMax1 Intrinsic.
! * JMin0 intrinsic: JMin0 Intrinsic.
! * JMin1 intrinsic: JMin1 Intrinsic.
! * JMod intrinsic: JMod Intrinsic.
! * JNInt intrinsic: JNInt Intrinsic.
! * JNot intrinsic: JNot Intrinsic.
! * JZExt intrinsic: JZExt Intrinsic.
! * keywords, RECURSIVE: RECURSIVE Keyword.
* Kill intrinsic <1>: Kill Intrinsic (function).
* Kill intrinsic: Kill Intrinsic (subroutine).
! * Kind intrinsic: Kind Intrinsic.
! * KIND= notation: Kind Notation.
! * known causes of trouble: Trouble.
! * lack of recursion: RECURSIVE Keyword.
* language, dialect options: Fortran Dialect Options.
* language, features: Direction of Language Development.
* language, incorrect use of: What is GNU Fortran?.
! * large aggregate areas: Known Bugs.
! * large common blocks: Large Common Blocks.
! * layout of COMMON blocks: Aligned Data.
! * LBound intrinsic: LBound Intrinsic.
* ld command: What is GNU Fortran?.
* ld, can't find _main: Cannot Link Fortran Programs.
* ld, can't find strange names: Cannot Link Fortran Programs.
* ld, error linking user code: Cannot Link Fortran Programs.
! * ld, errors: Large Common Blocks.
! * left angle: Character Set.
! * left bracket: Character Set.
* legacy code: Collected Fortran Wisdom.
! * Len intrinsic: Len Intrinsic.
! * Len_Trim intrinsic: Len_Trim Intrinsic.
* length of source lines: Fortran Dialect Options.
! * letters, lowercase: Case Sensitivity.
! * letters, uppercase: Case Sensitivity.
! * LGe intrinsic: LGe Intrinsic.
! * LGt intrinsic: LGt Intrinsic.
* libc, non-ANSI or non-default: Strange Behavior at Run Time.
* libf2c library: What is GNU Fortran?.
* libg2c library: What is GNU Fortran?.
* libraries: What is GNU Fortran?.
* libraries, containing BLOCK DATA: Block Data and Libraries.
* libraries, libf2c: What is GNU Fortran?.
* libraries, libg2c: What is GNU Fortran?.
! * limits, array dimensions: Compiler Limits.
! * limits, array size: Array Size.
! * limits, compiler: Compiler Limits.
! * limits, continuation lines <1>: Compiler Limits.
! * limits, continuation lines: Continuation Line.
! * limits, lengths of names <1>: Compiler Limits.
! * limits, lengths of names: Syntactic Items.
* limits, lengths of source lines: Fortran Dialect Options.
! * limits, multi-dimension arrays: Array Size.
* limits, on character-variable length: Character-variable Length.
! * limits, rank: Compiler Limits.
* limits, run-time library: Run-time Environment Limits.
! * limits, timings <1>: Secnds Intrinsic.
* limits, timings <2>: DTime Intrinsic (function).
! * limits, timings <3>: Time8 Intrinsic.
* limits, timings <4>: Time Intrinsic (UNIX).
* limits, timings <5>: System_Clock Intrinsic.
* limits, timings <6>: Second Intrinsic (subroutine).
* limits, timings <7>: Second Intrinsic (function).
! * limits, timings <8>: MClock8 Intrinsic.
! * limits, timings <9>: MClock Intrinsic.
* limits, timings <10>: ETime Intrinsic (function).
* limits, timings <11>: ETime Intrinsic (subroutine).
* limits, timings <12>: DTime Intrinsic (subroutine).
! * limits, timings: CPU_Time Intrinsic.
* limits, Y10K <1>: Time Intrinsic (VXT).
* limits, Y10K <2>: IDate Intrinsic (UNIX).
* limits, Y10K <3>: FDate Intrinsic (function).
* limits, Y10K <4>: FDate Intrinsic (subroutine).
* limits, Y10K: Date_and_Time Intrinsic.
* limits, Y2K: IDate Intrinsic (VXT).
! * lines: Lines.
! * lines, continuation: Continuation Line.
* lines, length: Fortran Dialect Options.
! * lines, long: Long Lines.
! * lines, short: Short Lines.
* Link intrinsic <1>: Link Intrinsic (function).
* Link intrinsic: Link Intrinsic (subroutine).
* linking: What is GNU Fortran?.
* linking against non-standard library: Strange Behavior at Run Time.
* linking error for user code: Cannot Link Fortran Programs.
* linking error, user code: Cannot Link Fortran Programs.
* linking with C: Interoperating with C and C++.
! * linking, errors: Large Common Blocks.
! * LLe intrinsic: LLe Intrinsic.
! * LLt intrinsic: LLt Intrinsic.
! * LnBlnk intrinsic: LnBlnk Intrinsic.
! * Loc intrinsic: Loc Intrinsic.
* local equivalence areas: Local Equivalence Areas.
! * Log intrinsic: Log Intrinsic.
! * Log10 intrinsic: Log10 Intrinsic.
* logical expressions, comparing: Equivalence Versus Equality.
! * Logical intrinsic: Logical Intrinsic.
! * LOGICAL(KIND=1) type: Compiler Types.
! * LOGICAL(KIND=2) type: Compiler Types.
! * LOGICAL(KIND=3) type: Compiler Types.
! * LOGICAL(KIND=6) type: Compiler Types.
* LOGICAL*1 support: Popular Non-standard Types.
! * Long intrinsic: Long Intrinsic.
! * long source lines: Long Lines.
! * long time: Timer Wraparounds.
! * loops, optimizing: Optimize Options.
! * loops, speeding up: Optimize Options.
! * loops, unrolling: Optimize Options.
! * lowercase letters: Case Sensitivity.
! * LShift intrinsic: LShift Intrinsic.
* LStat intrinsic <1>: LStat Intrinsic (function).
* LStat intrinsic: LStat Intrinsic (subroutine).
! * LTime intrinsic: LTime Intrinsic.
* machine code: What is GNU Fortran?.
! * macro options: Shorthand Options.
! * main program unit, debugging: Main Program Unit.
! * main(): Main Program Unit.
! * MAIN__(): Main Program Unit.
! * Makefile example: Bug Criteria.
* MAP statement: STRUCTURE UNION RECORD MAP.
! * MatMul intrinsic: MatMul Intrinsic.
! * Max intrinsic: Max Intrinsic.
! * Max0 intrinsic: Max0 Intrinsic.
! * Max1 intrinsic: Max1 Intrinsic.
* MaxExponent intrinsic: MaxExponent Intrinsic.
! * maximum number of dimensions: Compiler Limits.
! * maximum rank: Compiler Limits.
* maximum unit number: Large File Unit Numbers.
! * MaxLoc intrinsic: MaxLoc Intrinsic.
! * MaxVal intrinsic: MaxVal Intrinsic.
! * MClock intrinsic: MClock Intrinsic.
! * MClock8 intrinsic: MClock8 Intrinsic.
! * memory usage, of compiler: Known Bugs.
! * Merge intrinsic: Merge Intrinsic.
* messages, run-time: Run-time Library Errors.
! * messages, warning: Warning Options.
! * messages, warning and error: Warnings and Errors.
! * mil intrinsics group: Intrinsic Groups.
! * MIL-STD 1753 <1>: MIL-STD 1753.
! * MIL-STD 1753 <2>: END DO.
! * MIL-STD 1753 <3>: DO WHILE.
* MIL-STD 1753: Fortran Dialect Options.
! * Min intrinsic: Min Intrinsic.
! * Min0 intrinsic: Min0 Intrinsic.
! * Min1 intrinsic: Min1 Intrinsic.
* MinExponent intrinsic: MinExponent Intrinsic.
! * MinLoc intrinsic: MinLoc Intrinsic.
! * MinVal intrinsic: MinVal Intrinsic.
* mistakes: What is GNU Fortran?.
! * mistyped functions: Not My Type.
! * mistyped variables: Not My Type.
! * Mod intrinsic: Mod Intrinsic.
! * modifying g77: Overall Options.
! * Modulo intrinsic: Modulo Intrinsic.
! * multi-dimension arrays: Array Size.
! * MvBits intrinsic: MvBits Intrinsic.
* MXUNIT: Large File Unit Numbers.
! * name space: Mangling of Names.
! * NAMELIST statement: NAMELIST.
* naming conflicts: Multiple Definitions of External Names.
! * naming issues: Mangling of Names.
! * naming programs: Nothing Happens.
* NaN values: Floating-point Exception Handling.
! * Nearest intrinsic: Nearest Intrinsic.
! * negative forms of options: Invoking G77.
! * negative time: Timer Wraparounds.
* Netlib <1>: Increasing Precision/Range.
! * Netlib: C Interfacing Tools.
* network file system: Output Assumed To Flush.
! * new users: Getting Started.
! * newbies: Getting Started.
! * NeXTStep problems: NeXTStep Problems.
* NFS: Output Assumed To Flush.
! * NInt intrinsic: NInt Intrinsic.
* nonportable conversions: Nonportable Conversions.
! * Not intrinsic: Not Intrinsic.
! * nothing happens: Nothing Happens.
! * null arguments: Ugly Null Arguments.
* null byte, trailing: Character and Hollerith Constants.
! * null CHARACTER strings: Character Type.
! * number of continuation lines: Continuation Line.
! * number of dimensions, maximum: Compiler Limits.
! * number of trips: Loops.
! * O edit descriptor: I/O.
* octal constants: Double Quote Meaning.
! * omitting arguments: Ugly Null Arguments.
* one-trip DO loops: Fortran Dialect Options.
! * open angle: Character Set.
! * open bracket: Character Set.
* OPEN statement: OPEN CLOSE and INQUIRE Keywords.
! * optimization, better: Better Optimization.
! * optimization, for Pentium: Aligned Data.
! * optimize options: Optimize Options.
! * options, --driver <1>: Changes.
! * options, --driver: News.
* options, -falias-check <1>: Aliasing Assumed To Work.
! * options, -falias-check: Code Gen Options.
* options, -fargument-alias <1>: Aliasing Assumed To Work.
! * options, -fargument-alias: Code Gen Options.
* options, -fargument-noalias <1>: Aliasing Assumed To Work.
! * options, -fargument-noalias: Code Gen Options.
* options, -fbadu77-intrinsics-delete: Fortran Dialect Options.
* options, -fbadu77-intrinsics-disable: Fortran Dialect Options.
* options, -fbadu77-intrinsics-enable: Fortran Dialect Options.
* options, -fbadu77-intrinsics-hide: Fortran Dialect Options.
! * options, -fcaller-saves: Optimize Options.
* options, -fcase-initcap: Fortran Dialect Options.
* options, -fcase-lower: Fortran Dialect Options.
* options, -fcase-preserve: Fortran Dialect Options.
* options, -fcase-strict-lower: Fortran Dialect Options.
* options, -fcase-strict-upper: Fortran Dialect Options.
* options, -fcase-upper: Fortran Dialect Options.
! * options, -fdelayed-branch: Optimize Options.
* options, -fdollar-ok: Fortran Dialect Options.
! * options, -femulate-complex: Code Gen Options.
! * options, -fexpensive-optimizations: Optimize Options.
* options, -ff2c-intrinsics-delete: Fortran Dialect Options.
* options, -ff2c-intrinsics-disable: Fortran Dialect Options.
* options, -ff2c-intrinsics-enable: Fortran Dialect Options.
* options, -ff2c-intrinsics-hide: Fortran Dialect Options.
! * options, -ff2c-library: Code Gen Options.
! * options, -ff66: Shorthand Options.
! * options, -ff77: Shorthand Options.
* options, -ff90: Fortran Dialect Options.
* options, -ff90-intrinsics-delete: Fortran Dialect Options.
* options, -ff90-intrinsics-disable: Fortran Dialect Options.
* options, -ff90-intrinsics-enable: Fortran Dialect Options.
* options, -ff90-intrinsics-hide: Fortran Dialect Options.
! * options, -ffast-math: Optimize Options.
! * options, -ffinite-math-only: Optimize Options.
* options, -ffixed-line-length-N: Fortran Dialect Options.
! * options, -ffloat-store: Optimize Options.
! * options, -fforce-addr: Optimize Options.
! * options, -fforce-mem: Optimize Options.
* options, -ffree-form: Fortran Dialect Options.
* options, -fgnu-intrinsics-delete: Fortran Dialect Options.
* options, -fgnu-intrinsics-disable: Fortran Dialect Options.
* options, -fgnu-intrinsics-enable: Fortran Dialect Options.
* options, -fgnu-intrinsics-hide: Fortran Dialect Options.
* options, -fGROUP-intrinsics-hide: Overly Convenient Options.
* options, -finit-local-zero <1>: Overly Convenient Options.
! * options, -finit-local-zero: Code Gen Options.
* options, -fintrin-case-any: Fortran Dialect Options.
* options, -fintrin-case-initcap: Fortran Dialect Options.
* options, -fintrin-case-lower: Fortran Dialect Options.
* options, -fintrin-case-upper: Fortran Dialect Options.
* options, -fmatch-case-any: Fortran Dialect Options.
* options, -fmatch-case-initcap: Fortran Dialect Options.
* options, -fmatch-case-lower: Fortran Dialect Options.
* options, -fmatch-case-upper: Fortran Dialect Options.
* options, -fmil-intrinsics-delete: Fortran Dialect Options.
* options, -fmil-intrinsics-disable: Fortran Dialect Options.
* options, -fmil-intrinsics-enable: Fortran Dialect Options.
* options, -fmil-intrinsics-hide: Fortran Dialect Options.
* options, -fno-argument-noalias-global <1>: Aliasing Assumed To Work.
! * options, -fno-argument-noalias-global: Code Gen Options.
* options, -fno-automatic <1>: Overly Convenient Options.
! * options, -fno-automatic: Code Gen Options.
* options, -fno-backslash: Fortran Dialect Options.
! * options, -fno-common: Code Gen Options.
* options, -fno-f2c <1>: Avoid f2c Compatibility.
! * options, -fno-f2c: Code Gen Options.
! * options, -fno-f77: Shorthand Options.
* options, -fno-fixed-form: Fortran Dialect Options.
! * options, -fno-globals: Code Gen Options.
! * options, -fno-ident: Code Gen Options.
! * options, -fno-inline: Optimize Options.
! * options, -fno-move-all-movables: Optimize Options.
! * options, -fno-reduce-all-givs: Optimize Options.
! * options, -fno-rerun-loop-opt: Optimize Options.
! * options, -fno-second-underscore: Code Gen Options.
! * options, -fno-silent: Overall Options.
! * options, -fno-trapping-math: Optimize Options.
! * options, -fno-ugly: Shorthand Options.
* options, -fno-ugly-args: Fortran Dialect Options.
* options, -fno-ugly-init: Fortran Dialect Options.
! * options, -fno-underscoring <1>: Names.
! * options, -fno-underscoring: Code Gen Options.
* options, -fonetrip: Fortran Dialect Options.
! * options, -fpack-struct: Code Gen Options.
! * options, -fpcc-struct-return: Code Gen Options.
! * options, -fpedantic: Warning Options.
! * options, -fPIC: News.
! * options, -freg-struct-return: Code Gen Options.
! * options, -frerun-cse-after-loop: Optimize Options.
! * options, -fschedule-insns: Optimize Options.
! * options, -fschedule-insns2: Optimize Options.
! * options, -fset-g77-defaults: Overall Options.
! * options, -fshort-double: Code Gen Options.
* options, -fsource-case-lower: Fortran Dialect Options.
* options, -fsource-case-preserve: Fortran Dialect Options.
* options, -fsource-case-upper: Fortran Dialect Options.
! * options, -fstrength-reduce: Optimize Options.
* options, -fsymbol-case-any: Fortran Dialect Options.
* options, -fsymbol-case-initcap: Fortran Dialect Options.
* options, -fsymbol-case-lower: Fortran Dialect Options.
* options, -fsymbol-case-upper: Fortran Dialect Options.
! * options, -fsyntax-only: Warning Options.
* options, -ftypeless-boz: Fortran Dialect Options.
! * options, -fugly: Shorthand Options.
* options, -fugly-assign: Fortran Dialect Options.
* options, -fugly-assumed: Fortran Dialect Options.
* options, -fugly-comma: Fortran Dialect Options.
* options, -fugly-complex: Fortran Dialect Options.
* options, -fugly-logint: Fortran Dialect Options.
* options, -funix-intrinsics-delete: Fortran Dialect Options.
* options, -funix-intrinsics-disable: Fortran Dialect Options.
* options, -funix-intrinsics-enable: Fortran Dialect Options.
* options, -funix-intrinsics-hide: Fortran Dialect Options.
! * options, -funroll-all-loops: Optimize Options.
! * options, -funroll-loops: Optimize Options.
! * options, -funsafe-math-optimizations: Optimize Options.
! * options, -fversion: Overall Options.
* options, -fvxt: Fortran Dialect Options.
* options, -fvxt-intrinsics-delete: Fortran Dialect Options.
* options, -fvxt-intrinsics-disable: Fortran Dialect Options.
* options, -fvxt-intrinsics-enable: Fortran Dialect Options.
* options, -fvxt-intrinsics-hide: Fortran Dialect Options.
! * options, -fzeros: Code Gen Options.
! * options, -g: Debugging Options.
! * options, -I-: Directory Options.
! * options, -Idir: Directory Options.
! * options, -malign-double <1>: Aligned Data.
! * options, -malign-double: Optimize Options.
! * options, -Nl: Compiler Limits.
! * options, -Nx: Compiler Limits.
! * options, -pedantic: Warning Options.
! * options, -pedantic-errors: Warning Options.
! * options, -v: G77 and GCC.
! * options, -W: Warning Options.
! * options, -w: Warning Options.
! * options, -Waggregate-return: Warning Options.
! * options, -Wall: Warning Options.
! * options, -Wcomment: Warning Options.
! * options, -Wconversion: Warning Options.
! * options, -Werror: Warning Options.
! * options, -Wformat: Warning Options.
! * options, -Wid-clash-LEN: Warning Options.
! * options, -Wimplicit: Warning Options.
! * options, -Wlarger-than-LEN: Warning Options.
! * options, -Wno-globals: Warning Options.
! * options, -Wparentheses: Warning Options.
! * options, -Wredundant-decls: Warning Options.
! * options, -Wshadow: Warning Options.
! * options, -Wsurprising: Warning Options.
! * options, -Wswitch: Warning Options.
! * options, -Wswitch-default: Warning Options.
! * options, -Wswitch-enum: Warning Options.
! * options, -Wtraditional: Warning Options.
! * options, -Wuninitialized: Warning Options.
! * options, -Wunused: Warning Options.
! * options, -x f77-cpp-input: LEX.
! * options, adding: Adding Options.
! * options, code generation: Code Gen Options.
! * options, debugging: Debugging Options.
* options, dialect: Fortran Dialect Options.
! * options, directory search: Directory Options.
! * options, GNU Fortran command: Invoking G77.
! * options, macro: Shorthand Options.
! * options, negative forms: Invoking G77.
! * options, optimization: Optimize Options.
! * options, overall: Overall Options.
* options, overly convenient: Overly Convenient Options.
* options, preprocessor: Preprocessor Options.
! * options, shorthand: Shorthand Options.
! * options, warnings: Warning Options.
* Or intrinsic <1>: Bit Operations on Floating-point Data.
! * Or intrinsic: Or Intrinsic.
* order of evaluation, side effects: Order of Side Effects.
! * ordering, array: Arrays.
! * other intrinsics: Other Intrinsics.
* output, flushing: Output Assumed To Flush.
! * overall options: Overall Options.
! * overflow: Warning Options.
* overlapping arguments: Aliasing Assumed To Work.
* overlays: Aliasing Assumed To Work.
* overly convenient options: Overly Convenient Options.
* overwritten data: Strange Behavior at Run Time.
! * Pack intrinsic: Pack Intrinsic.
! * padding: Known Bugs.
! * parallel processing: Support for Threads.
* PARAMETER statement <1>: Old-style PARAMETER Statements.
* PARAMETER statement: Intrinsics in PARAMETER Statements.
! * parameters, unused: Warning Options.
! * paths, search: Directory Options.
* PDB: Portable Unformatted Files.
* pedantic compilation: Pedantic Compilation.
! * Pentium optimizations: Aligned Data.
! * percent sign: Character Set.
! * PError intrinsic: PError Intrinsic.
* placing initialization statements: Initializing Before Specifying.
! * POINTER statement: POINTER Statements.
* pointers <1>: Ugly Assigned Labels.
! * pointers: Kind Notation.
* Poking the bear: Philosophy of Code Generation.
! * porting, simplify: Simplify Porting.
! * pound sign: Character Set.
! * Precision intrinsic: Precision Intrinsic.
* precision, increasing: Increasing Precision/Range.
* prefix-radix constants: Fortran Dialect Options.
! * preprocessor <1>: LEX.
* preprocessor <2>: Cpp-style directives.
! * preprocessor <3>: Overall Options.
* preprocessor: What is GNU Fortran?.
* preprocessor options: Preprocessor Options.
! * Present intrinsic: Present Intrinsic.
! * printing compilation status: Overall Options.
! * printing main source: Known Bugs.
! * printing version information <1>: Overall Options.
* printing version information: What is GNU Fortran?.
! * procedures: Procedures.
! * Product intrinsic: Product Intrinsic.
! * PROGRAM statement: Main Program Unit.
* programs, cc1: What is GNU Fortran?.
* programs, cc1plus: What is GNU Fortran?.
! * programs, compiling: G77 and GCC.
! * programs, cpp <1>: LEX.
* programs, cpp <2>: Preprocessor Options.
! * programs, cpp <3>: Overall Options.
* programs, cpp: What is GNU Fortran?.
* programs, f771: What is GNU Fortran?.
! * programs, ratfor: Overall Options.
! * programs, speeding up: Faster Programs.
! * programs, test: Nothing Happens.
! * projects: Projects.
! * Q edit descriptor: Q Edit Descriptor.
! * QAbs intrinsic: QAbs Intrinsic.
! * QACos intrinsic: QACos Intrinsic.
! * QACosD intrinsic: QACosD Intrinsic.
! * QASin intrinsic: QASin Intrinsic.
! * QASinD intrinsic: QASinD Intrinsic.
! * QATan intrinsic: QATan Intrinsic.
! * QATan2 intrinsic: QATan2 Intrinsic.
! * QATan2D intrinsic: QATan2D Intrinsic.
! * QATanD intrinsic: QATanD Intrinsic.
! * QCos intrinsic: QCos Intrinsic.
! * QCosD intrinsic: QCosD Intrinsic.
! * QCosH intrinsic: QCosH Intrinsic.
! * QDiM intrinsic: QDiM Intrinsic.
! * QExp intrinsic: QExp Intrinsic.
! * QExt intrinsic: QExt Intrinsic.
! * QExtD intrinsic: QExtD Intrinsic.
! * QFloat intrinsic: QFloat Intrinsic.
! * QInt intrinsic: QInt Intrinsic.
! * QLog intrinsic: QLog Intrinsic.
! * QLog10 intrinsic: QLog10 Intrinsic.
! * QMax1 intrinsic: QMax1 Intrinsic.
! * QMin1 intrinsic: QMin1 Intrinsic.
! * QMod intrinsic: QMod Intrinsic.
! * QNInt intrinsic: QNInt Intrinsic.
! * QSin intrinsic: QSin Intrinsic.
! * QSinD intrinsic: QSinD Intrinsic.
! * QSinH intrinsic: QSinH Intrinsic.
! * QSqRt intrinsic: QSqRt Intrinsic.
! * QTan intrinsic: QTan Intrinsic.
! * QTanD intrinsic: QTanD Intrinsic.
! * QTanH intrinsic: QTanH Intrinsic.
! * question mark: Character Set.
* questionable instructions: What is GNU Fortran?.
! * Radix intrinsic: Radix Intrinsic.
! * Rand intrinsic: Rand Intrinsic.
* Random_Number intrinsic: Random_Number Intrinsic.
* Random_Seed intrinsic: Random_Seed Intrinsic.
! * range checking: Code Gen Options.
! * Range intrinsic: Range Intrinsic.
* range, increasing: Increasing Precision/Range.
! * rank, maximum: Compiler Limits.
! * ratfor: Overall Options.
! * Ratfor preprocessor: Overall Options.
! * READONLY: READONLY Keyword.
* reads and writes, scheduling: Aliasing Assumed To Work.
! * Real intrinsic <1>: Real Intrinsic.
* Real intrinsic: REAL() and AIMAG() of Complex.
* real part: Ugly Complex Part Extraction.
! * REAL(KIND=1) type: Compiler Types.
! * REAL(KIND=2) type: Compiler Types.
* REAL*16 support: Full Support for Compiler Types.
! * RealPart intrinsic: RealPart Intrinsic.
! * recent versions <1>: Changes.
! * recent versions: News.
* RECORD statement: STRUCTURE UNION RECORD MAP.
! * recursion, lack of: RECURSIVE Keyword.
! * RECURSIVE keyword: RECURSIVE Keyword.
! * reference works: Language.
* Rename intrinsic <1>: Rename Intrinsic (function).
* Rename intrinsic: Rename Intrinsic (subroutine).
! * Repeat intrinsic: Repeat Intrinsic.
! * reporting bugs: Bugs.
! * reporting compilation status: Overall Options.
! * Reshape intrinsic: Reshape Intrinsic.
* results, inconsistent: Floating-point Errors.
! * RETURN statement <1>: Alternate Returns.
! * RETURN statement: Functions.
! * return type of functions: Functions.
! * right angle: Character Set.
! * right bracket: Character Set.
* rounding errors: Floating-point Errors.
! * row-major ordering: Arrays.
! * RRSpacing intrinsic: RRSpacing Intrinsic.
! * RShift intrinsic: RShift Intrinsic.
* run-time, dynamic allocation: Arbitrary Concatenation.
! * run-time, initialization: Startup Code.
* run-time, library: What is GNU Fortran?.
! * run-time, options: Code Gen Options.
! * SAVE statement: Code Gen Options.
* saved variables: Variables Assumed To Be Saved.
! * Scale intrinsic: Scale Intrinsic.
! * Scan intrinsic: Scan Intrinsic.
* scheduling of reads and writes: Aliasing Assumed To Work.
* scope <1>: Scope and Classes of Names.
* scope: Scope of Names and Labels.
! * search path: Directory Options.
! * search paths, for included files: Directory Options.
! * Secnds intrinsic: Secnds Intrinsic.
* Second intrinsic <1>: Second Intrinsic (subroutine).
* Second intrinsic: Second Intrinsic (function).
* segmentation violation <1>: Strange Behavior at Run Time.
! * segmentation violation <2>: Stack Overflow.
! * segmentation violation: NeXTStep Problems.
* Selected_Int_Kind intrinsic: Selected_Int_Kind Intrinsic.
* Selected_Real_Kind intrinsic: Selected_Real_Kind Intrinsic.
! * semicolon <1>: Character Set.
* semicolon: Statements Comments Lines.
! * sequence numbers: Better Source Model.
* Set_Exponent intrinsic: Set_Exponent Intrinsic.
! * Shape intrinsic: Shape Intrinsic.
! * SHARED: READONLY Keyword.
* Shift intrinsic: Bit Operations on Floating-point Data.
! * Short intrinsic: Short Intrinsic.
! * short source lines: Short Lines.
! * short time: Timer Wraparounds.
! * shorthand options: Shorthand Options.
* side effects, order of evaluation: Order of Side Effects.
! * Sign intrinsic: Sign Intrinsic.
* signal 11: Signal 11 and Friends.
* Signal intrinsic <1>: Signal Intrinsic (function).
* Signal intrinsic: Signal Intrinsic (subroutine).
! * signature of procedures: Procedures.
! * simplify porting: Simplify Porting.
! * Sin intrinsic: Sin Intrinsic.
! * SinD intrinsic: SinD Intrinsic.
! * SinH intrinsic: SinH Intrinsic.
! * Sleep intrinsic: Sleep Intrinsic.
! * Sngl intrinsic: Sngl Intrinsic.
! * SnglQ intrinsic: SnglQ Intrinsic.
* Solaris: Strange Behavior at Run Time.
! * source code <1>: Case Sensitivity.
! * source code <2>: Source Form.
! * source code <3>: Lines.
* source code: What is GNU Fortran?.
* source file: What is GNU Fortran?.
! * source file format <1>: Case Sensitivity.
! * source file format <2>: Source Form.
! * source file format <3>: Lines.
* source file format: Fortran Dialect Options.
! * source format <1>: Source Form.
! * source format: Lines.
! * source lines, long: Long Lines.
! * source lines, short: Short Lines.
! * space <1>: Lines.
! * space: Character Set.
* space, endless printing of: Strange Behavior at Run Time.
! * space, padding with: Short Lines.
! * Spacing intrinsic: Spacing Intrinsic.
! * SPC <1>: Lines.
! * SPC: Character Set.
! * speed, of compiler: Known Bugs.
! * speed, of loops: Optimize Options.
! * speed, of programs: Faster Programs.
* spills of floating-point results: Floating-point Errors.
! * Spread intrinsic: Spread Intrinsic.
! * SqRt intrinsic: SqRt Intrinsic.
! * SRand intrinsic: SRand Intrinsic.
! * stack, 387 coprocessor: News.
! * stack, aligned: Aligned Data.
! * stack, overflow: Stack Overflow.
! * standard, ANSI FORTRAN 77: Language.
! * standard, support for: Standard Support.
! * startup code: Startup Code.
* Stat intrinsic <1>: Stat Intrinsic (function).
* Stat intrinsic: Stat Intrinsic (subroutine).
* statement labels, assigned: Assigned Statement Labels.
* statements, ACCEPT: TYPE and ACCEPT I/O Statements.
* statements, ASSIGN <1>: Assigned Statement Labels.
* statements, ASSIGN: Ugly Assigned Labels.
! * statements, AUTOMATIC: AUTOMATIC Statement.
* statements, BLOCK DATA <1>: Multiple Definitions of External Names.
* statements, BLOCK DATA: Block Data and Libraries.
* statements, CLOSE: OPEN CLOSE and INQUIRE Keywords.
* statements, COMMON <1>: Multiple Definitions of External Names.
! * statements, COMMON: Common Blocks.
! * statements, COMPLEX: Complex Variables.
! * statements, CYCLE: CYCLE and EXIT.
! * statements, DATA <1>: Known Bugs.
! * statements, DATA: Code Gen Options.
! * statements, DECODE: ENCODE and DECODE.
* statements, DIMENSION <1>: Array Bounds Expressions.
! * statements, DIMENSION <2>: Adjustable Arrays.
! * statements, DIMENSION: Arrays.
! * statements, DO <1>: Loops.
! * statements, DO: Warning Options.
! * statements, ENCODE: ENCODE and DECODE.
* statements, ENTRY: Alternate Entry Points.
* statements, EQUIVALENCE: Local Equivalence Areas.
! * statements, EXIT: CYCLE and EXIT.
* statements, FORMAT: Expressions in FORMAT Statements.
! * statements, FUNCTION <1>: Functions.
! * statements, FUNCTION: Procedures.
* statements, GOTO: Assigned Statement Labels.
* statements, IMPLICIT CHARACTER*(*): Limitation on Implicit Declarations.
* statements, INQUIRE: OPEN CLOSE and INQUIRE Keywords.
* statements, MAP: STRUCTURE UNION RECORD MAP.
! * statements, NAMELIST: NAMELIST.
* statements, OPEN: OPEN CLOSE and INQUIRE Keywords.
* statements, PARAMETER <1>: Old-style PARAMETER Statements.
* statements, PARAMETER: Intrinsics in PARAMETER Statements.
! * statements, POINTER: POINTER Statements.
! * statements, PROGRAM: Main Program Unit.
* statements, RECORD: STRUCTURE UNION RECORD MAP.
! * statements, RETURN <1>: Alternate Returns.
! * statements, RETURN: Functions.
! * statements, SAVE: Code Gen Options.
* statements, separated by semicolon: Statements Comments Lines.
* statements, STRUCTURE: STRUCTURE UNION RECORD MAP.
! * statements, SUBROUTINE <1>: Alternate Returns.
! * statements, SUBROUTINE: Procedures.
* statements, TYPE: TYPE and ACCEPT I/O Statements.
* statements, UNION: STRUCTURE UNION RECORD MAP.
! * STATIC: AUTOMATIC Statement.
* static variables: Variables Assumed To Be Saved.
! * status, compilation: Overall Options.
* storage association: Aliasing Assumed To Work.
! * strings, empty: Character Type.
* STRUCTURE statement: STRUCTURE UNION RECORD MAP.
! * structures: Known Bugs.
* submodels: Use Submodel Options.
! * SUBROUTINE statement <1>: Alternate Returns.
! * SUBROUTINE statement: Procedures.
! * subroutines: Alternate Returns.
! * subscript checking: Code Gen Options.
! * substring checking: Code Gen Options.
! * suffixes, file name: Overall Options.
! * Sum intrinsic: Sum Intrinsic.
! * support, Alpha: Known Bugs.
! * support, ELF: News.
* support, f77: Backslash in Constants.
! * support, FORTRAN 77: Standard Support.
! * support, Fortran 90: Fortran 90 Support.
! * support, gdb: Debugger Problems.
! * suppressing warnings: Warning Options.
! * symbol names <1>: Names.
* symbol names: Fortran Dialect Options.
* symbol names, scope and classes: Scope and Classes of Names.
! * symbol names, transforming: Code Gen Options.
! * symbol names, underscores: Code Gen Options.
* SymLnk intrinsic <1>: SymLnk Intrinsic (function).
* SymLnk intrinsic: SymLnk Intrinsic (subroutine).
* synchronous write errors: Output Assumed To Flush.
! * syntax checking: Warning Options.
* System intrinsic <1>: System Intrinsic (function).
* System intrinsic: System Intrinsic (subroutine).
* System_Clock intrinsic: System_Clock Intrinsic.
! * tab character: Tabs.
* table of intrinsics: Table of Intrinsic Functions.
! * Tan intrinsic: Tan Intrinsic.
! * TanD intrinsic: TanD Intrinsic.
! * TanH intrinsic: TanH Intrinsic.
! * test programs: Nothing Happens.
! * textbooks: Language.
! * threads: Support for Threads.
* Time intrinsic <1>: Time Intrinsic (VXT).
* Time intrinsic: Time Intrinsic (UNIX).
! * Time8 intrinsic: Time8 Intrinsic.
! * Tiny intrinsic: Tiny Intrinsic.
* Toolpack: Increasing Precision/Range.
! * trailing comma: Ugly Null Arguments.
! * trailing comment <1>: LEX.
! * trailing comment <2>: Trailing Comment.
* trailing comment: Statements Comments Lines.
* trailing null byte: Character and Hollerith Constants.
! * Transfer intrinsic: Transfer Intrinsic.
! * transforming symbol names <1>: Names.
! * transforming symbol names: Code Gen Options.
* translation of user programs: What is GNU Fortran?.
! * Transpose intrinsic: Transpose Intrinsic.
! * Trim intrinsic: Trim Intrinsic.
! * trips, number of: Loops.
* truncation, of floating-point values: Floating-point Errors.
! * truncation, of long lines: Long Lines.
* TtyNam intrinsic <1>: TtyNam Intrinsic (function).
* TtyNam intrinsic: TtyNam Intrinsic (subroutine).
* TYPE statement: TYPE and ACCEPT I/O Statements.
! * types, COMPLEX(KIND=1): Compiler Types.
! * types, COMPLEX(KIND=2): Compiler Types.
! * types, constants <1>: Compiler Constants.
! * types, constants <2>: Constants.
* types, constants: Fortran Dialect Options.
! * types, DOUBLE COMPLEX: Compiler Types.
! * types, DOUBLE PRECISION: Compiler Types.
! * types, file: Overall Options.
* types, Fortran/C: C Access to Type Information.
! * types, INTEGER(KIND=1): Compiler Types.
! * types, INTEGER(KIND=2): Compiler Types.
! * types, INTEGER(KIND=3): Compiler Types.
! * types, INTEGER(KIND=6): Compiler Types.
* types, INTEGER*2: Popular Non-standard Types.
* types, INTEGER*8: Full Support for Compiler Types.
! * types, LOGICAL(KIND=1): Compiler Types.
! * types, LOGICAL(KIND=2): Compiler Types.
! * types, LOGICAL(KIND=3): Compiler Types.
! * types, LOGICAL(KIND=6): Compiler Types.
* types, LOGICAL*1: Popular Non-standard Types.
! * types, of data: Compiler Types.
! * types, REAL(KIND=1): Compiler Types.
! * types, REAL(KIND=2): Compiler Types.
* types, REAL*16: Full Support for Compiler Types.
! * UBound intrinsic: UBound Intrinsic.
! * ugly features <1>: Distensions.
! * ugly features: Shorthand Options.
* UMask intrinsic <1>: UMask Intrinsic (function).
* UMask intrinsic: UMask Intrinsic (subroutine).
! * undefined behavior: Bug Criteria.
! * undefined function value: Bug Criteria.
* undefined reference (_main): Cannot Link Fortran Programs.
! * underscore <1>: Mangling of Names.
* underscore <2>: Underscores in Symbol Names.
! * underscore <3>: Character Set.
! * underscore: Code Gen Options.
* unformatted files: Portable Unformatted Files.
* uninitialized variables <1>: Variables Assumed To Be Zero.
! * uninitialized variables <2>: Code Gen Options.
! * uninitialized variables: Warning Options.
* UNION statement: STRUCTURE UNION RECORD MAP.
* unit numbers: Large File Unit Numbers.
! * UNIX f77: Shorthand Options.
* UNIX intrinsics: Fortran Dialect Options.
* Unlink intrinsic <1>: Unlink Intrinsic (function).
* Unlink intrinsic: Unlink Intrinsic (subroutine).
! * Unpack intrinsic: Unpack Intrinsic.
* unrecognized file format: What is GNU Fortran?.
* unresolved reference (various): Cannot Link Fortran Programs.
! * unrolling loops: Optimize Options.
! * UNSAVE: AUTOMATIC Statement.
! * unsupported warnings: Warning Options.
! * unused arguments <1>: Unused Arguments.
! * unused arguments: Warning Options.
! * unused dummies: Warning Options.
! * unused parameters: Warning Options.
! * unused variables: Warning Options.
! * uppercase letters: Case Sensitivity.
! * user-visible changes: Changes.
* variables, assumed to be zero: Variables Assumed To Be Zero.
! * variables, automatic: AUTOMATIC Statement.
! * variables, initialization of: Code Gen Options.
! * variables, mistyped: Not My Type.
* variables, retaining values across calls: Variables Assumed To Be Saved.
! * variables, uninitialized <1>: Code Gen Options.
! * variables, uninitialized: Warning Options.
! * variables, unused: Warning Options.
! * Verify intrinsic: Verify Intrinsic.
! * version information, printing <1>: Overall Options.
* version information, printing: What is GNU Fortran?.
! * versions, recent <1>: Changes.
! * versions, recent: News.
! * VXT extensions <1>: VXT Fortran.
* VXT extensions: Fortran Dialect Options.
* VXT intrinsics: Fortran Dialect Options.
* vxtidate_y2kbuggy_0: Year 2000 (Y2K) Problems.
* warnings: What is GNU Fortran?.
! * warnings vs errors: Warnings and Errors.
! * warnings, all: Warning Options.
! * warnings, extra: Warning Options.
! * warnings, global names <1>: Code Gen Options.
! * warnings, global names: Warning Options.
! * warnings, implicit declaration: Warning Options.
! * warnings, suppressing: Warning Options.
! * warnings, unsupported: Warning Options.
* wisdom: Collected Fortran Wisdom.
* wraparound: Run-time Environment Limits.
! * wraparound, timings <1>: Secnds Intrinsic.
* wraparound, timings <2>: DTime Intrinsic (function).
! * wraparound, timings <3>: Time8 Intrinsic.
* wraparound, timings <4>: Time Intrinsic (UNIX).
* wraparound, timings <5>: System_Clock Intrinsic.
* wraparound, timings <6>: Second Intrinsic (subroutine).
* wraparound, timings <7>: Second Intrinsic (function).
! * wraparound, timings <8>: MClock8 Intrinsic.
! * wraparound, timings <9>: MClock Intrinsic.
* wraparound, timings <10>: ETime Intrinsic (function).
* wraparound, timings <11>: ETime Intrinsic (subroutine).
* wraparound, timings <12>: DTime Intrinsic (subroutine).
! * wraparound, timings: CPU_Time Intrinsic.
* wraparound, Y10K <1>: Time Intrinsic (VXT).
* wraparound, Y10K <2>: IDate Intrinsic (UNIX).
* wraparound, Y10K <3>: FDate Intrinsic (function).
* wraparound, Y10K <4>: FDate Intrinsic (subroutine).
* wraparound, Y10K: Date_and_Time Intrinsic.
* wraparound, Y2K: IDate Intrinsic (VXT).
* writes, flushing: Output Assumed To Flush.
* writing code: Collected Fortran Wisdom.
* x86 floating-point: Floating-point precision.
* x86 FPU stack: Inconsistent Calling Sequences.
! * XOr intrinsic: XOr Intrinsic.
* Y10K compliance <1>: Time Intrinsic (VXT).
* Y10K compliance <2>: Year 10000 (Y10K) Problems.
* Y10K compliance <3>: IDate Intrinsic (UNIX).
* Y10K compliance <4>: FDate Intrinsic (function).
* Y10K compliance <5>: FDate Intrinsic (subroutine).
* Y10K compliance: Date_and_Time Intrinsic.
! * Y2K compliance <1>: Y2KBAD.
* Y2K compliance <2>: IDate Intrinsic (VXT).
! * Y2K compliance <3>: Date Intrinsic.
* Y2K compliance: Year 2000 (Y2K) Problems.
* y2kbuggy: Year 2000 (Y2K) Problems.
* Year 10000 compliance <1>: Time Intrinsic (VXT).
* Year 10000 compliance <2>: Year 10000 (Y10K) Problems.
* Year 10000 compliance <3>: IDate Intrinsic (UNIX).
* Year 10000 compliance <4>: FDate Intrinsic (function).
* Year 10000 compliance <5>: FDate Intrinsic (subroutine).
* Year 10000 compliance: Date_and_Time Intrinsic.
! * Year 2000 compliance <1>: Y2KBAD.
* Year 2000 compliance <2>: IDate Intrinsic (VXT).
! * Year 2000 compliance <3>: Date Intrinsic.
* Year 2000 compliance: Year 2000 (Y2K) Problems.
! * Z edit descriptor <1>: Fortran 90 Features.
! * Z edit descriptor: I/O.
! * ZAbs intrinsic: ZAbs Intrinsic.
! * ZCos intrinsic: ZCos Intrinsic.
* zero byte, trailing: Character and Hollerith Constants.
* zero-initialized variables: Variables Assumed To Be Zero.
! * zero-length CHARACTER: Character Type.
* zero-trip DO loops: Fortran Dialect Options.
! * ZExp intrinsic: ZExp Intrinsic.
! * ZExt intrinsic: ZExt Intrinsic.
! * ZLog intrinsic: ZLog Intrinsic.
! * ZSin intrinsic: ZSin Intrinsic.
! * ZSqRt intrinsic: ZSqRt Intrinsic.
Tag Table:
! Node: Top2363
! Node: Copying4320
! Node: GNU Free Documentation License23520
! Node: Contributors45929
! Node: Funding49320
! Node: Funding GNU Fortran51832
! Node: Getting Started53047
! Node: What is GNU Fortran?55296
! Node: G77 and GCC65184
! Node: Invoking G7766387
! Node: Option Summary68325
! Node: Overall Options73183
! Node: Shorthand Options79771
! Node: Fortran Dialect Options82068
! Node: Warning Options93325
! Node: Debugging Options102242
! Node: Optimize Options103832
! Ref: Optimize Options-Footnote-1109850
! Node: Preprocessor Options110543
! Node: Directory Options111724
! Node: Code Gen Options113036
! Node: Environment Variables127943
! Node: News128398
! Node: Changes183269
! Node: Language211668
! Node: Direction of Language Development213869
! Node: Standard Support220109
! Node: No Passing External Assumed-length220830
! Node: No Passing Dummy Assumed-length221307
! Node: No Pathological Implied-DO221822
! Node: No Useless Implied-DO222509
! Node: Conformance223240
! Node: Notation Used225263
! Node: Terms and Concepts229469
! Node: Syntactic Items229981
! Node: Statements Comments Lines230663
! Node: Scope of Names and Labels232528
! Node: Characters Lines Sequence232958
! Node: Character Set233564
! Node: Lines234565
! Node: Continuation Line237041
! Node: Statements237996
! Node: Statement Labels238952
! Node: Order239644
! Node: INCLUDE240529
! Node: Cpp-style directives243301
! Node: Data Types and Constants243756
! Node: Types247277
! Node: Double Notation248366
! Node: Star Notation249438
! Node: Kind Notation252383
! Node: Constants260803
! Node: Integer Type262319
! Node: Character Type262917
! Node: Expressions263681
! Node: %LOC()264097
! Node: Specification Statements266827
! Node: NAMELIST267284
! Node: DOUBLE COMPLEX268035
! Node: Control Statements268289
! Node: DO WHILE268781
! Node: END DO269086
! Node: Construct Names270093
! Node: CYCLE and EXIT270833
! Node: Functions and Subroutines273597
! Node: %VAL()274243
! Node: %REF()275607
! Node: %DESCR()277435
! Node: Generics and Specifics279568
! Node: REAL() and AIMAG() of Complex286770
! Node: CMPLX() of DOUBLE PRECISION288603
! Node: MIL-STD 1753290329
! Node: f77/f2c Intrinsics290671
! Node: Table of Intrinsic Functions291241
! Node: Abort Intrinsic307953
! Node: Abs Intrinsic308217
! Node: Access Intrinsic309080
! Node: AChar Intrinsic309916
! Node: ACos Intrinsic310438
! Node: AdjustL Intrinsic310899
! Node: AdjustR Intrinsic311224
! Node: AImag Intrinsic311550
! Node: AInt Intrinsic312355
! Node: Alarm Intrinsic312983
! Node: All Intrinsic313815
! Node: Allocated Intrinsic314127
! Node: ALog Intrinsic314456
! Node: ALog10 Intrinsic314846
! Node: AMax0 Intrinsic315244
! Node: AMax1 Intrinsic315729
! Node: AMin0 Intrinsic316182
! Node: AMin1 Intrinsic316666
! Node: AMod Intrinsic317118
! Node: And Intrinsic317544
! Node: ANInt Intrinsic318050
! Node: Any Intrinsic318814
! Node: ASin Intrinsic319121
! Node: Associated Intrinsic319579
! Node: ATan Intrinsic319913
! Node: ATan2 Intrinsic320379
! Node: BesJ0 Intrinsic320930
! Node: BesJ1 Intrinsic321391
! Node: BesJN Intrinsic321852
! Node: BesY0 Intrinsic322383
! Node: BesY1 Intrinsic322845
! Node: BesYN Intrinsic323307
! Node: Bit_Size Intrinsic323842
! Node: BTest Intrinsic324501
! Node: CAbs Intrinsic325221
! Node: CCos Intrinsic325608
! Node: Ceiling Intrinsic326000
! Node: CExp Intrinsic326322
! Node: Char Intrinsic326714
! Node: ChDir Intrinsic (subroutine)327968
! Node: ChMod Intrinsic (subroutine)328971
! Node: CLog Intrinsic330241
! Node: Cmplx Intrinsic330645
! Node: Complex Intrinsic331446
! Node: Conjg Intrinsic332892
! Node: Cos Intrinsic333316
! Node: CosH Intrinsic333779
! Node: Count Intrinsic334154
! Node: CPU_Time Intrinsic334472
! Node: CShift Intrinsic335263
! Node: CSin Intrinsic335585
! Node: CSqRt Intrinsic335977
! Node: CTime Intrinsic (subroutine)336387
! Node: CTime Intrinsic (function)337142
! Node: DAbs Intrinsic337776
! Node: DACos Intrinsic338172
! Node: DASin Intrinsic338563
! Node: DATan Intrinsic338955
! Node: DATan2 Intrinsic339348
! Node: Date_and_Time Intrinsic339803
! Node: DbesJ0 Intrinsic341167
! Node: DbesJ1 Intrinsic341560
! Node: DbesJN Intrinsic341946
! Node: DbesY0 Intrinsic342402
! Node: DbesY1 Intrinsic342788
! Node: DbesYN Intrinsic343174
! Node: Dble Intrinsic343628
! Node: DCos Intrinsic344334
! Node: DCosH Intrinsic344718
! Node: DDiM Intrinsic345108
! Node: DErF Intrinsic345540
! Node: DErFC Intrinsic345909
! Node: DExp Intrinsic346284
! Node: Digits Intrinsic346670
! Node: DiM Intrinsic346987
! Node: DInt Intrinsic347486
! Node: DLog Intrinsic347870
! Node: DLog10 Intrinsic348255
! Node: DMax1 Intrinsic348653
! Node: DMin1 Intrinsic349107
! Node: DMod Intrinsic349559
! Node: DNInt Intrinsic349987
! Node: Dot_Product Intrinsic350386
! Node: DProd Intrinsic350726
! Node: DSign Intrinsic351108
! Node: DSin Intrinsic351547
! Node: DSinH Intrinsic351932
! Node: DSqRt Intrinsic352323
! Node: DTan Intrinsic352714
! Node: DTanH Intrinsic353099
! Node: DTime Intrinsic (subroutine)353503
! Node: EOShift Intrinsic354774
! Node: Epsilon Intrinsic355113
! Node: ErF Intrinsic355437
! Node: ErFC Intrinsic355843
! Node: ETime Intrinsic (subroutine)356403
! Node: ETime Intrinsic (function)357566
! Node: Exit Intrinsic358606
! Node: Exp Intrinsic359115
! Node: Exponent Intrinsic359577
! Node: FDate Intrinsic (subroutine)359916
! Node: FDate Intrinsic (function)360826
! Node: FGet Intrinsic (subroutine)361598
! Node: FGetC Intrinsic (subroutine)362435
! Node: Float Intrinsic363312
! Node: Floor Intrinsic363712
! Node: Flush Intrinsic364028
! Node: FNum Intrinsic364607
! Node: FPut Intrinsic (subroutine)365055
! Node: FPutC Intrinsic (subroutine)365852
! Node: Fraction Intrinsic366699
! Node: FSeek Intrinsic367040
! Node: FStat Intrinsic (subroutine)367765
! Node: FStat Intrinsic (function)369289
! Node: FTell Intrinsic (subroutine)370578
! Node: FTell Intrinsic (function)371251
! Node: GError Intrinsic371768
! Node: GetArg Intrinsic372142
! Node: GetCWD Intrinsic (subroutine)372810
! Node: GetCWD Intrinsic (function)373665
! Node: GetEnv Intrinsic374284
! Node: GetGId Intrinsic374871
! Node: GetLog Intrinsic375177
! Node: GetPId Intrinsic375715
! Node: GetUId Intrinsic376023
! Node: GMTime Intrinsic376328
! Node: HostNm Intrinsic (subroutine)377336
! Node: HostNm Intrinsic (function)378425
! Node: Huge Intrinsic379267
! Node: IAbs Intrinsic379590
! Node: IAChar Intrinsic379981
! Node: IAnd Intrinsic380521
! Node: IArgC Intrinsic381009
! Node: IBClr Intrinsic381385
! Node: IBits Intrinsic381896
! Node: IBSet Intrinsic382610
! Node: IChar Intrinsic383112
! Node: IDate Intrinsic (UNIX)384331
! Node: IDiM Intrinsic385173
! Node: IDInt Intrinsic385622
! Node: IDNInt Intrinsic386015
! Node: IEOr Intrinsic386414
! Node: IErrNo Intrinsic386912
! Node: IFix Intrinsic387239
! Node: Imag Intrinsic387627
! Node: ImagPart Intrinsic388632
! Node: Index Intrinsic389658
! Node: Int Intrinsic390211
! Node: Int2 Intrinsic390926
! Node: Int8 Intrinsic391635
! Node: IOr Intrinsic392344
! Node: IRand Intrinsic392824
! Node: IsaTty Intrinsic393744
! Node: IShft Intrinsic394168
! Node: IShftC Intrinsic394998
! Node: ISign Intrinsic395927
! Node: ITime Intrinsic396377
! Node: Kill Intrinsic (subroutine)396779
! Node: Kind Intrinsic397615
! Node: LBound Intrinsic397940
! Node: Len Intrinsic398257
! Node: Len_Trim Intrinsic398893
! Node: LGe Intrinsic399305
! Node: LGt Intrinsic400718
! Node: Link Intrinsic (subroutine)401623
! Node: LLe Intrinsic402587
! Node: LLt Intrinsic403492
! Node: LnBlnk Intrinsic404386
! Node: Loc Intrinsic404789
! Node: Log Intrinsic405220
! Node: Log10 Intrinsic405811
! Node: Logical Intrinsic406353
! Node: Long Intrinsic406676
! Node: LShift Intrinsic407200
! Node: LStat Intrinsic (subroutine)408236
! Node: LStat Intrinsic (function)410047
! Node: LTime Intrinsic411609
! Node: MatMul Intrinsic412613
! Node: Max Intrinsic412931
! Node: Max0 Intrinsic413482
! Node: Max1 Intrinsic413933
! Node: MaxExponent Intrinsic414417
! Node: MaxLoc Intrinsic414757
! Node: MaxVal Intrinsic415084
! Node: MClock Intrinsic415406
! Node: MClock8 Intrinsic416304
! Node: Merge Intrinsic417492
! Node: Min Intrinsic417808
! Node: Min0 Intrinsic418359
! Node: Min1 Intrinsic418810
! Node: MinExponent Intrinsic419294
! Node: MinLoc Intrinsic419634
! Node: MinVal Intrinsic419961
! Node: Mod Intrinsic420280
! Node: Modulo Intrinsic420803
! Node: MvBits Intrinsic421122
! Node: Nearest Intrinsic421988
! Node: NInt Intrinsic422312
! Node: Not Intrinsic423150
! Node: Or Intrinsic423545
! Node: Pack Intrinsic424043
! Node: PError Intrinsic424353
! Node: Precision Intrinsic424807
! Node: Present Intrinsic425142
! Node: Product Intrinsic425472
! Node: Radix Intrinsic425798
! Node: Rand Intrinsic426115
! Node: Random_Number Intrinsic427002
! Node: Random_Seed Intrinsic427355
! Node: Range Intrinsic427703
! Node: Real Intrinsic428024
! Node: RealPart Intrinsic429030
! Node: Rename Intrinsic (subroutine)430063
! Node: Repeat Intrinsic431034
! Node: Reshape Intrinsic431370
! Node: RRSpacing Intrinsic431699
! Node: RShift Intrinsic432034
! Node: Scale Intrinsic433032
! Node: Scan Intrinsic433348
! Node: Second Intrinsic (function)433672
! Node: Second Intrinsic (subroutine)434503
! Node: Selected_Int_Kind Intrinsic435478
! Node: Selected_Real_Kind Intrinsic435869
! Node: Set_Exponent Intrinsic436256
! Node: Shape Intrinsic436613
! Node: Short Intrinsic436936
! Node: Sign Intrinsic437631
! Node: Signal Intrinsic (subroutine)438231
! Node: Sin Intrinsic440447
! Node: SinH Intrinsic440922
! Node: Sleep Intrinsic441295
! Node: Sngl Intrinsic441637
! Node: Spacing Intrinsic442026
! Node: Spread Intrinsic442350
! Node: SqRt Intrinsic442671
! Node: SRand Intrinsic443275
! Node: Stat Intrinsic (subroutine)443652
! Node: Stat Intrinsic (function)445266
! Node: Sum Intrinsic446629
! Node: SymLnk Intrinsic (subroutine)446961
! Node: System Intrinsic (subroutine)447992
! Node: System_Clock Intrinsic448931
! Node: Tan Intrinsic450055
! Node: TanH Intrinsic450515
! Node: Time Intrinsic (UNIX)450897
! Node: Time8 Intrinsic451882
! Node: Tiny Intrinsic453061
! Node: Transfer Intrinsic453376
! Node: Transpose Intrinsic453707
! Node: Trim Intrinsic454041
! Node: TtyNam Intrinsic (subroutine)454371
! Node: TtyNam Intrinsic (function)455073
! Node: UBound Intrinsic455642
! Node: UMask Intrinsic (subroutine)455987
! Node: Unlink Intrinsic (subroutine)456684
! Node: Unpack Intrinsic457581
! Node: Verify Intrinsic457916
! Node: XOr Intrinsic458235
! Node: ZAbs Intrinsic458751
! Node: ZCos Intrinsic459120
! Node: ZExp Intrinsic459493
! Node: ZLog Intrinsic459866
! Node: ZSin Intrinsic460239
! Node: ZSqRt Intrinsic460613
! Node: Scope and Classes of Names460970
! Node: Underscores in Symbol Names461452
! Node: I/O461699
! Node: Fortran 90 Features462472
! Node: Other Dialects465274
! Node: Source Form466433
! Node: Carriage Returns467648
! Node: Tabs467977
! Node: Short Lines468850
! Node: Long Lines469824
! Node: Ampersands470435
! Node: Trailing Comment470689
! Node: Debug Line471465
! Node: Dollar Signs472134
! Node: Case Sensitivity472420
! Node: VXT Fortran481036
! Node: Double Quote Meaning482219
! Node: Exclamation Point483147
! Node: Fortran 90484190
! Node: Pedantic Compilation485242
! Node: Distensions489206
! Node: Ugly Implicit Argument Conversion490170
! Node: Ugly Assumed-Size Arrays490784
! Node: Ugly Complex Part Extraction492505
! Node: Ugly Null Arguments494127
! Node: Ugly Conversion of Initializers495730
! Node: Ugly Integer Conversions497495
! Node: Ugly Assigned Labels498603
! Node: Compiler500534
! Node: Compiler Limits501172
! Node: Run-time Environment Limits502063
! Node: Timer Wraparounds504005
! Node: Year 2000 (Y2K) Problems505284
! Node: Array Size509790
! Node: Character-variable Length510975
! Node: Year 10000 (Y10K) Problems511484
! Node: Compiler Types512030
! Node: Compiler Constants516741
! Node: Compiler Intrinsics517600
! Node: Intrinsic Groups518527
! Node: Other Intrinsics521968
! Node: ACosD Intrinsic529566
! Node: AIMax0 Intrinsic529847
! Node: AIMin0 Intrinsic530156
! Node: AJMax0 Intrinsic530466
! Node: AJMin0 Intrinsic530776
! Node: ASinD Intrinsic531085
! Node: ATan2D Intrinsic531391
! Node: ATanD Intrinsic531699
! Node: BITest Intrinsic532005
! Node: BJTest Intrinsic532314
! Node: CDAbs Intrinsic532623
! Node: CDCos Intrinsic532996
! Node: CDExp Intrinsic533371
! Node: CDLog Intrinsic533746
! Node: CDSin Intrinsic534121
! Node: CDSqRt Intrinsic534497
! Node: ChDir Intrinsic (function)534890
! Node: ChMod Intrinsic (function)535718
! Node: CosD Intrinsic536831
! Node: DACosD Intrinsic537143
! Node: DASinD Intrinsic537451
! Node: DATan2D Intrinsic537762
! Node: DATanD Intrinsic538076
! Node: Date Intrinsic538385
! Node: DbleQ Intrinsic539104
! Node: DCmplx Intrinsic539408
! Node: DConjg Intrinsic541039
! Node: DCosD Intrinsic541424
! Node: DFloat Intrinsic541730
! Node: DFlotI Intrinsic542102
! Node: DFlotJ Intrinsic542412
! Node: DImag Intrinsic542721
! Node: DReal Intrinsic543098
! Node: DSinD Intrinsic544245
! Node: DTanD Intrinsic544549
! Node: DTime Intrinsic (function)544864
! Node: FGet Intrinsic (function)546094
! Node: FGetC Intrinsic (function)546867
! Node: FloatI Intrinsic547683
! Node: FloatJ Intrinsic548003
! Node: FPut Intrinsic (function)548322
! Node: FPutC Intrinsic (function)549058
! Node: IDate Intrinsic (VXT)549851
! Node: IIAbs Intrinsic550958
! Node: IIAnd Intrinsic551268
! Node: IIBClr Intrinsic551573
! Node: IIBits Intrinsic551882
! Node: IIBSet Intrinsic552192
! Node: IIDiM Intrinsic552501
! Node: IIDInt Intrinsic552807
! Node: IIDNnt Intrinsic553116
! Node: IIEOr Intrinsic553425
! Node: IIFix Intrinsic553730
! Node: IInt Intrinsic554033
! Node: IIOr Intrinsic554332
! Node: IIQint Intrinsic554632
! Node: IIQNnt Intrinsic554940
! Node: IIShftC Intrinsic555251
! Node: IISign Intrinsic555565
! Node: IMax0 Intrinsic555875
! Node: IMax1 Intrinsic556180
! Node: IMin0 Intrinsic556484
! Node: IMin1 Intrinsic556788
! Node: IMod Intrinsic557091
! Node: INInt Intrinsic557391
! Node: INot Intrinsic557693
! Node: IZExt Intrinsic557993
! Node: JIAbs Intrinsic558296
! Node: JIAnd Intrinsic558600
! Node: JIBClr Intrinsic558905
! Node: JIBits Intrinsic559214
! Node: JIBSet Intrinsic559524
! Node: JIDiM Intrinsic559833
! Node: JIDInt Intrinsic560139
! Node: JIDNnt Intrinsic560448
! Node: JIEOr Intrinsic560757
! Node: JIFix Intrinsic561062
! Node: JInt Intrinsic561365
! Node: JIOr Intrinsic561664
! Node: JIQint Intrinsic561964
! Node: JIQNnt Intrinsic562272
! Node: JIShft Intrinsic562582
! Node: JIShftC Intrinsic562893
! Node: JISign Intrinsic563207
! Node: JMax0 Intrinsic563517
! Node: JMax1 Intrinsic563822
! Node: JMin0 Intrinsic564126
! Node: JMin1 Intrinsic564430
! Node: JMod Intrinsic564733
! Node: JNInt Intrinsic565033
! Node: JNot Intrinsic565335
! Node: JZExt Intrinsic565635
! Node: Kill Intrinsic (function)565948
! Node: Link Intrinsic (function)566629
! Node: QAbs Intrinsic567440
! Node: QACos Intrinsic567750
! Node: QACosD Intrinsic568054
! Node: QASin Intrinsic568362
! Node: QASinD Intrinsic568668
! Node: QATan Intrinsic568976
! Node: QATan2 Intrinsic569282
! Node: QATan2D Intrinsic569592
! Node: QATanD Intrinsic569906
! Node: QCos Intrinsic570215
! Node: QCosD Intrinsic570516
! Node: QCosH Intrinsic570819
! Node: QDiM Intrinsic571122
! Node: QExp Intrinsic571421
! Node: QExt Intrinsic571719
! Node: QExtD Intrinsic572018
! Node: QFloat Intrinsic572322
! Node: QInt Intrinsic572629
! Node: QLog Intrinsic572929
! Node: QLog10 Intrinsic573229
! Node: QMax1 Intrinsic573536
! Node: QMin1 Intrinsic573841
! Node: QMod Intrinsic574144
! Node: QNInt Intrinsic574444
! Node: QSin Intrinsic574746
! Node: QSinD Intrinsic575046
! Node: QSinH Intrinsic575349
! Node: QSqRt Intrinsic575653
! Node: QTan Intrinsic575956
! Node: QTanD Intrinsic576256
! Node: QTanH Intrinsic576559
! Node: Rename Intrinsic (function)576875
! Node: Secnds Intrinsic577679
! Node: Signal Intrinsic (function)578278
! Node: SinD Intrinsic581109
! Node: SnglQ Intrinsic581421
! Node: SymLnk Intrinsic (function)581736
! Node: System Intrinsic (function)582603
! Node: TanD Intrinsic583930
! Node: Time Intrinsic (VXT)584247
! Node: UMask Intrinsic (function)585001
! Node: Unlink Intrinsic (function)585609
! Node: ZExt Intrinsic586337
! Node: Other Compilers586625
! Node: Dropping f2c Compatibility589145
! Node: Compilers Other Than f2c592217
! Node: Other Languages594015
! Node: Interoperating with C and C++594280
! Node: C Interfacing Tools595313
! Node: C Access to Type Information596241
! Node: f2c Skeletons and Prototypes596928
! Ref: f2c Skeletons and Prototypes-Footnote-1598375
! Node: C++ Considerations598629
! Node: Startup Code599296
! Node: Debugging and Interfacing604085
! Node: Main Program Unit606772
! Node: Procedures609266
! Node: Functions611924
! Node: Names613542
! Node: Common Blocks616685
! Node: Local Equivalence Areas616949
! Node: Complex Variables617933
! Node: Arrays619053
! Node: Adjustable Arrays622386
! Node: Alternate Entry Points625245
! Node: Alternate Returns631947
! Node: Assigned Statement Labels632848
! Node: Run-time Library Errors634693
! Node: Collected Fortran Wisdom636645
! Node: Advantages Over f2c638081
! Node: Language Extensions639062
! Node: Diagnostic Abilities640236
! Node: Compiler Options640627
! Node: Compiler Speed641675
! Node: Program Speed642385
! Node: Ease of Debugging643970
! Node: Character and Hollerith Constants646079
! Node: Block Data and Libraries647051
! Node: Loops650380
! Node: Working Programs655606
! Node: Not My Type656350
! Node: Variables Assumed To Be Zero658281
! Node: Variables Assumed To Be Saved659335
! Node: Unwanted Variables660705
! Node: Unused Arguments661585
! Node: Surprising Interpretations of Code662048
! Node: Aliasing Assumed To Work662895
! Node: Output Assumed To Flush669093
! Node: Large File Unit Numbers671866
! Node: Floating-point precision674018
! Node: Inconsistent Calling Sequences675279
! Node: Overly Convenient Options676259
! Node: Faster Programs679565
! Node: Aligned Data680011
! Node: Prefer Automatic Uninitialized Variables684704
! Node: Avoid f2c Compatibility686070
! Node: Use Submodel Options686538
! Node: Trouble687542
! Node: But-bugs688866
! Node: Signal 11 and Friends690639
! Node: Cannot Link Fortran Programs692719
! Node: Large Common Blocks694002
! Node: Debugger Problems694428
! Node: NeXTStep Problems695143
! Node: Stack Overflow696969
! Node: Nothing Happens699858
! Node: Strange Behavior at Run Time701472
! Node: Floating-point Errors703960
! Node: Known Bugs709946
! Node: Missing Features717012
! Node: Better Source Model718939
! Node: Fortran 90 Support720708
! Node: Intrinsics in PARAMETER Statements721809
! Node: Arbitrary Concatenation722560
! Node: SELECT CASE on CHARACTER Type722963
! Node: RECURSIVE Keyword723250
! Node: Increasing Precision/Range723677
! Node: Popular Non-standard Types725215
! Node: Full Support for Compiler Types725554
! Node: Array Bounds Expressions726190
! Node: POINTER Statements726637
! Node: Sensible Non-standard Constructs727520
! Node: READONLY Keyword729846
! Node: FLUSH Statement730756
! Node: Expressions in FORMAT Statements731126
! Node: Explicit Assembler Code732301
! Node: Q Edit Descriptor732590
! Node: Old-style PARAMETER Statements733094
! Node: TYPE and ACCEPT I/O Statements733828
! Node: STRUCTURE UNION RECORD MAP734394
! Node: OPEN CLOSE and INQUIRE Keywords734880
! Node: ENCODE and DECODE735860
! Node: AUTOMATIC Statement736955
! Node: Suppressing Space Padding738202
! Node: Fortran Preprocessor739429
! Node: Bit Operations on Floating-point Data740002
! Node: Really Ugly Character Assignments740535
! Node: POSIX Standard740910
! Node: Floating-point Exception Handling741150
! Node: Nonportable Conversions742552
! Node: Large Automatic Arrays743095
! Node: Support for Threads743502
! Node: Enabling Debug Lines743927
! Node: Better Warnings744304
! Node: Gracefully Handle Sensible Bad Code745940
! Node: Non-standard Conversions746684
! Node: Non-standard Intrinsics747027
! Node: Modifying DO Variable747443
! Node: Better Pedantic Compilation748119
! Node: Warn About Implicit Conversions748747
! Node: Invalid Use of Hollerith Constant749334
! Node: Dummy Array Without Dimensioning Dummy749877
! Node: Invalid FORMAT Specifiers750790
! Node: Ambiguous Dialects751191
! Node: Unused Labels751602
! Node: Informational Messages751824
! Node: Uninitialized Variables at Run Time752227
! Node: Portable Unformatted Files752833
! Ref: Portable Unformatted Files-Footnote-1755789
! Node: Better List-directed I/O755817
! Node: Default to Console I/O756722
! Node: Labels Visible to Debugger757370
! Node: Disappointments757771
! Node: Mangling of Names758409
! Node: Multiple Definitions of External Names759259
! Node: Limitation on Implicit Declarations760622
! Node: Non-bugs760906
! Node: Backslash in Constants762031
! Node: Initializing Before Specifying766920
! Node: Context-Sensitive Intrinsicness768062
! Node: Context-Sensitive Constants769958
! Node: Equivalence Versus Equality772914
! Node: Order of Side Effects775957
! Node: Warnings and Errors777685
! Node: Open Questions779083
! Node: Bugs779552
! Node: Bug Criteria780240
! Node: Bug Reporting786477
! Node: Service786838
! Node: Adding Options787301
! Node: Projects791894
! Node: Efficiency792737
! Node: Better Optimization795634
! Node: Simplify Porting799004
! Node: More Extensions800759
! Node: Machine Model803847
! Node: Internals Documentation805133
! Node: Internals Improvements805440
! Node: Better Diagnostics808984
! Node: Front End809901
! Node: Overview of Sources810679
! Node: Overview of Translation Process817957
! Node: g77stripcard822235
! Node: lex.c824712
! Node: sta.c834252
! Node: sti.c834363
! Node: stq.c834474
! Node: stb.c834585
! Node: expr.c834697
! Node: stc.c834811
! Node: std.c834923
! Node: ste.c835034
! Node: Gotchas (Transforming)835162
! Node: TBD (Transforming)843281
! Node: Philosophy of Code Generation845977
! Node: Two-pass Design851881
! Node: Two-pass Code853038
! Node: Why Two Passes853771
! Node: Challenges Posed859839
! Node: Transforming Statements862323
! Node: Statements Needing Temporaries863173
! Node: Transforming DO WHILE865937
! Node: Transforming Iterative DO867120
! Node: Transforming Block IF867949
! Node: Transforming SELECT CASE869314
! Node: Transforming Expressions872536
! Node: Internal Naming Conventions874525
! Node: Diagnostics877524
! Node: CMPAMBIG878922
! Node: EXPIMP885339
! Node: INTGLOB886575
! Node: LEX888819
! Node: GLOBALS894274
! Node: LINKFAIL896938
! Node: Y2KBAD897562
! Node: Keyword Index897912
End Tag Table
--- 24787,28447 ----
Keyword Index
*************
+ [index ]
* Menu:
! * ! <1>: LEX. (line 46)
! * ! <2>: Exclamation Point. (line 6)
! * ! <3>: Trailing Comment. (line 6)
! * ! <4>: Character Set. (line 17)
* !: Statements Comments Lines.
! (line 8)
! * ": Character Set. (line 19)
* # <1>: Cpp-style directives.
! (line 6)
! * #: Character Set. (line 25)
! * #define: Overall Options. (line 56)
! * #if: Overall Options. (line 56)
! * #include: Overall Options. (line 56)
! * $: Dollar Signs. (line 6)
! * %: Character Set. (line 29)
! * %DESCR() construct: %DESCR(). (line 6)
! * %LOC() construct: %LOC(). (line 6)
! * %REF() construct: %REF(). (line 6)
! * %VAL() construct: %VAL(). (line 6)
! * &: Character Set. (line 27)
! * *: LEX. (line 44)
! * *N notation <1>: Compiler Types. (line 95)
! * *N notation: Star Notation. (line 6)
! * --driver option <1>: Changes. (line 430)
! * --driver option: News. (line 668)
* -falias-check option <1>: Aliasing Assumed To Work.
! (line 6)
! * -falias-check option: Code Gen Options. (line 197)
* -fargument-alias option <1>: Aliasing Assumed To Work.
! (line 6)
! * -fargument-alias option: Code Gen Options. (line 197)
* -fargument-noalias option <1>: Aliasing Assumed To Work.
! (line 6)
! * -fargument-noalias option: Code Gen Options. (line 197)
* -fbadu77-intrinsics-delete option: Fortran Dialect Options.
+ (line 243)
* -fbadu77-intrinsics-disable option: Fortran Dialect Options.
+ (line 246)
* -fbadu77-intrinsics-enable option: Fortran Dialect Options.
+ (line 248)
* -fbadu77-intrinsics-hide option: Fortran Dialect Options.
! (line 244)
! * -fbounds-check option: Code Gen Options. (line 262)
! * -fcaller-saves option: Optimize Options. (line 109)
* -fcase-initcap option: Fortran Dialect Options.
+ (line 222)
* -fcase-lower option: Fortran Dialect Options.
+ (line 232)
* -fcase-preserve option: Fortran Dialect Options.
+ (line 236)
* -fcase-strict-lower option: Fortran Dialect Options.
+ (line 217)
* -fcase-strict-upper option: Fortran Dialect Options.
+ (line 212)
* -fcase-upper option: Fortran Dialect Options.
! (line 228)
! * -fdelayed-branch option: Optimize Options. (line 103)
* -fdollar-ok option: Fortran Dialect Options.
! (line 37)
! * -femulate-complex option: Code Gen Options. (line 170)
! * -fexpensive-optimizations option: Optimize Options. (line 101)
* -ff2c-intrinsics-delete option: Fortran Dialect Options.
+ (line 254)
* -ff2c-intrinsics-disable option: Fortran Dialect Options.
+ (line 257)
* -ff2c-intrinsics-enable option: Fortran Dialect Options.
+ (line 259)
* -ff2c-intrinsics-hide option: Fortran Dialect Options.
! (line 255)
! * -ff2c-library option: Code Gen Options. (line 63)
! * -ff66 option: Shorthand Options. (line 34)
! * -ff77 option: Shorthand Options. (line 45)
! * -ff90: Fortran 90 Features. (line 11)
* -ff90 option: Fortran Dialect Options.
+ (line 15)
* -ff90-intrinsics-delete option: Fortran Dialect Options.
+ (line 265)
* -ff90-intrinsics-disable option: Fortran Dialect Options.
+ (line 268)
* -ff90-intrinsics-enable option: Fortran Dialect Options.
+ (line 270)
* -ff90-intrinsics-hide option: Fortran Dialect Options.
! (line 266)
! * -ffast-math option: Optimize Options. (line 71)
! * -ffinite-math-only option: Optimize Options. (line 81)
* -ffixed-line-length-N option: Fortran Dialect Options.
! (line 318)
! * -fflatten-arrays option: Code Gen Options. (line 254)
! * -ffloat-store option: Optimize Options. (line 39)
! * -fforce-addr option: Optimize Options. (line 61)
! * -fforce-mem option: Optimize Options. (line 60)
! * -ffortran-bounds-check option: Code Gen Options. (line 262)
! * -ffree-form: Fortran 90 Features. (line 10)
* -ffree-form option: Fortran Dialect Options.
+ (line 9)
* -fgnu-intrinsics-delete option: Fortran Dialect Options.
+ (line 276)
* -fgnu-intrinsics-disable option: Fortran Dialect Options.
+ (line 279)
* -fgnu-intrinsics-enable option: Fortran Dialect Options.
+ (line 281)
* -fgnu-intrinsics-hide option: Fortran Dialect Options.
+ (line 277)
* -fGROUP-intrinsics-hide option: Overly Convenient Options.
+ (line 63)
* -finit-local-zero option <1>: Overly Convenient Options.
! (line 16)
! * -finit-local-zero option: Code Gen Options. (line 20)
* -fintrin-case-any option: Fortran Dialect Options.
+ (line 178)
* -fintrin-case-initcap option: Fortran Dialect Options.
+ (line 173)
* -fintrin-case-lower option: Fortran Dialect Options.
+ (line 176)
* -fintrin-case-upper option: Fortran Dialect Options.
+ (line 174)
* -fmatch-case-any option: Fortran Dialect Options.
+ (line 188)
* -fmatch-case-initcap option: Fortran Dialect Options.
+ (line 183)
* -fmatch-case-lower option: Fortran Dialect Options.
+ (line 186)
* -fmatch-case-upper option: Fortran Dialect Options.
+ (line 184)
* -fmil-intrinsics-delete option: Fortran Dialect Options.
+ (line 287)
* -fmil-intrinsics-disable option: Fortran Dialect Options.
+ (line 290)
* -fmil-intrinsics-enable option: Fortran Dialect Options.
+ (line 292)
* -fmil-intrinsics-hide option: Fortran Dialect Options.
+ (line 288)
* -fno-argument-noalias-global option <1>: Aliasing Assumed To Work.
! (line 6)
! * -fno-argument-noalias-global option: Code Gen Options. (line 197)
* -fno-automatic option <1>: Overly Convenient Options.
! (line 32)
! * -fno-automatic option: Code Gen Options. (line 14)
* -fno-backslash option: Fortran Dialect Options.
! (line 40)
! * -fno-common option: Code Gen Options. (line 332)
* -fno-f2c option <1>: Avoid f2c Compatibility.
! (line 6)
! * -fno-f2c option: Code Gen Options. (line 29)
! * -fno-f77 option: Shorthand Options. (line 54)
* -fno-fixed-form option: Fortran Dialect Options.
! (line 9)
! * -fno-globals option: Code Gen Options. (line 223)
! * -fno-ident option: Code Gen Options. (line 145)
! * -fno-inline option: Optimize Options. (line 65)
! * -fno-move-all-movables option: Optimize Options. (line 134)
! * -fno-reduce-all-givs option: Optimize Options. (line 136)
! * -fno-rerun-loop-opt option: Optimize Options. (line 138)
* -fno-second-underscore: f2c Skeletons and Prototypes.
! (line 6)
! * -fno-second-underscore option <1>: Names. (line 23)
! * -fno-second-underscore option: Code Gen Options. (line 135)
! * -fno-silent option: Overall Options. (line 134)
! * -fno-trapping-math option: Optimize Options. (line 91)
! * -fno-ugly option: Shorthand Options. (line 24)
* -fno-ugly-args option: Fortran Dialect Options.
+ (line 59)
* -fno-ugly-init option: Fortran Dialect Options.
! (line 108)
! * -fno-underscoring option <1>: Names. (line 23)
! * -fno-underscoring option: Code Gen Options. (line 73)
* -fonetrip option: Fortran Dialect Options.
! (line 127)
! * -fpack-struct option: Code Gen Options. (line 336)
! * -fpcc-struct-return option: Code Gen Options. (line 321)
! * -fpedantic option: Warning Options. (line 44)
! * -fPIC option: News. (line 854)
! * -freg-struct-return option: Code Gen Options. (line 322)
! * -frerun-cse-after-loop option: Optimize Options. (line 100)
! * -fschedule-insns option: Optimize Options. (line 105)
! * -fschedule-insns2 option: Optimize Options. (line 107)
! * -fset-g77-defaults option: Overall Options. (line 111)
! * -fshort-double option: Code Gen Options. (line 328)
* -fsource-case-lower option: Fortran Dialect Options.
+ (line 194)
* -fsource-case-preserve option: Fortran Dialect Options.
+ (line 196)
* -fsource-case-upper option: Fortran Dialect Options.
! (line 193)
! * -fstrength-reduce option: Optimize Options. (line 97)
* -fsymbol-case-any option: Fortran Dialect Options.
+ (line 207)
* -fsymbol-case-initcap option: Fortran Dialect Options.
+ (line 202)
* -fsymbol-case-lower option: Fortran Dialect Options.
+ (line 205)
* -fsymbol-case-upper option: Fortran Dialect Options.
! (line 203)
! * -fsyntax-only option: Warning Options. (line 20)
* -ftypeless-boz option: Fortran Dialect Options.
! (line 153)
! * -fugly option: Shorthand Options. (line 9)
* -fugly-assign option: Fortran Dialect Options.
+ (line 65)
* -fugly-assumed option: Fortran Dialect Options.
+ (line 72)
* -fugly-comma option: Fortran Dialect Options.
+ (line 82)
* -fugly-complex option: Fortran Dialect Options.
+ (line 99)
* -fugly-logint option: Fortran Dialect Options.
+ (line 118)
* -funix-intrinsics-delete option: Fortran Dialect Options.
+ (line 298)
* -funix-intrinsics-disable option: Fortran Dialect Options.
+ (line 301)
* -funix-intrinsics-enable option: Fortran Dialect Options.
+ (line 303)
* -funix-intrinsics-hide option: Fortran Dialect Options.
! (line 299)
! * -funroll-all-loops option: Optimize Options. (line 127)
! * -funroll-loops option: Optimize Options. (line 113)
! * -funsafe-math-optimizations option: Optimize Options. (line 77)
! * -fversion option: Overall Options. (line 99)
* -fvxt option: Fortran Dialect Options.
+ (line 26)
* -fvxt-intrinsics-delete option: Fortran Dialect Options.
+ (line 308)
* -fvxt-intrinsics-disable option: Fortran Dialect Options.
+ (line 311)
* -fvxt-intrinsics-enable option: Fortran Dialect Options.
+ (line 313)
* -fvxt-intrinsics-hide option: Fortran Dialect Options.
! (line 309)
! * -fzeros option: Code Gen Options. (line 148)
! * -g option: Debugging Options. (line 9)
! * -I- option: Directory Options. (line 14)
* -i8: Increasing Precision/Range.
! (line 6)
! * -Idir option: Directory Options. (line 15)
! * -malign-double <1>: Changes. (line 282)
! * -malign-double: News. (line 364)
! * -malign-double option <1>: Aligned Data. (line 59)
! * -malign-double option: Optimize Options. (line 16)
! * -Nl option: Compiler Limits. (line 10)
! * -Nx option: Compiler Limits. (line 10)
! * -O2: News. (line 560)
! * -pedantic option: Warning Options. (line 24)
! * -pedantic-errors option: Warning Options. (line 40)
* -qrealsize=8: Increasing Precision/Range.
+ (line 6)
* -r8: Increasing Precision/Range.
! (line 6)
! * -u option: Warning Options. (line 61)
! * -v option: G77 and GCC. (line 27)
! * -W option: Warning Options. (line 185)
! * -w option: Warning Options. (line 47)
! * -Waggregate-return option: Warning Options. (line 226)
! * -Wall option: Warning Options. (line 114)
! * -Wcomment option: Warning Options. (line 205)
! * -Wconversion option: Warning Options. (line 224)
! * -Werror option: Warning Options. (line 182)
! * -Wformat option: Warning Options. (line 206)
! * -Wid-clash-LEN option: Warning Options. (line 220)
! * -Wimplicit option: Warning Options. (line 60)
! * -Wlarger-than-LEN option: Warning Options. (line 222)
! * -Wno-globals option: Warning Options. (line 50)
! * -Wparentheses option: Warning Options. (line 208)
! * -Wredundant-decls option: Warning Options. (line 228)
! * -Wshadow option: Warning Options. (line 218)
! * -Wsurprising option: Warning Options. (line 124)
! * -Wswitch option: Warning Options. (line 210)
! * -Wswitch-default option: Warning Options. (line 212)
! * -Wswitch-enum option: Warning Options. (line 214)
! * -Wtraditional option: Warning Options. (line 216)
! * -Wuninitialized option: Warning Options. (line 69)
! * -Wunused option: Warning Options. (line 66)
! * -x f77-cpp-input option: LEX. (line 109)
* .EQV., with integer operands: Equivalence Versus Equality.
! (line 6)
! * .F filename suffix: Overall Options. (line 33)
! * .f filename suffix: Overall Options. (line 20)
! * .FOR filename suffix: Overall Options. (line 20)
! * .for filename suffix: Overall Options. (line 20)
! * .FPP filename suffix: Overall Options. (line 33)
! * .fpp filename suffix: Overall Options. (line 33)
! * .gdbinit: Main Program Unit. (line 33)
! * .r filename suffix: Overall Options. (line 45)
! * /* <1>: Trailing Comment. (line 6)
! * /*: Overall Options. (line 90)
! * /WARNINGS=DECLARATIONS switch: Warning Options. (line 61)
* 80-bit spills: Floating-point Errors.
! (line 113)
! * ; <1>: Character Set. (line 15)
* ;: Statements Comments Lines.
! (line 23)
! * <: Character Set. (line 33)
! * <> edit descriptor: I/O. (line 9)
! * >: Character Set. (line 35)
! * ?: Character Set. (line 23)
! * \: Character Set. (line 21)
! * _: Character Set. (line 31)
! * Abort intrinsic: Abort Intrinsic. (line 6)
! * Abs intrinsic: Abs Intrinsic. (line 6)
* ACCEPT statement: TYPE and ACCEPT I/O Statements.
! (line 6)
! * Access intrinsic: Access Intrinsic. (line 6)
! * AChar intrinsic: AChar Intrinsic. (line 6)
! * ACos intrinsic: ACos Intrinsic. (line 6)
! * ACosD intrinsic: ACosD Intrinsic. (line 6)
! * adding options: Adding Options. (line 6)
! * adjustable arrays: Adjustable Arrays. (line 6)
! * AdjustL intrinsic: AdjustL Intrinsic. (line 6)
! * AdjustR intrinsic: AdjustR Intrinsic. (line 6)
! * AImag intrinsic <1>: AImag Intrinsic. (line 6)
* AImag intrinsic: REAL() and AIMAG() of Complex.
! (line 6)
! * AIMax0 intrinsic: AIMax0 Intrinsic. (line 6)
! * AIMin0 intrinsic: AIMin0 Intrinsic. (line 6)
! * AInt intrinsic: AInt Intrinsic. (line 6)
! * AJMax0 intrinsic: AJMax0 Intrinsic. (line 6)
! * AJMin0 intrinsic: AJMin0 Intrinsic. (line 6)
! * Alarm intrinsic: Alarm Intrinsic. (line 6)
! * aliasing <1>: Known Bugs. (line 133)
* aliasing: Aliasing Assumed To Work.
! (line 6)
! * aligned data: Aligned Data. (line 6)
! * aligned stack: Aligned Data. (line 6)
! * alignment <1>: Aligned Data. (line 6)
! * alignment <2>: Changes. (line 282)
! * alignment: News. (line 364)
! * All intrinsic: All Intrinsic. (line 6)
! * all warnings: Warning Options. (line 115)
! * Allocated intrinsic: Allocated Intrinsic. (line 6)
! * ALog intrinsic: ALog Intrinsic. (line 6)
! * ALog10 intrinsic: ALog10 Intrinsic. (line 6)
! * Alpha, support: Known Bugs. (line 117)
* alternate entry points: Alternate Entry Points.
! (line 6)
! * alternate returns: Alternate Returns. (line 6)
* ALWAYS_FLUSH: Output Assumed To Flush.
! (line 6)
! * AMax0 intrinsic: AMax0 Intrinsic. (line 6)
! * AMax1 intrinsic: AMax1 Intrinsic. (line 6)
! * AMin0 intrinsic: AMin0 Intrinsic. (line 6)
! * AMin1 intrinsic: AMin1 Intrinsic. (line 6)
! * AMod intrinsic: AMod Intrinsic. (line 6)
! * ampersand: Character Set. (line 27)
! * ampersand continuation line: Ampersands. (line 6)
* And intrinsic <1>: Bit Operations on Floating-point Data.
! (line 6)
! * And intrinsic: And Intrinsic. (line 6)
! * ANInt intrinsic: ANInt Intrinsic. (line 6)
* ANS carriage control: OPEN CLOSE and INQUIRE Keywords.
! (line 10)
! * ANSI FORTRAN 77 standard: Language. (line 6)
! * ANSI FORTRAN 77 support: Standard Support. (line 6)
* anti-aliasing: Aliasing Assumed To Work.
! (line 6)
! * Any intrinsic: Any Intrinsic. (line 6)
! * arguments, null: Ugly Null Arguments. (line 6)
! * arguments, omitting: Ugly Null Arguments. (line 11)
! * arguments, unused <1>: Unused Arguments. (line 6)
! * arguments, unused: Warning Options. (line 192)
! * array bounds checking: Code Gen Options. (line 264)
* array bounds, adjustable: Array Bounds Expressions.
+ (line 6)
* array elements, in adjustable array bounds: Array Bounds Expressions.
! (line 6)
! * array ordering: Arrays. (line 6)
! * array performance: Code Gen Options. (line 255)
! * array size: Array Size. (line 6)
! * arrays: Arrays. (line 6)
! * arrays, adjustable: Adjustable Arrays. (line 6)
* arrays, assumed-size: Ugly Assumed-Size Arrays.
+ (line 6)
* arrays, automatic <1>: Large Automatic Arrays.
! (line 6)
! * arrays, automatic <2>: Stack Overflow. (line 41)
* arrays, automatic <3>: Overly Convenient Options.
! (line 53)
! * arrays, automatic: Adjustable Arrays. (line 6)
! * arrays, dimensioning <1>: Adjustable Arrays. (line 6)
! * arrays, dimensioning: Array Size. (line 22)
! * arrays, flattening: Code Gen Options. (line 255)
* as command: What is GNU Fortran?.
! (line 93)
! * ASin intrinsic: ASin Intrinsic. (line 6)
! * ASinD intrinsic: ASinD Intrinsic. (line 6)
* assembler: What is GNU Fortran?.
+ (line 93)
* assembly code: What is GNU Fortran?.
! (line 93)
! * assembly code, invalid: Bug Criteria. (line 13)
* ASSIGN statement <1>: Assigned Statement Labels.
+ (line 6)
* ASSIGN statement: Ugly Assigned Labels.
+ (line 6)
* assigned labels: Ugly Assigned Labels.
+ (line 6)
* assigned statement labels: Assigned Statement Labels.
+ (line 6)
* Associated intrinsic: Associated Intrinsic.
+ (line 6)
* association, storage: Aliasing Assumed To Work.
+ (line 6)
* assumed-size arrays: Ugly Assumed-Size Arrays.
! (line 6)
! * asterisk: LEX. (line 44)
! * ATan intrinsic: ATan Intrinsic. (line 6)
! * ATan2 intrinsic: ATan2 Intrinsic. (line 6)
! * ATan2D intrinsic: ATan2D Intrinsic. (line 6)
! * ATanD intrinsic: ATanD Intrinsic. (line 6)
* automatic arrays <1>: Large Automatic Arrays.
! (line 6)
! * automatic arrays <2>: Stack Overflow. (line 41)
* automatic arrays <3>: Overly Convenient Options.
! (line 53)
! * automatic arrays: Adjustable Arrays. (line 6)
! * AUTOMATIC statement: AUTOMATIC Statement. (line 6)
! * automatic variables: AUTOMATIC Statement. (line 6)
* back end, gcc <1>: Philosophy of Code Generation.
+ (line 10)
* back end, gcc: What is GNU Fortran?.
+ (line 165)
* backslash <1>: Backslash in Constants.
! (line 6)
! * backslash <2>: Character Set. (line 21)
* backslash: Fortran Dialect Options.
+ (line 41)
* badu77 intrinsics: Fortran Dialect Options.
! (line 250)
! * badu77 intrinsics group: Intrinsic Groups. (line 69)
* basic concepts: What is GNU Fortran?.
+ (line 6)
* Bear-poking: Philosophy of Code Generation.
! (line 69)
! * beginners: Getting Started. (line 6)
! * BesJ0 intrinsic: BesJ0 Intrinsic. (line 6)
! * BesJ1 intrinsic: BesJ1 Intrinsic. (line 6)
! * BesJN intrinsic: BesJN Intrinsic. (line 6)
! * BesY0 intrinsic: BesY0 Intrinsic. (line 6)
! * BesY1 intrinsic: BesY1 Intrinsic. (line 6)
! * BesYN intrinsic: BesYN Intrinsic. (line 6)
* binary data: Portable Unformatted Files.
! (line 6)
! * Bit_Size intrinsic: Bit_Size Intrinsic. (line 6)
! * BITest intrinsic: BITest Intrinsic. (line 6)
! * BJTest intrinsic: BJTest Intrinsic. (line 6)
! * blank <1>: Lines. (line 37)
! * blank: Character Set. (line 40)
* block data: Multiple Definitions of External Names.
+ (line 6)
* block data and libraries: Block Data and Libraries.
+ (line 6)
* BLOCK DATA statement <1>: Multiple Definitions of External Names.
+ (line 6)
* BLOCK DATA statement: Block Data and Libraries.
! (line 6)
! * bounds checking: Code Gen Options. (line 264)
! * BTest intrinsic: BTest Intrinsic. (line 6)
! * bug criteria: Bug Criteria. (line 6)
! * bugs: Bugs. (line 6)
* bugs, finding: What is GNU Fortran?.
! (line 33)
! * bugs, known: Trouble. (line 6)
* bus error <1>: Strange Behavior at Run Time.
! (line 6)
! * bus error: NeXTStep Problems. (line 6)
! * but-bugs: But-bugs. (line 6)
* byte ordering: Portable Unformatted Files.
+ (line 6)
* C library: Strange Behavior at Run Time.
! (line 42)
! * C preprocessor: Overall Options. (line 33)
* C routines calling Fortran: Debugging and Interfacing.
! (line 6)
! * C++: C++ Considerations. (line 6)
* C++, linking with: Interoperating with C and C++.
+ (line 6)
* C, linking with: Interoperating with C and C++.
! (line 6)
! * CAbs intrinsic: CAbs Intrinsic. (line 6)
* calling C routines: Debugging and Interfacing.
+ (line 6)
* card image: Fortran Dialect Options.
+ (line 323)
* carriage control: OPEN CLOSE and INQUIRE Keywords.
! (line 10)
! * carriage returns: Carriage Returns. (line 6)
! * case sensitivity: Case Sensitivity. (line 6)
* cc1 program: What is GNU Fortran?.
+ (line 106)
* cc1plus program: What is GNU Fortran?.
! (line 111)
! * CCos intrinsic: CCos Intrinsic. (line 6)
! * CDAbs intrinsic: CDAbs Intrinsic. (line 6)
! * CDCos intrinsic: CDCos Intrinsic. (line 6)
! * CDExp intrinsic: CDExp Intrinsic. (line 6)
! * CDLog intrinsic: CDLog Intrinsic. (line 6)
! * CDSin intrinsic: CDSin Intrinsic. (line 6)
! * CDSqRt intrinsic: CDSqRt Intrinsic. (line 6)
! * Ceiling intrinsic: Ceiling Intrinsic. (line 6)
! * CExp intrinsic: CExp Intrinsic. (line 6)
! * cfortran.h: C Interfacing Tools. (line 6)
! * changes, user-visible: Changes. (line 6)
! * Char intrinsic: Char Intrinsic. (line 6)
! * character assignments: Fortran 90 Features. (line 19)
* character constants <1>: Character and Hollerith Constants.
+ (line 6)
* character constants <2>: Ugly Conversion of Initializers.
+ (line 20)
* character constants <3>: Double Quote Meaning.
+ (line 6)
* character constants: Fortran Dialect Options.
+ (line 41)
* character set: Fortran Dialect Options.
+ (line 38)
* CHARACTER*(*): Arbitrary Concatenation.
! (line 6)
! * CHARACTER, null: Character Type. (line 14)
* character-variable length: Character-variable Length.
! (line 6)
! * characters: Character Set. (line 6)
! * characters, comma: Ugly Null Arguments. (line 6)
! * characters, comment <1>: LEX. (line 46)
! * characters, comment <2>: Exclamation Point. (line 6)
! * characters, comment <3>: Trailing Comment. (line 6)
* characters, comment: Statements Comments Lines.
! (line 8)
! * characters, continuation <1>: LEX. (line 39)
! * characters, continuation <2>: Exclamation Point. (line 6)
* characters, continuation: Statements Comments Lines.
+ (line 8)
* ChDir intrinsic <1>: ChDir Intrinsic (function).
+ (line 6)
* ChDir intrinsic: ChDir Intrinsic (subroutine).
! (line 6)
! * checking subscripts: Code Gen Options. (line 264)
! * checking substrings: Code Gen Options. (line 264)
! * checks, of internal consistency: Overall Options. (line 99)
* ChMod intrinsic <1>: ChMod Intrinsic (function).
+ (line 6)
* ChMod intrinsic: ChMod Intrinsic (subroutine).
! (line 6)
! * CLog intrinsic: CLog Intrinsic. (line 6)
! * close angle: Character Set. (line 35)
! * close bracket: Character Set. (line 35)
* CLOSE statement: OPEN CLOSE and INQUIRE Keywords.
! (line 6)
! * Cmplx intrinsic <1>: Cmplx Intrinsic. (line 6)
* Cmplx intrinsic: CMPLX() of DOUBLE PRECISION.
! (line 6)
! * code generation, conventions: Code Gen Options. (line 6)
! * code generation, improving: Better Optimization. (line 6)
* code generator <1>: Philosophy of Code Generation.
+ (line 10)
* code generator: What is GNU Fortran?.
+ (line 165)
* code, assembly: What is GNU Fortran?.
! (line 93)
! * code, displaying main source: Known Bugs. (line 93)
* code, in-line: What is GNU Fortran?.
+ (line 147)
* code, legacy: Collected Fortran Wisdom.
+ (line 6)
* code, machine: What is GNU Fortran?.
! (line 24)
! * code, source <1>: Case Sensitivity. (line 6)
! * code, source <2>: Source Form. (line 6)
! * code, source <3>: Lines. (line 6)
* code, source: What is GNU Fortran?.
+ (line 20)
* code, user: Cannot Link Fortran Programs.
+ (line 6)
* code, writing: Collected Fortran Wisdom.
! (line 6)
! * column-major ordering: Arrays. (line 6)
! * columns 73 through 80: Better Source Model. (line 28)
! * comma, trailing: Ugly Null Arguments. (line 6)
! * command options: Invoking G77. (line 6)
* commands, as: What is GNU Fortran?.
! (line 93)
! * commands, g77 <1>: G77 and GCC. (line 21)
* commands, g77: What is GNU Fortran?.
! (line 78)
! * commands, gcc <1>: G77 and GCC. (line 6)
* commands, gcc: What is GNU Fortran?.
+ (line 72)
* commands, gdb: What is GNU Fortran?.
+ (line 33)
* commands, ld: What is GNU Fortran?.
! (line 37)
! * comment <1>: LEX. (line 46)
! * comment <2>: Trailing Comment. (line 6)
* comment: Statements Comments Lines.
! (line 8)
! * comment character: Exclamation Point. (line 6)
* comment line, debug <1>: Enabling Debug Lines.
! (line 6)
! * comment line, debug: Debug Line. (line 6)
! * common blocks <1>: Mangling of Names. (line 6)
! * common blocks <2>: Known Bugs. (line 122)
! * common blocks: Common Blocks. (line 6)
! * common blocks, large: Large Common Blocks. (line 6)
! * COMMON layout: Aligned Data. (line 20)
* COMMON statement <1>: Multiple Definitions of External Names.
! (line 6)
! * COMMON statement: Common Blocks. (line 6)
* comparing logical expressions: Equivalence Versus Equality.
+ (line 6)
* compatibility, f2c <1>: Avoid f2c Compatibility.
+ (line 6)
* compatibility, f2c <2>: Block Data and Libraries.
! (line 6)
! * compatibility, f2c <3>: Code Gen Options. (line 30)
! * compatibility, f2c <4>: Shorthand Options. (line 46)
! * compatibility, f2c: Overall Options. (line 134)
! * compatibility, f77: Shorthand Options. (line 46)
* compatibility, FORTRAN 66 <1>: Fortran Dialect Options.
! (line 128)
! * compatibility, FORTRAN 66: Shorthand Options. (line 35)
! * compatibility, FORTRAN 77: Standard Support. (line 6)
! * compatibility, Fortran 90: Fortran 90. (line 6)
! * compilation, in-line <1>: GLOBALS. (line 26)
! * compilation, in-line <2>: Code Gen Options. (line 224)
! * compilation, in-line: Optimize Options. (line 66)
* compilation, pedantic: Pedantic Compilation.
! (line 6)
! * compilation, status: Overall Options. (line 134)
! * compiler bugs, reporting: Bug Reporting. (line 6)
! * compiler limits: Compiler Limits. (line 6)
! * compiler memory usage: Known Bugs. (line 45)
! * compiler speed: Known Bugs. (line 45)
* compilers: What is GNU Fortran?.
! (line 17)
! * compiling programs: G77 and GCC. (line 6)
! * Complex intrinsic: Complex Intrinsic. (line 6)
* COMPLEX intrinsics: Fortran Dialect Options.
! (line 283)
! * complex performance: Known Bugs. (line 133)
! * COMPLEX statement: Complex Variables. (line 6)
* complex values: Ugly Complex Part Extraction.
! (line 6)
! * complex variables: Complex Variables. (line 6)
! * COMPLEX(KIND=1) type: Compiler Types. (line 88)
! * COMPLEX(KIND=2) type: Compiler Types. (line 92)
* components of g77: What is GNU Fortran?.
+ (line 70)
* concatenation: Arbitrary Concatenation.
+ (line 6)
* concepts, basic: What is GNU Fortran?.
+ (line 6)
* conformance, IEEE 754 <1>: Floating-point precision.
! (line 6)
! * conformance, IEEE 754: Optimize Options. (line 40)
! * Conjg intrinsic: Conjg Intrinsic. (line 6)
! * consistency checks: Overall Options. (line 99)
! * constants <1>: Compiler Constants. (line 6)
! * constants: Constants. (line 6)
* constants, character <1>: Character and Hollerith Constants.
+ (line 6)
* constants, character <2>: Ugly Conversion of Initializers.
+ (line 20)
* constants, character: Double Quote Meaning.
+ (line 6)
* constants, context-sensitive: Context-Sensitive Constants.
+ (line 6)
* constants, Hollerith <1>: Character and Hollerith Constants.
+ (line 6)
* constants, Hollerith <2>: Ugly Conversion of Initializers.
+ (line 8)
* constants, Hollerith: Ugly Implicit Argument Conversion.
! (line 6)
! * constants, integer: Known Bugs. (line 32)
* constants, octal: Double Quote Meaning.
+ (line 6)
* constants, prefix-radix: Fortran Dialect Options.
+ (line 153)
* constants, types: Fortran Dialect Options.
! (line 153)
! * construct names: Construct Names. (line 6)
* context-sensitive constants: Context-Sensitive Constants.
+ (line 6)
* context-sensitive intrinsics: Context-Sensitive Intrinsicness.
! (line 6)
! * continuation character <1>: LEX. (line 39)
! * continuation character <2>: Exclamation Point. (line 6)
* continuation character: Statements Comments Lines.
! (line 8)
! * continuation line, ampersand: Ampersands. (line 6)
! * continuation line, number of: Continuation Line. (line 6)
! * contributors: Contributors. (line 6)
* conversions, nonportable: Nonportable Conversions.
! (line 6)
! * core dump: Bug Criteria. (line 9)
! * Cos intrinsic: Cos Intrinsic. (line 6)
! * CosD intrinsic: CosD Intrinsic. (line 6)
! * CosH intrinsic: CosH Intrinsic. (line 6)
! * Count intrinsic: Count Intrinsic. (line 6)
! * cpp preprocessor: Overall Options. (line 33)
! * cpp program <1>: LEX. (line 109)
* cpp program <2>: Preprocessor Options.
! (line 6)
! * cpp program <3>: Overall Options. (line 33)
* cpp program: What is GNU Fortran?.
! (line 106)
! * CPU_Time intrinsic: CPU_Time Intrinsic. (line 6)
! * Cray pointers: POINTER Statements. (line 6)
! * credits: Contributors. (line 6)
! * CShift intrinsic: CShift Intrinsic. (line 6)
! * CSin intrinsic: CSin Intrinsic. (line 6)
! * CSqRt intrinsic: CSqRt Intrinsic. (line 6)
* CTime intrinsic <1>: CTime Intrinsic (function).
+ (line 6)
* CTime intrinsic: CTime Intrinsic (subroutine).
! (line 6)
! * CYCLE statement: CYCLE and EXIT. (line 6)
! * DAbs intrinsic: DAbs Intrinsic. (line 6)
! * DACos intrinsic: DACos Intrinsic. (line 6)
! * DACosD intrinsic: DACosD Intrinsic. (line 6)
! * DASin intrinsic: DASin Intrinsic. (line 6)
! * DASinD intrinsic: DASinD Intrinsic. (line 6)
! * DATA statement <1>: Known Bugs. (line 45)
! * DATA statement: Code Gen Options. (line 21)
! * data types: Compiler Types. (line 6)
! * data, aligned: Aligned Data. (line 6)
* data, overwritten: Strange Behavior at Run Time.
! (line 6)
! * DATan intrinsic: DATan Intrinsic. (line 6)
! * DATan2 intrinsic: DATan2 Intrinsic. (line 6)
! * DATan2D intrinsic: DATan2D Intrinsic. (line 6)
! * DATanD intrinsic: DATanD Intrinsic. (line 6)
! * Date intrinsic: Date Intrinsic. (line 6)
* Date_and_Time intrinsic: Date_and_Time Intrinsic.
+ (line 6)
* date_y2kbuggy_0: Year 2000 (Y2K) Problems.
! (line 28)
! * DbesJ0 intrinsic: DbesJ0 Intrinsic. (line 6)
! * DbesJ1 intrinsic: DbesJ1 Intrinsic. (line 6)
! * DbesJN intrinsic: DbesJN Intrinsic. (line 6)
! * DbesY0 intrinsic: DbesY0 Intrinsic. (line 6)
! * DbesY1 intrinsic: DbesY1 Intrinsic. (line 6)
! * DbesYN intrinsic: DbesYN Intrinsic. (line 6)
! * Dble intrinsic: Dble Intrinsic. (line 6)
! * DbleQ intrinsic: DbleQ Intrinsic. (line 6)
! * DCmplx intrinsic: DCmplx Intrinsic. (line 6)
! * DConjg intrinsic: DConjg Intrinsic. (line 6)
! * DCos intrinsic: DCos Intrinsic. (line 6)
! * DCosD intrinsic: DCosD Intrinsic. (line 6)
! * DCosH intrinsic: DCosH Intrinsic. (line 6)
! * DDiM intrinsic: DDiM Intrinsic. (line 6)
* debug line <1>: Enabling Debug Lines.
! (line 6)
! * debug line: Debug Line. (line 6)
! * debugger <1>: Known Bugs. (line 102)
* debugger: What is GNU Fortran?.
! (line 33)
! * debugging <1>: Names. (line 36)
! * debugging <2>: Main Program Unit. (line 33)
* debugging: Debugging and Interfacing.
! (line 6)
! * debugging information options: Debugging Options. (line 6)
! * debugging main source code: Known Bugs. (line 93)
! * DECODE statement: ENCODE and DECODE. (line 6)
! * deleted intrinsics: Intrinsic Groups. (line 10)
! * DErF intrinsic: DErF Intrinsic. (line 6)
! * DErFC intrinsic: DErFC Intrinsic. (line 6)
! * DExp intrinsic: DExp Intrinsic. (line 6)
! * DFloat intrinsic: DFloat Intrinsic. (line 6)
! * DFlotI intrinsic: DFlotI Intrinsic. (line 6)
! * DFlotJ intrinsic: DFlotJ Intrinsic. (line 6)
! * diagnostics: Diagnostics. (line 6)
* diagnostics, incorrect: What is GNU Fortran?.
+ (line 51)
* dialect options: Fortran Dialect Options.
+ (line 6)
* Digital Fortran features: Fortran Dialect Options.
! (line 283)
! * Digits intrinsic: Digits Intrinsic. (line 6)
! * DiM intrinsic: DiM Intrinsic. (line 6)
! * DImag intrinsic: DImag Intrinsic. (line 6)
* DIMENSION statement <1>: Array Bounds Expressions.
! (line 6)
! * DIMENSION statement <2>: Adjustable Arrays. (line 6)
! * DIMENSION statement: Arrays. (line 6)
* DIMENSION X(1): Ugly Assumed-Size Arrays.
! (line 6)
! * dimensioning arrays: Adjustable Arrays. (line 6)
! * DInt intrinsic: DInt Intrinsic. (line 6)
* direction of language development: Direction of Language Development.
! (line 6)
! * directive, INCLUDE <1>: Directory Options. (line 10)
* directive, INCLUDE: Preprocessor Options.
! (line 12)
! * directory, options: Directory Options. (line 6)
! * directory, search paths for inclusion: Directory Options. (line 17)
! * disabled intrinsics: Intrinsic Groups. (line 13)
* disk full: Output Assumed To Flush.
! (line 6)
! * displaying main source code: Known Bugs. (line 93)
* disposition of files: OPEN CLOSE and INQUIRE Keywords.
! (line 6)
! * distensions: Distensions. (line 6)
! * DLog intrinsic: DLog Intrinsic. (line 6)
! * DLog10 intrinsic: DLog10 Intrinsic. (line 6)
! * DMax1 intrinsic: DMax1 Intrinsic. (line 6)
! * DMin1 intrinsic: DMin1 Intrinsic. (line 6)
! * DMod intrinsic: DMod Intrinsic. (line 6)
! * DNInt intrinsic: DNInt Intrinsic. (line 6)
! * DNRM2: News. (line 560)
! * DO: DO WHILE. (line 6)
* DO loops, one-trip: Fortran Dialect Options.
+ (line 128)
* DO loops, zero-trip: Fortran Dialect Options.
! (line 128)
! * DO statement <1>: Loops. (line 6)
! * DO statement: Warning Options. (line 171)
! * DO WHILE <1>: DO WHILE. (line 6)
! * DO WHILE: Optimize Options. (line 127)
! * dollar sign <1>: Dollar Signs. (line 6)
! * dollar sign <2>: I/O. (line 6)
* dollar sign: Fortran Dialect Options.
+ (line 38)
* Dot_Product intrinsic: Dot_Product Intrinsic.
! (line 6)
! * DOUBLE COMPLEX: DOUBLE COMPLEX. (line 6)
! * DOUBLE COMPLEX type: Compiler Types. (line 103)
! * DOUBLE PRECISION type: Compiler Types. (line 100)
! * double quote: Character Set. (line 19)
! * double quoted character constants <1>: Fortran 90 Features. (line 23)
! * double quoted character constants: Character Type. (line 8)
* double quotes: Double Quote Meaning.
! (line 6)
! * double-precision performance <1>: Changes. (line 282)
! * double-precision performance: News. (line 364)
! * DProd intrinsic: DProd Intrinsic. (line 6)
! * DReal intrinsic: DReal Intrinsic. (line 6)
* driver, gcc command as: What is GNU Fortran?.
! (line 106)
! * DSign intrinsic: DSign Intrinsic. (line 6)
! * DSin intrinsic: DSin Intrinsic. (line 6)
! * DSinD intrinsic: DSinD Intrinsic. (line 6)
! * DSinH intrinsic: DSinH Intrinsic. (line 6)
! * DSqRt intrinsic: DSqRt Intrinsic. (line 6)
! * DTan intrinsic: DTan Intrinsic. (line 6)
! * DTanD intrinsic: DTanD Intrinsic. (line 6)
! * DTanH intrinsic: DTanH Intrinsic. (line 6)
* DTime intrinsic <1>: DTime Intrinsic (function).
+ (line 6)
* DTime intrinsic: DTime Intrinsic (subroutine).
! (line 6)
! * dummies, unused: Warning Options. (line 192)
! * edit descriptor, <>: I/O. (line 9)
! * edit descriptor, O: I/O. (line 16)
! * edit descriptor, Q: Q Edit Descriptor. (line 6)
! * edit descriptor, Z <1>: Fortran 90 Features. (line 68)
! * edit descriptor, Z: I/O. (line 16)
! * effecting IMPLICIT NONE: Warning Options. (line 61)
! * efficiency: Efficiency. (line 6)
! * ELF support: News. (line 854)
! * empty CHARACTER strings: Character Type. (line 14)
! * enabled intrinsics: Intrinsic Groups. (line 23)
! * ENCODE statement: ENCODE and DECODE. (line 6)
! * END DO: END DO. (line 6)
* entry points: Alternate Entry Points.
+ (line 6)
* ENTRY statement: Alternate Entry Points.
+ (line 6)
* environment variables: Environment Variables.
! (line 6)
! * EOShift intrinsic: EOShift Intrinsic. (line 6)
! * Epsilon intrinsic: Epsilon Intrinsic. (line 6)
! * equivalence areas <1>: Known Bugs. (line 122)
* equivalence areas: Local Equivalence Areas.
+ (line 6)
* EQUIVALENCE statement: Local Equivalence Areas.
! (line 6)
! * ErF intrinsic: ErF Intrinsic. (line 6)
! * ErFC intrinsic: ErFC Intrinsic. (line 6)
! * error messages <1>: Warnings and Errors. (line 6)
* error messages: Run-time Library Errors.
+ (line 6)
* error messages, incorrect: What is GNU Fortran?.
+ (line 51)
* error values: Run-time Library Errors.
! (line 6)
! * errors, linker: Large Common Blocks. (line 6)
* ETime intrinsic <1>: ETime Intrinsic (function).
+ (line 6)
* ETime intrinsic: ETime Intrinsic (subroutine).
+ (line 6)
* exceptions, floating-point: Floating-point Exception Handling.
! (line 6)
! * exclamation point <1>: LEX. (line 46)
! * exclamation point <2>: Exclamation Point. (line 6)
! * exclamation point <3>: Trailing Comment. (line 6)
! * exclamation point <4>: Character Set. (line 17)
* exclamation point: Statements Comments Lines.
+ (line 8)
* executable file: What is GNU Fortran?.
! (line 106)
! * Exit intrinsic: Exit Intrinsic. (line 6)
! * EXIT statement: CYCLE and EXIT. (line 6)
! * Exp intrinsic: Exp Intrinsic. (line 6)
! * Exponent intrinsic: Exponent Intrinsic. (line 6)
* extended-source option: Fortran Dialect Options.
! (line 323)
! * extensions, file name: Overall Options. (line 13)
! * extensions, from Fortran 90: Fortran 90 Features. (line 6)
! * extensions, more: More Extensions. (line 6)
! * extensions, VXT: VXT Fortran. (line 6)
! * external names: Mangling of Names. (line 6)
! * extra warnings: Warning Options. (line 186)
* f2c: Increasing Precision/Range.
+ (line 6)
* f2c compatibility <1>: Avoid f2c Compatibility.
+ (line 6)
* f2c compatibility <2>: Block Data and Libraries.
+ (line 6)
* f2c compatibility <3>: Debugging and Interfacing.
! (line 6)
! * f2c compatibility <4>: Code Gen Options. (line 30)
! * f2c compatibility <5>: Shorthand Options. (line 46)
! * f2c compatibility: Overall Options. (line 134)
* f2c intrinsics: Fortran Dialect Options.
! (line 261)
! * f2c intrinsics group: Intrinsic Groups. (line 77)
! * f77 compatibility: Shorthand Options. (line 46)
* f77 support: Backslash in Constants.
+ (line 6)
* f771, program: What is GNU Fortran?.
! (line 93)
! * f90 intrinsics group: Intrinsic Groups. (line 80)
! * fatal signal: Bug Criteria. (line 9)
* FDate intrinsic <1>: FDate Intrinsic (function).
+ (line 6)
* FDate intrinsic: FDate Intrinsic (subroutine).
+ (line 6)
* FDL, GNU Free Documentation License: GNU Free Documentation License.
+ (line 6)
* features, language: Direction of Language Development.
! (line 6)
! * features, ugly <1>: Distensions. (line 6)
! * features, ugly: Shorthand Options. (line 10)
! * FFE <1>: Front End. (line 6)
* FFE: What is GNU Fortran?.
+ (line 172)
* fflush(): Output Assumed To Flush.
+ (line 6)
* FGet intrinsic <1>: FGet Intrinsic (function).
+ (line 6)
* FGet intrinsic: FGet Intrinsic (subroutine).
+ (line 6)
* FGetC intrinsic <1>: FGetC Intrinsic (function).
+ (line 6)
* FGetC intrinsic: FGetC Intrinsic (subroutine).
+ (line 6)
* file format not recognized: What is GNU Fortran?.
+ (line 120)
* file formats: Portable Unformatted Files.
! (line 6)
! * file name extension: Overall Options. (line 13)
! * file name suffix: Overall Options. (line 13)
! * file type: Overall Options. (line 13)
! * file, source <1>: Source Form. (line 6)
! * file, source <2>: Lines. (line 6)
* file, source: What is GNU Fortran?.
+ (line 20)
* files, executable: What is GNU Fortran?.
! (line 106)
! * fixed form <1>: Source Form. (line 6)
! * fixed form <2>: Lines. (line 6)
* fixed form: Fortran Dialect Options.
! (line 9)
! * Float intrinsic: Float Intrinsic. (line 6)
! * FloatI intrinsic: FloatI Intrinsic. (line 6)
* floating-point errors: Floating-point Errors.
+ (line 6)
* floating-point, errors: Inconsistent Calling Sequences.
+ (line 6)
* floating-point, exceptions: Floating-point Exception Handling.
+ (line 6)
* floating-point, precision <1>: Floating-point precision.
! (line 6)
! * floating-point, precision: Optimize Options. (line 40)
! * FloatJ intrinsic: FloatJ Intrinsic. (line 6)
! * Floor intrinsic: Floor Intrinsic. (line 6)
! * Flush intrinsic: Flush Intrinsic. (line 6)
* flushing output: Output Assumed To Flush.
! (line 6)
! * FNum intrinsic: FNum Intrinsic. (line 6)
* FORM='PRINT': OPEN CLOSE and INQUIRE Keywords.
! (line 10)
! * FORMAT descriptors <1>: Fortran 90 Features. (line 68)
! * FORMAT descriptors: I/O. (line 16)
! * FORMAT statement <1>: Q Edit Descriptor. (line 6)
* FORMAT statement: Expressions in FORMAT Statements.
+ (line 6)
* FORTRAN 66 <1>: Fortran Dialect Options.
! (line 128)
! * FORTRAN 66: Shorthand Options. (line 35)
! * FORTRAN 77 compatibility: Standard Support. (line 6)
! * Fortran 90: Fortran 90 Features. (line 6)
! * Fortran 90, compatibility: Fortran 90. (line 6)
* Fortran 90, features: Fortran Dialect Options.
+ (line 9)
* Fortran 90, intrinsics: Fortran Dialect Options.
! (line 272)
! * Fortran 90, support: Fortran 90 Support. (line 6)
! * Fortran preprocessor: Overall Options. (line 33)
! * forward references: GLOBALS. (line 26)
* FPE handling: Floating-point Exception Handling.
+ (line 6)
* FPut intrinsic <1>: FPut Intrinsic (function).
+ (line 6)
* FPut intrinsic: FPut Intrinsic (subroutine).
+ (line 6)
* FPutC intrinsic <1>: FPutC Intrinsic (function).
+ (line 6)
* FPutC intrinsic: FPutC Intrinsic (subroutine).
! (line 6)
! * Fraction intrinsic: Fraction Intrinsic. (line 6)
! * free form <1>: Source Form. (line 6)
! * free form <2>: Lines. (line 6)
* free form: Fortran Dialect Options.
! (line 9)
! * front end, g77 <1>: Front End. (line 6)
* front end, g77: What is GNU Fortran?.
! (line 172)
! * FSeek intrinsic: FSeek Intrinsic. (line 6)
! * FSF, funding the: Funding GNU Fortran. (line 17)
* FStat intrinsic <1>: FStat Intrinsic (function).
+ (line 6)
* FStat intrinsic: FStat Intrinsic (subroutine).
+ (line 6)
* FTell intrinsic <1>: FTell Intrinsic (function).
+ (line 6)
* FTell intrinsic: FTell Intrinsic (subroutine).
+ (line 6)
* function references, in adjustable array bounds: Array Bounds Expressions.
! (line 6)
! * FUNCTION statement <1>: Functions. (line 6)
! * FUNCTION statement: Procedures. (line 6)
! * functions: Functions. (line 6)
! * functions, mistyped: Not My Type. (line 6)
! * funding improvements: Funding GNU Fortran. (line 6)
! * funding the FSF: Funding GNU Fortran. (line 17)
! * g77 options, --driver <1>: Changes. (line 430)
! * g77 options, --driver: News. (line 668)
! * g77 options, -v: G77 and GCC. (line 27)
! * g77, command <1>: G77 and GCC. (line 21)
* g77, command: What is GNU Fortran?.
+ (line 78)
* g77, components of: What is GNU Fortran?.
! (line 70)
! * g77, front end <1>: Front End. (line 6)
* g77, front end: What is GNU Fortran?.
! (line 172)
! * g77, modifying: Overall Options. (line 125)
* G77_date_y2kbuggy_0: Year 2000 (Y2K) Problems.
+ (line 28)
* G77_vxtidate_y2kbuggy_0: Year 2000 (Y2K) Problems.
+ (line 28)
* GBE <1>: Philosophy of Code Generation.
+ (line 10)
* GBE: What is GNU Fortran?.
+ (line 165)
* GBEL: Philosophy of Code Generation.
+ (line 27)
* gcc, back end <1>: Philosophy of Code Generation.
+ (line 10)
* gcc, back end: What is GNU Fortran?.
! (line 165)
! * gcc, command <1>: G77 and GCC. (line 6)
* gcc, command: What is GNU Fortran?.
+ (line 72)
* gcc, command as driver: What is GNU Fortran?.
+ (line 106)
* gcc, not recognizing Fortran source: What is GNU Fortran?.
+ (line 120)
* gdb, command: What is GNU Fortran?.
! (line 33)
! * gdb, support: Debugger Problems. (line 6)
* generic intrinsics: Generics and Specifics.
! (line 6)
! * GError intrinsic: GError Intrinsic. (line 6)
! * GetArg intrinsic <1>: Main Program Unit. (line 28)
! * GetArg intrinsic: GetArg Intrinsic. (line 6)
* GetCWD intrinsic <1>: GetCWD Intrinsic (function).
+ (line 6)
* GetCWD intrinsic: GetCWD Intrinsic (subroutine).
! (line 6)
! * GetEnv intrinsic: GetEnv Intrinsic. (line 6)
! * GetGId intrinsic: GetGId Intrinsic. (line 6)
! * GetLog intrinsic: GetLog Intrinsic. (line 6)
! * GetPId intrinsic: GetPId Intrinsic. (line 6)
! * getting started: Getting Started. (line 6)
! * GetUId intrinsic: GetUId Intrinsic. (line 6)
! * global names, warning <1>: Code Gen Options. (line 224)
! * global names, warning: Warning Options. (line 51)
! * GMTime intrinsic: GMTime Intrinsic. (line 6)
* GNU Back End (GBE) <1>: Philosophy of Code Generation.
+ (line 10)
* GNU Back End (GBE): What is GNU Fortran?.
+ (line 165)
* GNU Back End Language (GBEL): Philosophy of Code Generation.
! (line 27)
! * GNU Fortran command options: Invoking G77. (line 6)
! * GNU Fortran Front End (FFE) <1>: Front End. (line 6)
* GNU Fortran Front End (FFE): What is GNU Fortran?.
! (line 172)
! * gnu intrinsics group: Intrinsic Groups. (line 73)
* GOTO statement: Assigned Statement Labels.
! (line 6)
! * groups of intrinsics: Intrinsic Groups. (line 6)
* hardware errors: Signal 11 and Friends.
! (line 6)
! * hash mark: Character Set. (line 25)
* HDF: Portable Unformatted Files.
! (line 50)
! * hidden intrinsics: Intrinsic Groups. (line 18)
* Hollerith constants <1>: Character and Hollerith Constants.
+ (line 6)
* Hollerith constants <2>: Ugly Conversion of Initializers.
+ (line 8)
* Hollerith constants <3>: Ugly Implicit Argument Conversion.
+ (line 6)
* Hollerith constants: Fortran Dialect Options.
! (line 41)
! * horizontal tab: Tabs. (line 6)
* HostNm intrinsic <1>: HostNm Intrinsic (function).
+ (line 6)
* HostNm intrinsic: HostNm Intrinsic (subroutine).
! (line 6)
! * Huge intrinsic: Huge Intrinsic. (line 6)
* I/O, errors: Run-time Library Errors.
+ (line 6)
* I/O, flushing: Output Assumed To Flush.
! (line 6)
! * IAbs intrinsic: IAbs Intrinsic. (line 6)
! * IAChar intrinsic: IAChar Intrinsic. (line 6)
! * IAnd intrinsic: IAnd Intrinsic. (line 6)
! * IArgC intrinsic <1>: Main Program Unit. (line 28)
! * IArgC intrinsic: IArgC Intrinsic. (line 6)
! * IBClr intrinsic: IBClr Intrinsic. (line 6)
! * IBits intrinsic: IBits Intrinsic. (line 6)
! * IBSet intrinsic: IBSet Intrinsic. (line 6)
! * IChar intrinsic: IChar Intrinsic. (line 6)
* IDate intrinsic <1>: IDate Intrinsic (VXT).
+ (line 6)
* IDate intrinsic: IDate Intrinsic (UNIX).
! (line 6)
! * IDiM intrinsic: IDiM Intrinsic. (line 6)
! * IDInt intrinsic: IDInt Intrinsic. (line 6)
! * IDNInt intrinsic: IDNInt Intrinsic. (line 6)
* IEEE 754 conformance <1>: Floating-point precision.
! (line 6)
! * IEEE 754 conformance: Optimize Options. (line 40)
! * IEOr intrinsic: IEOr Intrinsic. (line 6)
! * IErrNo intrinsic: IErrNo Intrinsic. (line 6)
! * IFix intrinsic: IFix Intrinsic. (line 6)
! * IIAbs intrinsic: IIAbs Intrinsic. (line 6)
! * IIAnd intrinsic: IIAnd Intrinsic. (line 6)
! * IIBClr intrinsic: IIBClr Intrinsic. (line 6)
! * IIBits intrinsic: IIBits Intrinsic. (line 6)
! * IIBSet intrinsic: IIBSet Intrinsic. (line 6)
! * IIDiM intrinsic: IIDiM Intrinsic. (line 6)
! * IIDInt intrinsic: IIDInt Intrinsic. (line 6)
! * IIDNnt intrinsic: IIDNnt Intrinsic. (line 6)
! * IIEOr intrinsic: IIEOr Intrinsic. (line 6)
! * IIFix intrinsic: IIFix Intrinsic. (line 6)
! * IInt intrinsic: IInt Intrinsic. (line 6)
! * IIOr intrinsic: IIOr Intrinsic. (line 6)
! * IIQint intrinsic: IIQint Intrinsic. (line 6)
! * IIQNnt intrinsic: IIQNnt Intrinsic. (line 6)
! * IIShftC intrinsic: IIShftC Intrinsic. (line 6)
! * IISign intrinsic: IISign Intrinsic. (line 6)
* illegal unit number: Large File Unit Numbers.
! (line 6)
! * Imag intrinsic: Imag Intrinsic. (line 6)
! * imaginary part <1>: Complex Variables. (line 6)
* imaginary part: Ugly Complex Part Extraction.
! (line 6)
! * ImagPart intrinsic: ImagPart Intrinsic. (line 6)
! * IMax0 intrinsic: IMax0 Intrinsic. (line 6)
! * IMax1 intrinsic: IMax1 Intrinsic. (line 6)
! * IMin0 intrinsic: IMin0 Intrinsic. (line 6)
! * IMin1 intrinsic: IMin1 Intrinsic. (line 6)
! * IMod intrinsic: IMod Intrinsic. (line 6)
* IMPLICIT CHARACTER*(*) statement: Limitation on Implicit Declarations.
! (line 6)
! * implicit declaration, warning: Warning Options. (line 61)
! * IMPLICIT NONE, similar effect: Warning Options. (line 61)
! * implicit typing: Not My Type. (line 6)
! * improvements, funding: Funding GNU Fortran. (line 6)
! * in-line code <1>: GLOBALS. (line 26)
! * in-line code <2>: Code Gen Options. (line 224)
! * in-line code <3>: Optimize Options. (line 66)
* in-line code: What is GNU Fortran?.
! (line 147)
! * INCLUDE directive <1>: INCLUDE. (line 6)
! * INCLUDE directive <2>: Directory Options. (line 10)
* INCLUDE directive: Preprocessor Options.
! (line 12)
! * inclusion, directory search paths for: Directory Options. (line 17)
* inconsistent floating-point results: Floating-point Errors.
+ (line 6)
* incorrect diagnostics: What is GNU Fortran?.
+ (line 51)
* incorrect error messages: What is GNU Fortran?.
+ (line 51)
* incorrect use of language: What is GNU Fortran?.
+ (line 47)
* increasing maximum unit number: Large File Unit Numbers.
+ (line 6)
* increasing precision: Increasing Precision/Range.
+ (line 6)
* increasing range: Increasing Precision/Range.
! (line 6)
! * Index intrinsic: Index Intrinsic. (line 6)
! * indexed (iterative) DO: Optimize Options. (line 114)
* infinite spaces printed: Strange Behavior at Run Time.
! (line 42)
! * INInt intrinsic: INInt Intrinsic. (line 6)
! * initialization, bug: Known Bugs. (line 45)
! * initialization, of local variables: Code Gen Options. (line 21)
! * initialization, run-time: Startup Code. (line 6)
* initialization, statement placement: Initializing Before Specifying.
! (line 6)
! * INot intrinsic: INot Intrinsic. (line 6)
* INQUIRE statement: OPEN CLOSE and INQUIRE Keywords.
! (line 6)
! * installation trouble: Trouble. (line 6)
! * Int intrinsic: Int Intrinsic. (line 6)
! * Int2 intrinsic: Int2 Intrinsic. (line 6)
! * Int8 intrinsic: Int8 Intrinsic. (line 6)
! * integer constants: Known Bugs. (line 32)
! * INTEGER(KIND=1) type: Compiler Types. (line 59)
! * INTEGER(KIND=2) type: Compiler Types. (line 67)
! * INTEGER(KIND=3) type: Compiler Types. (line 75)
! * INTEGER(KIND=6) type: Compiler Types. (line 81)
* INTEGER*2 support: Popular Non-standard Types.
+ (line 6)
* INTEGER*8 support: Full Support for Compiler Types.
! (line 6)
! * Intel x86: News. (line 560)
* interfacing: Debugging and Interfacing.
! (line 6)
! * internal consistency checks: Overall Options. (line 99)
! * intrinsics, Abort: Abort Intrinsic. (line 6)
! * intrinsics, Abs: Abs Intrinsic. (line 6)
! * intrinsics, Access: Access Intrinsic. (line 6)
! * intrinsics, AChar: AChar Intrinsic. (line 6)
! * intrinsics, ACos: ACos Intrinsic. (line 6)
! * intrinsics, ACosD: ACosD Intrinsic. (line 6)
! * intrinsics, AdjustL: AdjustL Intrinsic. (line 6)
! * intrinsics, AdjustR: AdjustR Intrinsic. (line 6)
! * intrinsics, AImag <1>: AImag Intrinsic. (line 6)
* intrinsics, AImag: REAL() and AIMAG() of Complex.
! (line 6)
! * intrinsics, AIMax0: AIMax0 Intrinsic. (line 6)
! * intrinsics, AIMin0: AIMin0 Intrinsic. (line 6)
! * intrinsics, AInt: AInt Intrinsic. (line 6)
! * intrinsics, AJMax0: AJMax0 Intrinsic. (line 6)
! * intrinsics, AJMin0: AJMin0 Intrinsic. (line 6)
! * intrinsics, Alarm: Alarm Intrinsic. (line 6)
! * intrinsics, All: All Intrinsic. (line 6)
! * intrinsics, Allocated: Allocated Intrinsic. (line 6)
! * intrinsics, ALog: ALog Intrinsic. (line 6)
! * intrinsics, ALog10: ALog10 Intrinsic. (line 6)
! * intrinsics, AMax0: AMax0 Intrinsic. (line 6)
! * intrinsics, AMax1: AMax1 Intrinsic. (line 6)
! * intrinsics, AMin0: AMin0 Intrinsic. (line 6)
! * intrinsics, AMin1: AMin1 Intrinsic. (line 6)
! * intrinsics, AMod: AMod Intrinsic. (line 6)
* intrinsics, And <1>: Bit Operations on Floating-point Data.
! (line 6)
! * intrinsics, And: And Intrinsic. (line 6)
! * intrinsics, ANInt: ANInt Intrinsic. (line 6)
! * intrinsics, Any: Any Intrinsic. (line 6)
! * intrinsics, ASin: ASin Intrinsic. (line 6)
! * intrinsics, ASinD: ASinD Intrinsic. (line 6)
* intrinsics, Associated: Associated Intrinsic.
! (line 6)
! * intrinsics, ATan: ATan Intrinsic. (line 6)
! * intrinsics, ATan2: ATan2 Intrinsic. (line 6)
! * intrinsics, ATan2D: ATan2D Intrinsic. (line 6)
! * intrinsics, ATanD: ATanD Intrinsic. (line 6)
* intrinsics, badu77: Fortran Dialect Options.
! (line 250)
! * intrinsics, BesJ0: BesJ0 Intrinsic. (line 6)
! * intrinsics, BesJ1: BesJ1 Intrinsic. (line 6)
! * intrinsics, BesJN: BesJN Intrinsic. (line 6)
! * intrinsics, BesY0: BesY0 Intrinsic. (line 6)
! * intrinsics, BesY1: BesY1 Intrinsic. (line 6)
! * intrinsics, BesYN: BesYN Intrinsic. (line 6)
! * intrinsics, Bit_Size: Bit_Size Intrinsic. (line 6)
! * intrinsics, BITest: BITest Intrinsic. (line 6)
! * intrinsics, BJTest: BJTest Intrinsic. (line 6)
! * intrinsics, BTest: BTest Intrinsic. (line 6)
! * intrinsics, CAbs: CAbs Intrinsic. (line 6)
! * intrinsics, CCos: CCos Intrinsic. (line 6)
! * intrinsics, CDAbs: CDAbs Intrinsic. (line 6)
! * intrinsics, CDCos: CDCos Intrinsic. (line 6)
! * intrinsics, CDExp: CDExp Intrinsic. (line 6)
! * intrinsics, CDLog: CDLog Intrinsic. (line 6)
! * intrinsics, CDSin: CDSin Intrinsic. (line 6)
! * intrinsics, CDSqRt: CDSqRt Intrinsic. (line 6)
! * intrinsics, Ceiling: Ceiling Intrinsic. (line 6)
! * intrinsics, CExp: CExp Intrinsic. (line 6)
! * intrinsics, Char: Char Intrinsic. (line 6)
* intrinsics, ChDir <1>: ChDir Intrinsic (function).
+ (line 6)
* intrinsics, ChDir: ChDir Intrinsic (subroutine).
+ (line 6)
* intrinsics, ChMod <1>: ChMod Intrinsic (function).
+ (line 6)
* intrinsics, ChMod: ChMod Intrinsic (subroutine).
! (line 6)
! * intrinsics, CLog: CLog Intrinsic. (line 6)
! * intrinsics, Cmplx <1>: Cmplx Intrinsic. (line 6)
* intrinsics, Cmplx: CMPLX() of DOUBLE PRECISION.
! (line 6)
! * intrinsics, Complex: Complex Intrinsic. (line 6)
* intrinsics, COMPLEX: Fortran Dialect Options.
! (line 283)
! * intrinsics, Conjg: Conjg Intrinsic. (line 6)
* intrinsics, context-sensitive: Context-Sensitive Intrinsicness.
! (line 6)
! * intrinsics, Cos: Cos Intrinsic. (line 6)
! * intrinsics, CosD: CosD Intrinsic. (line 6)
! * intrinsics, CosH: CosH Intrinsic. (line 6)
! * intrinsics, Count: Count Intrinsic. (line 6)
! * intrinsics, CPU_Time: CPU_Time Intrinsic. (line 6)
! * intrinsics, CShift: CShift Intrinsic. (line 6)
! * intrinsics, CSin: CSin Intrinsic. (line 6)
! * intrinsics, CSqRt: CSqRt Intrinsic. (line 6)
* intrinsics, CTime <1>: CTime Intrinsic (function).
+ (line 6)
* intrinsics, CTime: CTime Intrinsic (subroutine).
! (line 6)
! * intrinsics, DAbs: DAbs Intrinsic. (line 6)
! * intrinsics, DACos: DACos Intrinsic. (line 6)
! * intrinsics, DACosD: DACosD Intrinsic. (line 6)
! * intrinsics, DASin: DASin Intrinsic. (line 6)
! * intrinsics, DASinD: DASinD Intrinsic. (line 6)
! * intrinsics, DATan: DATan Intrinsic. (line 6)
! * intrinsics, DATan2: DATan2 Intrinsic. (line 6)
! * intrinsics, DATan2D: DATan2D Intrinsic. (line 6)
! * intrinsics, DATanD: DATanD Intrinsic. (line 6)
! * intrinsics, Date: Date Intrinsic. (line 6)
* intrinsics, Date_and_Time: Date_and_Time Intrinsic.
! (line 6)
! * intrinsics, DbesJ0: DbesJ0 Intrinsic. (line 6)
! * intrinsics, DbesJ1: DbesJ1 Intrinsic. (line 6)
! * intrinsics, DbesJN: DbesJN Intrinsic. (line 6)
! * intrinsics, DbesY0: DbesY0 Intrinsic. (line 6)
! * intrinsics, DbesY1: DbesY1 Intrinsic. (line 6)
! * intrinsics, DbesYN: DbesYN Intrinsic. (line 6)
! * intrinsics, Dble: Dble Intrinsic. (line 6)
! * intrinsics, DbleQ: DbleQ Intrinsic. (line 6)
! * intrinsics, DCmplx: DCmplx Intrinsic. (line 6)
! * intrinsics, DConjg: DConjg Intrinsic. (line 6)
! * intrinsics, DCos: DCos Intrinsic. (line 6)
! * intrinsics, DCosD: DCosD Intrinsic. (line 6)
! * intrinsics, DCosH: DCosH Intrinsic. (line 6)
! * intrinsics, DDiM: DDiM Intrinsic. (line 6)
! * intrinsics, deleted: Intrinsic Groups. (line 10)
! * intrinsics, DErF: DErF Intrinsic. (line 6)
! * intrinsics, DErFC: DErFC Intrinsic. (line 6)
! * intrinsics, DExp: DExp Intrinsic. (line 6)
! * intrinsics, DFloat: DFloat Intrinsic. (line 6)
! * intrinsics, DFlotI: DFlotI Intrinsic. (line 6)
! * intrinsics, DFlotJ: DFlotJ Intrinsic. (line 6)
! * intrinsics, Digits: Digits Intrinsic. (line 6)
! * intrinsics, DiM: DiM Intrinsic. (line 6)
! * intrinsics, DImag: DImag Intrinsic. (line 6)
! * intrinsics, DInt: DInt Intrinsic. (line 6)
! * intrinsics, disabled: Intrinsic Groups. (line 13)
! * intrinsics, DLog: DLog Intrinsic. (line 6)
! * intrinsics, DLog10: DLog10 Intrinsic. (line 6)
! * intrinsics, DMax1: DMax1 Intrinsic. (line 6)
! * intrinsics, DMin1: DMin1 Intrinsic. (line 6)
! * intrinsics, DMod: DMod Intrinsic. (line 6)
! * intrinsics, DNInt: DNInt Intrinsic. (line 6)
* intrinsics, Dot_Product: Dot_Product Intrinsic.
! (line 6)
! * intrinsics, DProd: DProd Intrinsic. (line 6)
! * intrinsics, DReal: DReal Intrinsic. (line 6)
! * intrinsics, DSign: DSign Intrinsic. (line 6)
! * intrinsics, DSin: DSin Intrinsic. (line 6)
! * intrinsics, DSinD: DSinD Intrinsic. (line 6)
! * intrinsics, DSinH: DSinH Intrinsic. (line 6)
! * intrinsics, DSqRt: DSqRt Intrinsic. (line 6)
! * intrinsics, DTan: DTan Intrinsic. (line 6)
! * intrinsics, DTanD: DTanD Intrinsic. (line 6)
! * intrinsics, DTanH: DTanH Intrinsic. (line 6)
* intrinsics, DTime <1>: DTime Intrinsic (function).
+ (line 6)
* intrinsics, DTime: DTime Intrinsic (subroutine).
! (line 6)
! * intrinsics, enabled: Intrinsic Groups. (line 23)
! * intrinsics, EOShift: EOShift Intrinsic. (line 6)
! * intrinsics, Epsilon: Epsilon Intrinsic. (line 6)
! * intrinsics, ErF: ErF Intrinsic. (line 6)
! * intrinsics, ErFC: ErFC Intrinsic. (line 6)
* intrinsics, ETime <1>: ETime Intrinsic (function).
+ (line 6)
* intrinsics, ETime: ETime Intrinsic (subroutine).
! (line 6)
! * intrinsics, Exit: Exit Intrinsic. (line 6)
! * intrinsics, Exp: Exp Intrinsic. (line 6)
! * intrinsics, Exponent: Exponent Intrinsic. (line 6)
* intrinsics, f2c: Fortran Dialect Options.
+ (line 261)
* intrinsics, FDate <1>: FDate Intrinsic (function).
+ (line 6)
* intrinsics, FDate: FDate Intrinsic (subroutine).
+ (line 6)
* intrinsics, FGet <1>: FGet Intrinsic (function).
+ (line 6)
* intrinsics, FGet: FGet Intrinsic (subroutine).
+ (line 6)
* intrinsics, FGetC <1>: FGetC Intrinsic (function).
+ (line 6)
* intrinsics, FGetC: FGetC Intrinsic (subroutine).
! (line 6)
! * intrinsics, Float: Float Intrinsic. (line 6)
! * intrinsics, FloatI: FloatI Intrinsic. (line 6)
! * intrinsics, FloatJ: FloatJ Intrinsic. (line 6)
! * intrinsics, Floor: Floor Intrinsic. (line 6)
! * intrinsics, Flush: Flush Intrinsic. (line 6)
! * intrinsics, FNum: FNum Intrinsic. (line 6)
* intrinsics, Fortran 90: Fortran Dialect Options.
+ (line 272)
* intrinsics, FPut <1>: FPut Intrinsic (function).
+ (line 6)
* intrinsics, FPut: FPut Intrinsic (subroutine).
+ (line 6)
* intrinsics, FPutC <1>: FPutC Intrinsic (function).
+ (line 6)
* intrinsics, FPutC: FPutC Intrinsic (subroutine).
! (line 6)
! * intrinsics, Fraction: Fraction Intrinsic. (line 6)
! * intrinsics, FSeek: FSeek Intrinsic. (line 6)
* intrinsics, FStat <1>: FStat Intrinsic (function).
+ (line 6)
* intrinsics, FStat: FStat Intrinsic (subroutine).
+ (line 6)
* intrinsics, FTell <1>: FTell Intrinsic (function).
+ (line 6)
* intrinsics, FTell: FTell Intrinsic (subroutine).
+ (line 6)
* intrinsics, generic: Generics and Specifics.
! (line 6)
! * intrinsics, GError: GError Intrinsic. (line 6)
! * intrinsics, GetArg <1>: Main Program Unit. (line 28)
! * intrinsics, GetArg: GetArg Intrinsic. (line 6)
* intrinsics, GetCWD <1>: GetCWD Intrinsic (function).
+ (line 6)
* intrinsics, GetCWD: GetCWD Intrinsic (subroutine).
! (line 6)
! * intrinsics, GetEnv: GetEnv Intrinsic. (line 6)
! * intrinsics, GetGId: GetGId Intrinsic. (line 6)
! * intrinsics, GetLog: GetLog Intrinsic. (line 6)
! * intrinsics, GetPId: GetPId Intrinsic. (line 6)
! * intrinsics, GetUId: GetUId Intrinsic. (line 6)
! * intrinsics, GMTime: GMTime Intrinsic. (line 6)
! * intrinsics, groups: Intrinsic Groups. (line 6)
! * intrinsics, groups of: Intrinsic Groups. (line 69)
! * intrinsics, hidden: Intrinsic Groups. (line 18)
* intrinsics, HostNm <1>: HostNm Intrinsic (function).
+ (line 6)
* intrinsics, HostNm: HostNm Intrinsic (subroutine).
! (line 6)
! * intrinsics, Huge: Huge Intrinsic. (line 6)
! * intrinsics, IAbs: IAbs Intrinsic. (line 6)
! * intrinsics, IAChar: IAChar Intrinsic. (line 6)
! * intrinsics, IAnd: IAnd Intrinsic. (line 6)
! * intrinsics, IArgC <1>: Main Program Unit. (line 28)
! * intrinsics, IArgC: IArgC Intrinsic. (line 6)
! * intrinsics, IBClr: IBClr Intrinsic. (line 6)
! * intrinsics, IBits: IBits Intrinsic. (line 6)
! * intrinsics, IBSet: IBSet Intrinsic. (line 6)
! * intrinsics, IChar: IChar Intrinsic. (line 6)
* intrinsics, IDate <1>: IDate Intrinsic (VXT).
+ (line 6)
* intrinsics, IDate: IDate Intrinsic (UNIX).
! (line 6)
! * intrinsics, IDiM: IDiM Intrinsic. (line 6)
! * intrinsics, IDInt: IDInt Intrinsic. (line 6)
! * intrinsics, IDNInt: IDNInt Intrinsic. (line 6)
! * intrinsics, IEOr: IEOr Intrinsic. (line 6)
! * intrinsics, IErrNo: IErrNo Intrinsic. (line 6)
! * intrinsics, IFix: IFix Intrinsic. (line 6)
! * intrinsics, IIAbs: IIAbs Intrinsic. (line 6)
! * intrinsics, IIAnd: IIAnd Intrinsic. (line 6)
! * intrinsics, IIBClr: IIBClr Intrinsic. (line 6)
! * intrinsics, IIBits: IIBits Intrinsic. (line 6)
! * intrinsics, IIBSet: IIBSet Intrinsic. (line 6)
! * intrinsics, IIDiM: IIDiM Intrinsic. (line 6)
! * intrinsics, IIDInt: IIDInt Intrinsic. (line 6)
! * intrinsics, IIDNnt: IIDNnt Intrinsic. (line 6)
! * intrinsics, IIEOr: IIEOr Intrinsic. (line 6)
! * intrinsics, IIFix: IIFix Intrinsic. (line 6)
! * intrinsics, IInt: IInt Intrinsic. (line 6)
! * intrinsics, IIOr: IIOr Intrinsic. (line 6)
! * intrinsics, IIQint: IIQint Intrinsic. (line 6)
! * intrinsics, IIQNnt: IIQNnt Intrinsic. (line 6)
! * intrinsics, IIShftC: IIShftC Intrinsic. (line 6)
! * intrinsics, IISign: IISign Intrinsic. (line 6)
! * intrinsics, Imag: Imag Intrinsic. (line 6)
! * intrinsics, ImagPart: ImagPart Intrinsic. (line 6)
! * intrinsics, IMax0: IMax0 Intrinsic. (line 6)
! * intrinsics, IMax1: IMax1 Intrinsic. (line 6)
! * intrinsics, IMin0: IMin0 Intrinsic. (line 6)
! * intrinsics, IMin1: IMin1 Intrinsic. (line 6)
! * intrinsics, IMod: IMod Intrinsic. (line 6)
! * intrinsics, Index: Index Intrinsic. (line 6)
! * intrinsics, INInt: INInt Intrinsic. (line 6)
! * intrinsics, INot: INot Intrinsic. (line 6)
! * intrinsics, Int: Int Intrinsic. (line 6)
! * intrinsics, Int2: Int2 Intrinsic. (line 6)
! * intrinsics, Int8: Int8 Intrinsic. (line 6)
! * intrinsics, IOr: IOr Intrinsic. (line 6)
! * intrinsics, IRand: IRand Intrinsic. (line 6)
! * intrinsics, IsaTty: IsaTty Intrinsic. (line 6)
! * intrinsics, IShft: IShft Intrinsic. (line 6)
! * intrinsics, IShftC: IShftC Intrinsic. (line 6)
! * intrinsics, ISign: ISign Intrinsic. (line 6)
! * intrinsics, ITime: ITime Intrinsic. (line 6)
! * intrinsics, IZExt: IZExt Intrinsic. (line 6)
! * intrinsics, JIAbs: JIAbs Intrinsic. (line 6)
! * intrinsics, JIAnd: JIAnd Intrinsic. (line 6)
! * intrinsics, JIBClr: JIBClr Intrinsic. (line 6)
! * intrinsics, JIBits: JIBits Intrinsic. (line 6)
! * intrinsics, JIBSet: JIBSet Intrinsic. (line 6)
! * intrinsics, JIDiM: JIDiM Intrinsic. (line 6)
! * intrinsics, JIDInt: JIDInt Intrinsic. (line 6)
! * intrinsics, JIDNnt: JIDNnt Intrinsic. (line 6)
! * intrinsics, JIEOr: JIEOr Intrinsic. (line 6)
! * intrinsics, JIFix: JIFix Intrinsic. (line 6)
! * intrinsics, JInt: JInt Intrinsic. (line 6)
! * intrinsics, JIOr: JIOr Intrinsic. (line 6)
! * intrinsics, JIQint: JIQint Intrinsic. (line 6)
! * intrinsics, JIQNnt: JIQNnt Intrinsic. (line 6)
! * intrinsics, JIShft: JIShft Intrinsic. (line 6)
! * intrinsics, JIShftC: JIShftC Intrinsic. (line 6)
! * intrinsics, JISign: JISign Intrinsic. (line 6)
! * intrinsics, JMax0: JMax0 Intrinsic. (line 6)
! * intrinsics, JMax1: JMax1 Intrinsic. (line 6)
! * intrinsics, JMin0: JMin0 Intrinsic. (line 6)
! * intrinsics, JMin1: JMin1 Intrinsic. (line 6)
! * intrinsics, JMod: JMod Intrinsic. (line 6)
! * intrinsics, JNInt: JNInt Intrinsic. (line 6)
! * intrinsics, JNot: JNot Intrinsic. (line 6)
! * intrinsics, JZExt: JZExt Intrinsic. (line 6)
* intrinsics, Kill <1>: Kill Intrinsic (function).
+ (line 6)
* intrinsics, Kill: Kill Intrinsic (subroutine).
! (line 6)
! * intrinsics, Kind: Kind Intrinsic. (line 6)
! * intrinsics, LBound: LBound Intrinsic. (line 6)
! * intrinsics, Len: Len Intrinsic. (line 6)
! * intrinsics, Len_Trim: Len_Trim Intrinsic. (line 6)
! * intrinsics, LGe: LGe Intrinsic. (line 6)
! * intrinsics, LGt: LGt Intrinsic. (line 6)
* intrinsics, Link <1>: Link Intrinsic (function).
+ (line 6)
* intrinsics, Link: Link Intrinsic (subroutine).
! (line 6)
! * intrinsics, LLe: LLe Intrinsic. (line 6)
! * intrinsics, LLt: LLt Intrinsic. (line 6)
! * intrinsics, LnBlnk: LnBlnk Intrinsic. (line 6)
! * intrinsics, Loc: Loc Intrinsic. (line 6)
! * intrinsics, Log: Log Intrinsic. (line 6)
! * intrinsics, Log10: Log10 Intrinsic. (line 6)
! * intrinsics, Logical: Logical Intrinsic. (line 6)
! * intrinsics, Long: Long Intrinsic. (line 6)
! * intrinsics, LShift: LShift Intrinsic. (line 6)
* intrinsics, LStat <1>: LStat Intrinsic (function).
+ (line 6)
* intrinsics, LStat: LStat Intrinsic (subroutine).
! (line 6)
! * intrinsics, LTime: LTime Intrinsic. (line 6)
! * intrinsics, MatMul: MatMul Intrinsic. (line 6)
! * intrinsics, Max: Max Intrinsic. (line 6)
! * intrinsics, Max0: Max0 Intrinsic. (line 6)
! * intrinsics, Max1: Max1 Intrinsic. (line 6)
* intrinsics, MaxExponent: MaxExponent Intrinsic.
! (line 6)
! * intrinsics, MaxLoc: MaxLoc Intrinsic. (line 6)
! * intrinsics, MaxVal: MaxVal Intrinsic. (line 6)
! * intrinsics, MClock: MClock Intrinsic. (line 6)
! * intrinsics, MClock8: MClock8 Intrinsic. (line 6)
! * intrinsics, Merge: Merge Intrinsic. (line 6)
* intrinsics, MIL-STD 1753: Fortran Dialect Options.
! (line 294)
! * intrinsics, Min: Min Intrinsic. (line 6)
! * intrinsics, Min0: Min0 Intrinsic. (line 6)
! * intrinsics, Min1: Min1 Intrinsic. (line 6)
* intrinsics, MinExponent: MinExponent Intrinsic.
! (line 6)
! * intrinsics, MinLoc: MinLoc Intrinsic. (line 6)
! * intrinsics, MinVal: MinVal Intrinsic. (line 6)
! * intrinsics, Mod: Mod Intrinsic. (line 6)
! * intrinsics, Modulo: Modulo Intrinsic. (line 6)
! * intrinsics, MvBits: MvBits Intrinsic. (line 6)
! * intrinsics, Nearest: Nearest Intrinsic. (line 6)
! * intrinsics, NInt: NInt Intrinsic. (line 6)
! * intrinsics, Not: Not Intrinsic. (line 6)
* intrinsics, Or <1>: Bit Operations on Floating-point Data.
! (line 6)
! * intrinsics, Or: Or Intrinsic. (line 6)
! * intrinsics, others: Other Intrinsics. (line 6)
! * intrinsics, Pack: Pack Intrinsic. (line 6)
! * intrinsics, PError: PError Intrinsic. (line 6)
! * intrinsics, Precision: Precision Intrinsic. (line 6)
! * intrinsics, Present: Present Intrinsic. (line 6)
! * intrinsics, Product: Product Intrinsic. (line 6)
! * intrinsics, QAbs: QAbs Intrinsic. (line 6)
! * intrinsics, QACos: QACos Intrinsic. (line 6)
! * intrinsics, QACosD: QACosD Intrinsic. (line 6)
! * intrinsics, QASin: QASin Intrinsic. (line 6)
! * intrinsics, QASinD: QASinD Intrinsic. (line 6)
! * intrinsics, QATan: QATan Intrinsic. (line 6)
! * intrinsics, QATan2: QATan2 Intrinsic. (line 6)
! * intrinsics, QATan2D: QATan2D Intrinsic. (line 6)
! * intrinsics, QATanD: QATanD Intrinsic. (line 6)
! * intrinsics, QCos: QCos Intrinsic. (line 6)
! * intrinsics, QCosD: QCosD Intrinsic. (line 6)
! * intrinsics, QCosH: QCosH Intrinsic. (line 6)
! * intrinsics, QDiM: QDiM Intrinsic. (line 6)
! * intrinsics, QExp: QExp Intrinsic. (line 6)
! * intrinsics, QExt: QExt Intrinsic. (line 6)
! * intrinsics, QExtD: QExtD Intrinsic. (line 6)
! * intrinsics, QFloat: QFloat Intrinsic. (line 6)
! * intrinsics, QInt: QInt Intrinsic. (line 6)
! * intrinsics, QLog: QLog Intrinsic. (line 6)
! * intrinsics, QLog10: QLog10 Intrinsic. (line 6)
! * intrinsics, QMax1: QMax1 Intrinsic. (line 6)
! * intrinsics, QMin1: QMin1 Intrinsic. (line 6)
! * intrinsics, QMod: QMod Intrinsic. (line 6)
! * intrinsics, QNInt: QNInt Intrinsic. (line 6)
! * intrinsics, QSin: QSin Intrinsic. (line 6)
! * intrinsics, QSinD: QSinD Intrinsic. (line 6)
! * intrinsics, QSinH: QSinH Intrinsic. (line 6)
! * intrinsics, QSqRt: QSqRt Intrinsic. (line 6)
! * intrinsics, QTan: QTan Intrinsic. (line 6)
! * intrinsics, QTanD: QTanD Intrinsic. (line 6)
! * intrinsics, QTanH: QTanH Intrinsic. (line 6)
! * intrinsics, Radix: Radix Intrinsic. (line 6)
! * intrinsics, Rand: Rand Intrinsic. (line 6)
* intrinsics, Random_Number: Random_Number Intrinsic.
+ (line 6)
* intrinsics, Random_Seed: Random_Seed Intrinsic.
! (line 6)
! * intrinsics, Range: Range Intrinsic. (line 6)
! * intrinsics, Real <1>: Real Intrinsic. (line 6)
* intrinsics, Real: REAL() and AIMAG() of Complex.
! (line 6)
! * intrinsics, RealPart: RealPart Intrinsic. (line 6)
* intrinsics, Rename <1>: Rename Intrinsic (function).
+ (line 6)
* intrinsics, Rename: Rename Intrinsic (subroutine).
! (line 6)
! * intrinsics, Repeat: Repeat Intrinsic. (line 6)
! * intrinsics, Reshape: Reshape Intrinsic. (line 6)
! * intrinsics, RRSpacing: RRSpacing Intrinsic. (line 6)
! * intrinsics, RShift: RShift Intrinsic. (line 6)
! * intrinsics, Scale: Scale Intrinsic. (line 6)
! * intrinsics, Scan: Scan Intrinsic. (line 6)
! * intrinsics, Secnds: Secnds Intrinsic. (line 6)
* intrinsics, Second <1>: Second Intrinsic (subroutine).
+ (line 6)
* intrinsics, Second: Second Intrinsic (function).
+ (line 6)
* intrinsics, Selected_Int_Kind: Selected_Int_Kind Intrinsic.
+ (line 6)
* intrinsics, Selected_Real_Kind: Selected_Real_Kind Intrinsic.
+ (line 6)
* intrinsics, Set_Exponent: Set_Exponent Intrinsic.
! (line 6)
! * intrinsics, Shape: Shape Intrinsic. (line 6)
* intrinsics, Shift: Bit Operations on Floating-point Data.
! (line 6)
! * intrinsics, Short: Short Intrinsic. (line 6)
! * intrinsics, Sign: Sign Intrinsic. (line 6)
* intrinsics, Signal <1>: Signal Intrinsic (function).
+ (line 6)
* intrinsics, Signal: Signal Intrinsic (subroutine).
! (line 6)
! * intrinsics, Sin: Sin Intrinsic. (line 6)
! * intrinsics, SinD: SinD Intrinsic. (line 6)
! * intrinsics, SinH: SinH Intrinsic. (line 6)
! * intrinsics, Sleep: Sleep Intrinsic. (line 6)
! * intrinsics, Sngl: Sngl Intrinsic. (line 6)
! * intrinsics, SnglQ: SnglQ Intrinsic. (line 6)
! * intrinsics, Spacing: Spacing Intrinsic. (line 6)
! * intrinsics, Spread: Spread Intrinsic. (line 6)
! * intrinsics, SqRt: SqRt Intrinsic. (line 6)
! * intrinsics, SRand: SRand Intrinsic. (line 6)
* intrinsics, Stat <1>: Stat Intrinsic (function).
+ (line 6)
* intrinsics, Stat: Stat Intrinsic (subroutine).
! (line 6)
! * intrinsics, Sum: Sum Intrinsic. (line 6)
* intrinsics, SymLnk <1>: SymLnk Intrinsic (function).
+ (line 6)
* intrinsics, SymLnk: SymLnk Intrinsic (subroutine).
+ (line 6)
* intrinsics, System <1>: System Intrinsic (function).
+ (line 6)
* intrinsics, System: System Intrinsic (subroutine).
+ (line 6)
* intrinsics, System_Clock: System_Clock Intrinsic.
+ (line 6)
* intrinsics, table of: Table of Intrinsic Functions.
! (line 6)
! * intrinsics, Tan: Tan Intrinsic. (line 6)
! * intrinsics, TanD: TanD Intrinsic. (line 6)
! * intrinsics, TanH: TanH Intrinsic. (line 6)
* intrinsics, Time <1>: Time Intrinsic (VXT).
+ (line 6)
* intrinsics, Time: Time Intrinsic (UNIX).
! (line 6)
! * intrinsics, Time8: Time8 Intrinsic. (line 6)
! * intrinsics, Tiny: Tiny Intrinsic. (line 6)
! * intrinsics, Transfer: Transfer Intrinsic. (line 6)
! * intrinsics, Transpose: Transpose Intrinsic. (line 6)
! * intrinsics, Trim: Trim Intrinsic. (line 6)
* intrinsics, TtyNam <1>: TtyNam Intrinsic (function).
+ (line 6)
* intrinsics, TtyNam: TtyNam Intrinsic (subroutine).
! (line 6)
! * intrinsics, UBound: UBound Intrinsic. (line 6)
* intrinsics, UMask <1>: UMask Intrinsic (function).
+ (line 6)
* intrinsics, UMask: UMask Intrinsic (subroutine).
+ (line 6)
* intrinsics, UNIX: Fortran Dialect Options.
+ (line 305)
* intrinsics, Unlink <1>: Unlink Intrinsic (function).
+ (line 6)
* intrinsics, Unlink: Unlink Intrinsic (subroutine).
! (line 6)
! * intrinsics, Unpack: Unpack Intrinsic. (line 6)
! * intrinsics, Verify: Verify Intrinsic. (line 6)
* intrinsics, VXT: Fortran Dialect Options.
! (line 315)
! * intrinsics, XOr: XOr Intrinsic. (line 6)
! * intrinsics, ZAbs: ZAbs Intrinsic. (line 6)
! * intrinsics, ZCos: ZCos Intrinsic. (line 6)
! * intrinsics, ZExp: ZExp Intrinsic. (line 6)
! * intrinsics, ZExt: ZExt Intrinsic. (line 6)
! * intrinsics, ZLog: ZLog Intrinsic. (line 6)
! * intrinsics, ZSin: ZSin Intrinsic. (line 6)
! * intrinsics, ZSqRt: ZSqRt Intrinsic. (line 6)
! * Introduction: Top. (line 6)
! * invalid assembly code: Bug Criteria. (line 13)
! * invalid input: Bug Criteria. (line 44)
! * IOr intrinsic: IOr Intrinsic. (line 6)
* IOSTAT=: Run-time Library Errors.
! (line 6)
! * IRand intrinsic: IRand Intrinsic. (line 6)
! * IsaTty intrinsic: IsaTty Intrinsic. (line 6)
! * IShft intrinsic: IShft Intrinsic. (line 6)
! * IShftC intrinsic: IShftC Intrinsic. (line 6)
! * ISign intrinsic: ISign Intrinsic. (line 6)
! * iterative DO: Optimize Options. (line 114)
! * ITime intrinsic: ITime Intrinsic. (line 6)
* ix86 floating-point: Floating-point precision.
+ (line 6)
* ix86 FPU stack: Inconsistent Calling Sequences.
! (line 6)
! * IZExt intrinsic: IZExt Intrinsic. (line 6)
* JCB002 program: Generics and Specifics.
! (line 60)
! * JCB003 program: CMPAMBIG. (line 133)
! * JIAbs intrinsic: JIAbs Intrinsic. (line 6)
! * JIAnd intrinsic: JIAnd Intrinsic. (line 6)
! * JIBClr intrinsic: JIBClr Intrinsic. (line 6)
! * JIBits intrinsic: JIBits Intrinsic. (line 6)
! * JIBSet intrinsic: JIBSet Intrinsic. (line 6)
! * JIDiM intrinsic: JIDiM Intrinsic. (line 6)
! * JIDInt intrinsic: JIDInt Intrinsic. (line 6)
! * JIDNnt intrinsic: JIDNnt Intrinsic. (line 6)
! * JIEOr intrinsic: JIEOr Intrinsic. (line 6)
! * JIFix intrinsic: JIFix Intrinsic. (line 6)
! * JInt intrinsic: JInt Intrinsic. (line 6)
! * JIOr intrinsic: JIOr Intrinsic. (line 6)
! * JIQint intrinsic: JIQint Intrinsic. (line 6)
! * JIQNnt intrinsic: JIQNnt Intrinsic. (line 6)
! * JIShft intrinsic: JIShft Intrinsic. (line 6)
! * JIShftC intrinsic: JIShftC Intrinsic. (line 6)
! * JISign intrinsic: JISign Intrinsic. (line 6)
! * JMax0 intrinsic: JMax0 Intrinsic. (line 6)
! * JMax1 intrinsic: JMax1 Intrinsic. (line 6)
! * JMin0 intrinsic: JMin0 Intrinsic. (line 6)
! * JMin1 intrinsic: JMin1 Intrinsic. (line 6)
! * JMod intrinsic: JMod Intrinsic. (line 6)
! * JNInt intrinsic: JNInt Intrinsic. (line 6)
! * JNot intrinsic: JNot Intrinsic. (line 6)
! * JZExt intrinsic: JZExt Intrinsic. (line 6)
! * keywords, RECURSIVE: RECURSIVE Keyword. (line 6)
* Kill intrinsic <1>: Kill Intrinsic (function).
+ (line 6)
* Kill intrinsic: Kill Intrinsic (subroutine).
! (line 6)
! * Kind intrinsic: Kind Intrinsic. (line 6)
! * KIND= notation: Kind Notation. (line 6)
! * known causes of trouble: Trouble. (line 6)
! * lack of recursion: RECURSIVE Keyword. (line 6)
* language, dialect options: Fortran Dialect Options.
+ (line 6)
* language, features: Direction of Language Development.
+ (line 6)
* language, incorrect use of: What is GNU Fortran?.
! (line 47)
! * large aggregate areas: Known Bugs. (line 45)
! * large common blocks: Large Common Blocks. (line 6)
! * layout of COMMON blocks: Aligned Data. (line 20)
! * LBound intrinsic: LBound Intrinsic. (line 6)
* ld command: What is GNU Fortran?.
+ (line 37)
* ld, can't find _main: Cannot Link Fortran Programs.
+ (line 19)
* ld, can't find strange names: Cannot Link Fortran Programs.
+ (line 6)
* ld, error linking user code: Cannot Link Fortran Programs.
! (line 6)
! * ld, errors: Large Common Blocks. (line 6)
! * left angle: Character Set. (line 33)
! * left bracket: Character Set. (line 33)
* legacy code: Collected Fortran Wisdom.
! (line 6)
! * Len intrinsic: Len Intrinsic. (line 6)
! * Len_Trim intrinsic: Len_Trim Intrinsic. (line 6)
* length of source lines: Fortran Dialect Options.
! (line 319)
! * letters, lowercase: Case Sensitivity. (line 6)
! * letters, uppercase: Case Sensitivity. (line 6)
! * LGe intrinsic: LGe Intrinsic. (line 6)
! * LGt intrinsic: LGt Intrinsic. (line 6)
* libc, non-ANSI or non-default: Strange Behavior at Run Time.
+ (line 42)
* libf2c library: What is GNU Fortran?.
+ (line 81)
* libg2c library: What is GNU Fortran?.
+ (line 81)
* libraries: What is GNU Fortran?.
+ (line 37)
* libraries, containing BLOCK DATA: Block Data and Libraries.
+ (line 6)
* libraries, libf2c: What is GNU Fortran?.
+ (line 81)
* libraries, libg2c: What is GNU Fortran?.
! (line 81)
! * limits, array dimensions: Compiler Limits. (line 18)
! * limits, array size: Array Size. (line 6)
! * limits, compiler: Compiler Limits. (line 6)
! * limits, continuation lines <1>: Compiler Limits. (line 10)
! * limits, continuation lines: Continuation Line. (line 6)
! * limits, lengths of names <1>: Compiler Limits. (line 10)
! * limits, lengths of names: Syntactic Items. (line 8)
* limits, lengths of source lines: Fortran Dialect Options.
! (line 319)
! * limits, multi-dimension arrays: Array Size. (line 22)
* limits, on character-variable length: Character-variable Length.
! (line 6)
! * limits, rank: Compiler Limits. (line 18)
* limits, run-time library: Run-time Environment Limits.
! (line 6)
! * limits, timings <1>: Secnds Intrinsic. (line 19)
* limits, timings <2>: DTime Intrinsic (function).
! (line 25)
! * limits, timings <3>: Time8 Intrinsic. (line 19)
* limits, timings <4>: Time Intrinsic (UNIX).
+ (line 19)
* limits, timings <5>: System_Clock Intrinsic.
+ (line 25)
* limits, timings <6>: Second Intrinsic (subroutine).
+ (line 18)
* limits, timings <7>: Second Intrinsic (function).
! (line 18)
! * limits, timings <8>: MClock8 Intrinsic. (line 18)
! * limits, timings <9>: MClock Intrinsic. (line 18)
* limits, timings <10>: ETime Intrinsic (function).
+ (line 22)
* limits, timings <11>: ETime Intrinsic (subroutine).
+ (line 22)
* limits, timings <12>: DTime Intrinsic (subroutine).
! (line 25)
! * limits, timings: CPU_Time Intrinsic. (line 19)
* limits, Y10K <1>: Time Intrinsic (VXT).
+ (line 18)
* limits, Y10K <2>: IDate Intrinsic (UNIX).
+ (line 20)
* limits, Y10K <3>: FDate Intrinsic (function).
+ (line 21)
* limits, Y10K <4>: FDate Intrinsic (subroutine).
+ (line 22)
* limits, Y10K: Date_and_Time Intrinsic.
+ (line 39)
* limits, Y2K: IDate Intrinsic (VXT).
! (line 23)
! * lines: Lines. (line 6)
! * lines, continuation: Continuation Line. (line 6)
* lines, length: Fortran Dialect Options.
! (line 319)
! * lines, long: Long Lines. (line 6)
! * lines, short: Short Lines. (line 6)
* Link intrinsic <1>: Link Intrinsic (function).
+ (line 6)
* Link intrinsic: Link Intrinsic (subroutine).
+ (line 6)
* linking: What is GNU Fortran?.
+ (line 37)
* linking against non-standard library: Strange Behavior at Run Time.
+ (line 42)
* linking error for user code: Cannot Link Fortran Programs.
+ (line 6)
* linking error, user code: Cannot Link Fortran Programs.
+ (line 19)
* linking with C: Interoperating with C and C++.
! (line 6)
! * linking, errors: Large Common Blocks. (line 6)
! * LLe intrinsic: LLe Intrinsic. (line 6)
! * LLt intrinsic: LLt Intrinsic. (line 6)
! * LnBlnk intrinsic: LnBlnk Intrinsic. (line 6)
! * Loc intrinsic: Loc Intrinsic. (line 6)
* local equivalence areas: Local Equivalence Areas.
! (line 6)
! * Log intrinsic: Log Intrinsic. (line 6)
! * Log10 intrinsic: Log10 Intrinsic. (line 6)
* logical expressions, comparing: Equivalence Versus Equality.
! (line 6)
! * Logical intrinsic: Logical Intrinsic. (line 6)
! * LOGICAL(KIND=1) type: Compiler Types. (line 64)
! * LOGICAL(KIND=2) type: Compiler Types. (line 72)
! * LOGICAL(KIND=3) type: Compiler Types. (line 78)
! * LOGICAL(KIND=6) type: Compiler Types. (line 85)
* LOGICAL*1 support: Popular Non-standard Types.
! (line 6)
! * Long intrinsic: Long Intrinsic. (line 6)
! * long source lines: Long Lines. (line 6)
! * long time: Timer Wraparounds. (line 12)
! * loops, optimizing: Optimize Options. (line 114)
! * loops, speeding up: Optimize Options. (line 63)
! * loops, unrolling: Optimize Options. (line 114)
! * lowercase letters: Case Sensitivity. (line 6)
! * LShift intrinsic: LShift Intrinsic. (line 6)
* LStat intrinsic <1>: LStat Intrinsic (function).
+ (line 6)
* LStat intrinsic: LStat Intrinsic (subroutine).
! (line 6)
! * LTime intrinsic: LTime Intrinsic. (line 6)
* machine code: What is GNU Fortran?.
! (line 24)
! * macro options: Shorthand Options. (line 6)
! * main program unit, debugging: Main Program Unit. (line 33)
! * main(): Main Program Unit. (line 33)
! * MAIN__(): Main Program Unit. (line 33)
! * Makefile example: Bug Criteria. (line 89)
* MAP statement: STRUCTURE UNION RECORD MAP.
! (line 6)
! * MatMul intrinsic: MatMul Intrinsic. (line 6)
! * Max intrinsic: Max Intrinsic. (line 6)
! * Max0 intrinsic: Max0 Intrinsic. (line 6)
! * Max1 intrinsic: Max1 Intrinsic. (line 6)
* MaxExponent intrinsic: MaxExponent Intrinsic.
! (line 6)
! * maximum number of dimensions: Compiler Limits. (line 18)
! * maximum rank: Compiler Limits. (line 18)
* maximum unit number: Large File Unit Numbers.
! (line 6)
! * MaxLoc intrinsic: MaxLoc Intrinsic. (line 6)
! * MaxVal intrinsic: MaxVal Intrinsic. (line 6)
! * MClock intrinsic: MClock Intrinsic. (line 6)
! * MClock8 intrinsic: MClock8 Intrinsic. (line 6)
! * memory usage, of compiler: Known Bugs. (line 45)
! * Merge intrinsic: Merge Intrinsic. (line 6)
* messages, run-time: Run-time Library Errors.
! (line 6)
! * messages, warning: Warning Options. (line 6)
! * messages, warning and error: Warnings and Errors. (line 6)
! * mil intrinsics group: Intrinsic Groups. (line 83)
! * MIL-STD 1753 <1>: MIL-STD 1753. (line 6)
! * MIL-STD 1753 <2>: END DO. (line 6)
! * MIL-STD 1753 <3>: DO WHILE. (line 6)
* MIL-STD 1753: Fortran Dialect Options.
! (line 294)
! * Min intrinsic: Min Intrinsic. (line 6)
! * Min0 intrinsic: Min0 Intrinsic. (line 6)
! * Min1 intrinsic: Min1 Intrinsic. (line 6)
* MinExponent intrinsic: MinExponent Intrinsic.
! (line 6)
! * MinLoc intrinsic: MinLoc Intrinsic. (line 6)
! * MinVal intrinsic: MinVal Intrinsic. (line 6)
* mistakes: What is GNU Fortran?.
! (line 24)
! * mistyped functions: Not My Type. (line 6)
! * mistyped variables: Not My Type. (line 6)
! * Mod intrinsic: Mod Intrinsic. (line 6)
! * modifying g77: Overall Options. (line 125)
! * Modulo intrinsic: Modulo Intrinsic. (line 6)
! * multi-dimension arrays: Array Size. (line 22)
! * MvBits intrinsic: MvBits Intrinsic. (line 6)
* MXUNIT: Large File Unit Numbers.
! (line 6)
! * name space: Mangling of Names. (line 6)
! * NAMELIST statement: NAMELIST. (line 6)
* naming conflicts: Multiple Definitions of External Names.
! (line 6)
! * naming issues: Mangling of Names. (line 6)
! * naming programs: Nothing Happens. (line 6)
* NaN values: Floating-point Exception Handling.
! (line 6)
! * Nearest intrinsic: Nearest Intrinsic. (line 6)
! * negative forms of options: Invoking G77. (line 11)
! * negative time: Timer Wraparounds. (line 12)
* Netlib <1>: Increasing Precision/Range.
! (line 6)
! * Netlib: C Interfacing Tools. (line 6)
* network file system: Output Assumed To Flush.
! (line 6)
! * new users: Getting Started. (line 6)
! * newbies: Getting Started. (line 6)
! * NeXTStep problems: NeXTStep Problems. (line 6)
* NFS: Output Assumed To Flush.
! (line 6)
! * NInt intrinsic: NInt Intrinsic. (line 6)
* nonportable conversions: Nonportable Conversions.
! (line 6)
! * Not intrinsic: Not Intrinsic. (line 6)
! * nothing happens: Nothing Happens. (line 6)
! * null arguments: Ugly Null Arguments. (line 6)
* null byte, trailing: Character and Hollerith Constants.
! (line 6)
! * null CHARACTER strings: Character Type. (line 14)
! * number of continuation lines: Continuation Line. (line 6)
! * number of dimensions, maximum: Compiler Limits. (line 18)
! * number of trips: Loops. (line 6)
! * O edit descriptor: I/O. (line 16)
* octal constants: Double Quote Meaning.
! (line 6)
! * omitting arguments: Ugly Null Arguments. (line 11)
* one-trip DO loops: Fortran Dialect Options.
! (line 128)
! * open angle: Character Set. (line 33)
! * open bracket: Character Set. (line 33)
* OPEN statement: OPEN CLOSE and INQUIRE Keywords.
! (line 6)
! * optimization, better: Better Optimization. (line 6)
! * optimization, for Pentium: Aligned Data. (line 6)
! * optimize options: Optimize Options. (line 6)
! * options, --driver <1>: Changes. (line 430)
! * options, --driver: News. (line 668)
* options, -falias-check <1>: Aliasing Assumed To Work.
! (line 6)
! * options, -falias-check: Code Gen Options. (line 197)
* options, -fargument-alias <1>: Aliasing Assumed To Work.
! (line 6)
! * options, -fargument-alias: Code Gen Options. (line 197)
* options, -fargument-noalias <1>: Aliasing Assumed To Work.
! (line 6)
! * options, -fargument-noalias: Code Gen Options. (line 197)
* options, -fbadu77-intrinsics-delete: Fortran Dialect Options.
+ (line 243)
* options, -fbadu77-intrinsics-disable: Fortran Dialect Options.
+ (line 246)
* options, -fbadu77-intrinsics-enable: Fortran Dialect Options.
+ (line 248)
* options, -fbadu77-intrinsics-hide: Fortran Dialect Options.
! (line 244)
! * options, -fcaller-saves: Optimize Options. (line 109)
* options, -fcase-initcap: Fortran Dialect Options.
+ (line 222)
* options, -fcase-lower: Fortran Dialect Options.
+ (line 232)
* options, -fcase-preserve: Fortran Dialect Options.
+ (line 236)
* options, -fcase-strict-lower: Fortran Dialect Options.
+ (line 217)
* options, -fcase-strict-upper: Fortran Dialect Options.
+ (line 212)
* options, -fcase-upper: Fortran Dialect Options.
! (line 228)
! * options, -fdelayed-branch: Optimize Options. (line 103)
* options, -fdollar-ok: Fortran Dialect Options.
! (line 37)
! * options, -femulate-complex: Code Gen Options. (line 170)
! * options, -fexpensive-optimizations: Optimize Options. (line 101)
* options, -ff2c-intrinsics-delete: Fortran Dialect Options.
+ (line 254)
* options, -ff2c-intrinsics-disable: Fortran Dialect Options.
+ (line 257)
* options, -ff2c-intrinsics-enable: Fortran Dialect Options.
+ (line 259)
* options, -ff2c-intrinsics-hide: Fortran Dialect Options.
! (line 255)
! * options, -ff2c-library: Code Gen Options. (line 63)
! * options, -ff66: Shorthand Options. (line 34)
! * options, -ff77: Shorthand Options. (line 45)
* options, -ff90: Fortran Dialect Options.
+ (line 15)
* options, -ff90-intrinsics-delete: Fortran Dialect Options.
+ (line 265)
* options, -ff90-intrinsics-disable: Fortran Dialect Options.
+ (line 268)
* options, -ff90-intrinsics-enable: Fortran Dialect Options.
+ (line 270)
* options, -ff90-intrinsics-hide: Fortran Dialect Options.
! (line 266)
! * options, -ffast-math: Optimize Options. (line 71)
! * options, -ffinite-math-only: Optimize Options. (line 81)
* options, -ffixed-line-length-N: Fortran Dialect Options.
! (line 318)
! * options, -ffloat-store: Optimize Options. (line 39)
! * options, -fforce-addr: Optimize Options. (line 61)
! * options, -fforce-mem: Optimize Options. (line 60)
* options, -ffree-form: Fortran Dialect Options.
+ (line 9)
* options, -fgnu-intrinsics-delete: Fortran Dialect Options.
+ (line 276)
* options, -fgnu-intrinsics-disable: Fortran Dialect Options.
+ (line 279)
* options, -fgnu-intrinsics-enable: Fortran Dialect Options.
+ (line 281)
* options, -fgnu-intrinsics-hide: Fortran Dialect Options.
+ (line 277)
* options, -fGROUP-intrinsics-hide: Overly Convenient Options.
+ (line 63)
* options, -finit-local-zero <1>: Overly Convenient Options.
! (line 16)
! * options, -finit-local-zero: Code Gen Options. (line 20)
* options, -fintrin-case-any: Fortran Dialect Options.
+ (line 178)
* options, -fintrin-case-initcap: Fortran Dialect Options.
+ (line 173)
* options, -fintrin-case-lower: Fortran Dialect Options.
+ (line 176)
* options, -fintrin-case-upper: Fortran Dialect Options.
+ (line 174)
* options, -fmatch-case-any: Fortran Dialect Options.
+ (line 188)
* options, -fmatch-case-initcap: Fortran Dialect Options.
+ (line 183)
* options, -fmatch-case-lower: Fortran Dialect Options.
+ (line 186)
* options, -fmatch-case-upper: Fortran Dialect Options.
+ (line 184)
* options, -fmil-intrinsics-delete: Fortran Dialect Options.
+ (line 287)
* options, -fmil-intrinsics-disable: Fortran Dialect Options.
+ (line 290)
* options, -fmil-intrinsics-enable: Fortran Dialect Options.
+ (line 292)
* options, -fmil-intrinsics-hide: Fortran Dialect Options.
+ (line 288)
* options, -fno-argument-noalias-global <1>: Aliasing Assumed To Work.
! (line 6)
! * options, -fno-argument-noalias-global: Code Gen Options. (line 197)
* options, -fno-automatic <1>: Overly Convenient Options.
! (line 32)
! * options, -fno-automatic: Code Gen Options. (line 14)
* options, -fno-backslash: Fortran Dialect Options.
! (line 40)
! * options, -fno-common: Code Gen Options. (line 332)
* options, -fno-f2c <1>: Avoid f2c Compatibility.
! (line 6)
! * options, -fno-f2c: Code Gen Options. (line 29)
! * options, -fno-f77: Shorthand Options. (line 54)
* options, -fno-fixed-form: Fortran Dialect Options.
! (line 9)
! * options, -fno-globals: Code Gen Options. (line 223)
! * options, -fno-ident: Code Gen Options. (line 145)
! * options, -fno-inline: Optimize Options. (line 65)
! * options, -fno-move-all-movables: Optimize Options. (line 134)
! * options, -fno-reduce-all-givs: Optimize Options. (line 136)
! * options, -fno-rerun-loop-opt: Optimize Options. (line 138)
! * options, -fno-second-underscore: Code Gen Options. (line 135)
! * options, -fno-silent: Overall Options. (line 134)
! * options, -fno-trapping-math: Optimize Options. (line 91)
! * options, -fno-ugly: Shorthand Options. (line 24)
* options, -fno-ugly-args: Fortran Dialect Options.
+ (line 59)
* options, -fno-ugly-init: Fortran Dialect Options.
! (line 108)
! * options, -fno-underscoring <1>: Names. (line 23)
! * options, -fno-underscoring: Code Gen Options. (line 73)
* options, -fonetrip: Fortran Dialect Options.
! (line 127)
! * options, -fpack-struct: Code Gen Options. (line 336)
! * options, -fpcc-struct-return: Code Gen Options. (line 321)
! * options, -fpedantic: Warning Options. (line 44)
! * options, -fPIC: News. (line 854)
! * options, -freg-struct-return: Code Gen Options. (line 322)
! * options, -frerun-cse-after-loop: Optimize Options. (line 100)
! * options, -fschedule-insns: Optimize Options. (line 105)
! * options, -fschedule-insns2: Optimize Options. (line 107)
! * options, -fset-g77-defaults: Overall Options. (line 111)
! * options, -fshort-double: Code Gen Options. (line 328)
* options, -fsource-case-lower: Fortran Dialect Options.
+ (line 194)
* options, -fsource-case-preserve: Fortran Dialect Options.
+ (line 196)
* options, -fsource-case-upper: Fortran Dialect Options.
! (line 193)
! * options, -fstrength-reduce: Optimize Options. (line 97)
* options, -fsymbol-case-any: Fortran Dialect Options.
+ (line 207)
* options, -fsymbol-case-initcap: Fortran Dialect Options.
+ (line 202)
* options, -fsymbol-case-lower: Fortran Dialect Options.
+ (line 205)
* options, -fsymbol-case-upper: Fortran Dialect Options.
! (line 203)
! * options, -fsyntax-only: Warning Options. (line 20)
* options, -ftypeless-boz: Fortran Dialect Options.
! (line 153)
! * options, -fugly: Shorthand Options. (line 9)
* options, -fugly-assign: Fortran Dialect Options.
+ (line 65)
* options, -fugly-assumed: Fortran Dialect Options.
+ (line 72)
* options, -fugly-comma: Fortran Dialect Options.
+ (line 82)
* options, -fugly-complex: Fortran Dialect Options.
+ (line 99)
* options, -fugly-logint: Fortran Dialect Options.
+ (line 118)
* options, -funix-intrinsics-delete: Fortran Dialect Options.
+ (line 298)
* options, -funix-intrinsics-disable: Fortran Dialect Options.
+ (line 301)
* options, -funix-intrinsics-enable: Fortran Dialect Options.
+ (line 303)
* options, -funix-intrinsics-hide: Fortran Dialect Options.
! (line 299)
! * options, -funroll-all-loops: Optimize Options. (line 127)
! * options, -funroll-loops: Optimize Options. (line 113)
! * options, -funsafe-math-optimizations: Optimize Options. (line 77)
! * options, -fversion: Overall Options. (line 99)
* options, -fvxt: Fortran Dialect Options.
+ (line 26)
* options, -fvxt-intrinsics-delete: Fortran Dialect Options.
+ (line 308)
* options, -fvxt-intrinsics-disable: Fortran Dialect Options.
+ (line 311)
* options, -fvxt-intrinsics-enable: Fortran Dialect Options.
+ (line 313)
* options, -fvxt-intrinsics-hide: Fortran Dialect Options.
! (line 309)
! * options, -fzeros: Code Gen Options. (line 148)
! * options, -g: Debugging Options. (line 9)
! * options, -I-: Directory Options. (line 14)
! * options, -Idir: Directory Options. (line 15)
! * options, -malign-double <1>: Aligned Data. (line 59)
! * options, -malign-double: Optimize Options. (line 16)
! * options, -Nl: Compiler Limits. (line 10)
! * options, -Nx: Compiler Limits. (line 10)
! * options, -pedantic: Warning Options. (line 24)
! * options, -pedantic-errors: Warning Options. (line 40)
! * options, -v: G77 and GCC. (line 27)
! * options, -W: Warning Options. (line 185)
! * options, -w: Warning Options. (line 47)
! * options, -Waggregate-return: Warning Options. (line 226)
! * options, -Wall: Warning Options. (line 114)
! * options, -Wcomment: Warning Options. (line 205)
! * options, -Wconversion: Warning Options. (line 224)
! * options, -Werror: Warning Options. (line 182)
! * options, -Wformat: Warning Options. (line 206)
! * options, -Wid-clash-LEN: Warning Options. (line 220)
! * options, -Wimplicit: Warning Options. (line 60)
! * options, -Wlarger-than-LEN: Warning Options. (line 222)
! * options, -Wno-globals: Warning Options. (line 50)
! * options, -Wparentheses: Warning Options. (line 208)
! * options, -Wredundant-decls: Warning Options. (line 228)
! * options, -Wshadow: Warning Options. (line 218)
! * options, -Wsurprising: Warning Options. (line 124)
! * options, -Wswitch: Warning Options. (line 210)
! * options, -Wswitch-default: Warning Options. (line 212)
! * options, -Wswitch-enum: Warning Options. (line 214)
! * options, -Wtraditional: Warning Options. (line 216)
! * options, -Wuninitialized: Warning Options. (line 69)
! * options, -Wunused: Warning Options. (line 66)
! * options, -x f77-cpp-input: LEX. (line 109)
! * options, adding: Adding Options. (line 6)
! * options, code generation: Code Gen Options. (line 6)
! * options, debugging: Debugging Options. (line 6)
* options, dialect: Fortran Dialect Options.
! (line 6)
! * options, directory search: Directory Options. (line 6)
! * options, GNU Fortran command: Invoking G77. (line 6)
! * options, macro: Shorthand Options. (line 6)
! * options, negative forms: Invoking G77. (line 11)
! * options, optimization: Optimize Options. (line 6)
! * options, overall: Overall Options. (line 6)
* options, overly convenient: Overly Convenient Options.
+ (line 6)
* options, preprocessor: Preprocessor Options.
! (line 6)
! * options, shorthand: Shorthand Options. (line 6)
! * options, warnings: Warning Options. (line 6)
* Or intrinsic <1>: Bit Operations on Floating-point Data.
! (line 6)
! * Or intrinsic: Or Intrinsic. (line 6)
* order of evaluation, side effects: Order of Side Effects.
! (line 6)
! * ordering, array: Arrays. (line 6)
! * other intrinsics: Other Intrinsics. (line 6)
* output, flushing: Output Assumed To Flush.
! (line 6)
! * overall options: Overall Options. (line 6)
! * overflow: Warning Options. (line 195)
* overlapping arguments: Aliasing Assumed To Work.
+ (line 6)
* overlays: Aliasing Assumed To Work.
+ (line 6)
* overly convenient options: Overly Convenient Options.
+ (line 6)
* overwritten data: Strange Behavior at Run Time.
! (line 6)
! * Pack intrinsic: Pack Intrinsic. (line 6)
! * padding: Known Bugs. (line 122)
! * parallel processing: Support for Threads. (line 6)
* PARAMETER statement <1>: Old-style PARAMETER Statements.
+ (line 6)
* PARAMETER statement: Intrinsics in PARAMETER Statements.
! (line 6)
! * parameters, unused: Warning Options. (line 192)
! * paths, search: Directory Options. (line 17)
* PDB: Portable Unformatted Files.
+ (line 50)
* pedantic compilation: Pedantic Compilation.
! (line 6)
! * Pentium optimizations: Aligned Data. (line 6)
! * percent sign: Character Set. (line 29)
! * PError intrinsic: PError Intrinsic. (line 6)
* placing initialization statements: Initializing Before Specifying.
! (line 6)
! * POINTER statement: POINTER Statements. (line 6)
* pointers <1>: Ugly Assigned Labels.
! (line 6)
! * pointers: Kind Notation. (line 127)
* Poking the bear: Philosophy of Code Generation.
! (line 69)
! * porting, simplify: Simplify Porting. (line 6)
! * pound sign: Character Set. (line 25)
! * Precision intrinsic: Precision Intrinsic. (line 6)
* precision, increasing: Increasing Precision/Range.
+ (line 6)
* prefix-radix constants: Fortran Dialect Options.
! (line 153)
! * preprocessor <1>: LEX. (line 109)
* preprocessor <2>: Cpp-style directives.
! (line 6)
! * preprocessor <3>: Overall Options. (line 33)
* preprocessor: What is GNU Fortran?.
+ (line 106)
* preprocessor options: Preprocessor Options.
! (line 6)
! * Present intrinsic: Present Intrinsic. (line 6)
! * printing compilation status: Overall Options. (line 134)
! * printing main source: Known Bugs. (line 93)
! * printing version information <1>: Overall Options. (line 99)
* printing version information: What is GNU Fortran?.
! (line 132)
! * procedures: Procedures. (line 6)
! * Product intrinsic: Product Intrinsic. (line 6)
! * PROGRAM statement: Main Program Unit. (line 6)
* programs, cc1: What is GNU Fortran?.
+ (line 106)
* programs, cc1plus: What is GNU Fortran?.
! (line 111)
! * programs, compiling: G77 and GCC. (line 6)
! * programs, cpp <1>: LEX. (line 109)
* programs, cpp <2>: Preprocessor Options.
! (line 6)
! * programs, cpp <3>: Overall Options. (line 33)
* programs, cpp: What is GNU Fortran?.
+ (line 106)
* programs, f771: What is GNU Fortran?.
! (line 93)
! * programs, ratfor: Overall Options. (line 45)
! * programs, speeding up: Faster Programs. (line 6)
! * programs, test: Nothing Happens. (line 6)
! * projects: Projects. (line 6)
! * Q edit descriptor: Q Edit Descriptor. (line 6)
! * QAbs intrinsic: QAbs Intrinsic. (line 6)
! * QACos intrinsic: QACos Intrinsic. (line 6)
! * QACosD intrinsic: QACosD Intrinsic. (line 6)
! * QASin intrinsic: QASin Intrinsic. (line 6)
! * QASinD intrinsic: QASinD Intrinsic. (line 6)
! * QATan intrinsic: QATan Intrinsic. (line 6)
! * QATan2 intrinsic: QATan2 Intrinsic. (line 6)
! * QATan2D intrinsic: QATan2D Intrinsic. (line 6)
! * QATanD intrinsic: QATanD Intrinsic. (line 6)
! * QCos intrinsic: QCos Intrinsic. (line 6)
! * QCosD intrinsic: QCosD Intrinsic. (line 6)
! * QCosH intrinsic: QCosH Intrinsic. (line 6)
! * QDiM intrinsic: QDiM Intrinsic. (line 6)
! * QExp intrinsic: QExp Intrinsic. (line 6)
! * QExt intrinsic: QExt Intrinsic. (line 6)
! * QExtD intrinsic: QExtD Intrinsic. (line 6)
! * QFloat intrinsic: QFloat Intrinsic. (line 6)
! * QInt intrinsic: QInt Intrinsic. (line 6)
! * QLog intrinsic: QLog Intrinsic. (line 6)
! * QLog10 intrinsic: QLog10 Intrinsic. (line 6)
! * QMax1 intrinsic: QMax1 Intrinsic. (line 6)
! * QMin1 intrinsic: QMin1 Intrinsic. (line 6)
! * QMod intrinsic: QMod Intrinsic. (line 6)
! * QNInt intrinsic: QNInt Intrinsic. (line 6)
! * QSin intrinsic: QSin Intrinsic. (line 6)
! * QSinD intrinsic: QSinD Intrinsic. (line 6)
! * QSinH intrinsic: QSinH Intrinsic. (line 6)
! * QSqRt intrinsic: QSqRt Intrinsic. (line 6)
! * QTan intrinsic: QTan Intrinsic. (line 6)
! * QTanD intrinsic: QTanD Intrinsic. (line 6)
! * QTanH intrinsic: QTanH Intrinsic. (line 6)
! * question mark: Character Set. (line 23)
* questionable instructions: What is GNU Fortran?.
! (line 58)
! * Radix intrinsic: Radix Intrinsic. (line 6)
! * Rand intrinsic: Rand Intrinsic. (line 6)
* Random_Number intrinsic: Random_Number Intrinsic.
+ (line 6)
* Random_Seed intrinsic: Random_Seed Intrinsic.
! (line 6)
! * range checking: Code Gen Options. (line 264)
! * Range intrinsic: Range Intrinsic. (line 6)
* range, increasing: Increasing Precision/Range.
! (line 6)
! * rank, maximum: Compiler Limits. (line 18)
! * ratfor: Overall Options. (line 45)
! * Ratfor preprocessor: Overall Options. (line 45)
! * READONLY: READONLY Keyword. (line 6)
* reads and writes, scheduling: Aliasing Assumed To Work.
! (line 6)
! * Real intrinsic <1>: Real Intrinsic. (line 6)
* Real intrinsic: REAL() and AIMAG() of Complex.
+ (line 6)
* real part: Ugly Complex Part Extraction.
! (line 6)
! * REAL(KIND=1) type: Compiler Types. (line 52)
! * REAL(KIND=2) type: Compiler Types. (line 55)
* REAL*16 support: Full Support for Compiler Types.
! (line 6)
! * RealPart intrinsic: RealPart Intrinsic. (line 6)
! * recent versions <1>: Changes. (line 6)
! * recent versions: News. (line 6)
* RECORD statement: STRUCTURE UNION RECORD MAP.
! (line 6)
! * recursion, lack of: RECURSIVE Keyword. (line 6)
! * RECURSIVE keyword: RECURSIVE Keyword. (line 6)
! * reference works: Language. (line 6)
* Rename intrinsic <1>: Rename Intrinsic (function).
+ (line 6)
* Rename intrinsic: Rename Intrinsic (subroutine).
! (line 6)
! * Repeat intrinsic: Repeat Intrinsic. (line 6)
! * reporting bugs: Bugs. (line 6)
! * reporting compilation status: Overall Options. (line 134)
! * Reshape intrinsic: Reshape Intrinsic. (line 6)
* results, inconsistent: Floating-point Errors.
! (line 6)
! * RETURN statement <1>: Alternate Returns. (line 6)
! * RETURN statement: Functions. (line 6)
! * return type of functions: Functions. (line 6)
! * right angle: Character Set. (line 35)
! * right bracket: Character Set. (line 35)
* rounding errors: Floating-point Errors.
! (line 6)
! * row-major ordering: Arrays. (line 6)
! * RRSpacing intrinsic: RRSpacing Intrinsic. (line 6)
! * RShift intrinsic: RShift Intrinsic. (line 6)
* run-time, dynamic allocation: Arbitrary Concatenation.
! (line 6)
! * run-time, initialization: Startup Code. (line 6)
* run-time, library: What is GNU Fortran?.
! (line 81)
! * run-time, options: Code Gen Options. (line 6)
! * SAVE statement: Code Gen Options. (line 15)
* saved variables: Variables Assumed To Be Saved.
! (line 6)
! * Scale intrinsic: Scale Intrinsic. (line 6)
! * Scan intrinsic: Scan Intrinsic. (line 6)
* scheduling of reads and writes: Aliasing Assumed To Work.
+ (line 6)
* scope <1>: Scope and Classes of Names.
+ (line 6)
* scope: Scope of Names and Labels.
! (line 6)
! * search path: Directory Options. (line 6)
! * search paths, for included files: Directory Options. (line 17)
! * Secnds intrinsic: Secnds Intrinsic. (line 6)
* Second intrinsic <1>: Second Intrinsic (subroutine).
+ (line 6)
* Second intrinsic: Second Intrinsic (function).
+ (line 6)
* segmentation violation <1>: Strange Behavior at Run Time.
! (line 6)
! * segmentation violation <2>: Stack Overflow. (line 6)
! * segmentation violation: NeXTStep Problems. (line 6)
* Selected_Int_Kind intrinsic: Selected_Int_Kind Intrinsic.
+ (line 6)
* Selected_Real_Kind intrinsic: Selected_Real_Kind Intrinsic.
! (line 6)
! * semicolon <1>: Character Set. (line 15)
* semicolon: Statements Comments Lines.
! (line 23)
! * sequence numbers: Better Source Model. (line 28)
* Set_Exponent intrinsic: Set_Exponent Intrinsic.
! (line 6)
! * Shape intrinsic: Shape Intrinsic. (line 6)
! * SHARED: READONLY Keyword. (line 19)
* Shift intrinsic: Bit Operations on Floating-point Data.
! (line 6)
! * Short intrinsic: Short Intrinsic. (line 6)
! * short source lines: Short Lines. (line 6)
! * short time: Timer Wraparounds. (line 12)
! * shorthand options: Shorthand Options. (line 6)
* side effects, order of evaluation: Order of Side Effects.
! (line 6)
! * Sign intrinsic: Sign Intrinsic. (line 6)
* signal 11: Signal 11 and Friends.
+ (line 6)
* Signal intrinsic <1>: Signal Intrinsic (function).
+ (line 6)
* Signal intrinsic: Signal Intrinsic (subroutine).
! (line 6)
! * signature of procedures: Procedures. (line 6)
! * simplify porting: Simplify Porting. (line 6)
! * Sin intrinsic: Sin Intrinsic. (line 6)
! * SinD intrinsic: SinD Intrinsic. (line 6)
! * SinH intrinsic: SinH Intrinsic. (line 6)
! * Sleep intrinsic: Sleep Intrinsic. (line 6)
! * Sngl intrinsic: Sngl Intrinsic. (line 6)
! * SnglQ intrinsic: SnglQ Intrinsic. (line 6)
* Solaris: Strange Behavior at Run Time.
! (line 42)
! * source code <1>: Case Sensitivity. (line 6)
! * source code <2>: Source Form. (line 6)
! * source code <3>: Lines. (line 6)
* source code: What is GNU Fortran?.
+ (line 20)
* source file: What is GNU Fortran?.
! (line 20)
! * source file format <1>: Case Sensitivity. (line 6)
! * source file format <2>: Source Form. (line 6)
! * source file format <3>: Lines. (line 6)
* source file format: Fortran Dialect Options.
! (line 9)
! * source format <1>: Source Form. (line 6)
! * source format: Lines. (line 6)
! * source lines, long: Long Lines. (line 6)
! * source lines, short: Short Lines. (line 6)
! * space <1>: Lines. (line 37)
! * space: Character Set. (line 40)
* space, endless printing of: Strange Behavior at Run Time.
! (line 42)
! * space, padding with: Short Lines. (line 6)
! * Spacing intrinsic: Spacing Intrinsic. (line 6)
! * SPC <1>: Lines. (line 37)
! * SPC: Character Set. (line 40)
! * speed, of compiler: Known Bugs. (line 45)
! * speed, of loops: Optimize Options. (line 63)
! * speed, of programs: Faster Programs. (line 6)
* spills of floating-point results: Floating-point Errors.
! (line 113)
! * Spread intrinsic: Spread Intrinsic. (line 6)
! * SqRt intrinsic: SqRt Intrinsic. (line 6)
! * SRand intrinsic: SRand Intrinsic. (line 6)
! * stack, 387 coprocessor: News. (line 560)
! * stack, aligned: Aligned Data. (line 6)
! * stack, overflow: Stack Overflow. (line 6)
! * standard, ANSI FORTRAN 77: Language. (line 6)
! * standard, support for: Standard Support. (line 6)
! * startup code: Startup Code. (line 6)
* Stat intrinsic <1>: Stat Intrinsic (function).
+ (line 6)
* Stat intrinsic: Stat Intrinsic (subroutine).
+ (line 6)
* statement labels, assigned: Assigned Statement Labels.
+ (line 6)
* statements, ACCEPT: TYPE and ACCEPT I/O Statements.
+ (line 6)
* statements, ASSIGN <1>: Assigned Statement Labels.
+ (line 6)
* statements, ASSIGN: Ugly Assigned Labels.
! (line 6)
! * statements, AUTOMATIC: AUTOMATIC Statement. (line 6)
* statements, BLOCK DATA <1>: Multiple Definitions of External Names.
+ (line 6)
* statements, BLOCK DATA: Block Data and Libraries.
+ (line 6)
* statements, CLOSE: OPEN CLOSE and INQUIRE Keywords.
+ (line 6)
* statements, COMMON <1>: Multiple Definitions of External Names.
! (line 6)
! * statements, COMMON: Common Blocks. (line 6)
! * statements, COMPLEX: Complex Variables. (line 6)
! * statements, CYCLE: CYCLE and EXIT. (line 6)
! * statements, DATA <1>: Known Bugs. (line 45)
! * statements, DATA: Code Gen Options. (line 21)
! * statements, DECODE: ENCODE and DECODE. (line 6)
* statements, DIMENSION <1>: Array Bounds Expressions.
! (line 6)
! * statements, DIMENSION <2>: Adjustable Arrays. (line 6)
! * statements, DIMENSION: Arrays. (line 6)
! * statements, DO <1>: Loops. (line 6)
! * statements, DO: Warning Options. (line 171)
! * statements, ENCODE: ENCODE and DECODE. (line 6)
* statements, ENTRY: Alternate Entry Points.
+ (line 6)
* statements, EQUIVALENCE: Local Equivalence Areas.
! (line 6)
! * statements, EXIT: CYCLE and EXIT. (line 6)
* statements, FORMAT: Expressions in FORMAT Statements.
! (line 6)
! * statements, FUNCTION <1>: Functions. (line 6)
! * statements, FUNCTION: Procedures. (line 6)
* statements, GOTO: Assigned Statement Labels.
+ (line 6)
* statements, IMPLICIT CHARACTER*(*): Limitation on Implicit Declarations.
+ (line 6)
* statements, INQUIRE: OPEN CLOSE and INQUIRE Keywords.
+ (line 6)
* statements, MAP: STRUCTURE UNION RECORD MAP.
! (line 6)
! * statements, NAMELIST: NAMELIST. (line 6)
* statements, OPEN: OPEN CLOSE and INQUIRE Keywords.
+ (line 6)
* statements, PARAMETER <1>: Old-style PARAMETER Statements.
+ (line 6)
* statements, PARAMETER: Intrinsics in PARAMETER Statements.
! (line 6)
! * statements, POINTER: POINTER Statements. (line 6)
! * statements, PROGRAM: Main Program Unit. (line 6)
* statements, RECORD: STRUCTURE UNION RECORD MAP.
! (line 6)
! * statements, RETURN <1>: Alternate Returns. (line 6)
! * statements, RETURN: Functions. (line 6)
! * statements, SAVE: Code Gen Options. (line 15)
* statements, separated by semicolon: Statements Comments Lines.
+ (line 23)
* statements, STRUCTURE: STRUCTURE UNION RECORD MAP.
! (line 6)
! * statements, SUBROUTINE <1>: Alternate Returns. (line 6)
! * statements, SUBROUTINE: Procedures. (line 6)
* statements, TYPE: TYPE and ACCEPT I/O Statements.
+ (line 6)
* statements, UNION: STRUCTURE UNION RECORD MAP.
! (line 6)
! * STATIC: AUTOMATIC Statement. (line 30)
* static variables: Variables Assumed To Be Saved.
! (line 6)
! * status, compilation: Overall Options. (line 134)
* storage association: Aliasing Assumed To Work.
! (line 6)
! * strings, empty: Character Type. (line 14)
* STRUCTURE statement: STRUCTURE UNION RECORD MAP.
! (line 6)
! * structures: Known Bugs. (line 122)
* submodels: Use Submodel Options.
! (line 6)
! * SUBROUTINE statement <1>: Alternate Returns. (line 6)
! * SUBROUTINE statement: Procedures. (line 6)
! * subroutines: Alternate Returns. (line 6)
! * subscript checking: Code Gen Options. (line 264)
! * substring checking: Code Gen Options. (line 264)
! * suffixes, file name: Overall Options. (line 13)
! * Sum intrinsic: Sum Intrinsic. (line 6)
! * support, Alpha: Known Bugs. (line 117)
! * support, ELF: News. (line 854)
* support, f77: Backslash in Constants.
! (line 6)
! * support, FORTRAN 77: Standard Support. (line 6)
! * support, Fortran 90: Fortran 90 Support. (line 6)
! * support, gdb: Debugger Problems. (line 6)
! * suppressing warnings: Warning Options. (line 6)
! * symbol names <1>: Names. (line 6)
* symbol names: Fortran Dialect Options.
+ (line 38)
* symbol names, scope and classes: Scope and Classes of Names.
! (line 6)
! * symbol names, transforming: Code Gen Options. (line 74)
! * symbol names, underscores: Code Gen Options. (line 74)
* SymLnk intrinsic <1>: SymLnk Intrinsic (function).
+ (line 6)
* SymLnk intrinsic: SymLnk Intrinsic (subroutine).
+ (line 6)
* synchronous write errors: Output Assumed To Flush.
! (line 6)
! * syntax checking: Warning Options. (line 20)
* System intrinsic <1>: System Intrinsic (function).
+ (line 6)
* System intrinsic: System Intrinsic (subroutine).
+ (line 6)
* System_Clock intrinsic: System_Clock Intrinsic.
! (line 6)
! * tab character: Tabs. (line 6)
* table of intrinsics: Table of Intrinsic Functions.
! (line 6)
! * Tan intrinsic: Tan Intrinsic. (line 6)
! * TanD intrinsic: TanD Intrinsic. (line 6)
! * TanH intrinsic: TanH Intrinsic. (line 6)
! * test programs: Nothing Happens. (line 6)
! * textbooks: Language. (line 17)
! * threads: Support for Threads. (line 6)
* Time intrinsic <1>: Time Intrinsic (VXT).
+ (line 6)
* Time intrinsic: Time Intrinsic (UNIX).
! (line 6)
! * Time8 intrinsic: Time8 Intrinsic. (line 6)
! * Tiny intrinsic: Tiny Intrinsic. (line 6)
* Toolpack: Increasing Precision/Range.
! (line 6)
! * trailing comma: Ugly Null Arguments. (line 6)
! * trailing comment <1>: LEX. (line 46)
! * trailing comment <2>: Trailing Comment. (line 6)
* trailing comment: Statements Comments Lines.
+ (line 8)
* trailing null byte: Character and Hollerith Constants.
! (line 6)
! * Transfer intrinsic: Transfer Intrinsic. (line 6)
! * transforming symbol names <1>: Names. (line 6)
! * transforming symbol names: Code Gen Options. (line 74)
* translation of user programs: What is GNU Fortran?.
! (line 24)
! * Transpose intrinsic: Transpose Intrinsic. (line 6)
! * Trim intrinsic: Trim Intrinsic. (line 6)
! * trips, number of: Loops. (line 6)
* truncation, of floating-point values: Floating-point Errors.
! (line 113)
! * truncation, of long lines: Long Lines. (line 6)
* TtyNam intrinsic <1>: TtyNam Intrinsic (function).
+ (line 6)
* TtyNam intrinsic: TtyNam Intrinsic (subroutine).
+ (line 6)
* TYPE statement: TYPE and ACCEPT I/O Statements.
! (line 6)
! * types, COMPLEX(KIND=1): Compiler Types. (line 88)
! * types, COMPLEX(KIND=2): Compiler Types. (line 92)
! * types, constants <1>: Compiler Constants. (line 6)
! * types, constants <2>: Constants. (line 6)
* types, constants: Fortran Dialect Options.
! (line 153)
! * types, DOUBLE COMPLEX: Compiler Types. (line 103)
! * types, DOUBLE PRECISION: Compiler Types. (line 100)
! * types, file: Overall Options. (line 13)
* types, Fortran/C: C Access to Type Information.
! (line 6)
! * types, INTEGER(KIND=1): Compiler Types. (line 59)
! * types, INTEGER(KIND=2): Compiler Types. (line 67)
! * types, INTEGER(KIND=3): Compiler Types. (line 75)
! * types, INTEGER(KIND=6): Compiler Types. (line 81)
* types, INTEGER*2: Popular Non-standard Types.
+ (line 6)
* types, INTEGER*8: Full Support for Compiler Types.
! (line 6)
! * types, LOGICAL(KIND=1): Compiler Types. (line 64)
! * types, LOGICAL(KIND=2): Compiler Types. (line 72)
! * types, LOGICAL(KIND=3): Compiler Types. (line 78)
! * types, LOGICAL(KIND=6): Compiler Types. (line 85)
* types, LOGICAL*1: Popular Non-standard Types.
! (line 6)
! * types, of data: Compiler Types. (line 6)
! * types, REAL(KIND=1): Compiler Types. (line 52)
! * types, REAL(KIND=2): Compiler Types. (line 55)
* types, REAL*16: Full Support for Compiler Types.
! (line 6)
! * UBound intrinsic: UBound Intrinsic. (line 6)
! * ugly features <1>: Distensions. (line 6)
! * ugly features: Shorthand Options. (line 10)
* UMask intrinsic <1>: UMask Intrinsic (function).
+ (line 6)
* UMask intrinsic: UMask Intrinsic (subroutine).
! (line 6)
! * undefined behavior: Bug Criteria. (line 18)
! * undefined function value: Bug Criteria. (line 18)
* undefined reference (_main): Cannot Link Fortran Programs.
! (line 19)
! * underscore <1>: Mangling of Names. (line 6)
* underscore <2>: Underscores in Symbol Names.
! (line 6)
! * underscore <3>: Character Set. (line 31)
! * underscore: Code Gen Options. (line 74)
* unformatted files: Portable Unformatted Files.
+ (line 6)
* uninitialized variables <1>: Variables Assumed To Be Zero.
! (line 6)
! * uninitialized variables <2>: Code Gen Options. (line 21)
! * uninitialized variables: Warning Options. (line 70)
* UNION statement: STRUCTURE UNION RECORD MAP.
+ (line 6)
* unit numbers: Large File Unit Numbers.
! (line 6)
! * UNIX f77: Shorthand Options. (line 46)
* UNIX intrinsics: Fortran Dialect Options.
+ (line 305)
* Unlink intrinsic <1>: Unlink Intrinsic (function).
+ (line 6)
* Unlink intrinsic: Unlink Intrinsic (subroutine).
! (line 6)
! * Unpack intrinsic: Unpack Intrinsic. (line 6)
* unrecognized file format: What is GNU Fortran?.
+ (line 120)
* unresolved reference (various): Cannot Link Fortran Programs.
! (line 6)
! * unrolling loops: Optimize Options. (line 114)
! * UNSAVE: AUTOMATIC Statement. (line 30)
! * unsupported warnings: Warning Options. (line 230)
! * unused arguments <1>: Unused Arguments. (line 6)
! * unused arguments: Warning Options. (line 192)
! * unused dummies: Warning Options. (line 192)
! * unused parameters: Warning Options. (line 192)
! * unused variables: Warning Options. (line 67)
! * uppercase letters: Case Sensitivity. (line 6)
! * user-visible changes: Changes. (line 6)
* variables, assumed to be zero: Variables Assumed To Be Zero.
! (line 6)
! * variables, automatic: AUTOMATIC Statement. (line 6)
! * variables, initialization of: Code Gen Options. (line 21)
! * variables, mistyped: Not My Type. (line 6)
* variables, retaining values across calls: Variables Assumed To Be Saved.
! (line 6)
! * variables, uninitialized <1>: Code Gen Options. (line 21)
! * variables, uninitialized: Warning Options. (line 70)
! * variables, unused: Warning Options. (line 67)
! * Verify intrinsic: Verify Intrinsic. (line 6)
! * version information, printing <1>: Overall Options. (line 99)
* version information, printing: What is GNU Fortran?.
! (line 132)
! * versions, recent <1>: Changes. (line 6)
! * versions, recent: News. (line 6)
! * VXT extensions <1>: VXT Fortran. (line 6)
* VXT extensions: Fortran Dialect Options.
+ (line 27)
* VXT intrinsics: Fortran Dialect Options.
+ (line 315)
* vxtidate_y2kbuggy_0: Year 2000 (Y2K) Problems.
+ (line 28)
* warnings: What is GNU Fortran?.
! (line 58)
! * warnings vs errors: Warnings and Errors. (line 6)
! * warnings, all: Warning Options. (line 115)
! * warnings, extra: Warning Options. (line 186)
! * warnings, global names <1>: Code Gen Options. (line 224)
! * warnings, global names: Warning Options. (line 51)
! * warnings, implicit declaration: Warning Options. (line 61)
! * warnings, suppressing: Warning Options. (line 6)
! * warnings, unsupported: Warning Options. (line 230)
* wisdom: Collected Fortran Wisdom.
+ (line 6)
* wraparound: Run-time Environment Limits.
! (line 6)
! * wraparound, timings <1>: Secnds Intrinsic. (line 19)
* wraparound, timings <2>: DTime Intrinsic (function).
! (line 25)
! * wraparound, timings <3>: Time8 Intrinsic. (line 19)
* wraparound, timings <4>: Time Intrinsic (UNIX).
+ (line 19)
* wraparound, timings <5>: System_Clock Intrinsic.
+ (line 25)
* wraparound, timings <6>: Second Intrinsic (subroutine).
+ (line 18)
* wraparound, timings <7>: Second Intrinsic (function).
! (line 18)
! * wraparound, timings <8>: MClock8 Intrinsic. (line 18)
! * wraparound, timings <9>: MClock Intrinsic. (line 18)
* wraparound, timings <10>: ETime Intrinsic (function).
+ (line 22)
* wraparound, timings <11>: ETime Intrinsic (subroutine).
+ (line 22)
* wraparound, timings <12>: DTime Intrinsic (subroutine).
! (line 25)
! * wraparound, timings: CPU_Time Intrinsic. (line 19)
* wraparound, Y10K <1>: Time Intrinsic (VXT).
+ (line 18)
* wraparound, Y10K <2>: IDate Intrinsic (UNIX).
+ (line 20)
* wraparound, Y10K <3>: FDate Intrinsic (function).
+ (line 21)
* wraparound, Y10K <4>: FDate Intrinsic (subroutine).
+ (line 22)
* wraparound, Y10K: Date_and_Time Intrinsic.
+ (line 39)
* wraparound, Y2K: IDate Intrinsic (VXT).
+ (line 23)
* writes, flushing: Output Assumed To Flush.
+ (line 6)
* writing code: Collected Fortran Wisdom.
+ (line 6)
* x86 floating-point: Floating-point precision.
+ (line 6)
* x86 FPU stack: Inconsistent Calling Sequences.
! (line 6)
! * XOr intrinsic: XOr Intrinsic. (line 6)
* Y10K compliance <1>: Time Intrinsic (VXT).
+ (line 18)
* Y10K compliance <2>: Year 10000 (Y10K) Problems.
+ (line 6)
* Y10K compliance <3>: IDate Intrinsic (UNIX).
+ (line 20)
* Y10K compliance <4>: FDate Intrinsic (function).
+ (line 21)
* Y10K compliance <5>: FDate Intrinsic (subroutine).
+ (line 22)
* Y10K compliance: Date_and_Time Intrinsic.
! (line 39)
! * Y2K compliance <1>: Y2KBAD. (line 6)
* Y2K compliance <2>: IDate Intrinsic (VXT).
! (line 23)
! * Y2K compliance <3>: Date Intrinsic. (line 19)
* Y2K compliance: Year 2000 (Y2K) Problems.
+ (line 6)
* y2kbuggy: Year 2000 (Y2K) Problems.
+ (line 28)
* Year 10000 compliance <1>: Time Intrinsic (VXT).
+ (line 18)
* Year 10000 compliance <2>: Year 10000 (Y10K) Problems.
+ (line 6)
* Year 10000 compliance <3>: IDate Intrinsic (UNIX).
+ (line 20)
* Year 10000 compliance <4>: FDate Intrinsic (function).
+ (line 21)
* Year 10000 compliance <5>: FDate Intrinsic (subroutine).
+ (line 22)
* Year 10000 compliance: Date_and_Time Intrinsic.
! (line 39)
! * Year 2000 compliance <1>: Y2KBAD. (line 6)
* Year 2000 compliance <2>: IDate Intrinsic (VXT).
! (line 23)
! * Year 2000 compliance <3>: Date Intrinsic. (line 19)
* Year 2000 compliance: Year 2000 (Y2K) Problems.
! (line 6)
! * Z edit descriptor <1>: Fortran 90 Features. (line 68)
! * Z edit descriptor: I/O. (line 16)
! * ZAbs intrinsic: ZAbs Intrinsic. (line 6)
! * ZCos intrinsic: ZCos Intrinsic. (line 6)
* zero byte, trailing: Character and Hollerith Constants.
+ (line 6)
* zero-initialized variables: Variables Assumed To Be Zero.
! (line 6)
! * zero-length CHARACTER: Character Type. (line 14)
* zero-trip DO loops: Fortran Dialect Options.
! (line 128)
! * ZExp intrinsic: ZExp Intrinsic. (line 6)
! * ZExt intrinsic: ZExt Intrinsic. (line 6)
! * ZLog intrinsic: ZLog Intrinsic. (line 6)
! * ZSin intrinsic: ZSin Intrinsic. (line 6)
! * ZSqRt intrinsic: ZSqRt Intrinsic. (line 6)
Tag Table:
! Node: Top2356
! Node: Copying4310
! Node: GNU Free Documentation License23478
! Node: Contributors45880
! Node: Funding49268
! Node: Funding GNU Fortran51777
! Node: Getting Started52993
! Node: What is GNU Fortran?55243
! Node: G77 and GCC65132
! Node: Invoking G7766336
! Node: Option Summary68275
! Node: Overall Options73090
! Node: Shorthand Options79683
! Node: Fortran Dialect Options81985
! Node: Warning Options93247
! Node: Debugging Options102169
! Node: Optimize Options103764
! Ref: Optimize Options-Footnote-1109787
! Node: Preprocessor Options110480
! Node: Directory Options111666
! Node: Code Gen Options112983
! Node: Environment Variables127897
! Node: News128359
! Node: Changes183228
! Node: Language211622
! Node: Direction of Language Development213824
! Node: Standard Support220069
! Node: No Passing External Assumed-length220795
! Node: No Passing Dummy Assumed-length221281
! Node: No Pathological Implied-DO221805
! Node: No Useless Implied-DO222501
! Node: Conformance223241
! Node: Notation Used225269
! Node: Terms and Concepts229478
! Node: Syntactic Items229995
! Node: Statements Comments Lines230686
! Node: Scope of Names and Labels232560
! Node: Characters Lines Sequence232999
! Node: Character Set233610
! Node: Lines234620
! Node: Continuation Line237105
! Node: Statements238069
! Node: Statement Labels239034
! Node: Order239735
! Node: INCLUDE240629
! Node: Cpp-style directives243410
! Node: Data Types and Constants243874
! Node: Types247400
! Node: Double Notation248498
! Node: Star Notation249583
! Node: Kind Notation252541
! Node: Constants260974
! Node: Integer Type262499
! Node: Character Type263106
! Node: Expressions263879
! Node: %LOC()264300
! Node: Specification Statements267042
! Node: NAMELIST267504
! Node: DOUBLE COMPLEX268264
! Node: Control Statements268527
! Node: DO WHILE269026
! Node: END DO269342
! Node: Construct Names270360
! Node: CYCLE and EXIT271111
! Node: Functions and Subroutines273886
! Node: %VAL()274539
! Node: %REF()275917
! Node: %DESCR()277759
! Node: Generics and Specifics279906
! Node: REAL() and AIMAG() of Complex287119
! Node: CMPLX() of DOUBLE PRECISION288963
! Node: MIL-STD 1753290700
! Node: f77/f2c Intrinsics291053
! Node: Table of Intrinsic Functions291634
! Node: Abort Intrinsic308357
! Node: Abs Intrinsic308640
! Node: Access Intrinsic309522
! Node: AChar Intrinsic310377
! Node: ACos Intrinsic310918
! Node: AdjustL Intrinsic311398
! Node: AdjustR Intrinsic311738
! Node: AImag Intrinsic312079
! Node: AInt Intrinsic312903
! Node: Alarm Intrinsic313550
! Node: All Intrinsic314403
! Node: Allocated Intrinsic314732
! Node: ALog Intrinsic315078
! Node: ALog10 Intrinsic315489
! Node: AMax0 Intrinsic315908
! Node: AMax1 Intrinsic316414
! Node: AMin0 Intrinsic316888
! Node: AMin1 Intrinsic317393
! Node: AMod Intrinsic317866
! Node: And Intrinsic318313
! Node: ANInt Intrinsic318840
! Node: Any Intrinsic319625
! Node: ASin Intrinsic319949
! Node: Associated Intrinsic320428
! Node: ATan Intrinsic320779
! Node: ATan2 Intrinsic321266
! Node: BesJ0 Intrinsic321838
! Node: BesJ1 Intrinsic322320
! Node: BesJN Intrinsic322802
! Node: BesY0 Intrinsic323354
! Node: BesY1 Intrinsic323837
! Node: BesYN Intrinsic324320
! Node: Bit_Size Intrinsic324876
! Node: BTest Intrinsic325556
! Node: CAbs Intrinsic326297
! Node: CCos Intrinsic326705
! Node: Ceiling Intrinsic327118
! Node: CExp Intrinsic327457
! Node: Char Intrinsic327870
! Node: ChDir Intrinsic (subroutine)329145
! Node: ChMod Intrinsic (subroutine)330169
! Node: CLog Intrinsic331460
! Node: Cmplx Intrinsic331885
! Node: Complex Intrinsic332707
! Node: Conjg Intrinsic334174
! Node: Cos Intrinsic334619
! Node: CosH Intrinsic335103
! Node: Count Intrinsic335499
! Node: CPU_Time Intrinsic335834
! Node: CShift Intrinsic336646
! Node: CSin Intrinsic336985
! Node: CSqRt Intrinsic337398
! Node: CTime Intrinsic (subroutine)337829
! Node: CTime Intrinsic (function)338605
! Node: DAbs Intrinsic339260
! Node: DACos Intrinsic339677
! Node: DASin Intrinsic340089
! Node: DATan Intrinsic340502
! Node: DATan2 Intrinsic340916
! Node: Date_and_Time Intrinsic341392
! Node: DbesJ0 Intrinsic342777
! Node: DbesJ1 Intrinsic343191
! Node: DbesJN Intrinsic343598
! Node: DbesY0 Intrinsic344075
! Node: DbesY1 Intrinsic344482
! Node: DbesYN Intrinsic344889
! Node: Dble Intrinsic345364
! Node: DCos Intrinsic346091
! Node: DCosH Intrinsic346496
! Node: DDiM Intrinsic346907
! Node: DErF Intrinsic347360
! Node: DErFC Intrinsic347750
! Node: DExp Intrinsic348146
! Node: Digits Intrinsic348553
! Node: DiM Intrinsic348887
! Node: DInt Intrinsic349407
! Node: DLog Intrinsic349812
! Node: DLog10 Intrinsic350218
! Node: DMax1 Intrinsic350637
! Node: DMin1 Intrinsic351112
! Node: DMod Intrinsic351585
! Node: DNInt Intrinsic352034
! Node: Dot_Product Intrinsic352454
! Node: DProd Intrinsic352811
! Node: DSign Intrinsic353214
! Node: DSin Intrinsic353674
! Node: DSinH Intrinsic354080
! Node: DSqRt Intrinsic354492
! Node: DTan Intrinsic354904
! Node: DTanH Intrinsic355310
! Node: DTime Intrinsic (subroutine)355735
! Node: EOShift Intrinsic357027
! Node: Epsilon Intrinsic357383
! Node: ErF Intrinsic357724
! Node: ErFC Intrinsic358151
! Node: ETime Intrinsic (subroutine)358732
! Node: ETime Intrinsic (function)359916
! Node: Exit Intrinsic360977
! Node: Exp Intrinsic361507
! Node: Exponent Intrinsic361990
! Node: FDate Intrinsic (subroutine)362348
! Node: FDate Intrinsic (function)363281
! Node: FGet Intrinsic (subroutine)364076
! Node: FGetC Intrinsic (subroutine)364936
! Node: Float Intrinsic365836
! Node: Floor Intrinsic366259
! Node: Flush Intrinsic366594
! Node: FNum Intrinsic367196
! Node: FPut Intrinsic (subroutine)367667
! Node: FPutC Intrinsic (subroutine)368487
! Node: Fraction Intrinsic369357
! Node: FSeek Intrinsic369717
! Node: FStat Intrinsic (subroutine)370465
! Node: FStat Intrinsic (function)372012
! Node: FTell Intrinsic (subroutine)373324
! Node: FTell Intrinsic (function)374020
! Node: GError Intrinsic374560
! Node: GetArg Intrinsic374957
! Node: GetCWD Intrinsic (subroutine)375648
! Node: GetCWD Intrinsic (function)376526
! Node: GetEnv Intrinsic377168
! Node: GetGId Intrinsic377778
! Node: GetLog Intrinsic378107
! Node: GetPId Intrinsic378668
! Node: GetUId Intrinsic378999
! Node: GMTime Intrinsic379327
! Node: HostNm Intrinsic (subroutine)380358
! Node: HostNm Intrinsic (function)381470
! Node: Huge Intrinsic382335
! Node: IAbs Intrinsic382677
! Node: IAChar Intrinsic383091
! Node: IAnd Intrinsic383654
! Node: IArgC Intrinsic384165
! Node: IBClr Intrinsic384564
! Node: IBits Intrinsic385098
! Node: IBSet Intrinsic385835
! Node: IChar Intrinsic386360
! Node: IDate Intrinsic (UNIX)387602
! Node: IDiM Intrinsic388467
! Node: IDInt Intrinsic388939
! Node: IDNInt Intrinsic389355
! Node: IEOr Intrinsic389777
! Node: IErrNo Intrinsic390298
! Node: IFix Intrinsic390648
! Node: Imag Intrinsic391059
! Node: ImagPart Intrinsic392087
! Node: Index Intrinsic393136
! Node: Int Intrinsic393712
! Node: Int2 Intrinsic394450
! Node: Int8 Intrinsic395182
! Node: IOr Intrinsic395914
! Node: IRand Intrinsic396417
! Node: IsaTty Intrinsic397360
! Node: IShft Intrinsic397807
! Node: IShftC Intrinsic398660
! Node: ISign Intrinsic399612
! Node: ITime Intrinsic400085
! Node: Kill Intrinsic (subroutine)400510
! Node: Kind Intrinsic401369
! Node: LBound Intrinsic401713
! Node: Len Intrinsic402049
! Node: Len_Trim Intrinsic402708
! Node: LGe Intrinsic403143
! Node: LGt Intrinsic404579
! Node: Link Intrinsic (subroutine)405507
! Node: LLe Intrinsic406494
! Node: LLt Intrinsic407422
! Node: LnBlnk Intrinsic408339
! Node: Loc Intrinsic408765
! Node: Log Intrinsic409219
! Node: Log10 Intrinsic409833
! Node: Logical Intrinsic410398
! Node: Long Intrinsic410740
! Node: LShift Intrinsic411287
! Node: LStat Intrinsic (subroutine)412346
! Node: LStat Intrinsic (function)414180
! Node: LTime Intrinsic415765
! Node: MatMul Intrinsic416792
! Node: Max Intrinsic417129
! Node: Max0 Intrinsic417703
! Node: Max1 Intrinsic418177
! Node: MaxExponent Intrinsic418684
! Node: MaxLoc Intrinsic419043
! Node: MaxVal Intrinsic419389
! Node: MClock Intrinsic419730
! Node: MClock8 Intrinsic420651
! Node: Merge Intrinsic421862
! Node: Min Intrinsic422197
! Node: Min0 Intrinsic422771
! Node: Min1 Intrinsic423245
! Node: MinExponent Intrinsic423752
! Node: MinLoc Intrinsic424111
! Node: MinVal Intrinsic424457
! Node: Mod Intrinsic424795
! Node: Modulo Intrinsic425341
! Node: MvBits Intrinsic425679
! Node: Nearest Intrinsic426568
! Node: NInt Intrinsic426911
! Node: Not Intrinsic427772
! Node: Or Intrinsic428190
! Node: Pack Intrinsic428711
! Node: PError Intrinsic429040
! Node: Precision Intrinsic429517
! Node: Present Intrinsic429871
! Node: Product Intrinsic430220
! Node: Radix Intrinsic430565
! Node: Rand Intrinsic430901
! Node: Random_Number Intrinsic431811
! Node: Random_Seed Intrinsic432183
! Node: Range Intrinsic432550
! Node: Real Intrinsic432890
! Node: RealPart Intrinsic433919
! Node: Rename Intrinsic (subroutine)434975
! Node: Repeat Intrinsic435969
! Node: Reshape Intrinsic436324
! Node: RRSpacing Intrinsic436672
! Node: RShift Intrinsic437026
! Node: Scale Intrinsic438047
! Node: Scan Intrinsic438382
! Node: Second Intrinsic (function)438725
! Node: Second Intrinsic (subroutine)439579
! Node: Selected_Int_Kind Intrinsic440577
! Node: Selected_Real_Kind Intrinsic440987
! Node: Set_Exponent Intrinsic441393
! Node: Shape Intrinsic441769
! Node: Short Intrinsic442111
! Node: Sign Intrinsic442829
! Node: Signal Intrinsic (subroutine)443452
! Node: Sin Intrinsic445691
! Node: SinH Intrinsic446189
! Node: Sleep Intrinsic446585
! Node: Sngl Intrinsic446950
! Node: Spacing Intrinsic447362
! Node: Spread Intrinsic447705
! Node: SqRt Intrinsic448045
! Node: SRand Intrinsic448672
! Node: Stat Intrinsic (subroutine)449072
! Node: Stat Intrinsic (function)450709
! Node: Sum Intrinsic452095
! Node: SymLnk Intrinsic (subroutine)452446
! Node: System Intrinsic (subroutine)453500
! Node: System_Clock Intrinsic454462
! Node: Tan Intrinsic455609
! Node: TanH Intrinsic456092
! Node: Time Intrinsic (UNIX)456497
! Node: Time8 Intrinsic457505
! Node: Tiny Intrinsic458707
! Node: Transfer Intrinsic459041
! Node: Transpose Intrinsic459391
! Node: Trim Intrinsic459744
! Node: TtyNam Intrinsic (subroutine)460093
! Node: TtyNam Intrinsic (function)460818
! Node: UBound Intrinsic461410
! Node: UMask Intrinsic (subroutine)461774
! Node: Unlink Intrinsic (subroutine)462494
! Node: Unpack Intrinsic463414
! Node: Verify Intrinsic463768
! Node: XOr Intrinsic464106
! Node: ZAbs Intrinsic464645
! Node: ZCos Intrinsic465037
! Node: ZExp Intrinsic465433
! Node: ZLog Intrinsic465829
! Node: ZSin Intrinsic466225
! Node: ZSqRt Intrinsic466622
! Node: Scope and Classes of Names467002
! Node: Underscores in Symbol Names467491
! Node: I/O467749
! Node: Fortran 90 Features468529
! Node: Other Dialects471338
! Node: Source Form472498
! Node: Carriage Returns473718
! Node: Tabs474056
! Node: Short Lines474938
! Node: Long Lines475921
! Node: Ampersands476541
! Node: Trailing Comment476804
! Node: Debug Line477585
! Node: Dollar Signs478259
! Node: Case Sensitivity478550
! Node: VXT Fortran487156
! Node: Double Quote Meaning488344
! Node: Exclamation Point489281
! Node: Fortran 90490333
! Node: Pedantic Compilation491390
! Node: Distensions495359
! Node: Ugly Implicit Argument Conversion496328
! Node: Ugly Assumed-Size Arrays496951
! Node: Ugly Complex Part Extraction498681
! Node: Ugly Null Arguments500312
! Node: Ugly Conversion of Initializers501924
! Node: Ugly Integer Conversions503698
! Node: Ugly Assigned Labels504815
! Node: Compiler506755
! Node: Compiler Limits507396
! Node: Run-time Environment Limits508294
! Node: Timer Wraparounds510243
! Node: Year 2000 (Y2K) Problems511533
! Node: Array Size516050
! Node: Character-variable Length517246
! Node: Year 10000 (Y10K) Problems517766
! Node: Compiler Types518323
! Node: Compiler Constants523041
! Node: Compiler Intrinsics523907
! Node: Intrinsic Groups524841
! Node: Other Intrinsics528293
! Node: ACosD Intrinsic535902
! Node: AIMax0 Intrinsic536198
! Node: AIMin0 Intrinsic536522
! Node: AJMax0 Intrinsic536847
! Node: AJMin0 Intrinsic537172
! Node: ASinD Intrinsic537496
! Node: ATan2D Intrinsic537817
! Node: ATanD Intrinsic538140
! Node: BITest Intrinsic538461
! Node: BJTest Intrinsic538785
! Node: CDAbs Intrinsic539111
! Node: CDCos Intrinsic539505
! Node: CDExp Intrinsic539901
! Node: CDLog Intrinsic540297
! Node: CDSin Intrinsic540693
! Node: CDSqRt Intrinsic541090
! Node: ChDir Intrinsic (function)541504
! Node: ChMod Intrinsic (function)542353
! Node: CosD Intrinsic543487
! Node: DACosD Intrinsic543816
! Node: DASinD Intrinsic544141
! Node: DATan2D Intrinsic544469
! Node: DATanD Intrinsic544800
! Node: Date Intrinsic545126
! Node: DbleQ Intrinsic545866
! Node: DCmplx Intrinsic546187
! Node: DConjg Intrinsic547839
! Node: DCosD Intrinsic548245
! Node: DFloat Intrinsic548568
! Node: DFlotI Intrinsic548961
! Node: DFlotJ Intrinsic549288
! Node: DImag Intrinsic549614
! Node: DReal Intrinsic550012
! Node: DSinD Intrinsic551180
! Node: DTanD Intrinsic551501
! Node: DTime Intrinsic (function)551833
! Node: FGet Intrinsic (function)553084
! Node: FGetC Intrinsic (function)553878
! Node: FloatI Intrinsic554715
! Node: FloatJ Intrinsic555052
! Node: FPut Intrinsic (function)555388
! Node: FPutC Intrinsic (function)556145
! Node: IDate Intrinsic (VXT)556959
! Node: IIAbs Intrinsic558087
! Node: IIAnd Intrinsic558414
! Node: IIBClr Intrinsic558736
! Node: IIBits Intrinsic559062
! Node: IIBSet Intrinsic559389
! Node: IIDiM Intrinsic559715
! Node: IIDInt Intrinsic560038
! Node: IIDNnt Intrinsic560364
! Node: IIEOr Intrinsic560690
! Node: IIFix Intrinsic561012
! Node: IInt Intrinsic561332
! Node: IIOr Intrinsic561648
! Node: IIQint Intrinsic561965
! Node: IIQNnt Intrinsic562290
! Node: IIShftC Intrinsic562618
! Node: IISign Intrinsic562949
! Node: IMax0 Intrinsic563276
! Node: IMax1 Intrinsic563598
! Node: IMin0 Intrinsic563919
! Node: IMin1 Intrinsic564240
! Node: IMod Intrinsic564560
! Node: INInt Intrinsic564877
! Node: INot Intrinsic565196
! Node: IZExt Intrinsic565513
! Node: JIAbs Intrinsic565833
! Node: JIAnd Intrinsic566154
! Node: JIBClr Intrinsic566476
! Node: JIBits Intrinsic566802
! Node: JIBSet Intrinsic567129
! Node: JIDiM Intrinsic567455
! Node: JIDInt Intrinsic567778
! Node: JIDNnt Intrinsic568104
! Node: JIEOr Intrinsic568430
! Node: JIFix Intrinsic568752
! Node: JInt Intrinsic569072
! Node: JIOr Intrinsic569388
! Node: JIQint Intrinsic569705
! Node: JIQNnt Intrinsic570030
! Node: JIShft Intrinsic570357
! Node: JIShftC Intrinsic570685
! Node: JISign Intrinsic571016
! Node: JMax0 Intrinsic571343
! Node: JMax1 Intrinsic571665
! Node: JMin0 Intrinsic571986
! Node: JMin1 Intrinsic572307
! Node: JMod Intrinsic572627
! Node: JNInt Intrinsic572944
! Node: JNot Intrinsic573263
! Node: JZExt Intrinsic573580
! Node: Kill Intrinsic (function)573910
! Node: Link Intrinsic (function)574612
! Node: QAbs Intrinsic575444
! Node: QACos Intrinsic575771
! Node: QACosD Intrinsic576092
! Node: QASin Intrinsic576417
! Node: QASinD Intrinsic576740
! Node: QATan Intrinsic577065
! Node: QATan2 Intrinsic577390
! Node: QATan2D Intrinsic577719
! Node: QATanD Intrinsic578052
! Node: QCos Intrinsic578380
! Node: QCosD Intrinsic578700
! Node: QCosH Intrinsic579022
! Node: QDiM Intrinsic579344
! Node: QExp Intrinsic579662
! Node: QExt Intrinsic579979
! Node: QExtD Intrinsic580297
! Node: QFloat Intrinsic580620
! Node: QInt Intrinsic580946
! Node: QLog Intrinsic581265
! Node: QLog10 Intrinsic581584
! Node: QMax1 Intrinsic581910
! Node: QMin1 Intrinsic582234
! Node: QMod Intrinsic582556
! Node: QNInt Intrinsic582875
! Node: QSin Intrinsic583196
! Node: QSinD Intrinsic583515
! Node: QSinH Intrinsic583837
! Node: QSqRt Intrinsic584160
! Node: QTan Intrinsic584482
! Node: QTanD Intrinsic584801
! Node: QTanH Intrinsic585123
! Node: Rename Intrinsic (function)585458
! Node: Secnds Intrinsic586285
! Node: Signal Intrinsic (function)586907
! Node: SinD Intrinsic589761
! Node: SnglQ Intrinsic590092
! Node: SymLnk Intrinsic (function)590426
! Node: System Intrinsic (function)591316
! Node: TanD Intrinsic592666
! Node: Time Intrinsic (VXT)593002
! Node: UMask Intrinsic (function)593779
! Node: Unlink Intrinsic (function)594410
! Node: ZExt Intrinsic595161
! Node: Other Compilers595468
! Node: Dropping f2c Compatibility597992
! Node: Compilers Other Than f2c601071
! Node: Other Languages602876
! Node: Interoperating with C and C++603144
! Node: C Interfacing Tools604184
! Node: C Access to Type Information605123
! Node: f2c Skeletons and Prototypes605821
! Ref: f2c Skeletons and Prototypes-Footnote-1607279
! Node: C++ Considerations607533
! Node: Startup Code608211
! Node: Debugging and Interfacing613011
! Node: Main Program Unit615701
! Node: Procedures618202
! Node: Functions620867
! Node: Names622492
! Node: Common Blocks625642
! Node: Local Equivalence Areas625913
! Node: Complex Variables626904
! Node: Arrays628031
! Node: Adjustable Arrays631371
! Node: Alternate Entry Points634237
! Node: Alternate Returns640948
! Node: Assigned Statement Labels641858
! Node: Run-time Library Errors643712
! Node: Collected Fortran Wisdom645673
! Node: Advantages Over f2c647112
! Node: Language Extensions648100
! Node: Diagnostic Abilities649285
! Node: Compiler Options649687
! Node: Compiler Speed650746
! Node: Program Speed651467
! Node: Ease of Debugging653063
! Node: Character and Hollerith Constants655183
! Node: Block Data and Libraries656165
! Node: Loops659501
! Node: Working Programs664734
! Node: Not My Type665485
! Node: Variables Assumed To Be Zero667427
! Node: Variables Assumed To Be Saved668493
! Node: Unwanted Variables669875
! Node: Unused Arguments670766
! Node: Surprising Interpretations of Code671240
! Node: Aliasing Assumed To Work672098
! Node: Output Assumed To Flush678302
! Node: Large File Unit Numbers681086
! Node: Floating-point precision683249
! Node: Inconsistent Calling Sequences684523
! Node: Overly Convenient Options685516
! Node: Faster Programs688829
! Node: Aligned Data689282
! Node: Prefer Automatic Uninitialized Variables693986
! Node: Avoid f2c Compatibility695363
! Node: Use Submodel Options695843
! Node: Trouble696859
! Node: But-bugs698185
! Node: Signal 11 and Friends699965
! Node: Cannot Link Fortran Programs702056
! Node: Large Common Blocks703350
! Node: Debugger Problems703787
! Node: NeXTStep Problems704513
! Node: Stack Overflow706350
! Node: Nothing Happens709250
! Node: Strange Behavior at Run Time710875
! Node: Floating-point Errors713374
! Node: Known Bugs719371
! Node: Missing Features726447
! Node: Better Source Model728381
! Node: Fortran 90 Support730161
! Node: Intrinsics in PARAMETER Statements731273
! Node: Arbitrary Concatenation732035
! Node: SELECT CASE on CHARACTER Type732449
! Node: RECURSIVE Keyword732747
! Node: Increasing Precision/Range733185
! Node: Popular Non-standard Types734734
! Node: Full Support for Compiler Types735085
! Node: Array Bounds Expressions735732
! Node: POINTER Statements736192
! Node: Sensible Non-standard Constructs737088
! Node: READONLY Keyword739426
! Node: FLUSH Statement740349
! Node: Expressions in FORMAT Statements740732
! Node: Explicit Assembler Code741920
! Node: Q Edit Descriptor742222
! Node: Old-style PARAMETER Statements742739
! Node: TYPE and ACCEPT I/O Statements743486
! Node: STRUCTURE UNION RECORD MAP744065
! Node: OPEN CLOSE and INQUIRE Keywords744564
! Node: ENCODE and DECODE745557
! Node: AUTOMATIC Statement746665
! Node: Suppressing Space Padding747925
! Node: Fortran Preprocessor749165
! Node: Bit Operations on Floating-point Data749751
! Node: Really Ugly Character Assignments750297
! Node: POSIX Standard750685
! Node: Floating-point Exception Handling750938
! Node: Nonportable Conversions752348
! Node: Large Automatic Arrays752904
! Node: Support for Threads753324
! Node: Enabling Debug Lines753762
! Node: Better Warnings754152
! Node: Gracefully Handle Sensible Bad Code755801
! Node: Non-standard Conversions756558
! Node: Non-standard Intrinsics756914
! Node: Modifying DO Variable757343
! Node: Better Pedantic Compilation758032
! Node: Warn About Implicit Conversions758673
! Node: Invalid Use of Hollerith Constant759273
! Node: Dummy Array Without Dimensioning Dummy759829
! Node: Invalid FORMAT Specifiers760755
! Node: Ambiguous Dialects761169
! Node: Unused Labels761593
! Node: Informational Messages761828
! Node: Uninitialized Variables at Run Time762245
! Node: Portable Unformatted Files762864
! Ref: Portable Unformatted Files-Footnote-1765833
! Node: Better List-directed I/O765861
! Node: Default to Console I/O766779
! Node: Labels Visible to Debugger767440
! Node: Disappointments767854
! Node: Mangling of Names768499
! Node: Multiple Definitions of External Names769360
! Node: Limitation on Implicit Declarations770734
! Node: Non-bugs771029
! Node: Backslash in Constants772161
! Node: Initializing Before Specifying777061
! Node: Context-Sensitive Intrinsicness778214
! Node: Context-Sensitive Constants780121
! Node: Equivalence Versus Equality783088
! Node: Order of Side Effects786142
! Node: Warnings and Errors787881
! Node: Open Questions789286
! Node: Bugs789758
! Node: Bug Criteria790449
! Node: Bug Reporting796593
! Node: Service796961
! Node: Adding Options797427
! Node: Projects802023
! Node: Efficiency802869
! Node: Better Optimization805773
! Node: Simplify Porting809150
! Node: More Extensions810912
! Node: Machine Model814007
! Node: Internals Documentation815300
! Node: Internals Improvements815614
! Node: Better Diagnostics819165
! Node: Front End820089
! Node: Overview of Sources820870
! Node: Overview of Translation Process828155
! Node: g77stripcard832440
! Node: lex.c834928
! Node: sta.c844479
! Node: sti.c844604
! Node: stq.c844729
! Node: stb.c844854
! Node: expr.c844980
! Node: stc.c845108
! Node: std.c845234
! Node: ste.c845359
! Node: Gotchas (Transforming)845503
! Node: TBD (Transforming)853737
! Node: Philosophy of Code Generation856446
! Node: Two-pass Design862357
! Node: Two-pass Code863521
! Node: Why Two Passes864265
! Node: Challenges Posed870318
! Node: Transforming Statements872804
! Node: Statements Needing Temporaries873661
! Node: Transforming DO WHILE876436
! Node: Transforming Iterative DO877610
! Node: Transforming Block IF878450
! Node: Transforming SELECT CASE879821
! Node: Transforming Expressions883029
! Node: Internal Naming Conventions885025
! Node: Diagnostics888031
! Node: CMPAMBIG889432
! Node: EXPIMP895860
! Node: INTGLOB897107
! Node: LEX899362
! Node: GLOBALS904829
! Node: LINKFAIL907504
! Node: Y2KBAD908138
! Node: Keyword Index908499
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/gcc.1 gcc-3.4.5/gcc/doc/gcc.1
*** gcc-3.4.4/gcc/doc/gcc.1 2005-05-19 10:02:19.000000000 +0000
--- gcc-3.4.5/gcc/doc/gcc.1 2005-12-01 03:57:05.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gcc \- GNU project C and C++ compiler
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gcc \- GNU project C and C++ compiler
.SH "SYNOPSIS"
*************** compatible with code generated by other
*** 1381,1387 ****
.Sp
The known incompatibilities at this point include:
.RS 4
! .IP "\(bu" 4
Incorrect handling of tail-padding for bit\-fields. G++ may attempt to
pack data into the same byte as a base class. For example:
.Sp
--- 1381,1387 ----
.Sp
The known incompatibilities at this point include:
.RS 4
! .IP "*" 4
Incorrect handling of tail-padding for bit\-fields. G++ may attempt to
pack data into the same byte as a base class. For example:
.Sp
*************** as\f(CW\*(C`A::f1\*(C'\fR; other compile
*** 1395,1401 ****
by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
byte size on your platform; that will cause G++ and other compilers to
layout \f(CW\*(C`B\*(C'\fR identically.
! .IP "\(bu" 4
Incorrect handling of tail-padding for virtual bases. G++ does not use
tail padding when laying out virtual bases. For example:
.Sp
--- 1395,1401 ----
by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
byte size on your platform; that will cause G++ and other compilers to
layout \f(CW\*(C`B\*(C'\fR identically.
! .IP "*" 4
Incorrect handling of tail-padding for virtual bases. G++ does not use
tail padding when laying out virtual bases. For example:
.Sp
*************** In this case, G++ will not place \f(CW\*
*** 1410,1416 ****
explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
alignment (ignoring virtual base classes); that will cause G++ and other
compilers to layout \f(CW\*(C`C\*(C'\fR identically.
! .IP "\(bu" 4
Incorrect handling of bit-fields with declared widths greater than that
of their underlying types, when the bit-fields appear in a union. For
example:
--- 1410,1416 ----
explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
alignment (ignoring virtual base classes); that will cause G++ and other
compilers to layout \f(CW\*(C`C\*(C'\fR identically.
! .IP "*" 4
Incorrect handling of bit-fields with declared widths greater than that
of their underlying types, when the bit-fields appear in a union. For
example:
*************** example:
*** 1421,1427 ****
.Sp
Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
! .IP "\(bu" 4
Empty classes can be placed at incorrect offsets. For example:
.Sp
.Vb 1
--- 1421,1427 ----
.Sp
Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
! .IP "*" 4
Empty classes can be placed at incorrect offsets. For example:
.Sp
.Vb 1
*************** Empty classes can be placed at incorrect
*** 1442,1448 ****
G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
it should be placed at offset zero. G++ mistakenly believes that the
\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
! .IP "\(bu" 4
Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
template template parameters can be mangled incorrectly.
.Sp
--- 1442,1448 ----
G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
it should be placed at offset zero. G++ mistakenly believes that the
\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
! .IP "*" 4
Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
template template parameters can be mangled incorrectly.
.Sp
*************** The following \fB\-W...\fR options are n
*** 1493,1518 ****
Warn about violations of the following style guidelines from Scott Meyers'
\&\fIEffective \*(C+\fR book:
.RS 4
! .IP "\(bu" 4
Item 11: Define a copy constructor and an assignment operator for classes
with dynamically allocated memory.
! .IP "\(bu" 4
Item 12: Prefer initialization to assignment in constructors.
! .IP "\(bu" 4
Item 14: Make destructors virtual in base classes.
! .IP "\(bu" 4
Item 15: Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP "\(bu" 4
Item 23: Don't try to return a reference when you must return an object.
.RE
.RS 4
.Sp
Also warn about violations of the following style guidelines from
Scott Meyers' \fIMore Effective \*(C+\fR book:
! .IP "\(bu" 4
Item 6: Distinguish between prefix and postfix forms of increment and
decrement operators.
! .IP "\(bu" 4
Item 7: Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
.RE
.RS 4
--- 1493,1518 ----
Warn about violations of the following style guidelines from Scott Meyers'
\&\fIEffective \*(C+\fR book:
.RS 4
! .IP "*" 4
Item 11: Define a copy constructor and an assignment operator for classes
with dynamically allocated memory.
! .IP "*" 4
Item 12: Prefer initialization to assignment in constructors.
! .IP "*" 4
Item 14: Make destructors virtual in base classes.
! .IP "*" 4
Item 15: Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP "*" 4
Item 23: Don't try to return a reference when you must return an object.
.RE
.RS 4
.Sp
Also warn about violations of the following style guidelines from
Scott Meyers' \fIMore Effective \*(C+\fR book:
! .IP "*" 4
Item 6: Distinguish between prefix and postfix forms of increment and
decrement operators.
! .IP "*" 4
Item 7: Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
.RE
.RS 4
*************** of the \f(CW\*(C`finally\*(C'\fR clause
*** 1698,1710 ****
.Sp
There are several caveats to using the new exception mechanism:
.RS 4
! .IP "\(bu" 4
Although currently designed to be binary compatible with \f(CW\*(C`NS_HANDLER\*(C'\fR\-style
idioms provided by the \f(CW\*(C`NSException\*(C'\fR class, the new
exceptions can only be used on Mac \s-1OS\s0 X 10.3 (Panther) and later
systems, due to additional functionality needed in the (NeXT) Objective-C
runtime.
! .IP "\(bu" 4
As mentioned above, the new exceptions do not support handling
types other than Objective-C objects. Furthermore, when used from
Objective\-\*(C+, the Objective-C exception model does not interoperate with \*(C+
--- 1698,1710 ----
.Sp
There are several caveats to using the new exception mechanism:
.RS 4
! .IP "*" 4
Although currently designed to be binary compatible with \f(CW\*(C`NS_HANDLER\*(C'\fR\-style
idioms provided by the \f(CW\*(C`NSException\*(C'\fR class, the new
exceptions can only be used on Mac \s-1OS\s0 X 10.3 (Panther) and later
systems, due to additional functionality needed in the (NeXT) Objective-C
runtime.
! .IP "*" 4
As mentioned above, the new exceptions do not support handling
types other than Objective-C objects. Furthermore, when used from
Objective\-\*(C+, the Objective-C exception model does not interoperate with \*(C+
*************** the warning.
*** 2278,2284 ****
supported, but the newer name is more descriptive.) Print extra warning
messages for these events:
.RS 4
! .IP "\(bu" 4
A function can return either with or without a value. (Falling
off the end of the function body is considered returning without
a value.) For example, this function would evoke such a
--- 2278,2284 ----
supported, but the newer name is more descriptive.) Print extra warning
messages for these events:
.RS 4
! .IP "*" 4
A function can return either with or without a value. (Falling
off the end of the function body is considered returning without
a value.) For example, this function would evoke such a
*************** warning:
*** 2291,2325 ****
\& return a;
\& }
.Ve
! .IP "\(bu" 4
An expression-statement or the left-hand side of a comma expression
contains no side effects.
To suppress the warning, cast the unused expression to void.
For example, an expression such as \fBx[i,j]\fR will cause a warning,
but \fBx[(void)i,j]\fR will not.
! .IP "\(bu" 4
An unsigned value is compared against zero with \fB<\fR or \fB>=\fR.
! .IP "\(bu" 4
A comparison like \fBx<=y<=z\fR appears; this is equivalent to
\&\fB(x<=y ? 1 : 0) <= z\fR, which is a different interpretation from
that of ordinary mathematical notation.
! .IP "\(bu" 4
Storage-class specifiers like \f(CW\*(C`static\*(C'\fR are not the first things in
a declaration. According to the C Standard, this usage is obsolescent.
! .IP "\(bu" 4
The return type of a function has a type qualifier such as \f(CW\*(C`const\*(C'\fR.
Such a type qualifier has no effect, since the value returned by a
function is not an lvalue. (But don't warn about the \s-1GNU\s0 extension of
\&\f(CW\*(C`volatile void\*(C'\fR return types. That extension will be warned about
if \fB\-pedantic\fR is specified.)
! .IP "\(bu" 4
If \fB\-Wall\fR or \fB\-Wunused\fR is also specified, warn about unused
arguments.
! .IP "\(bu" 4
A comparison between signed and unsigned values could produce an
incorrect result when the signed value is converted to unsigned.
(But don't warn if \fB\-Wno\-sign\-compare\fR is also specified.)
! .IP "\(bu" 4
An aggregate has an initializer which does not initialize all members.
For example, the following code would cause such a warning, because
\&\f(CW\*(C`x.h\*(C'\fR would be implicitly initialized to zero:
--- 2291,2325 ----
\& return a;
\& }
.Ve
! .IP "*" 4
An expression-statement or the left-hand side of a comma expression
contains no side effects.
To suppress the warning, cast the unused expression to void.
For example, an expression such as \fBx[i,j]\fR will cause a warning,
but \fBx[(void)i,j]\fR will not.
! .IP "*" 4
An unsigned value is compared against zero with \fB<\fR or \fB>=\fR.
! .IP "*" 4
A comparison like \fBx<=y<=z\fR appears; this is equivalent to
\&\fB(x<=y ? 1 : 0) <= z\fR, which is a different interpretation from
that of ordinary mathematical notation.
! .IP "*" 4
Storage-class specifiers like \f(CW\*(C`static\*(C'\fR are not the first things in
a declaration. According to the C Standard, this usage is obsolescent.
! .IP "*" 4
The return type of a function has a type qualifier such as \f(CW\*(C`const\*(C'\fR.
Such a type qualifier has no effect, since the value returned by a
function is not an lvalue. (But don't warn about the \s-1GNU\s0 extension of
\&\f(CW\*(C`volatile void\*(C'\fR return types. That extension will be warned about
if \fB\-pedantic\fR is specified.)
! .IP "*" 4
If \fB\-Wall\fR or \fB\-Wunused\fR is also specified, warn about unused
arguments.
! .IP "*" 4
A comparison between signed and unsigned values could produce an
incorrect result when the signed value is converted to unsigned.
(But don't warn if \fB\-Wno\-sign\-compare\fR is also specified.)
! .IP "*" 4
An aggregate has an initializer which does not initialize all members.
For example, the following code would cause such a warning, because
\&\f(CW\*(C`x.h\*(C'\fR would be implicitly initialized to zero:
*************** For example, the following code would ca
*** 2328,2348 ****
\& struct s { int f, g, h; };
\& struct s x = { 3, 4 };
.Ve
! .IP "\(bu" 4
A function parameter is declared without a type specifier in K&R\-style
functions:
.Sp
.Vb 1
\& void foo(bar) { }
.Ve
! .IP "\(bu" 4
An empty body occurs in an \fBif\fR or \fBelse\fR statement.
! .IP "\(bu" 4
A pointer is compared against integer zero with \fB<\fR, \fB<=\fR,
\&\fB>\fR, or \fB>=\fR.
! .IP "\(bu" 4
A variable might be changed by \fBlongjmp\fR or \fBvfork\fR.
! .IP "\(bu" 4
Any of several floating-point events that often indicate errors, such as
overflow, underflow, loss of precision, etc.
.IP "*<(\*(C+ only)>" 4
--- 2328,2348 ----
\& struct s { int f, g, h; };
\& struct s x = { 3, 4 };
.Ve
! .IP "*" 4
A function parameter is declared without a type specifier in K&R\-style
functions:
.Sp
.Vb 1
\& void foo(bar) { }
.Ve
! .IP "*" 4
An empty body occurs in an \fBif\fR or \fBelse\fR statement.
! .IP "*" 4
A pointer is compared against integer zero with \fB<\fR, \fB<=\fR,
\&\fB>\fR, or \fB>=\fR.
! .IP "*" 4
A variable might be changed by \fBlongjmp\fR or \fBvfork\fR.
! .IP "*" 4
Any of several floating-point events that often indicate errors, such as
overflow, underflow, loss of precision, etc.
.IP "*<(\*(C+ only)>" 4
*************** Warn about certain constructs that behav
*** 2402,2412 ****
\&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional C
equivalent, and/or problematic constructs which should be avoided.
.RS 4
! .IP "\(bu" 4
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 \s-1ISO\s0 C.
! .IP "\(bu" 4
In traditional C, some preprocessor directives did not exist.
Traditional preprocessors would only consider a line to be a directive
if the \fB#\fR appeared in column 1 on the line. Therefore
--- 2402,2412 ----
\&\s-1ISO\s0 C. Also warn about \s-1ISO\s0 C constructs that have no traditional C
equivalent, and/or problematic constructs which should be avoided.
.RS 4
! .IP "*" 4
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 \s-1ISO\s0 C.
! .IP "*" 4
In traditional C, some preprocessor directives did not exist.
Traditional preprocessors would only consider a line to be a directive
if the \fB#\fR appeared in column 1 on the line. Therefore
*************** first character on the line. It also su
*** 2416,2426 ****
\&\fB#pragma\fR not understood by traditional C by indenting them. Some
traditional implementations would not recognize \fB#elif\fR, so it
suggests avoiding it altogether.
! .IP "\(bu" 4
A function-like macro that appears without arguments.
! .IP "\(bu" 4
The unary plus operator.
! .IP "\(bu" 4
The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating point
constant suffixes. (Traditional C does support the \fBL\fR suffix on integer
constants.) Note, these suffixes appear in macros defined in the system
--- 2416,2426 ----
\&\fB#pragma\fR not understood by traditional C by indenting them. Some
traditional implementations would not recognize \fB#elif\fR, so it
suggests avoiding it altogether.
! .IP "*" 4
A function-like macro that appears without arguments.
! .IP "*" 4
The unary plus operator.
! .IP "*" 4
The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating point
constant suffixes. (Traditional C does support the \fBL\fR suffix on integer
constants.) Note, these suffixes appear in macros defined in the system
*************** headers of most modern systems, e.g. the
*** 2428,2465 ****
Use of these macros in user code might normally lead to spurious
warnings, however \s-1GCC\s0's integrated preprocessor has enough context to
avoid warning in these cases.
! .IP "\(bu" 4
A function declared external in one block and then used after the end of
the block.
! .IP "\(bu" 4
A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP "\(bu" 4
A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
This construct is not accepted by some traditional C compilers.
! .IP "\(bu" 4
The \s-1ISO\s0 type of an integer constant has a different width or
signedness from its traditional type. This warning is only issued if
the base of the constant is ten. I.e. hexadecimal or octal values, which
typically represent bit patterns, are not warned about.
! .IP "\(bu" 4
Usage of \s-1ISO\s0 string concatenation is detected.
! .IP "\(bu" 4
Initialization of automatic aggregates.
! .IP "\(bu" 4
Identifier conflicts with labels. Traditional C lacks a separate
namespace for labels.
! .IP "\(bu" 4
Initialization of unions. If the initializer is zero, the warning is
omitted. This is done under the assumption that the zero initializer in
user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
initializer warnings and relies on default initialization to zero in the
traditional C case.
! .IP "\(bu" 4
Conversions by prototypes between fixed/floating point values and vice
versa. The absence of these prototypes when compiling with traditional
C would cause serious problems. This is a subset of the possible
conversion warnings, for the full set use \fB\-Wconversion\fR.
! .IP "\(bu" 4
Use of \s-1ISO\s0 C style function definitions. This warning intentionally is
\&\fInot\fR issued for prototype declarations or variadic functions
because these \s-1ISO\s0 C features will appear in your code when using
--- 2428,2465 ----
Use of these macros in user code might normally lead to spurious
warnings, however \s-1GCC\s0's integrated preprocessor has enough context to
avoid warning in these cases.
! .IP "*" 4
A function declared external in one block and then used after the end of
the block.
! .IP "*" 4
A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP "*" 4
A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
This construct is not accepted by some traditional C compilers.
! .IP "*" 4
The \s-1ISO\s0 type of an integer constant has a different width or
signedness from its traditional type. This warning is only issued if
the base of the constant is ten. I.e. hexadecimal or octal values, which
typically represent bit patterns, are not warned about.
! .IP "*" 4
Usage of \s-1ISO\s0 string concatenation is detected.
! .IP "*" 4
Initialization of automatic aggregates.
! .IP "*" 4
Identifier conflicts with labels. Traditional C lacks a separate
namespace for labels.
! .IP "*" 4
Initialization of unions. If the initializer is zero, the warning is
omitted. This is done under the assumption that the zero initializer in
user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
initializer warnings and relies on default initialization to zero in the
traditional C case.
! .IP "*" 4
Conversions by prototypes between fixed/floating point values and vice
versa. The absence of these prototypes when compiling with traditional
C would cause serious problems. This is a subset of the possible
conversion warnings, for the full set use \fB\-Wconversion\fR.
! .IP "*" 4
Use of \s-1ISO\s0 C style function definitions. This warning intentionally is
\&\fInot\fR issued for prototype declarations or variadic functions
because these \s-1ISO\s0 C features will appear in your code when using
*************** invoking \fB\-O2\fR on programs that use
*** 3326,3332 ****
.IX Item "-O3"
Optimize yet more. \fB\-O3\fR turns on all optimizations specified by
\&\fB\-O2\fR and also turns on the \fB\-finline\-functions\fR,
! \&\fB\-fweb\fR and \fB\-frename\-registers\fR options.
.IP "\fB\-O0\fR" 4
.IX Item "-O0"
Do not optimize. This is the default.
--- 3326,3333 ----
.IX Item "-O3"
Optimize yet more. \fB\-O3\fR turns on all optimizations specified by
\&\fB\-O2\fR and also turns on the \fB\-finline\-functions\fR,
! \&\fB\-fweb\fR, \fB\-frename\-registers\fR and \fB\-funswitch\-loops\fR
! options.
.IP "\fB\-O0\fR" 4
.IX Item "-O0"
Do not optimize. This is the default.
*************** is to use assembler macros instead.
*** 7463,7473 ****
configured to use an assembler that supports relocation operators.
However, there are two exceptions:
.RS 4
! .IP "\(bu" 4
\&\s-1GCC\s0 is not yet able to generate explicit relocations for the combination
of \fB\-mabi=64\fR and \fB\-mno\-abicalls\fR. This will be addressed
in a future release.
! .IP "\(bu" 4
The combination of \fB\-mabicalls\fR and \fB\-fno\-unit\-at\-a\-time\fR
implies \fB\-mno\-explicit\-relocs\fR unless explicitly overridden.
This is because, when generating abicalls, the choice of relocation
--- 7464,7474 ----
configured to use an assembler that supports relocation operators.
However, there are two exceptions:
.RS 4
! .IP "*" 4
\&\s-1GCC\s0 is not yet able to generate explicit relocations for the combination
of \fB\-mabi=64\fR and \fB\-mno\-abicalls\fR. This will be addressed
in a future release.
! .IP "*" 4
The combination of \fB\-mabicalls\fR and \fB\-fno\-unit\-at\-a\-time\fR
implies \fB\-mno\-explicit\-relocs\fR unless explicitly overridden.
This is because, when generating abicalls, the choice of relocation
*************** have any affect on which ld is called, i
*** 8135,8141 ****
are passed to that ld. The ld that is called is determined by the
\&\fB\-\-with\-ld\fR configure option, \s-1GCC\s0's program search path, and
finally by the user's \fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed
! using \fBwhich `gcc \-print\-prog\-name=ld`\fR.
.IP "\fB\-mhp\-ld\fR" 4
.IX Item "-mhp-ld"
Use \s-1HP\s0 ld specific options. This passes \fB\-b\fR to ld when building
--- 8136,8143 ----
are passed to that ld. The ld that is called is determined by the
\&\fB\-\-with\-ld\fR configure option, \s-1GCC\s0's program search path, and
finally by the user's \fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed
! using \fBwhich `gcc \-print\-prog\-name=ld`\fR. This option is only available
! on the 64 bit HP-UX \s-1GCC\s0, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
.IP "\fB\-mhp\-ld\fR" 4
.IX Item "-mhp-ld"
Use \s-1HP\s0 ld specific options. This passes \fB\-b\fR to ld when building
*************** which ld is called, it only changes what
*** 8146,8152 ****
ld. The ld that is called is determined by the \fB\-\-with\-ld\fR
configure option, \s-1GCC\s0's program search path, and finally by the user's
\&\fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed using \fBwhich
! `gcc \-print\-prog\-name=ld`\fR.
.IP "\fB\-mlong\-calls\fR" 4
.IX Item "-mlong-calls"
Generate code that uses long call sequences. This ensures that a call
--- 8148,8155 ----
ld. The ld that is called is determined by the \fB\-\-with\-ld\fR
configure option, \s-1GCC\s0's program search path, and finally by the user's
\&\fB\s-1PATH\s0\fR. The linker used by \s-1GCC\s0 can be printed using \fBwhich
! `gcc \-print\-prog\-name=ld`\fR. This option is only available on the 64 bit
! HP-UX \s-1GCC\s0, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
.IP "\fB\-mlong\-calls\fR" 4
.IX Item "-mlong-calls"
Generate code that uses long call sequences. This ensures that a call
*************** specified separated by a comma.
*** 9435,9442 ****
.IX Item "-mtls-size=tls-size"
Specify bit size of immediate \s-1TLS\s0 offsets. Valid values are 14, 22, and
64.
! .IP "\fB\-mtune\-arch=\fR\fIcpu-type\fR" 4
! .IX Item "-mtune-arch=cpu-type"
Tune the instruction scheduling for a particular \s-1CPU\s0, Valid values are
itanium, itanium1, merced, itanium2, and mckinley.
.IP "\fB\-mt\fR" 4
--- 9438,9445 ----
.IX Item "-mtls-size=tls-size"
Specify bit size of immediate \s-1TLS\s0 offsets. Valid values are 14, 22, and
64.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
! .IX Item "-mtune=cpu-type"
Tune the instruction scheduling for a particular \s-1CPU\s0, Valid values are
itanium, itanium1, merced, itanium2, and mckinley.
.IP "\fB\-mt\fR" 4
diff -Nrcpad gcc-3.4.4/gcc/doc/gcc.info gcc-3.4.5/gcc/doc/gcc.info
*** gcc-3.4.4/gcc/doc/gcc.info 2005-05-19 10:02:14.000000000 +0000
--- gcc-3.4.5/gcc/doc/gcc.info 2005-12-01 03:56:56.000000000 +0000
***************
*** 1,7 ****
! This is doc/gcc.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/doc/gcc.texi.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 1,7 ----
! This is doc/gcc.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/doc/gcc.texi.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled "GNU Fr
*** 21,33 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* gcc: (gcc). The GNU Compiler Collection.
END-INFO-DIR-ENTRY
This file documents the use of the GNU compilers.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 21,34 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* gcc: (gcc). The GNU Compiler Collection.
END-INFO-DIR-ENTRY
This file documents the use of the GNU compilers.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled "GNU Fr
*** 48,60 ****
software. Copies published by the Free Software Foundation raise
funds for GNU development.
File: gcc.info, Node: Top, Next: G++ and GCC, Up: (DIR)
Introduction
************
! This manual documents how to use the GNU compilers, as well as their
features and incompatibilities, and how to report bugs. It corresponds
to GCC version 3.4.4. The internals of the GNU compilers, including
how to port them to new targets and some information about how to write
--- 49,62 ----
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
File: gcc.info, Node: Top, Next: G++ and GCC, Up: (DIR)
Introduction
************
! This manual documents how to use the GNU compilers, as well as their
features and incompatibilities, and how to report bugs. It corresponds
to GCC version 3.4.4. The internals of the GNU compilers, including
how to port them to new targets and some information about how to write
*************** front ends for new languages, are docume
*** 91,100 ****
File: gcc.info, Node: G++ and GCC, Next: Standards, Prev: Top, Up: Top
! Programming Languages Supported by GCC
! **************************************
! GCC stands for "GNU Compiler Collection". GCC is an integrated
distribution of compilers for several major programming languages.
These languages currently include C, C++, Objective-C, Java, Fortran,
and Ada.
--- 93,102 ----
File: gcc.info, Node: G++ and GCC, Next: Standards, Prev: Top, Up: Top
! 1 Programming Languages Supported by GCC
! ****************************************
! GCC stands for "GNU Compiler Collection". GCC is an integrated
distribution of compilers for several major programming languages.
These languages currently include C, C++, Objective-C, Java, Fortran,
and Ada.
*************** which is an integral feature of the C, C
*** 133,142 ****
File: gcc.info, Node: Standards, Next: Invoking GCC, Prev: G++ and GCC, Up: Top
! Language Standards Supported by GCC
! ***********************************
! For each language compiled by GCC for which there is a standard, GCC
attempts to follow one or more versions of that standard, possibly with
some exceptions, and possibly with some extensions.
--- 135,144 ----
File: gcc.info, Node: Standards, Next: Invoking GCC, Prev: G++ and GCC, Up: Top
! 2 Language Standards Supported by GCC
! *************************************
! For each language compiled by GCC for which there is a standard, GCC
attempts to follow one or more versions of that standard, possibly with
some exceptions, and possibly with some extensions.
*************** details of compatibility between `gcj' a
*** 272,281 ****
File: gcc.info, Node: Invoking GCC, Next: C Implementation, Prev: Standards, Up: Top
! GCC Command Options
! *******************
! When you invoke GCC, it normally does preprocessing, compilation,
assembly and linking. The "overall options" allow you to stop this
process at an intermediate stage. For example, the `-c' option says
not to run the linker. Then the output consists of object files output
--- 274,283 ----
File: gcc.info, Node: Invoking GCC, Next: C Implementation, Prev: Standards, Up: Top
! 3 GCC Command Options
! *********************
! When you invoke GCC, it normally does preprocessing, compilation,
assembly and linking. The "overall options" allow you to stop this
process at an intermediate stage. For example, the `-c' option says
not to run the linker. Then the output consists of object files output
*************** these two forms, whichever one is not th
*** 346,516 ****
File: gcc.info, Node: Option Summary, Next: Overall Options, Up: Invoking GCC
! Option Summary
! ==============
! Here is a summary of all the options, grouped by type. Explanations
! are in the following sections.
_Overall Options_
*Note Options Controlling the Kind of Output: Overall Options.
! -c -S -E -o FILE -pipe -pass-exit-codes
-x LANGUAGE -v -### --help --target-help --version
_C Language Options_
*Note Options Controlling C Dialect: C Dialect Options.
! -ansi -std=STANDARD -aux-info FILENAME
! -fno-asm -fno-builtin -fno-builtin-FUNCTION
! -fhosted -ffreestanding -fms-extensions
! -trigraphs -no-integrated-cpp -traditional -traditional-cpp
! -fallow-single-precision -fcond-mismatch
! -fsigned-bitfields -fsigned-char
! -funsigned-bitfields -funsigned-char
-fwritable-strings
_C++ Language Options_
*Note Options Controlling C++ Dialect: C++ Dialect Options.
! -fabi-version=N -fno-access-control -fcheck-new
! -fconserve-space -fno-const-strings
! -fno-elide-constructors
! -fno-enforce-eh-specs
! -ffor-scope -fno-for-scope -fno-gnu-keywords
! -fno-implicit-templates
! -fno-implicit-inline-templates
! -fno-implement-inlines -fms-extensions
! -fno-nonansi-builtins -fno-operator-names
! -fno-optional-diags -fpermissive
! -frepo -fno-rtti -fstats -ftemplate-depth-N
! -fuse-cxa-atexit -fno-weak -nostdinc++
! -fno-default-inline -Wabi -Wctor-dtor-privacy
! -Wnon-virtual-dtor -Wreorder
! -Weffc++ -Wno-deprecated
! -Wno-non-template-friend -Wold-style-cast
! -Woverloaded-virtual -Wno-pmf-conversions
-Wsign-promo
_Objective-C Language Options_
*Note Options Controlling Objective-C Dialect: Objective-C Dialect
Options.
! -fconstant-string-class=CLASS-NAME
! -fgnu-runtime -fnext-runtime
! -fno-nil-receivers
! -fobjc-exceptions
! -freplace-objc-classes
! -fzero-link
! -gen-decls
-Wno-protocol -Wselector -Wundeclared-selector
_Language Independent Options_
*Note Options to Control Diagnostic Messages Formatting: Language
Independent Options.
! -fmessage-length=N
-fdiagnostics-show-location=[once|every-line]
_Warning Options_
*Note Options to Request or Suppress Warnings: Warning Options.
! -fsyntax-only -pedantic -pedantic-errors
! -w -Wextra -Wall -Waggregate-return
! -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment
! -Wconversion -Wno-deprecated-declarations
! -Wdisabled-optimization -Wno-div-by-zero -Wendif-labels
! -Werror -Werror-implicit-function-declaration
! -Wfloat-equal -Wformat -Wformat=2
! -Wno-format-extra-args -Wformat-nonliteral
! -Wformat-security -Wformat-y2k
! -Wimplicit -Wimplicit-function-declaration -Wimplicit-int
! -Wimport -Wno-import -Winit-self -Winline
! -Wno-invalid-offsetof -Winvalid-pch
! -Wlarger-than-LEN -Wlong-long
! -Wmain -Wmissing-braces
! -Wmissing-format-attribute -Wmissing-noreturn
! -Wno-multichar -Wnonnull -Wpacked -Wpadded
! -Wparentheses -Wpointer-arith -Wredundant-decls
! -Wreturn-type -Wsequence-point -Wshadow
! -Wsign-compare -Wstrict-aliasing
! -Wswitch -Wswitch-default -Wswitch-enum
! -Wsystem-headers -Wtrigraphs -Wundef -Wuninitialized
! -Wunknown-pragmas -Wunreachable-code
! -Wunused -Wunused-function -Wunused-label -Wunused-parameter
-Wunused-value -Wunused-variable -Wwrite-strings
_C-only Warning Options_
! -Wbad-function-cast -Wmissing-declarations
! -Wmissing-prototypes -Wnested-externs -Wold-style-definition
! -Wstrict-prototypes -Wtraditional
-Wdeclaration-after-statement
_Debugging Options_
*Note Options for Debugging Your Program or GCC: Debugging Options.
! -dLETTERS -dumpspecs -dumpmachine -dumpversion
! -fdump-unnumbered -fdump-translation-unit[-N]
! -fdump-class-hierarchy[-N]
! -fdump-tree-original[-N]
! -fdump-tree-optimized[-N]
! -fdump-tree-inlined[-N]
! -feliminate-dwarf2-dups -feliminate-unused-debug-types
! -feliminate-unused-debug-symbols -fmem-report -fprofile-arcs
! -frandom-seed=STRING -fsched-verbose=N
! -ftest-coverage -ftime-report
! -g -gLEVEL -gcoff -gdwarf-2
! -ggdb -gstabs -gstabs+ -gvms -gxcoff -gxcoff+
! -p -pg -print-file-name=LIBRARY -print-libgcc-file-name
! -print-multi-directory -print-multi-lib
! -print-prog-name=PROGRAM -print-search-dirs -Q
-save-temps -time
_Optimization Options_
*Note Options that Control Optimization: Optimize Options.
! -falign-functions=N -falign-jumps=N
! -falign-labels=N -falign-loops=N
! -fbranch-probabilities -fprofile-values -fvpt -fbranch-target-load-optimize
! -fbranch-target-load-optimize2 -fcaller-saves -fcprop-registers
! -fcse-follow-jumps -fcse-skip-blocks -fdata-sections
! -fdelayed-branch -fdelete-null-pointer-checks
! -fexpensive-optimizations -ffast-math -ffloat-store
! -fforce-addr -fforce-mem -ffunction-sections
! -fgcse -fgcse-lm -fgcse-sm -fgcse-las -floop-optimize
! -fcrossjumping -fif-conversion -fif-conversion2
! -finline-functions -finline-limit=N -fkeep-inline-functions
! -fkeep-static-consts -fmerge-constants -fmerge-all-constants
! -fmove-all-movables -fnew-ra -fno-branch-count-reg
! -fno-default-inline -fno-defer-pop
! -fno-function-cse -fno-guess-branch-probability
! -fno-inline -fno-math-errno -fno-peephole -fno-peephole2
! -funsafe-math-optimizations -ffinite-math-only
! -fno-trapping-math -fno-zero-initialized-in-bss
! -fomit-frame-pointer -foptimize-register-move
! -foptimize-sibling-calls -fprefetch-loop-arrays
! -fprofile-generate -fprofile-use
! -freduce-all-givs -fregmove -frename-registers
! -freorder-blocks -freorder-functions
! -frerun-cse-after-loop -frerun-loop-opt
! -frounding-math -fschedule-insns -fschedule-insns2
! -fno-sched-interblock -fno-sched-spec -fsched-spec-load
! -fsched-spec-load-dangerous
! -fsched-stalled-insns=N -sched-stalled-insns-dep=N
! -fsched2-use-superblocks
! -fsched2-use-traces -fsignaling-nans
! -fsingle-precision-constant
! -fstrength-reduce -fstrict-aliasing -ftracer -fthread-jumps
! -funroll-all-loops -funroll-loops -fpeel-loops
! -funswitch-loops -fold-unroll-loops -fold-unroll-all-loops
--param NAME=VALUE
-O -O0 -O1 -O2 -O3 -Os
_Preprocessor Options_
*Note Options Controlling the Preprocessor: Preprocessor Options.
! -AQUESTION=ANSWER
! -A-QUESTION[=ANSWER]
! -C -dD -dI -dM -dN
! -DMACRO[=DEFN] -E -H
! -idirafter DIR
! -include FILE -imacros FILE
! -iprefix FILE -iwithprefix DIR
! -iwithprefixbefore DIR -isystem DIR
! -M -MM -MF -MG -MP -MQ -MT -nostdinc
! -P -fworking-directory -remap
! -trigraphs -undef -UMACRO -Wp,OPTION
-Xpreprocessor OPTION
_Assembler Option_
--- 348,518 ----
File: gcc.info, Node: Option Summary, Next: Overall Options, Up: Invoking GCC
! 3.1 Option Summary
! ==================
! Here is a summary of all the options, grouped by type. Explanations are
! in the following sections.
_Overall Options_
*Note Options Controlling the Kind of Output: Overall Options.
! -c -S -E -o FILE -pipe -pass-exit-codes
-x LANGUAGE -v -### --help --target-help --version
_C Language Options_
*Note Options Controlling C Dialect: C Dialect Options.
! -ansi -std=STANDARD -aux-info FILENAME
! -fno-asm -fno-builtin -fno-builtin-FUNCTION
! -fhosted -ffreestanding -fms-extensions
! -trigraphs -no-integrated-cpp -traditional -traditional-cpp
! -fallow-single-precision -fcond-mismatch
! -fsigned-bitfields -fsigned-char
! -funsigned-bitfields -funsigned-char
-fwritable-strings
_C++ Language Options_
*Note Options Controlling C++ Dialect: C++ Dialect Options.
! -fabi-version=N -fno-access-control -fcheck-new
! -fconserve-space -fno-const-strings
! -fno-elide-constructors
! -fno-enforce-eh-specs
! -ffor-scope -fno-for-scope -fno-gnu-keywords
! -fno-implicit-templates
! -fno-implicit-inline-templates
! -fno-implement-inlines -fms-extensions
! -fno-nonansi-builtins -fno-operator-names
! -fno-optional-diags -fpermissive
! -frepo -fno-rtti -fstats -ftemplate-depth-N
! -fuse-cxa-atexit -fno-weak -nostdinc++
! -fno-default-inline -Wabi -Wctor-dtor-privacy
! -Wnon-virtual-dtor -Wreorder
! -Weffc++ -Wno-deprecated
! -Wno-non-template-friend -Wold-style-cast
! -Woverloaded-virtual -Wno-pmf-conversions
-Wsign-promo
_Objective-C Language Options_
*Note Options Controlling Objective-C Dialect: Objective-C Dialect
Options.
! -fconstant-string-class=CLASS-NAME
! -fgnu-runtime -fnext-runtime
! -fno-nil-receivers
! -fobjc-exceptions
! -freplace-objc-classes
! -fzero-link
! -gen-decls
-Wno-protocol -Wselector -Wundeclared-selector
_Language Independent Options_
*Note Options to Control Diagnostic Messages Formatting: Language
Independent Options.
! -fmessage-length=N
-fdiagnostics-show-location=[once|every-line]
_Warning Options_
*Note Options to Request or Suppress Warnings: Warning Options.
! -fsyntax-only -pedantic -pedantic-errors
! -w -Wextra -Wall -Waggregate-return
! -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment
! -Wconversion -Wno-deprecated-declarations
! -Wdisabled-optimization -Wno-div-by-zero -Wendif-labels
! -Werror -Werror-implicit-function-declaration
! -Wfloat-equal -Wformat -Wformat=2
! -Wno-format-extra-args -Wformat-nonliteral
! -Wformat-security -Wformat-y2k
! -Wimplicit -Wimplicit-function-declaration -Wimplicit-int
! -Wimport -Wno-import -Winit-self -Winline
! -Wno-invalid-offsetof -Winvalid-pch
! -Wlarger-than-LEN -Wlong-long
! -Wmain -Wmissing-braces
! -Wmissing-format-attribute -Wmissing-noreturn
! -Wno-multichar -Wnonnull -Wpacked -Wpadded
! -Wparentheses -Wpointer-arith -Wredundant-decls
! -Wreturn-type -Wsequence-point -Wshadow
! -Wsign-compare -Wstrict-aliasing
! -Wswitch -Wswitch-default -Wswitch-enum
! -Wsystem-headers -Wtrigraphs -Wundef -Wuninitialized
! -Wunknown-pragmas -Wunreachable-code
! -Wunused -Wunused-function -Wunused-label -Wunused-parameter
-Wunused-value -Wunused-variable -Wwrite-strings
_C-only Warning Options_
! -Wbad-function-cast -Wmissing-declarations
! -Wmissing-prototypes -Wnested-externs -Wold-style-definition
! -Wstrict-prototypes -Wtraditional
-Wdeclaration-after-statement
_Debugging Options_
*Note Options for Debugging Your Program or GCC: Debugging Options.
! -dLETTERS -dumpspecs -dumpmachine -dumpversion
! -fdump-unnumbered -fdump-translation-unit[-N]
! -fdump-class-hierarchy[-N]
! -fdump-tree-original[-N]
! -fdump-tree-optimized[-N]
! -fdump-tree-inlined[-N]
! -feliminate-dwarf2-dups -feliminate-unused-debug-types
! -feliminate-unused-debug-symbols -fmem-report -fprofile-arcs
! -frandom-seed=STRING -fsched-verbose=N
! -ftest-coverage -ftime-report
! -g -gLEVEL -gcoff -gdwarf-2
! -ggdb -gstabs -gstabs+ -gvms -gxcoff -gxcoff+
! -p -pg -print-file-name=LIBRARY -print-libgcc-file-name
! -print-multi-directory -print-multi-lib
! -print-prog-name=PROGRAM -print-search-dirs -Q
-save-temps -time
_Optimization Options_
*Note Options that Control Optimization: Optimize Options.
! -falign-functions=N -falign-jumps=N
! -falign-labels=N -falign-loops=N
! -fbranch-probabilities -fprofile-values -fvpt -fbranch-target-load-optimize
! -fbranch-target-load-optimize2 -fcaller-saves -fcprop-registers
! -fcse-follow-jumps -fcse-skip-blocks -fdata-sections
! -fdelayed-branch -fdelete-null-pointer-checks
! -fexpensive-optimizations -ffast-math -ffloat-store
! -fforce-addr -fforce-mem -ffunction-sections
! -fgcse -fgcse-lm -fgcse-sm -fgcse-las -floop-optimize
! -fcrossjumping -fif-conversion -fif-conversion2
! -finline-functions -finline-limit=N -fkeep-inline-functions
! -fkeep-static-consts -fmerge-constants -fmerge-all-constants
! -fmove-all-movables -fnew-ra -fno-branch-count-reg
! -fno-default-inline -fno-defer-pop
! -fno-function-cse -fno-guess-branch-probability
! -fno-inline -fno-math-errno -fno-peephole -fno-peephole2
! -funsafe-math-optimizations -ffinite-math-only
! -fno-trapping-math -fno-zero-initialized-in-bss
! -fomit-frame-pointer -foptimize-register-move
! -foptimize-sibling-calls -fprefetch-loop-arrays
! -fprofile-generate -fprofile-use
! -freduce-all-givs -fregmove -frename-registers
! -freorder-blocks -freorder-functions
! -frerun-cse-after-loop -frerun-loop-opt
! -frounding-math -fschedule-insns -fschedule-insns2
! -fno-sched-interblock -fno-sched-spec -fsched-spec-load
! -fsched-spec-load-dangerous
! -fsched-stalled-insns=N -sched-stalled-insns-dep=N
! -fsched2-use-superblocks
! -fsched2-use-traces -fsignaling-nans
! -fsingle-precision-constant
! -fstrength-reduce -fstrict-aliasing -ftracer -fthread-jumps
! -funroll-all-loops -funroll-loops -fpeel-loops
! -funswitch-loops -fold-unroll-loops -fold-unroll-all-loops
--param NAME=VALUE
-O -O0 -O1 -O2 -O3 -Os
_Preprocessor Options_
*Note Options Controlling the Preprocessor: Preprocessor Options.
! -AQUESTION=ANSWER
! -A-QUESTION[=ANSWER]
! -C -dD -dI -dM -dN
! -DMACRO[=DEFN] -E -H
! -idirafter DIR
! -include FILE -imacros FILE
! -iprefix FILE -iwithprefix DIR
! -iwithprefixbefore DIR -isystem DIR
! -M -MM -MF -MG -MP -MQ -MT -nostdinc
! -P -fworking-directory -remap
! -trigraphs -undef -UMACRO -Wp,OPTION
-Xpreprocessor OPTION
_Assembler Option_
*************** _Assembler Option_
*** 519,528 ****
_Linker Options_
*Note Options for Linking: Link Options.
! OBJECT-FILE-NAME -lLIBRARY
! -nostartfiles -nodefaultlibs -nostdlib -pie
! -s -static -static-libgcc -shared -shared-libgcc -symbolic
! -Wl,OPTION -Xlinker OPTION
-u SYMBOL
_Directory Options_
--- 521,530 ----
_Linker Options_
*Note Options for Linking: Link Options.
! OBJECT-FILE-NAME -lLIBRARY
! -nostartfiles -nodefaultlibs -nostdlib -pie
! -s -static -static-libgcc -shared -shared-libgcc -symbolic
! -Wl,OPTION -Xlinker OPTION
-u SYMBOL
_Directory Options_
*************** _Machine Dependent Options_
*** 537,737 ****
*Note Hardware Models and Configurations: Submodel Options.
_M680x0 Options_
! -m68000 -m68020 -m68020-40 -m68020-60 -m68030 -m68040
! -m68060 -mcpu32 -m5200 -m68881 -mbitfield -mc68000 -mc68020
! -mnobitfield -mrtd -mshort -msoft-float -mpcrel
! -malign-int -mstrict-align -msep-data -mno-sep-data
-mshared-library-id=n -mid-shared-library -mno-id-shared-library
_M68hc1x Options_
! -m6811 -m6812 -m68hc11 -m68hc12 -m68hcs12
! -mauto-incdec -minmax -mlong-calls -mshort
-msoft-reg-count=COUNT
_VAX Options_
-mg -mgnu -munix
_SPARC Options_
! -mcpu=CPU-TYPE
! -mtune=CPU-TYPE
! -mcmodel=CODE-MODEL
! -m32 -m64 -mapp-regs -mno-app-regs
! -mfaster-structs -mno-faster-structs
! -mflat -mno-flat -mfpu -mno-fpu
! -mhard-float -msoft-float
! -mhard-quad-float -msoft-quad-float
! -mimpure-text -mno-impure-text -mlittle-endian
! -mstack-bias -mno-stack-bias
! -munaligned-doubles -mno-unaligned-doubles
! -mv8plus -mno-v8plus -mvis -mno-vis
! -mcypress -mf930 -mf934
-msparclite -msupersparc -mv8
-threads -pthreads
_ARM Options_
! -mapcs-frame -mno-apcs-frame
! -mapcs-26 -mapcs-32
! -mapcs-stack-check -mno-apcs-stack-check
! -mapcs-float -mno-apcs-float
! -mapcs-reentrant -mno-apcs-reentrant
! -msched-prolog -mno-sched-prolog
! -mlittle-endian -mbig-endian -mwords-little-endian
! -malignment-traps -mno-alignment-traps
! -msoft-float -mhard-float -mfpe
! -mthumb-interwork -mno-thumb-interwork
! -mcpu=NAME -march=NAME -mfpe=NAME
! -mstructure-size-boundary=N
! -mabort-on-noreturn
! -mlong-calls -mno-long-calls
! -msingle-pic-base -mno-single-pic-base
! -mpic-register=REG
! -mnop-fun-dllimport
! -mcirrus-fix-invalid-insns -mno-cirrus-fix-invalid-insns
! -mpoke-function-name
! -mthumb -marm
! -mtpcs-frame -mtpcs-leaf-frame
-mcaller-super-interworking -mcallee-super-interworking
_MN10300 Options_
! -mmult-bug -mno-mult-bug
! -mam33 -mno-am33
! -mam33-2 -mno-am33-2
-mno-crt0 -mrelax
_M32R/D Options_
! -m32r2 -m32rx -m32r
! -mdebug
! -malign-loops -mno-align-loops
! -missue-rate=NUMBER
! -mbranch-cost=NUMBER
! -mmodel=CODE-SIZE-MODEL-TYPE
! -msdata=SDATA-TYPE
! -mno-flush-func -mflush-func=NAME
! -mno-flush-trap -mflush-trap=NUMBER
-G NUM
_RS/6000 and PowerPC Options_
! -mcpu=CPU-TYPE
! -mtune=CPU-TYPE
! -mpower -mno-power -mpower2 -mno-power2
! -mpowerpc -mpowerpc64 -mno-powerpc
! -maltivec -mno-altivec
! -mpowerpc-gpopt -mno-powerpc-gpopt
! -mpowerpc-gfxopt -mno-powerpc-gfxopt
! -mnew-mnemonics -mold-mnemonics
! -mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc
! -m64 -m32 -mxl-compat -mno-xl-compat -mpe
! -malign-power -malign-natural
! -msoft-float -mhard-float -mmultiple -mno-multiple
! -mstring -mno-string -mupdate -mno-update
! -mfused-madd -mno-fused-madd -mbit-align -mno-bit-align
! -mstrict-align -mno-strict-align -mrelocatable
! -mno-relocatable -mrelocatable-lib -mno-relocatable-lib
! -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian
! -mdynamic-no-pic
! -mprioritize-restricted-insns=PRIORITY
! -msched-costly-dep=DEPENDENCE_TYPE
! -minsert-sched-nops=SCHEME
! -mcall-sysv -mcall-netbsd
! -maix-struct-return -msvr4-struct-return
! -mabi=altivec -mabi=no-altivec
! -mabi=spe -mabi=no-spe
! -misel=yes -misel=no
! -mspe=yes -mspe=no
! -mfloat-gprs=yes -mfloat-gprs=no
! -mprototype -mno-prototype
! -msim -mmvme -mads -myellowknife -memb -msdata
-msdata=OPT -mvxworks -mwindiss -G NUM -pthread
_Darwin Options_
! -all_load -allowable_client -arch -arch_errors_fatal
! -arch_only -bind_at_load -bundle -bundle_loader
! -client_name -compatibility_version -current_version
! -dependency-file -dylib_file -dylinker_install_name
! -dynamic -dynamiclib -exported_symbols_list
! -filelist -flat_namespace -force_cpusubtype_ALL
! -force_flat_namespace -headerpad_max_install_names
! -image_base -init -install_name -keep_private_externs
! -multi_module -multiply_defined -multiply_defined_unused
! -noall_load -nofixprebinding -nomultidefs -noprebind -noseglinkedit
! -pagezero_size -prebind -prebind_all_twolevel_modules
! -private_bundle -read_only_relocs -sectalign
! -sectobjectsymbols -whyload -seg1addr
! -sectcreate -sectobjectsymbols -sectorder
! -seg_addr_table -seg_addr_table_filename -seglinkedit
! -segprot -segs_read_only_addr -segs_read_write_addr
! -single_module -static -sub_library -sub_umbrella
! -twolevel_namespace -umbrella -undefined
! -unexported_symbols_list -weak_reference_mismatches
-whatsloaded
_MIPS Options_
! -EL -EB -march=ARCH -mtune=ARCH
! -mips1 -mips2 -mips3 -mips4 -mips32 -mips32r2 -mips64
! -mips16 -mno-mips16 -mabi=ABI -mabicalls -mno-abicalls
! -mxgot -mno-xgot -membedded-pic -mno-embedded-pic
! -mgp32 -mgp64 -mfp32 -mfp64 -mhard-float -msoft-float
! -msingle-float -mdouble-float -mint64 -mlong64 -mlong32
! -GNUM -membedded-data -mno-embedded-data
! -muninit-const-in-rodata -mno-uninit-const-in-rodata
! -msplit-addresses -mno-split-addresses
! -mexplicit-relocs -mno-explicit-relocs
! -mrnames -mno-rnames
! -mcheck-zero-division -mno-check-zero-division
! -mmemcpy -mno-memcpy -mlong-calls -mno-long-calls
! -mmad -mno-mad -mfused-madd -mno-fused-madd -nocpp
! -mfix-sb1 -mno-fix-sb1 -mflush-func=FUNC
-mno-flush-func -mbranch-likely -mno-branch-likely
_i386 and x86-64 Options_
! -mtune=CPU-TYPE -march=CPU-TYPE
! -mfpmath=UNIT
! -masm=DIALECT -mno-fancy-math-387
! -mno-fp-ret-in-387 -msoft-float -msvr3-shlib
! -mno-wide-multiply -mrtd -malign-double
! -mpreferred-stack-boundary=NUM
! -mmmx -msse -msse2 -msse3 -m3dnow
! -mthreads -mno-align-stringops -minline-all-stringops
! -mpush-args -maccumulate-outgoing-args -m128bit-long-double
! -m96bit-long-double -mregparm=NUM -momit-leaf-frame-pointer
! -mno-red-zone -mno-tls-direct-seg-refs
! -mcmodel=CODE-MODEL
-m32 -m64
_HPPA Options_
! -march=ARCHITECTURE-TYPE
! -mbig-switch -mdisable-fpregs -mdisable-indexing
! -mfast-indirect-calls -mgas -mgnu-ld -mhp-ld
! -mjump-in-delay -mlinker-opt -mlong-calls
! -mlong-load-store -mno-big-switch -mno-disable-fpregs
! -mno-disable-indexing -mno-fast-indirect-calls -mno-gas
! -mno-jump-in-delay -mno-long-load-store
! -mno-portable-runtime -mno-soft-float
! -mno-space-regs -msoft-float -mpa-risc-1-0
! -mpa-risc-1-1 -mpa-risc-2-0 -mportable-runtime
! -mschedule=CPU-TYPE -mspace-regs -msio -mwsio
-nolibdld -static -threads
_Intel 960 Options_
! -mCPU-TYPE -masm-compat -mclean-linkage
! -mcode-align -mcomplex-addr -mleaf-procedures
! -mic-compat -mic2.0-compat -mic3.0-compat
! -mintel-asm -mno-clean-linkage -mno-code-align
! -mno-complex-addr -mno-leaf-procedures
! -mno-old-align -mno-strict-align -mno-tail-call
! -mnumerics -mold-align -msoft-float -mstrict-align
-mtail-call
_DEC Alpha Options_
! -mno-fp-regs -msoft-float -malpha-as -mgas
! -mieee -mieee-with-inexact -mieee-conformant
! -mfp-trap-mode=MODE -mfp-rounding-mode=MODE
! -mtrap-precision=MODE -mbuild-constants
! -mcpu=CPU-TYPE -mtune=CPU-TYPE
! -mbwx -mmax -mfix -mcix
! -mfloat-vax -mfloat-ieee
! -mexplicit-relocs -msmall-data -mlarge-data
! -msmall-text -mlarge-text
-mmemory-latency=TIME
_DEC Alpha/VMS Options_
--- 539,739 ----
*Note Hardware Models and Configurations: Submodel Options.
_M680x0 Options_
! -m68000 -m68020 -m68020-40 -m68020-60 -m68030 -m68040
! -m68060 -mcpu32 -m5200 -m68881 -mbitfield -mc68000 -mc68020
! -mnobitfield -mrtd -mshort -msoft-float -mpcrel
! -malign-int -mstrict-align -msep-data -mno-sep-data
-mshared-library-id=n -mid-shared-library -mno-id-shared-library
_M68hc1x Options_
! -m6811 -m6812 -m68hc11 -m68hc12 -m68hcs12
! -mauto-incdec -minmax -mlong-calls -mshort
-msoft-reg-count=COUNT
_VAX Options_
-mg -mgnu -munix
_SPARC Options_
! -mcpu=CPU-TYPE
! -mtune=CPU-TYPE
! -mcmodel=CODE-MODEL
! -m32 -m64 -mapp-regs -mno-app-regs
! -mfaster-structs -mno-faster-structs
! -mflat -mno-flat -mfpu -mno-fpu
! -mhard-float -msoft-float
! -mhard-quad-float -msoft-quad-float
! -mimpure-text -mno-impure-text -mlittle-endian
! -mstack-bias -mno-stack-bias
! -munaligned-doubles -mno-unaligned-doubles
! -mv8plus -mno-v8plus -mvis -mno-vis
! -mcypress -mf930 -mf934
-msparclite -msupersparc -mv8
-threads -pthreads
_ARM Options_
! -mapcs-frame -mno-apcs-frame
! -mapcs-26 -mapcs-32
! -mapcs-stack-check -mno-apcs-stack-check
! -mapcs-float -mno-apcs-float
! -mapcs-reentrant -mno-apcs-reentrant
! -msched-prolog -mno-sched-prolog
! -mlittle-endian -mbig-endian -mwords-little-endian
! -malignment-traps -mno-alignment-traps
! -msoft-float -mhard-float -mfpe
! -mthumb-interwork -mno-thumb-interwork
! -mcpu=NAME -march=NAME -mfpe=NAME
! -mstructure-size-boundary=N
! -mabort-on-noreturn
! -mlong-calls -mno-long-calls
! -msingle-pic-base -mno-single-pic-base
! -mpic-register=REG
! -mnop-fun-dllimport
! -mcirrus-fix-invalid-insns -mno-cirrus-fix-invalid-insns
! -mpoke-function-name
! -mthumb -marm
! -mtpcs-frame -mtpcs-leaf-frame
-mcaller-super-interworking -mcallee-super-interworking
_MN10300 Options_
! -mmult-bug -mno-mult-bug
! -mam33 -mno-am33
! -mam33-2 -mno-am33-2
-mno-crt0 -mrelax
_M32R/D Options_
! -m32r2 -m32rx -m32r
! -mdebug
! -malign-loops -mno-align-loops
! -missue-rate=NUMBER
! -mbranch-cost=NUMBER
! -mmodel=CODE-SIZE-MODEL-TYPE
! -msdata=SDATA-TYPE
! -mno-flush-func -mflush-func=NAME
! -mno-flush-trap -mflush-trap=NUMBER
-G NUM
_RS/6000 and PowerPC Options_
! -mcpu=CPU-TYPE
! -mtune=CPU-TYPE
! -mpower -mno-power -mpower2 -mno-power2
! -mpowerpc -mpowerpc64 -mno-powerpc
! -maltivec -mno-altivec
! -mpowerpc-gpopt -mno-powerpc-gpopt
! -mpowerpc-gfxopt -mno-powerpc-gfxopt
! -mnew-mnemonics -mold-mnemonics
! -mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc
! -m64 -m32 -mxl-compat -mno-xl-compat -mpe
! -malign-power -malign-natural
! -msoft-float -mhard-float -mmultiple -mno-multiple
! -mstring -mno-string -mupdate -mno-update
! -mfused-madd -mno-fused-madd -mbit-align -mno-bit-align
! -mstrict-align -mno-strict-align -mrelocatable
! -mno-relocatable -mrelocatable-lib -mno-relocatable-lib
! -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian
! -mdynamic-no-pic
! -mprioritize-restricted-insns=PRIORITY
! -msched-costly-dep=DEPENDENCE_TYPE
! -minsert-sched-nops=SCHEME
! -mcall-sysv -mcall-netbsd
! -maix-struct-return -msvr4-struct-return
! -mabi=altivec -mabi=no-altivec
! -mabi=spe -mabi=no-spe
! -misel=yes -misel=no
! -mspe=yes -mspe=no
! -mfloat-gprs=yes -mfloat-gprs=no
! -mprototype -mno-prototype
! -msim -mmvme -mads -myellowknife -memb -msdata
-msdata=OPT -mvxworks -mwindiss -G NUM -pthread
_Darwin Options_
! -all_load -allowable_client -arch -arch_errors_fatal
! -arch_only -bind_at_load -bundle -bundle_loader
! -client_name -compatibility_version -current_version
! -dependency-file -dylib_file -dylinker_install_name
! -dynamic -dynamiclib -exported_symbols_list
! -filelist -flat_namespace -force_cpusubtype_ALL
! -force_flat_namespace -headerpad_max_install_names
! -image_base -init -install_name -keep_private_externs
! -multi_module -multiply_defined -multiply_defined_unused
! -noall_load -nofixprebinding -nomultidefs -noprebind -noseglinkedit
! -pagezero_size -prebind -prebind_all_twolevel_modules
! -private_bundle -read_only_relocs -sectalign
! -sectobjectsymbols -whyload -seg1addr
! -sectcreate -sectobjectsymbols -sectorder
! -seg_addr_table -seg_addr_table_filename -seglinkedit
! -segprot -segs_read_only_addr -segs_read_write_addr
! -single_module -static -sub_library -sub_umbrella
! -twolevel_namespace -umbrella -undefined
! -unexported_symbols_list -weak_reference_mismatches
-whatsloaded
_MIPS Options_
! -EL -EB -march=ARCH -mtune=ARCH
! -mips1 -mips2 -mips3 -mips4 -mips32 -mips32r2 -mips64
! -mips16 -mno-mips16 -mabi=ABI -mabicalls -mno-abicalls
! -mxgot -mno-xgot -membedded-pic -mno-embedded-pic
! -mgp32 -mgp64 -mfp32 -mfp64 -mhard-float -msoft-float
! -msingle-float -mdouble-float -mint64 -mlong64 -mlong32
! -GNUM -membedded-data -mno-embedded-data
! -muninit-const-in-rodata -mno-uninit-const-in-rodata
! -msplit-addresses -mno-split-addresses
! -mexplicit-relocs -mno-explicit-relocs
! -mrnames -mno-rnames
! -mcheck-zero-division -mno-check-zero-division
! -mmemcpy -mno-memcpy -mlong-calls -mno-long-calls
! -mmad -mno-mad -mfused-madd -mno-fused-madd -nocpp
! -mfix-sb1 -mno-fix-sb1 -mflush-func=FUNC
-mno-flush-func -mbranch-likely -mno-branch-likely
_i386 and x86-64 Options_
! -mtune=CPU-TYPE -march=CPU-TYPE
! -mfpmath=UNIT
! -masm=DIALECT -mno-fancy-math-387
! -mno-fp-ret-in-387 -msoft-float -msvr3-shlib
! -mno-wide-multiply -mrtd -malign-double
! -mpreferred-stack-boundary=NUM
! -mmmx -msse -msse2 -msse3 -m3dnow
! -mthreads -mno-align-stringops -minline-all-stringops
! -mpush-args -maccumulate-outgoing-args -m128bit-long-double
! -m96bit-long-double -mregparm=NUM -momit-leaf-frame-pointer
! -mno-red-zone -mno-tls-direct-seg-refs
! -mcmodel=CODE-MODEL
-m32 -m64
_HPPA Options_
! -march=ARCHITECTURE-TYPE
! -mbig-switch -mdisable-fpregs -mdisable-indexing
! -mfast-indirect-calls -mgas -mgnu-ld -mhp-ld
! -mjump-in-delay -mlinker-opt -mlong-calls
! -mlong-load-store -mno-big-switch -mno-disable-fpregs
! -mno-disable-indexing -mno-fast-indirect-calls -mno-gas
! -mno-jump-in-delay -mno-long-load-store
! -mno-portable-runtime -mno-soft-float
! -mno-space-regs -msoft-float -mpa-risc-1-0
! -mpa-risc-1-1 -mpa-risc-2-0 -mportable-runtime
! -mschedule=CPU-TYPE -mspace-regs -msio -mwsio
-nolibdld -static -threads
_Intel 960 Options_
! -mCPU-TYPE -masm-compat -mclean-linkage
! -mcode-align -mcomplex-addr -mleaf-procedures
! -mic-compat -mic2.0-compat -mic3.0-compat
! -mintel-asm -mno-clean-linkage -mno-code-align
! -mno-complex-addr -mno-leaf-procedures
! -mno-old-align -mno-strict-align -mno-tail-call
! -mnumerics -mold-align -msoft-float -mstrict-align
-mtail-call
_DEC Alpha Options_
! -mno-fp-regs -msoft-float -malpha-as -mgas
! -mieee -mieee-with-inexact -mieee-conformant
! -mfp-trap-mode=MODE -mfp-rounding-mode=MODE
! -mtrap-precision=MODE -mbuild-constants
! -mcpu=CPU-TYPE -mtune=CPU-TYPE
! -mbwx -mmax -mfix -mcix
! -mfloat-vax -mfloat-ieee
! -mexplicit-relocs -msmall-data -mlarge-data
! -msmall-text -mlarge-text
-mmemory-latency=TIME
_DEC Alpha/VMS Options_
*************** _Machine Dependent Options_
*** 741,884 ****
-mrelax -mh -ms -mn -mint32 -malign-300
_SH Options_
! -m1 -m2 -m2e -m3 -m3e
! -m4-nofpu -m4-single-only -m4-single -m4
! -m5-64media -m5-64media-nofpu
! -m5-32media -m5-32media-nofpu
! -m5-compact -m5-compact-nofpu
! -mb -ml -mdalign -mrelax
! -mbigtable -mfmovd -mhitachi -mnomacsave
! -mieee -misize -mpadstruct -mspace
-mprefergot -musermode
_System V Options_
-Qy -Qn -YP,PATHS -Ym,DIR
_ARC Options_
! -EB -EL
! -mmangle-cpu -mcpu=CPU -mtext=TEXT-SECTION
-mdata=DATA-SECTION -mrodata=READONLY-DATA-SECTION
_TMS320C3x/C4x Options_
! -mcpu=CPU -mbig -msmall -mregparm -mmemparm
! -mfast-fix -mmpyi -mbk -mti -mdp-isr-reload
! -mrpts=COUNT -mrptb -mdb -mloop-unsigned
-mparallel-insns -mparallel-mpy -mpreserve-float
_V850 Options_
! -mlong-calls -mno-long-calls -mep -mno-ep
! -mprolog-function -mno-prolog-function -mspace
! -mtda=N -msda=N -mzda=N
! -mapp-regs -mno-app-regs
! -mdisable-callt -mno-disable-callt
! -mv850e1
! -mv850e
-mv850 -mbig-switch
_NS32K Options_
! -m32032 -m32332 -m32532 -m32081 -m32381
! -mmult-add -mnomult-add -msoft-float -mrtd -mnortd
! -mregparam -mnoregparam -msb -mnosb
-mbitfield -mnobitfield -mhimem -mnohimem
_AVR Options_
! -mmcu=MCU -msize -minit-stack=N -mno-interrupts
-mcall-prologues -mno-tablejump -mtiny-stack
_MCore Options_
! -mhardlit -mno-hardlit -mdiv -mno-div -mrelax-immediates
! -mno-relax-immediates -mwide-bitfields -mno-wide-bitfields
! -m4byte-functions -mno-4byte-functions -mcallgraph-data
! -mno-callgraph-data -mslow-bytes -mno-slow-bytes -mno-lsim
-mlittle-endian -mbig-endian -m210 -m340 -mstack-increment
_MMIX Options_
! -mlibfuncs -mno-libfuncs -mepsilon -mno-epsilon -mabi=gnu
! -mabi=mmixware -mzero-extend -mknuthdiv -mtoplevel-symbols
! -melf -mbranch-predict -mno-branch-predict -mbase-addresses
-mno-base-addresses -msingle-exit -mno-single-exit
_IA-64 Options_
! -mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic
! -mvolatile-asm-stop -mb-step -mregister-names -mno-sdata
! -mconstant-gp -mauto-pic -minline-float-divide-min-latency
! -minline-float-divide-max-throughput
! -minline-int-divide-min-latency
! -minline-int-divide-max-throughput
! -minline-sqrt-min-latency -minline-sqrt-max-throughput
! -mno-dwarf2-asm -mearly-stop-bits
! -mfixed-range=REGISTER-RANGE -mtls-size=TLS-SIZE
-mtune=CPU-TYPE -mt -pthread -milp32 -mlp64
_D30V Options_
! -mextmem -mextmemory -monchip -mno-asm-optimize
-masm-optimize -mbranch-cost=N -mcond-exec=N
_S/390 and zSeries Options_
! -mtune=CPU-TYPE -march=CPU-TYPE
! -mhard-float -msoft-float -mbackchain -mno-backchain
! -msmall-exec -mno-small-exec -mmvcle -mno-mvcle
-m64 -m31 -mdebug -mno-debug -mesa -mzarch -mfused-madd -mno-fused-madd
_CRIS Options_
! -mcpu=CPU -march=CPU -mtune=CPU
! -mmax-stack-frame=N -melinux-stacksize=N
! -metrax4 -metrax100 -mpdebug -mcc-init -mno-side-effects
! -mstack-align -mdata-align -mconst-align
! -m32-bit -m16-bit -m8-bit -mno-prologue-epilogue -mno-gotplt
! -melf -maout -melinux -mlinux -sim -sim2
-mmul-bug-workaround -mno-mul-bug-workaround
_PDP-11 Options_
! -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10
! -mbcopy -mbcopy-builtin -mint32 -mno-int16
! -mint16 -mno-int32 -mfloat32 -mno-float64
! -mfloat64 -mno-float32 -mabshi -mno-abshi
! -mbranch-expensive -mbranch-cheap
-msplit -mno-split -munix-asm -mdec-asm
_Xstormy16 Options_
-msim
_Xtensa Options_
! -mconst16 -mno-const16
! -mfused-madd -mno-fused-madd
! -mtext-section-literals -mno-text-section-literals
! -mtarget-align -mno-target-align
-mlongcalls -mno-longcalls
_FRV Options_
! -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64
! -mhard-float -msoft-float
! -malloc-cc -mfixed-cc -mdword -mno-dword
! -mdouble -mno-double
! -mmedia -mno-media -mmuladd -mno-muladd
! -mlibrary-pic -macc-4 -macc-8
! -mpack -mno-pack -mno-eflags -mcond-move -mno-cond-move
! -mscc -mno-scc -mcond-exec -mno-cond-exec
! -mvliw-branch -mno-vliw-branch
! -mmulti-cond-exec -mno-multi-cond-exec -mnested-cond-exec
! -mno-nested-cond-exec -mtomcat-stats
-mcpu=CPU
_Code Generation Options_
*Note Options for Code Generation Conventions: Code Gen Options.
! -fcall-saved-REG -fcall-used-REG
! -ffixed-REG -fexceptions
! -fnon-call-exceptions -funwind-tables
! -fasynchronous-unwind-tables
! -finhibit-size-directive -finstrument-functions
! -fno-common -fno-ident
! -fpcc-struct-return -fpic -fPIC -fpie -fPIE
! -freg-struct-return -fshared-data -fshort-enums
! -fshort-double -fshort-wchar
! -fverbose-asm -fpack-struct -fstack-check
! -fstack-limit-register=REG -fstack-limit-symbol=SYM
! -fargument-alias -fargument-noalias
! -fargument-noalias-global -fleading-underscore
! -ftls-model=MODEL
-ftrapv -fwrapv -fbounds-check
* Menu:
* Overall Options:: Controlling the kind of output:
--- 743,887 ----
-mrelax -mh -ms -mn -mint32 -malign-300
_SH Options_
! -m1 -m2 -m2e -m3 -m3e
! -m4-nofpu -m4-single-only -m4-single -m4
! -m5-64media -m5-64media-nofpu
! -m5-32media -m5-32media-nofpu
! -m5-compact -m5-compact-nofpu
! -mb -ml -mdalign -mrelax
! -mbigtable -mfmovd -mhitachi -mnomacsave
! -mieee -misize -mpadstruct -mspace
-mprefergot -musermode
_System V Options_
-Qy -Qn -YP,PATHS -Ym,DIR
_ARC Options_
! -EB -EL
! -mmangle-cpu -mcpu=CPU -mtext=TEXT-SECTION
-mdata=DATA-SECTION -mrodata=READONLY-DATA-SECTION
_TMS320C3x/C4x Options_
! -mcpu=CPU -mbig -msmall -mregparm -mmemparm
! -mfast-fix -mmpyi -mbk -mti -mdp-isr-reload
! -mrpts=COUNT -mrptb -mdb -mloop-unsigned
-mparallel-insns -mparallel-mpy -mpreserve-float
_V850 Options_
! -mlong-calls -mno-long-calls -mep -mno-ep
! -mprolog-function -mno-prolog-function -mspace
! -mtda=N -msda=N -mzda=N
! -mapp-regs -mno-app-regs
! -mdisable-callt -mno-disable-callt
! -mv850e1
! -mv850e
-mv850 -mbig-switch
_NS32K Options_
! -m32032 -m32332 -m32532 -m32081 -m32381
! -mmult-add -mnomult-add -msoft-float -mrtd -mnortd
! -mregparam -mnoregparam -msb -mnosb
-mbitfield -mnobitfield -mhimem -mnohimem
_AVR Options_
! -mmcu=MCU -msize -minit-stack=N -mno-interrupts
-mcall-prologues -mno-tablejump -mtiny-stack
_MCore Options_
! -mhardlit -mno-hardlit -mdiv -mno-div -mrelax-immediates
! -mno-relax-immediates -mwide-bitfields -mno-wide-bitfields
! -m4byte-functions -mno-4byte-functions -mcallgraph-data
! -mno-callgraph-data -mslow-bytes -mno-slow-bytes -mno-lsim
-mlittle-endian -mbig-endian -m210 -m340 -mstack-increment
_MMIX Options_
! -mlibfuncs -mno-libfuncs -mepsilon -mno-epsilon -mabi=gnu
! -mabi=mmixware -mzero-extend -mknuthdiv -mtoplevel-symbols
! -melf -mbranch-predict -mno-branch-predict -mbase-addresses
-mno-base-addresses -msingle-exit -mno-single-exit
_IA-64 Options_
! -mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic
! -mvolatile-asm-stop -mb-step -mregister-names -mno-sdata
! -mconstant-gp -mauto-pic -minline-float-divide-min-latency
! -minline-float-divide-max-throughput
! -minline-int-divide-min-latency
! -minline-int-divide-max-throughput
! -minline-sqrt-min-latency -minline-sqrt-max-throughput
! -mno-dwarf2-asm -mearly-stop-bits
! -mfixed-range=REGISTER-RANGE -mtls-size=TLS-SIZE
-mtune=CPU-TYPE -mt -pthread -milp32 -mlp64
_D30V Options_
! -mextmem -mextmemory -monchip -mno-asm-optimize
-masm-optimize -mbranch-cost=N -mcond-exec=N
_S/390 and zSeries Options_
! -mtune=CPU-TYPE -march=CPU-TYPE
! -mhard-float -msoft-float -mbackchain -mno-backchain
! -msmall-exec -mno-small-exec -mmvcle -mno-mvcle
-m64 -m31 -mdebug -mno-debug -mesa -mzarch -mfused-madd -mno-fused-madd
_CRIS Options_
! -mcpu=CPU -march=CPU -mtune=CPU
! -mmax-stack-frame=N -melinux-stacksize=N
! -metrax4 -metrax100 -mpdebug -mcc-init -mno-side-effects
! -mstack-align -mdata-align -mconst-align
! -m32-bit -m16-bit -m8-bit -mno-prologue-epilogue -mno-gotplt
! -melf -maout -melinux -mlinux -sim -sim2
-mmul-bug-workaround -mno-mul-bug-workaround
_PDP-11 Options_
! -mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10
! -mbcopy -mbcopy-builtin -mint32 -mno-int16
! -mint16 -mno-int32 -mfloat32 -mno-float64
! -mfloat64 -mno-float32 -mabshi -mno-abshi
! -mbranch-expensive -mbranch-cheap
-msplit -mno-split -munix-asm -mdec-asm
_Xstormy16 Options_
-msim
_Xtensa Options_
! -mconst16 -mno-const16
! -mfused-madd -mno-fused-madd
! -mtext-section-literals -mno-text-section-literals
! -mtarget-align -mno-target-align
-mlongcalls -mno-longcalls
_FRV Options_
! -mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64
! -mhard-float -msoft-float
! -malloc-cc -mfixed-cc -mdword -mno-dword
! -mdouble -mno-double
! -mmedia -mno-media -mmuladd -mno-muladd
! -mlibrary-pic -macc-4 -macc-8
! -mpack -mno-pack -mno-eflags -mcond-move -mno-cond-move
! -mscc -mno-scc -mcond-exec -mno-cond-exec
! -mvliw-branch -mno-vliw-branch
! -mmulti-cond-exec -mno-multi-cond-exec -mnested-cond-exec
! -mno-nested-cond-exec -mtomcat-stats
-mcpu=CPU
_Code Generation Options_
*Note Options for Code Generation Conventions: Code Gen Options.
! -fcall-saved-REG -fcall-used-REG
! -ffixed-REG -fexceptions
! -fnon-call-exceptions -funwind-tables
! -fasynchronous-unwind-tables
! -finhibit-size-directive -finstrument-functions
! -fno-common -fno-ident
! -fpcc-struct-return -fpic -fPIC -fpie -fPIE
! -freg-struct-return -fshared-data -fshort-enums
! -fshort-double -fshort-wchar
! -fverbose-asm -fpack-struct -fstack-check
! -fstack-limit-register=REG -fstack-limit-symbol=SYM
! -fargument-alias -fargument-noalias
! -fargument-noalias-global -fleading-underscore
! -ftls-model=MODEL
-ftrapv -fwrapv -fbounds-check
+
* Menu:
* Overall Options:: Controlling the kind of output:
*************** _Code Generation Options_
*** 904,913 ****
File: gcc.info, Node: Overall Options, Next: Invoking G++, Prev: Option Summary, Up: Invoking GCC
! Options Controlling the Kind of Output
! ======================================
! Compilation can involve up to four stages: preprocessing, compilation
proper, assembly and linking, always in that order. GCC is capable of
preprocessing and compiling several files either into several assembler
input files, or into one assembler input file; then each assembler
--- 907,916 ----
File: gcc.info, Node: Overall Options, Next: Invoking G++, Prev: Option Summary, Up: Invoking GCC
! 3.2 Options Controlling the Kind of Output
! ==========================================
! Compilation can involve up to four stages: preprocessing, compilation
proper, assembly and linking, always in that order. GCC is capable of
preprocessing and compiling several files either into several assembler
input files, or into one assembler input file; then each assembler
*************** do nothing at all.
*** 1104,1113 ****
File: gcc.info, Node: Invoking G++, Next: C Dialect Options, Prev: Overall Options, Up: Invoking GCC
! Compiling C++ Programs
! ======================
! C++ source files conventionally use one of the suffixes `.C', `.cc',
`.cpp', `.CPP', `.c++', `.cp', or `.cxx'; C++ header files often use
`.hh' or `.H'; and preprocessed C++ files use the suffix `.ii'. GCC
recognizes files with these names and compiles them as C++ programs
--- 1107,1116 ----
File: gcc.info, Node: Invoking G++, Next: C Dialect Options, Prev: Overall Options, Up: Invoking GCC
! 3.3 Compiling C++ Programs
! ==========================
! C++ source files conventionally use one of the suffixes `.C', `.cc',
`.cpp', `.CPP', `.c++', `.cp', or `.cxx'; C++ header files often use
`.hh' or `.H'; and preprocessed C++ files use the suffix `.ii'. GCC
recognizes files with these names and compiles them as C++ programs
*************** meaningful only for C++ programs.
*** 1136,1145 ****
File: gcc.info, Node: C Dialect Options, Next: C++ Dialect Options, Prev: Invoking G++, Up: Invoking GCC
! Options Controlling C Dialect
! =============================
! The following options control the dialect of C (or languages derived
from C, such as C++ and Objective-C) that the compiler accepts:
`-ansi'
--- 1139,1148 ----
File: gcc.info, Node: C Dialect Options, Next: C++ Dialect Options, Prev: Invoking G++, Up: Invoking GCC
! 3.4 Options Controlling C Dialect
! =================================
! The following options control the dialect of C (or languages derived
from C, such as C++ and Objective-C) that the compiler accepts:
`-ansi'
*************** from C, such as C++ and Objective-C) tha
*** 1381,1393 ****
File: gcc.info, Node: C++ Dialect Options, Next: Objective-C Dialect Options, Prev: C Dialect Options, Up: Invoking GCC
! Options Controlling C++ Dialect
! ===============================
! This section describes the command-line options that are only
! meaningful for C++ programs; but you can also use most of the GNU
! compiler options regardless of what language your program is in. For
! example, you might compile a file `firstClass.C' like this:
g++ -g -frepo -O -c firstClass.C
--- 1384,1396 ----
File: gcc.info, Node: C++ Dialect Options, Next: Objective-C Dialect Options, Prev: C Dialect Options, Up: Invoking GCC
! 3.5 Options Controlling C++ Dialect
! ===================================
! This section describes the command-line options that are only meaningful
! for C++ programs; but you can also use most of the GNU compiler options
! regardless of what language your program is in. For example, you might
! compile a file `firstClass.C' like this:
g++ -g -frepo -O -c firstClass.C
*************** have meanings only for C++ programs:
*** 1624,1635 ****
example:
struct A {};
!
struct B {
A a;
virtual void f ();
};
!
struct C : public B, public A {};
G++ will place the `A' base class of `C' at a nonzero offset;
--- 1627,1638 ----
example:
struct A {};
!
struct B {
A a;
virtual void f ();
};
!
struct C : public B, public A {};
G++ will place the `A' base class of `C' at a nonzero offset;
*************** have meanings only for C++ programs:
*** 1641,1647 ****
template
void f(typename Q::X) {}
!
template class Q>
void f(typename Q::X) {}
--- 1644,1650 ----
template
void f(typename Q::X) {}
!
template class Q>
void f(typename Q::X) {}
*************** have meanings only for C++ programs:
*** 1737,1743 ****
struct A {
virtual void f();
};
!
struct B: public A {
void f(int);
};
--- 1740,1746 ----
struct A {
virtual void f();
};
!
struct B: public A {
void f(int);
};
*************** have meanings only for C++ programs:
*** 1764,1770 ****
operator int ();
A& operator = (int);
};
!
main ()
{
A a,b;
--- 1767,1773 ----
operator int ();
A& operator = (int);
};
!
main ()
{
A a,b;
*************** have meanings only for C++ programs:
*** 1777,1786 ****
File: gcc.info, Node: Objective-C Dialect Options, Next: Language Independent Options, Prev: C++ Dialect Options, Up: Invoking GCC
! Options Controlling Objective-C Dialect
! =======================================
! (NOTE: This manual does not describe the Objective-C language itself.
See `http://gcc.gnu.org/readings.html' for references.)
This section describes the command-line options that are only
--- 1780,1789 ----
File: gcc.info, Node: Objective-C Dialect Options, Next: Language Independent Options, Prev: C++ Dialect Options, Up: Invoking GCC
! 3.6 Options Controlling Objective-C Dialect
! ===========================================
! (NOTE: This manual does not describe the Objective-C language itself.
See `http://gcc.gnu.org/readings.html' for references.)
This section describes the command-line options that are only
*************** programs:
*** 1970,1982 ****
Generate C header describing the largest structure that is passed
by value, if any.
File: gcc.info, Node: Language Independent Options, Next: Warning Options, Prev: Objective-C Dialect Options, Up: Invoking GCC
! Options to Control Diagnostic Messages Formatting
! =================================================
! Traditionally, diagnostic messages have been formatted irrespective of
the output device's aspect (e.g. its width, ...). The options described
below can be used to control the diagnostic messages formatting
algorithm, e.g. how many characters per line, how often source location
--- 1973,1986 ----
Generate C header describing the largest structure that is passed
by value, if any.
+
File: gcc.info, Node: Language Independent Options, Next: Warning Options, Prev: Objective-C Dialect Options, Up: Invoking GCC
! 3.7 Options to Control Diagnostic Messages Formatting
! =====================================================
! Traditionally, diagnostic messages have been formatted irrespective of
the output device's aspect (e.g. its width, ...). The options described
below can be used to control the diagnostic messages formatting
algorithm, e.g. how many characters per line, how often source location
*************** the remaining front ends would be able t
*** 2005,2017 ****
prefix) for physical lines that result from the process of breaking
a message which is too long to fit on a single line.
File: gcc.info, Node: Warning Options, Next: Debugging Options, Prev: Language Independent Options, Up: Invoking GCC
! Options to Request or Suppress Warnings
! =======================================
! Warnings are diagnostic messages that report constructions which are
not inherently erroneous but which are risky or suggest there may have
been an error.
--- 2009,2022 ----
prefix) for physical lines that result from the process of breaking
a message which is too long to fit on a single line.
+
File: gcc.info, Node: Warning Options, Next: Debugging Options, Prev: Language Independent Options, Up: Invoking GCC
! 3.8 Options to Request or Suppress Warnings
! ===========================================
! Warnings are diagnostic messages that report constructions which are
not inherently erroneous but which are risky or suggest there may have
been an error.
*************** the warning.
*** 2891,2901 ****
File: gcc.info, Node: Debugging Options, Next: Optimize Options, Prev: Warning Options, Up: Invoking GCC
! Options for Debugging Your Program or GCC
! =========================================
! GCC has various special options that are used for debugging either
! your program or GCC:
`-g'
Produce debugging information in the operating system's native
--- 2896,2906 ----
File: gcc.info, Node: Debugging Options, Next: Optimize Options, Prev: Warning Options, Up: Invoking GCC
! 3.9 Options for Debugging Your Program or GCC
! =============================================
! GCC has various special options that are used for debugging either your
! program or GCC:
`-g'
Produce debugging information in the operating system's native
*************** your program or GCC:
*** 3417,3426 ****
File: gcc.info, Node: Optimize Options, Next: Preprocessor Options, Prev: Debugging Options, Up: Invoking GCC
! Options That Control Optimization
! =================================
! These options control various sorts of optimizations.
Without any optimization option, the compiler's goal is to reduce the
cost of compilation and to make debugging produce the expected results.
--- 3422,3431 ----
File: gcc.info, Node: Optimize Options, Next: Preprocessor Options, Prev: Debugging Options, Up: Invoking GCC
! 3.10 Options That Control Optimization
! ======================================
! These options control various sorts of optimizations.
Without any optimization option, the compiler's goal is to reduce the
cost of compilation and to make debugging produce the expected results.
*************** optimizations that have a flag are liste
*** 3454,3467 ****
of compilation time.
`-O' turns on the following optimization flags:
! -fdefer-pop
! -fmerge-constants
! -fthread-jumps
! -floop-optimize
! -fif-conversion
! -fif-conversion2
! -fdelayed-branch
! -fguess-branch-probability
-fcprop-registers
`-O' also turns on `-fomit-frame-pointer' on machines where doing
--- 3459,3472 ----
of compilation time.
`-O' turns on the following optimization flags:
! -fdefer-pop
! -fmerge-constants
! -fthread-jumps
! -floop-optimize
! -fif-conversion
! -fif-conversion2
! -fdelayed-branch
! -fguess-branch-probability
-fcprop-registers
`-O' also turns on `-fomit-frame-pointer' on machines where doing
*************** optimizations that have a flag are liste
*** 3476,3499 ****
`-O2' turns on all optimization flags specified by `-O'. It also
turns on the following optimization flags:
! -fforce-mem
! -foptimize-sibling-calls
! -fstrength-reduce
! -fcse-follow-jumps -fcse-skip-blocks
! -frerun-cse-after-loop -frerun-loop-opt
! -fgcse -fgcse-lm -fgcse-sm -fgcse-las
! -fdelete-null-pointer-checks
! -fexpensive-optimizations
! -fregmove
! -fschedule-insns -fschedule-insns2
! -fsched-interblock -fsched-spec
! -fcaller-saves
! -fpeephole2
! -freorder-blocks -freorder-functions
! -fstrict-aliasing
! -funit-at-a-time
! -falign-functions -falign-jumps
! -falign-loops -falign-labels
-fcrossjumping
Please note the warning under `-fgcse' about invoking `-O2' on
--- 3481,3504 ----
`-O2' turns on all optimization flags specified by `-O'. It also
turns on the following optimization flags:
! -fforce-mem
! -foptimize-sibling-calls
! -fstrength-reduce
! -fcse-follow-jumps -fcse-skip-blocks
! -frerun-cse-after-loop -frerun-loop-opt
! -fgcse -fgcse-lm -fgcse-sm -fgcse-las
! -fdelete-null-pointer-checks
! -fexpensive-optimizations
! -fregmove
! -fschedule-insns -fschedule-insns2
! -fsched-interblock -fsched-spec
! -fcaller-saves
! -fpeephole2
! -freorder-blocks -freorder-functions
! -fstrict-aliasing
! -funit-at-a-time
! -falign-functions -falign-jumps
! -falign-loops -falign-labels
-fcrossjumping
Please note the warning under `-fgcse' about invoking `-O2' on
*************** optimizations that have a flag are liste
*** 3501,3508 ****
`-O3'
Optimize yet more. `-O3' turns on all optimizations specified by
! `-O2' and also turns on the `-finline-functions', `-fweb' and
! `-frename-registers' options.
`-O0'
Do not optimize. This is the default.
--- 3506,3513 ----
`-O3'
Optimize yet more. `-O3' turns on all optimizations specified by
! `-O2' and also turns on the `-finline-functions', `-fweb',
! `-frename-registers' and `-funswitch-loops' options.
`-O0'
Do not optimize. This is the default.
*************** optimizations that have a flag are liste
*** 3513,3519 ****
optimizations designed to reduce code size.
`-Os' disables the following optimization flags:
! -falign-functions -falign-jumps -falign-loops
-falign-labels -freorder-blocks -fprefetch-loop-arrays
If you use multiple `-O' options, with or without level numbers,
--- 3518,3524 ----
optimizations designed to reduce code size.
`-Os' disables the following optimization flags:
! -falign-functions -falign-jumps -falign-loops
-falign-labels -freorder-blocks -fprefetch-loop-arrays
If you use multiple `-O' options, with or without level numbers,
*************** optimizations to be performed is desired
*** 4029,4035 ****
int i;
double d;
};
!
int f() {
a_union t;
t.d = 3.0;
--- 4034,4040 ----
int i;
double d;
};
!
int f() {
a_union t;
t.d = 3.0;
*************** optimizations to be performed is desired
*** 4161,4166 ****
--- 4166,4172 ----
The following options are enabled: `-fbranch-probabilities',
`-fvpt', `-funroll-loops', `-fpeel-loops', `-ftracer'.
+
The following options control compiler behavior regarding floating
point arithmetic. These options trade off between speed and
correctness. All must be specifically enabled.
*************** correctness. All must be specifically e
*** 4283,4288 ****
--- 4289,4295 ----
Treat floating point constant as single precision constant instead
of implicitly converting it to double precision constant.
+
The following options control optimizations that may improve
performance, but are not enabled by any `-O' options. This section
includes experimental options that may produce broken code.
*************** includes experimental options that may p
*** 4670,4679 ****
File: gcc.info, Node: Preprocessor Options, Next: Assembler Options, Prev: Optimize Options, Up: Invoking GCC
! Options Controlling the Preprocessor
! ====================================
! These options control the C preprocessor, which is run on each C source
file before actual compilation.
If you use the `-E' option, nothing is done except preprocessing.
--- 4677,4686 ----
File: gcc.info, Node: Preprocessor Options, Next: Assembler Options, Prev: Optimize Options, Up: Invoking GCC
! 3.11 Options Controlling the Preprocessor
! =========================================
! These options control the C preprocessor, which is run on each C source
file before actual compilation.
If you use the `-E' option, nothing is done except preprocessing.
*************** cause the preprocessor output to be unsu
*** 4793,4799 ****
Built-in macros, macros defined on the command line, and macros
defined in include files are not warned about.
! *Note:* If a macro is actually used, but only used in skipped
conditional blocks, then CPP will report it as unused. To avoid
the warning in such a case, you might improve the scope of the
macro's definition by, for example, moving it into the first
--- 4800,4806 ----
Built-in macros, macros defined on the command line, and macros
defined in include files are not warned about.
! *Note_* If a macro is actually used, but only used in skipped
conditional blocks, then CPP will report it as unused. To avoid
the warning in such a case, you might improve the scope of the
macro's definition by, for example, moving it into the first
*************** cause the preprocessor output to be unsu
*** 4902,4908 ****
This is typical output:
test.o: test.c test.h
!
test.h:
`-MT TARGET'
--- 4909,4915 ----
This is typical output:
test.o: test.c test.h
!
test.h:
`-MT TARGET'
*************** cause the preprocessor output to be unsu
*** 4968,4974 ****
not recognize the extension, it will treat the file as C; this is
the most generic mode.
! *Note:* Previous versions of cpp accepted a `-lang' option which
selected both the language and the standards conformance level.
This option has been removed, because it conflicts with the `-l'
option.
--- 4975,4981 ----
not recognize the extension, it will treat the file as C; this is
the most generic mode.
! *Note_* Previous versions of cpp accepted a `-lang' option which
selected both the language and the standards conformance level.
This option has been removed, because it conflicts with the `-l'
option.
*************** cause the preprocessor output to be unsu
*** 5258,5267 ****
File: gcc.info, Node: Assembler Options, Next: Link Options, Prev: Preprocessor Options, Up: Invoking GCC
! Passing Options to the Assembler
! ================================
! You can pass options to the assembler.
`-Wa,OPTION'
Pass OPTION as an option to the assembler. If OPTION contains
--- 5265,5274 ----
File: gcc.info, Node: Assembler Options, Next: Link Options, Prev: Preprocessor Options, Up: Invoking GCC
! 3.12 Passing Options to the Assembler
! =====================================
! You can pass options to the assembler.
`-Wa,OPTION'
Pass OPTION as an option to the assembler. If OPTION contains
*************** Passing Options to the Assembler
*** 5275,5287 ****
If you want to pass an option that takes an argument, you must use
`-Xassembler' twice, once for the option and once for the argument.
File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invoking GCC
! Options for Linking
! ===================
! These options come into play when the compiler links object files into
an executable output file. They are meaningless if the compiler is not
doing a link step.
--- 5282,5295 ----
If you want to pass an option that takes an argument, you must use
`-Xassembler' twice, once for the option and once for the argument.
+
File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invoking GCC
! 3.13 Options for Linking
! ========================
! These options come into play when the compiler links object files into
an executable output file. They are meaningless if the compiler is not
doing a link step.
*************** doing a link step.
*** 5366,5372 ****
or `-nodefaultlibs' you should usually specify `-lgcc' as well.
This ensures that you have no unresolved references to internal GCC
library subroutines. (For example, `__main', used to ensure C++
! constructors will be called; *note `collect2': (gccint)Collect2..)
`-pie'
Produce a position independent executable on targets which support
--- 5374,5380 ----
or `-nodefaultlibs' you should usually specify `-lgcc' as well.
This ensures that you have no unresolved references to internal GCC
library subroutines. (For example, `__main', used to ensure C++
! constructors will be called; *note `collect2': (gccint)Collect2.)
`-pie'
Produce a position independent executable on targets which support
*************** cases where they are not necessary is in
*** 5464,5473 ****
File: gcc.info, Node: Directory Options, Next: Spec Files, Prev: Link Options, Up: Invoking GCC
! Options for Directory Search
! ============================
! These options specify directories to search for header files, for
libraries and for parts of the compiler:
`-IDIR'
--- 5472,5481 ----
File: gcc.info, Node: Directory Options, Next: Spec Files, Prev: Link Options, Up: Invoking GCC
! 3.14 Options for Directory Search
! =================================
! These options specify directories to search for header files, for
libraries and for parts of the compiler:
`-IDIR'
*************** libraries and for parts of the compiler:
*** 5569,5578 ****
File: gcc.info, Node: Spec Files, Next: Target Options, Prev: Directory Options, Up: Invoking GCC
! Specifying subprocesses and the switches to pass to them
! ========================================================
! `gcc' is a driver program. It performs its job by invoking a sequence
of other programs to do the work of compiling, assembling and linking.
GCC interprets its command-line parameters and uses these to deduce
which programs it should invoke, and which command-line options it
--- 5577,5586 ----
File: gcc.info, Node: Spec Files, Next: Target Options, Prev: Directory Options, Up: Invoking GCC
! 3.15 Specifying subprocesses and the switches to pass to them
! =============================================================
! `gcc' is a driver program. It performs its job by invoking a sequence
of other programs to do the work of compiling, assembling and linking.
GCC interprets its command-line parameters and uses these to deduce
which programs it should invoke, and which command-line options it
*************** character on the line and it can be one
*** 5603,5608 ****
--- 5611,5617 ----
`%rename OLD_NAME NEW_NAME'
Rename the spec string OLD_NAME to NEW_NAME.
+
`*[SPEC_NAME]:'
This tells the compiler to create, override or delete the named
spec string. All lines after this directive up to the next
*************** character on the line and it can be one
*** 5655,5660 ****
--- 5664,5670 ----
effectively possible to override earlier entries using this
technique.
+
GCC has the following spec strings built into it. Spec files can
override these strings or create their own. Note that individual
targets can also add their own spec strings to this list.
*************** targets can also add their own spec stri
*** 5677,5683 ****
Here is a small example of a spec file:
%rename lib old_lib
!
*lib:
--start-group -lgcc -lc -leval1 --end-group %(old_lib)
--- 5687,5693 ----
Here is a small example of a spec file:
%rename lib old_lib
!
*lib:
--start-group -lgcc -lc -leval1 --end-group %(old_lib)
*************** or combine them with constant text in a
*** 6005,6010 ****
--- 6015,6021 ----
clauses as you need. This may be combined with `.', `!', `|', and
`*' as needed.
+
The conditional text `X' in a %{`S':`X'} or similar construct may
contain other nested `%' constructs or spaces, or even newlines. They
are processed as usual, as described above. Trailing white space in
*************** proper position among the other output f
*** 6037,6046 ****
File: gcc.info, Node: Target Options, Next: Submodel Options, Prev: Spec Files, Up: Invoking GCC
! Specifying Target Machine and Compiler Version
! ==============================================
! The usual way to run GCC is to run the executable called `gcc', or
`-gcc' when cross-compiling, or `-gcc-' to
run a version other than the one that was installed last. Sometimes
this is inconvenient, so GCC provides options that will switch to
--- 6048,6057 ----
File: gcc.info, Node: Target Options, Next: Submodel Options, Prev: Spec Files, Up: Invoking GCC
! 3.16 Specifying Target Machine and Compiler Version
! ===================================================
! The usual way to run GCC is to run the executable called `gcc', or
`-gcc' when cross-compiling, or `-gcc-' to
run a version other than the one that was installed last. Sometimes
this is inconvenient, so GCC provides options that will switch to
*************** them if you can just run that directly.
*** 6067,6076 ****
File: gcc.info, Node: Submodel Options, Next: Code Gen Options, Prev: Target Options, Up: Invoking GCC
! Hardware Models and Configurations
! ==================================
! Earlier we discussed the standard option `-b' which chooses among
different installed compilers for completely different target machines,
such as VAX vs. 68000 vs. 80386.
--- 6078,6087 ----
File: gcc.info, Node: Submodel Options, Next: Code Gen Options, Prev: Target Options, Up: Invoking GCC
! 3.17 Hardware Models and Configurations
! =======================================
! Earlier we discussed the standard option `-b' which chooses among
different installed compilers for completely different target machines,
such as VAX vs. 68000 vs. 80386.
*************** that macro, which enables you to change
*** 6128,6137 ****
File: gcc.info, Node: M680x0 Options, Next: M68hc1x Options, Up: Submodel Options
! M680x0 Options
! --------------
! These are the `-m' options defined for the 68000 series. The default
values for these options depends on which style of 68000 was selected
when the compiler was configured; the defaults for the most common
choices are given below.
--- 6139,6148 ----
File: gcc.info, Node: M680x0 Options, Next: M68hc1x Options, Up: Submodel Options
! 3.17.1 M680x0 Options
! ---------------------
! These are the `-m' options defined for the 68000 series. The default
values for these options depends on which style of 68000 was selected
when the compiler was configured; the defaults for the most common
choices are given below.
*************** choices are given below.
*** 6300,6312 ****
that number to the current library but is no more space or time
efficient than omitting this option.
File: gcc.info, Node: M68hc1x Options, Next: VAX Options, Prev: M680x0 Options, Up: Submodel Options
! M68hc1x Options
! ---------------
! These are the `-m' options defined for the 68hc11 and 68hc12
microcontrollers. The default values for these options depends on
which style of microcontroller was selected when the compiler was
configured; the defaults for the most common choices are given below.
--- 6311,6324 ----
that number to the current library but is no more space or time
efficient than omitting this option.
+
File: gcc.info, Node: M68hc1x Options, Next: VAX Options, Prev: M680x0 Options, Up: Submodel Options
! 3.17.2 M68hc1x Options
! ----------------------
! These are the `-m' options defined for the 68hc11 and 68hc12
microcontrollers. The default values for these options depends on
which style of microcontroller was selected when the compiler was
configured; the defaults for the most common choices are given below.
*************** configured; the defaults for the most co
*** 6348,6360 ****
register may or may not result in better code depending on the
program. The default is 4 for 68HC11 and 2 for 68HC12.
File: gcc.info, Node: VAX Options, Next: SPARC Options, Prev: M68hc1x Options, Up: Submodel Options
! VAX Options
! -----------
! These `-m' options are defined for the VAX:
`-munix'
Do not output certain jump instructions (`aobleq' and so on) that
--- 6360,6373 ----
register may or may not result in better code depending on the
program. The default is 4 for 68HC11 and 2 for 68HC12.
+
File: gcc.info, Node: VAX Options, Next: SPARC Options, Prev: M68hc1x Options, Up: Submodel Options
! 3.17.3 VAX Options
! ------------------
! These `-m' options are defined for the VAX:
`-munix'
Do not output certain jump instructions (`aobleq' and so on) that
*************** VAX Options
*** 6371,6380 ****
File: gcc.info, Node: SPARC Options, Next: ARM Options, Prev: VAX Options, Up: Submodel Options
! SPARC Options
! -------------
! These `-m' options are supported on the SPARC:
`-mno-app-regs'
`-mapp-regs'
--- 6384,6393 ----
File: gcc.info, Node: SPARC Options, Next: ARM Options, Prev: VAX Options, Up: Submodel Options
! 3.17.4 SPARC Options
! --------------------
! These `-m' options are supported on the SPARC:
`-mno-app-regs'
`-mapp-regs'
*************** processors in 64-bit environments:
*** 6639,6648 ****
File: gcc.info, Node: ARM Options, Next: MN10300 Options, Prev: SPARC Options, Up: Submodel Options
! ARM Options
! -----------
! These `-m' options are defined for Advanced RISC Machines (ARM)
architectures:
`-mapcs-frame'
--- 6652,6661 ----
File: gcc.info, Node: ARM Options, Next: MN10300 Options, Prev: SPARC Options, Up: Submodel Options
! 3.17.5 ARM Options
! ------------------
! These `-m' options are defined for Advanced RISC Machines (ARM)
architectures:
`-mapcs-frame'
*************** architectures:
*** 6908,6920 ****
compiled for interworking or not. There is a small overhead in
the cost of executing a function pointer if this option is enabled.
File: gcc.info, Node: MN10300 Options, Next: M32R/D Options, Prev: ARM Options, Up: Submodel Options
! MN10300 Options
! ---------------
! These `-m' options are defined for Matsushita MN10300 architectures:
`-mmult-bug'
Generate code to avoid bugs in the multiply instructions for the
--- 6921,6934 ----
compiled for interworking or not. There is a small overhead in
the cost of executing a function pointer if this option is enabled.
+
File: gcc.info, Node: MN10300 Options, Next: M32R/D Options, Prev: ARM Options, Up: Submodel Options
! 3.17.6 MN10300 Options
! ----------------------
! These `-m' options are defined for Matsushita MN10300 architectures:
`-mmult-bug'
Generate code to avoid bugs in the multiply instructions for the
*************** MN10300 Options
*** 6945,6954 ****
File: gcc.info, Node: M32R/D Options, Next: RS/6000 and PowerPC Options, Prev: MN10300 Options, Up: Submodel Options
! M32R/D Options
! --------------
! These `-m' options are defined for Renesas M32R/D architectures:
`-m32r2'
Generate code for the M32R/2.
--- 6959,6968 ----
File: gcc.info, Node: M32R/D Options, Next: RS/6000 and PowerPC Options, Prev: MN10300 Options, Up: Submodel Options
! 3.17.7 M32R/D Options
! ---------------------
! These `-m' options are defined for Renesas M32R/D architectures:
`-m32r2'
Generate code for the M32R/2.
*************** M32R/D Options
*** 7043,7055 ****
`-mno-flush-func'
Indicates that there is no OS function for flushing the cache.
File: gcc.info, Node: RS/6000 and PowerPC Options, Next: Darwin Options, Prev: M32R/D Options, Up: Submodel Options
! IBM RS/6000 and PowerPC Options
! -------------------------------
! These `-m' options are defined for the IBM RS/6000 and PowerPC:
`-mpower'
`-mno-power'
`-mpower2'
--- 7057,7070 ----
`-mno-flush-func'
Indicates that there is no OS function for flushing the cache.
+
File: gcc.info, Node: RS/6000 and PowerPC Options, Next: Darwin Options, Prev: M32R/D Options, Up: Submodel Options
! 3.17.8 IBM RS/6000 and PowerPC Options
! --------------------------------------
! These `-m' options are defined for the IBM RS/6000 and PowerPC:
`-mpower'
`-mno-power'
`-mpower2'
*************** IBM RS/6000 and PowerPC Options
*** 7594,7606 ****
Adds support for multithreading with the "pthreads" library. This
option sets flags for both the preprocessor and linker.
File: gcc.info, Node: Darwin Options, Next: MIPS Options, Prev: RS/6000 and PowerPC Options, Up: Submodel Options
! Darwin Options
! --------------
! These options are defined for all architectures running the Darwin
operating system. They are useful for compatibility with other Mac OS
compilers.
--- 7609,7622 ----
Adds support for multithreading with the "pthreads" library. This
option sets flags for both the preprocessor and linker.
+
File: gcc.info, Node: Darwin Options, Next: MIPS Options, Prev: RS/6000 and PowerPC Options, Up: Submodel Options
! 3.17.9 Darwin Options
! ---------------------
! These options are defined for all architectures running the Darwin
operating system. They are useful for compatibility with other Mac OS
compilers.
*************** compilers.
*** 7687,7694 ****
File: gcc.info, Node: MIPS Options, Next: i386 and x86-64 Options, Prev: Darwin Options, Up: Submodel Options
! MIPS Options
! ------------
`-EB'
Generate big-endian code.
--- 7703,7710 ----
File: gcc.info, Node: MIPS Options, Next: i386 and x86-64 Options, Prev: Darwin Options, Up: Submodel Options
! 3.17.10 MIPS Options
! --------------------
`-EB'
Generate big-endian code.
*************** MIPS Options
*** 7987,7996 ****
File: gcc.info, Node: i386 and x86-64 Options, Next: HPPA Options, Prev: MIPS Options, Up: Submodel Options
! Intel 386 and AMD x86-64 Options
! --------------------------------
! These `-m' options are defined for the i386 and x86-64 family of
computers:
`-mtune=CPU-TYPE'
--- 8003,8012 ----
File: gcc.info, Node: i386 and x86-64 Options, Next: HPPA Options, Prev: MIPS Options, Up: Submodel Options
! 3.17.11 Intel 386 and AMD x86-64 Options
! ----------------------------------------
! These `-m' options are defined for the i386 and x86-64 family of
computers:
`-mtune=CPU-TYPE'
*************** x86-64 processors in 64-bit environments
*** 8415,8424 ****
File: gcc.info, Node: HPPA Options, Next: Intel 960 Options, Prev: i386 and x86-64 Options, Up: Submodel Options
! HPPA Options
! ------------
! These `-m' options are defined for the HPPA family of computers:
`-march=ARCHITECTURE-TYPE'
Generate code for the specified architecture. The choices for
--- 8431,8440 ----
File: gcc.info, Node: HPPA Options, Next: Intel 960 Options, Prev: i386 and x86-64 Options, Up: Submodel Options
! 3.17.12 HPPA Options
! --------------------
! These `-m' options are defined for the HPPA family of computers:
`-march=ARCHITECTURE-TYPE'
Generate code for the specified architecture. The choices for
*************** HPPA Options
*** 8529,8535 ****
changes what parameters are passed to that ld. The ld that is
called is determined by the `--with-ld' configure option, GCC's
program search path, and finally by the user's `PATH'. The linker
! used by GCC can be printed using `which `gcc -print-prog-name=ld`'.
`-mhp-ld'
Use HP ld specific options. This passes `-b' to ld when building
--- 8545,8553 ----
changes what parameters are passed to that ld. The ld that is
called is determined by the `--with-ld' configure option, GCC's
program search path, and finally by the user's `PATH'. The linker
! used by GCC can be printed using `which `gcc
! -print-prog-name=ld`'. This option is only available on the 64
! bit HP-UX GCC, i.e. configured with `hppa*64*-*-hpux*'.
`-mhp-ld'
Use HP ld specific options. This passes `-b' to ld when building
*************** HPPA Options
*** 8540,8546 ****
passed to that ld. The ld that is called is determined by the
`--with-ld' configure option, GCC's program search path, and
finally by the user's `PATH'. The linker used by GCC can be
! printed using `which `gcc -print-prog-name=ld`'.
`-mlong-calls'
Generate code that uses long call sequences. This ensures that a
--- 8558,8566 ----
passed to that ld. The ld that is called is determined by the
`--with-ld' configure option, GCC's program search path, and
finally by the user's `PATH'. The linker used by GCC can be
! printed using `which `gcc -print-prog-name=ld`'. This option is
! only available on the 64 bit HP-UX GCC, i.e. configured with
! `hppa*64*-*-hpux*'.
`-mlong-calls'
Generate code that uses long call sequences. This ensures that a
*************** HPPA Options
*** 8593,8602 ****
File: gcc.info, Node: Intel 960 Options, Next: DEC Alpha Options, Prev: HPPA Options, Up: Submodel Options
! Intel 960 Options
! -----------------
! These `-m' options are defined for the Intel 960 implementations:
`-mCPU-TYPE'
Assume the defaults for the machine type CPU-TYPE for some of the
--- 8613,8622 ----
File: gcc.info, Node: Intel 960 Options, Next: DEC Alpha Options, Prev: HPPA Options, Up: Submodel Options
! 3.17.13 Intel 960 Options
! -------------------------
! These `-m' options are defined for the Intel 960 implementations:
`-mCPU-TYPE'
Assume the defaults for the machine type CPU-TYPE for some of the
*************** Intel 960 Options
*** 8667,8679 ****
useful for people using soft-float targets. Otherwise, we should
recommend against use of it.
File: gcc.info, Node: DEC Alpha Options, Next: DEC Alpha/VMS Options, Prev: Intel 960 Options, Up: Submodel Options
! DEC Alpha Options
! -----------------
! These `-m' options are defined for the DEC Alpha implementations:
`-mno-soft-float'
`-msoft-float'
--- 8687,8700 ----
useful for people using soft-float targets. Otherwise, we should
recommend against use of it.
+
File: gcc.info, Node: DEC Alpha Options, Next: DEC Alpha/VMS Options, Prev: Intel 960 Options, Up: Submodel Options
! 3.17.14 DEC Alpha Options
! -------------------------
! These `-m' options are defined for the DEC Alpha implementations:
`-mno-soft-float'
`-msoft-float'
*************** DEC Alpha Options
*** 8952,8964 ****
(also called Dcache, Scache, and Bcache), as well as to main
memory. Note that L3 is only valid for EV5.
File: gcc.info, Node: DEC Alpha/VMS Options, Next: H8/300 Options, Prev: DEC Alpha Options, Up: Submodel Options
! DEC Alpha/VMS Options
! ---------------------
! These `-m' options are defined for the DEC Alpha/VMS implementations:
`-mvms-return-codes'
Return VMS condition codes from main. The default is to return
--- 8973,8986 ----
(also called Dcache, Scache, and Bcache), as well as to main
memory. Note that L3 is only valid for EV5.
+
File: gcc.info, Node: DEC Alpha/VMS Options, Next: H8/300 Options, Prev: DEC Alpha Options, Up: Submodel Options
! 3.17.15 DEC Alpha/VMS Options
! -----------------------------
! These `-m' options are defined for the DEC Alpha/VMS implementations:
`-mvms-return-codes'
Return VMS condition codes from main. The default is to return
*************** DEC Alpha/VMS Options
*** 8967,8976 ****
File: gcc.info, Node: H8/300 Options, Next: SH Options, Prev: DEC Alpha/VMS Options, Up: Submodel Options
! H8/300 Options
! --------------
! These `-m' options are defined for the H8/300 implementations:
`-mrelax'
Shorten some address references at link time, when possible; uses
--- 8989,8998 ----
File: gcc.info, Node: H8/300 Options, Next: SH Options, Prev: DEC Alpha/VMS Options, Up: Submodel Options
! 3.17.16 H8/300 Options
! ----------------------
! These `-m' options are defined for the H8/300 implementations:
`-mrelax'
Shorten some address references at link time, when possible; uses
*************** H8/300 Options
*** 9004,9013 ****
File: gcc.info, Node: SH Options, Next: System V Options, Prev: H8/300 Options, Up: Submodel Options
! SH Options
! ----------
! These `-m' options are defined for the SH implementations:
`-m1'
Generate code for the SH1.
--- 9026,9035 ----
File: gcc.info, Node: SH Options, Next: System V Options, Prev: H8/300 Options, Up: Submodel Options
! 3.17.17 SH Options
! ------------------
! These `-m' options are defined for the SH implementations:
`-m1'
Generate code for the SH1.
*************** SH Options
*** 9095,9104 ****
File: gcc.info, Node: System V Options, Next: TMS320C3x/C4x Options, Prev: SH Options, Up: Submodel Options
! Options for System V
! --------------------
! These additional options are available on System V Release 4 for
compatibility with other compilers on those systems:
`-G'
--- 9117,9126 ----
File: gcc.info, Node: System V Options, Next: TMS320C3x/C4x Options, Prev: SH Options, Up: Submodel Options
! 3.17.18 Options for System V
! ----------------------------
! These additional options are available on System V Release 4 for
compatibility with other compilers on those systems:
`-G'
*************** compatibility with other compilers on th
*** 9124,9133 ****
File: gcc.info, Node: TMS320C3x/C4x Options, Next: V850 Options, Prev: System V Options, Up: Submodel Options
! TMS320C3x/C4x Options
! ---------------------
! These `-m' options are defined for TMS320C3x/C4x implementations:
`-mcpu=CPU_TYPE'
Set the instruction set, register set, and instruction scheduling
--- 9146,9155 ----
File: gcc.info, Node: TMS320C3x/C4x Options, Next: V850 Options, Prev: System V Options, Up: Submodel Options
! 3.17.19 TMS320C3x/C4x Options
! -----------------------------
! These `-m' options are defined for TMS320C3x/C4x implementations:
`-mcpu=CPU_TYPE'
Set the instruction set, register set, and instruction scheduling
*************** TMS320C3x/C4x Options
*** 9246,9258 ****
These instructions have tight register constraints which can
pessimize the code generation of large functions.
File: gcc.info, Node: V850 Options, Next: ARC Options, Prev: TMS320C3x/C4x Options, Up: Submodel Options
! V850 Options
! ------------
! These `-m' options are defined for V850 implementations:
`-mlong-calls'
`-mno-long-calls'
--- 9268,9281 ----
These instructions have tight register constraints which can
pessimize the code generation of large functions.
+
File: gcc.info, Node: V850 Options, Next: ARC Options, Prev: TMS320C3x/C4x Options, Up: Submodel Options
! 3.17.20 V850 Options
! --------------------
! These `-m' options are defined for V850 implementations:
`-mlong-calls'
`-mno-long-calls'
*************** V850 Options
*** 9331,9343 ****
default is `-mno-disable-callt' which allows the CALLT instruction
to be used.
File: gcc.info, Node: ARC Options, Next: NS32K Options, Prev: V850 Options, Up: Submodel Options
! ARC Options
! -----------
! These options are defined for ARC implementations:
`-EL'
Compile code for little endian mode. This is the default.
--- 9354,9367 ----
default is `-mno-disable-callt' which allows the CALLT instruction
to be used.
+
File: gcc.info, Node: ARC Options, Next: NS32K Options, Prev: V850 Options, Up: Submodel Options
! 3.17.21 ARC Options
! -------------------
! These options are defined for ARC implementations:
`-EL'
Compile code for little endian mode. This is the default.
*************** ARC Options
*** 9366,9378 ****
This can be overridden with the `section' attribute. *Note
Variable Attributes::.
File: gcc.info, Node: NS32K Options, Next: AVR Options, Prev: ARC Options, Up: Submodel Options
! NS32K Options
! -------------
! These are the `-m' options defined for the 32000 series. The default
values for these options depends on which style of 32000 was selected
when the compiler was configured; the defaults for the most common
choices are given below.
--- 9390,9403 ----
This can be overridden with the `section' attribute. *Note
Variable Attributes::.
+
File: gcc.info, Node: NS32K Options, Next: AVR Options, Prev: ARC Options, Up: Submodel Options
! 3.17.22 NS32K Options
! ---------------------
! These are the `-m' options defined for the 32000 series. The default
values for these options depends on which style of 32000 was selected
when the compiler was configured; the defaults for the most common
choices are given below.
*************** choices are given below.
*** 9487,9499 ****
Assume code will be loaded in the first 512MB of virtual address
space. This is the default for all platforms.
File: gcc.info, Node: AVR Options, Next: MCore Options, Prev: NS32K Options, Up: Submodel Options
! AVR Options
! -----------
! These options are defined for AVR implementations:
`-mmcu=MCU'
Specify ATMEL AVR instruction set or MCU type.
--- 9512,9525 ----
Assume code will be loaded in the first 512MB of virtual address
space. This is the default for all platforms.
+
File: gcc.info, Node: AVR Options, Next: MCore Options, Prev: NS32K Options, Up: Submodel Options
! 3.17.23 AVR Options
! -------------------
! These options are defined for AVR implementations:
`-mmcu=MCU'
Specify ATMEL AVR instruction set or MCU type.
*************** AVR Options
*** 9542,9551 ****
File: gcc.info, Node: MCore Options, Next: IA-64 Options, Prev: AVR Options, Up: Submodel Options
! MCore Options
! -------------
! These are the `-m' options defined for the Motorola M*Core processors.
`-mhardlit'
`-mno-hardlit'
--- 9568,9577 ----
File: gcc.info, Node: MCore Options, Next: IA-64 Options, Prev: AVR Options, Up: Submodel Options
! 3.17.24 MCore Options
! ---------------------
! These are the `-m' options defined for the Motorola M*Core processors.
`-mhardlit'
`-mno-hardlit'
*************** MCore Options
*** 9587,9596 ****
File: gcc.info, Node: IA-64 Options, Next: D30V Options, Prev: MCore Options, Up: Submodel Options
! IA-64 Options
! -------------
! These are the `-m' options defined for the Intel IA-64 architecture.
`-mbig-endian'
Generate code for a big endian target. This is the default for
--- 9613,9622 ----
File: gcc.info, Node: IA-64 Options, Next: D30V Options, Prev: MCore Options, Up: Submodel Options
! 3.17.25 IA-64 Options
! ---------------------
! These are the `-m' options defined for the Intel IA-64 architecture.
`-mbig-endian'
Generate code for a big endian target. This is the default for
*************** IA-64 Options
*** 9687,9693 ****
Specify bit size of immediate TLS offsets. Valid values are 14,
22, and 64.
! `-mtune-arch=CPU-TYPE'
Tune the instruction scheduling for a particular CPU, Valid values
are itanium, itanium1, merced, itanium2, and mckinley.
--- 9713,9719 ----
Specify bit size of immediate TLS offsets. Valid values are 14,
22, and 64.
! `-mtune=CPU-TYPE'
Tune the instruction scheduling for a particular CPU, Valid values
are itanium, itanium1, merced, itanium2, and mckinley.
*************** IA-64 Options
*** 9706,9718 ****
environment sets int to 32 bits and long and pointer to 64 bits.
These are HP-UX specific flags.
File: gcc.info, Node: D30V Options, Next: S/390 and zSeries Options, Prev: IA-64 Options, Up: Submodel Options
! D30V Options
! ------------
! These `-m' options are defined for D30V implementations:
`-mextmem'
Link the `.text', `.data', `.bss', `.strings', `.rodata',
--- 9732,9745 ----
environment sets int to 32 bits and long and pointer to 64 bits.
These are HP-UX specific flags.
+
File: gcc.info, Node: D30V Options, Next: S/390 and zSeries Options, Prev: IA-64 Options, Up: Submodel Options
! 3.17.26 D30V Options
! --------------------
! These `-m' options are defined for D30V implementations:
`-mextmem'
Link the `.text', `.data', `.bss', `.strings', `.rodata',
*************** D30V Options
*** 9746,9755 ****
File: gcc.info, Node: S/390 and zSeries Options, Next: CRIS Options, Prev: D30V Options, Up: Submodel Options
! S/390 and zSeries Options
! -------------------------
! These are the `-m' options defined for the S/390 and zSeries
architecture.
`-mhard-float'
--- 9773,9782 ----
File: gcc.info, Node: S/390 and zSeries Options, Next: CRIS Options, Prev: D30V Options, Up: Submodel Options
! 3.17.27 S/390 and zSeries Options
! ---------------------------------
! These are the `-m' options defined for the S/390 and zSeries
architecture.
`-mhard-float'
*************** architecture.
*** 9827,9836 ****
File: gcc.info, Node: CRIS Options, Next: MMIX Options, Prev: S/390 and zSeries Options, Up: Submodel Options
! CRIS Options
! ------------
! These options are defined specifically for the CRIS ports.
`-march=ARCHITECTURE-TYPE'
`-mcpu=ARCHITECTURE-TYPE'
--- 9854,9863 ----
File: gcc.info, Node: CRIS Options, Next: MMIX Options, Prev: S/390 and zSeries Options, Up: Submodel Options
! 3.17.28 CRIS Options
! --------------------
! These options are defined specifically for the CRIS ports.
`-march=ARCHITECTURE-TYPE'
`-mcpu=ARCHITECTURE-TYPE'
*************** CRIS Options
*** 9944,9953 ****
File: gcc.info, Node: MMIX Options, Next: PDP-11 Options, Prev: CRIS Options, Up: Submodel Options
! MMIX Options
! ------------
! These options are defined for the MMIX:
`-mlibfuncs'
`-mno-libfuncs'
--- 9971,9980 ----
File: gcc.info, Node: MMIX Options, Next: PDP-11 Options, Prev: CRIS Options, Up: Submodel Options
! 3.17.29 MMIX Options
! --------------------
! These options are defined for the MMIX:
`-mlibfuncs'
`-mno-libfuncs'
*************** MMIX Options
*** 10013,10022 ****
File: gcc.info, Node: PDP-11 Options, Next: Xstormy16 Options, Prev: MMIX Options, Up: Submodel Options
! PDP-11 Options
! --------------
! These options are defined for the PDP-11:
`-mfpu'
Use hardware FPP floating point. This is the default. (FIS
--- 10040,10049 ----
File: gcc.info, Node: PDP-11 Options, Next: Xstormy16 Options, Prev: MMIX Options, Up: Submodel Options
! 3.17.30 PDP-11 Options
! ----------------------
! These options are defined for the PDP-11:
`-mfpu'
Use hardware FPP floating point. This is the default. (FIS
*************** PDP-11 Options
*** 10094,10103 ****
File: gcc.info, Node: Xstormy16 Options, Next: Xtensa Options, Prev: PDP-11 Options, Up: Submodel Options
! Xstormy16 Options
! -----------------
! These options are defined for Xstormy16:
`-msim'
Choose startup files and linker script suitable for the simulator.
--- 10121,10130 ----
File: gcc.info, Node: Xstormy16 Options, Next: Xtensa Options, Prev: PDP-11 Options, Up: Submodel Options
! 3.17.31 Xstormy16 Options
! -------------------------
! These options are defined for Xstormy16:
`-msim'
Choose startup files and linker script suitable for the simulator.
*************** Xstormy16 Options
*** 10105,10112 ****
File: gcc.info, Node: FRV Options, Prev: Xtensa Options, Up: Submodel Options
! FRV Options
! -----------
`-mgpr-32'
Only use the first 32 general purpose registers.
--- 10132,10139 ----
File: gcc.info, Node: FRV Options, Prev: Xtensa Options, Up: Submodel Options
! 3.17.32 FRV Options
! -------------------
`-mgpr-32'
Only use the first 32 general purpose registers.
*************** FRV Options
*** 10255,10267 ****
Select the processor type for which to generate code. Possible
values are `simple', `tomcat', `fr500', `fr400', `fr300', `frv'.
File: gcc.info, Node: Xtensa Options, Next: FRV Options, Prev: Xstormy16 Options, Up: Submodel Options
! Xtensa Options
! --------------
! These options are supported for Xtensa targets:
`-mconst16'
`-mno-const16'
--- 10282,10295 ----
Select the processor type for which to generate code. Possible
values are `simple', `tomcat', `fr500', `fr400', `fr300', `frv'.
+
File: gcc.info, Node: Xtensa Options, Next: FRV Options, Prev: Xstormy16 Options, Up: Submodel Options
! 3.17.33 Xtensa Options
! ----------------------
! These options are supported for Xtensa targets:
`-mconst16'
`-mno-const16'
*************** Xtensa Options
*** 10333,10342 ****
File: gcc.info, Node: Code Gen Options, Next: Environment Variables, Prev: Submodel Options, Up: Invoking GCC
! Options for Code Generation Conventions
! =======================================
! These machine-independent options control the interface conventions
used in code generation.
Most of them have both positive and negative forms; the negative form
--- 10361,10370 ----
File: gcc.info, Node: Code Gen Options, Next: Environment Variables, Prev: Submodel Options, Up: Invoking GCC
! 3.18 Options for Code Generation Conventions
! ============================================
! These machine-independent options control the interface conventions
used in code generation.
Most of them have both positive and negative forms; the negative form
*************** the other form by either removing `no-'
*** 10680,10691 ****
File: gcc.info, Node: Environment Variables, Next: Precompiled Headers, Prev: Code Gen Options, Up: Invoking GCC
! Environment Variables Affecting GCC
! ===================================
! This section describes several environment variables that affect how
! GCC operates. Some of them work by specifying directories or prefixes
! to use when searching for various kinds of files. Some are used to
specify other aspects of the compilation environment.
Note that you can also specify places to search using options such as
--- 10708,10719 ----
File: gcc.info, Node: Environment Variables, Next: Precompiled Headers, Prev: Code Gen Options, Up: Invoking GCC
! 3.19 Environment Variables Affecting GCC
! ========================================
! This section describes several environment variables that affect how GCC
! operates. Some of them work by specifying directories or prefixes to
! use when searching for various kinds of files. Some are used to
specify other aspects of the compilation environment.
Note that you can also specify places to search using options such as
*************** preprocessor.
*** 10852,10861 ****
File: gcc.info, Node: Precompiled Headers, Next: Running Protoize, Prev: Environment Variables, Up: Invoking GCC
! Using Precompiled Headers
! =========================
! Often large projects have many header files that are included in every
source file. The time the compiler takes to process these header files
over and over again can account for nearly all of the time required to
build the project. To make builds faster, GCC allows users to
--- 10880,10889 ----
File: gcc.info, Node: Precompiled Headers, Next: Running Protoize, Prev: Environment Variables, Up: Invoking GCC
! 3.20 Using Precompiled Headers
! ==============================
! Often large projects have many header files that are included in every
source file. The time the compiler takes to process these header files
over and over again can account for nearly all of the time required to
build the project. To make builds faster, GCC allows users to
*************** report, see *Note Bugs::.
*** 10955,10964 ****
File: gcc.info, Node: Running Protoize, Prev: Precompiled Headers, Up: Invoking GCC
! Running Protoize
! ================
! The program `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 `unprotoize' does the reverse: it
removes argument types from any prototypes that are found.
--- 10983,10992 ----
File: gcc.info, Node: Running Protoize, Prev: Precompiled Headers, Up: Invoking GCC
! 3.21 Running Protoize
! =====================
! The program `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 `unprotoize' does the reverse: it
removes argument types from any prototypes that are found.
*************** otherwise they won't get converted.
*** 11104,11116 ****
File: gcc.info, Node: C Implementation, Next: C Extensions, Prev: Invoking GCC, Up: Top
! C Implementation-defined behavior
! *********************************
! A conforming implementation of ISO C is required to document its
! choice of behavior in each of the areas that are designated
! "implementation defined." The following lists all such areas, along
! with the section number from the ISO/IEC 9899:1999 standard.
* Menu:
--- 11132,11144 ----
File: gcc.info, Node: C Implementation, Next: C Extensions, Prev: Invoking GCC, Up: Top
! 4 C Implementation-defined behavior
! ***********************************
! A conforming implementation of ISO C is required to document its choice
! of behavior in each of the areas that are designated "implementation
! defined." The following lists all such areas, along with the section
! number from the ISO/IEC 9899:1999 standard.
* Menu:
*************** with the section number from the ISO/IEC
*** 11132,11139 ****
File: gcc.info, Node: Translation implementation, Next: Environment implementation, Up: C Implementation
! Translation
! ===========
* `How a diagnostic is identified (3.10, 5.1.1.3).'
--- 11160,11167 ----
File: gcc.info, Node: Translation implementation, Next: Environment implementation, Up: C Implementation
! 4.1 Translation
! ===============
* `How a diagnostic is identified (3.10, 5.1.1.3).'
*************** Translation
*** 11146,11162 ****
File: gcc.info, Node: Environment implementation, Next: Identifiers implementation, Prev: Translation implementation, Up: C Implementation
! Environment
! ===========
! The behavior of these points are dependent on the implementation of
! the C library, and are not defined by GCC itself.
File: gcc.info, Node: Identifiers implementation, Next: Characters implementation, Prev: Environment implementation, Up: C Implementation
! Identifiers
! ===========
* `Which additional multibyte characters may appear in identifiers
and their correspondence to universal character names (6.4.2).'
--- 11174,11190 ----
File: gcc.info, Node: Environment implementation, Next: Identifiers implementation, Prev: Translation implementation, Up: C Implementation
! 4.2 Environment
! ===============
! The behavior of these points are dependent on the implementation of the
! C library, and are not defined by GCC itself.
File: gcc.info, Node: Identifiers implementation, Next: Characters implementation, Prev: Environment implementation, Up: C Implementation
! 4.3 Identifiers
! ===============
* `Which additional multibyte characters may appear in identifiers
and their correspondence to universal character names (6.4.2).'
*************** Identifiers
*** 11172,11179 ****
File: gcc.info, Node: Characters implementation, Next: Integers implementation, Prev: Identifiers implementation, Up: C Implementation
! Characters
! ==========
* `The number of bits in a byte (3.6).'
--- 11200,11207 ----
File: gcc.info, Node: Characters implementation, Next: Integers implementation, Prev: Identifiers implementation, Up: C Implementation
! 4.4 Characters
! ==============
* `The number of bits in a byte (3.6).'
*************** Characters
*** 11218,11225 ****
File: gcc.info, Node: Integers implementation, Next: Floating point implementation, Prev: Characters implementation, Up: C Implementation
! Integers
! ========
* `Any extended integer types that exist in the implementation
(6.2.5).'
--- 11246,11253 ----
File: gcc.info, Node: Integers implementation, Next: Floating point implementation, Prev: Characters implementation, Up: C Implementation
! 4.5 Integers
! ============
* `Any extended integer types that exist in the implementation
(6.2.5).'
*************** Integers
*** 11244,11251 ****
File: gcc.info, Node: Floating point implementation, Next: Arrays and pointers implementation, Prev: Integers implementation, Up: C Implementation
! Floating point
! ==============
* `The accuracy of the floating-point operations and of the library
functions in `' and `' that return
--- 11272,11279 ----
File: gcc.info, Node: Floating point implementation, Next: Arrays and pointers implementation, Prev: Integers implementation, Up: C Implementation
! 4.6 Floating point
! ==================
* `The accuracy of the floating-point operations and of the library
functions in `' and `' that return
*************** Floating point
*** 11292,11299 ****
File: gcc.info, Node: Arrays and pointers implementation, Next: Hints implementation, Prev: Floating point implementation, Up: C Implementation
! Arrays and pointers
! ===================
* `The result of converting a pointer to an integer or vice versa
(6.3.2.3).'
--- 11320,11327 ----
File: gcc.info, Node: Arrays and pointers implementation, Next: Hints implementation, Prev: Floating point implementation, Up: C Implementation
! 4.7 Arrays and pointers
! =======================
* `The result of converting a pointer to an integer or vice versa
(6.3.2.3).'
*************** Arrays and pointers
*** 11327,11334 ****
File: gcc.info, Node: Hints implementation, Next: Structures unions enumerations and bit-fields implementation, Prev: Arrays and pointers implementation, Up: C Implementation
! Hints
! =====
* `The extent to which suggestions made by using the `register'
storage-class specifier are effective (6.7.1).'
--- 11355,11362 ----
File: gcc.info, Node: Hints implementation, Next: Structures unions enumerations and bit-fields implementation, Prev: Arrays and pointers implementation, Up: C Implementation
! 4.8 Hints
! =========
* `The extent to which suggestions made by using the `register'
storage-class specifier are effective (6.7.1).'
*************** Hints
*** 11362,11369 ****
File: gcc.info, Node: Structures unions enumerations and bit-fields implementation, Next: Qualifiers implementation, Prev: Hints implementation, Up: C Implementation
! Structures, unions, enumerations, and bit-fields
! ================================================
* `Whether a "plain" int bit-field is treated as a `signed int'
bit-field or as an `unsigned int' bit-field (6.7.2, 6.7.2.1).'
--- 11390,11397 ----
File: gcc.info, Node: Structures unions enumerations and bit-fields implementation, Next: Qualifiers implementation, Prev: Hints implementation, Up: C Implementation
! 4.9 Structures, unions, enumerations, and bit-fields
! ====================================================
* `Whether a "plain" int bit-field is treated as a `signed int'
bit-field or as an `unsigned int' bit-field (6.7.2, 6.7.2.1).'
*************** Structures, unions, enumerations, and bi
*** 11384,11391 ****
File: gcc.info, Node: Qualifiers implementation, Next: Preprocessing directives implementation, Prev: Structures unions enumerations and bit-fields implementation, Up: C Implementation
! Qualifiers
! ==========
* `What constitutes an access to an object that has
volatile-qualified type (6.7.3).'
--- 11412,11419 ----
File: gcc.info, Node: Qualifiers implementation, Next: Preprocessing directives implementation, Prev: Structures unions enumerations and bit-fields implementation, Up: C Implementation
! 4.10 Qualifiers
! ===============
* `What constitutes an access to an object that has
volatile-qualified type (6.7.3).'
*************** Qualifiers
*** 11394,11401 ****
File: gcc.info, Node: Preprocessing directives implementation, Next: Library functions implementation, Prev: Qualifiers implementation, Up: C Implementation
! Preprocessing directives
! ========================
* `How sequences in both forms of header names are mapped to headers
or external source file names (6.4.7).'
--- 11422,11429 ----
File: gcc.info, Node: Preprocessing directives implementation, Next: Library functions implementation, Prev: Qualifiers implementation, Up: C Implementation
! 4.11 Preprocessing directives
! =============================
* `How sequences in both forms of header names are mapped to headers
or external source file names (6.4.7).'
*************** Preprocessing directives
*** 11440,11456 ****
File: gcc.info, Node: Library functions implementation, Next: Architecture implementation, Prev: Preprocessing directives implementation, Up: C Implementation
! Library functions
! =================
! The behavior of these points are dependent on the implementation of
! the C library, and are not defined by GCC itself.
File: gcc.info, Node: Architecture implementation, Next: Locale-specific behavior implementation, Prev: Library functions implementation, Up: C Implementation
! Architecture
! ============
* `The values or expressions assigned to the macros specified in the
headers `', `', and `' (5.2.4.2,
--- 11468,11484 ----
File: gcc.info, Node: Library functions implementation, Next: Architecture implementation, Prev: Preprocessing directives implementation, Up: C Implementation
! 4.12 Library functions
! ======================
! The behavior of these points are dependent on the implementation of the
! C library, and are not defined by GCC itself.
File: gcc.info, Node: Architecture implementation, Next: Locale-specific behavior implementation, Prev: Library functions implementation, Up: C Implementation
! 4.13 Architecture
! =================
* `The values or expressions assigned to the macros specified in the
headers `', `', and `' (5.2.4.2,
*************** Architecture
*** 11465,11483 ****
File: gcc.info, Node: Locale-specific behavior implementation, Prev: Architecture implementation, Up: C Implementation
! Locale-specific behavior
! ========================
! The behavior of these points are dependent on the implementation of
! the C library, and are not defined by GCC itself.
File: gcc.info, Node: C Extensions, Next: C++ Extensions, Prev: C Implementation, Up: Top
! Extensions to the C Language Family
! ***********************************
! GNU C provides several language features not found in ISO standard C.
(The `-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
--- 11493,11511 ----
File: gcc.info, Node: Locale-specific behavior implementation, Prev: Architecture implementation, Up: C Implementation
! 4.14 Locale-specific behavior
! =============================
! The behavior of these points are dependent on the implementation of the
! C library, and are not defined by GCC itself.
File: gcc.info, Node: C Extensions, Next: C++ Extensions, Prev: C Implementation, Up: Top
! 5 Extensions to the C Language Family
! *************************************
! GNU C provides several language features not found in ISO standard C.
(The `-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
*************** extensions, accepted by GCC in C89 mode
*** 11548,11559 ****
File: gcc.info, Node: Statement Exprs, Next: Local Labels, Up: C Extensions
! Statements and Declarations in Expressions
! ==========================================
! A compound statement enclosed in parentheses may appear as an
! expression 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
by braces; in this construct, parentheses go around the braces. For
--- 11576,11587 ----
File: gcc.info, Node: Statement Exprs, Next: Local Labels, Up: C Extensions
! 5.1 Statements and Declarations in Expressions
! ==============================================
! A compound statement enclosed in parentheses may appear as an expression
! 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
by braces; in this construct, parentheses go around the braces. For
*************** function pointer decay, and is returned
*** 11600,11606 ****
expression. For instance, if `A' is a class, then
A a;
!
({a;}).Foo ()
will construct a temporary `A' object to hold the result of the
--- 11628,11634 ----
expression. For instance, if `A' is a class, then
A a;
!
({a;}).Foo ()
will construct a temporary `A' object to hold the result of the
*************** destroyed during the statement expressio
*** 11617,11623 ****
#define macro(a) ({__typeof__(a) b = (a); b + 3; })
template T function(T a) { T b = a; return b + 3; }
!
void foo ()
{
macro (X ());
--- 11645,11651 ----
#define macro(a) ({__typeof__(a) b = (a); b + 3; })
template T function(T a) { T b = a; return b + 3; }
!
void foo ()
{
macro (X ());
*************** bug.)
*** 11638,11647 ****
File: gcc.info, Node: Local Labels, Next: Labels as Values, Prev: Statement Exprs, Up: C Extensions
! Locally Declared Labels
! =======================
! GCC allows you to declare "local labels" in any nested block scope. A
local label is just like an ordinary label, but you can only reference
it (with a `goto' statement, or by taking its address) within the block
in which it was declared.
--- 11666,11675 ----
File: gcc.info, Node: Local Labels, Next: Labels as Values, Prev: Statement Exprs, Up: C Extensions
! 5.2 Locally Declared Labels
! ===========================
! GCC allows you to declare "local labels" in any nested block scope. A
local label is just like an ordinary label, but you can only reference
it (with a `goto' statement, or by taking its address) within the block
in which it was declared.
*************** details.
*** 11708,11717 ****
File: gcc.info, Node: Labels as Values, Next: Nested Functions, Prev: Local Labels, Up: C Extensions
! Labels as Values
! ================
! You can get the address of a label defined in the current function (or
a containing function) with the unary operator `&&'. The value has
type `void *'. This value is a constant and can be used wherever a
constant of that type is valid. For example:
--- 11736,11745 ----
File: gcc.info, Node: Labels as Values, Next: Nested Functions, Prev: Local Labels, Up: C Extensions
! 5.3 Labels as Values
! ====================
! You can get the address of a label defined in the current function (or
a containing function) with the unary operator `&&'. The value has
type `void *'. This value is a constant and can be used wherever a
constant of that type is valid. For example:
*************** store label addresses in label variables
*** 11772,11781 ****
File: gcc.info, Node: Nested Functions, Next: Constructing Calls, Prev: Labels as Values, Up: C Extensions
! Nested Functions
! ================
! A "nested function" is a function defined inside another function.
(Nested functions are not supported for GNU C++.) The nested function's
name is local to the block where it is defined. For example, here we
define a nested function named `square', and call it twice:
--- 11800,11809 ----
File: gcc.info, Node: Nested Functions, Next: Constructing Calls, Prev: Labels as Values, Up: C Extensions
! 5.4 Nested Functions
! ====================
! A "nested function" is a function defined inside another function.
(Nested functions are not supported for GNU C++.) The nested function's
name is local to the block where it is defined. For example, here we
define a nested function named `square', and call it twice:
*************** define a nested function named `square',
*** 11783,11789 ****
foo (double a, double b)
{
double square (double z) { return z * z; }
!
return square (a) + square (b);
}
--- 11811,11817 ----
foo (double a, double b)
{
double square (double z) { return z * z; }
!
return square (a) + square (b);
}
*************** function:
*** 11814,11820 ****
{
void store (int index, int value)
{ array[index] = value; }
!
intermediate (store, size);
}
--- 11842,11848 ----
{
void store (int index, int value)
{ array[index] = value; }
!
intermediate (store, size);
}
*************** and any intermediate functions as well.
*** 11858,11864 ****
/* ... */ access (array, i) /* ... */
/* ... */
return 0;
!
/* Control comes here from `access'
if it detects an error. */
failure:
--- 11886,11892 ----
/* ... */ access (array, i) /* ... */
/* ... */
return 0;
!
/* Control comes here from `access'
if it detects an error. */
failure:
*************** function declarations).
*** 11887,11896 ****
File: gcc.info, Node: Constructing Calls, Next: Typeof, Prev: Nested Functions, Up: C Extensions
! Constructing Function Calls
! ===========================
! Using the built-in functions described below, you can record the
arguments a function received, and call another function with the same
arguments, without knowing the number or types of the arguments.
--- 11915,11924 ----
File: gcc.info, Node: Constructing Calls, Next: Typeof, Prev: Nested Functions, Up: C Extensions
! 5.5 Constructing Function Calls
! ===============================
! Using the built-in functions described below, you can record the
arguments a function received, and call another function with the same
arguments, without knowing the number or types of the arguments.
*************** sophisticated features or other extensio
*** 11903,11909 ****
therefore, not recommended to use them outside very simple functions
acting as mere forwarders for their arguments.
! - Built-in Function: void * __builtin_apply_args ()
This built-in function returns a pointer to data describing how to
perform a call with the same arguments as were passed to the
current function.
--- 11931,11937 ----
therefore, not recommended to use them outside very simple functions
acting as mere forwarders for their arguments.
! -- Built-in Function: void * __builtin_apply_args ()
This built-in function returns a pointer to data describing how to
perform a call with the same arguments as were passed to the
current function.
*************** acting as mere forwarders for their argu
*** 11913,11919 ****
a function into a block of memory allocated on the stack. Then it
returns the address of that block.
! - Built-in Function: void * __builtin_apply (void (*FUNCTION)(), void
*ARGUMENTS, size_t SIZE)
This built-in function invokes FUNCTION with a copy of the
parameters described by ARGUMENTS and SIZE.
--- 11941,11947 ----
a function into a block of memory allocated on the stack. Then it
returns the address of that block.
! -- Built-in Function: void * __builtin_apply (void (*FUNCTION)(), void
*ARGUMENTS, size_t SIZE)
This built-in function invokes FUNCTION with a copy of the
parameters described by ARGUMENTS and SIZE.
*************** acting as mere forwarders for their argu
*** 11931,11937 ****
that should be pushed on the stack and copied from the incoming
argument area.
! - Built-in Function: void __builtin_return (void *RESULT)
This built-in function returns the value described by RESULT from
the containing function. You should specify, for RESULT, a value
returned by `__builtin_apply'.
--- 11959,11965 ----
that should be pushed on the stack and copied from the incoming
argument area.
! -- Built-in Function: void __builtin_return (void *RESULT)
This built-in function returns the value described by RESULT from
the containing function. You should specify, for RESULT, a value
returned by `__builtin_apply'.
*************** acting as mere forwarders for their argu
*** 11939,11948 ****
File: gcc.info, Node: Typeof, Next: Lvalues, Prev: Constructing Calls, Up: C Extensions
! Referring to a Type with `typeof'
! =================================
! Another way to refer to the type of an expression is with `typeof'.
The syntax of using of this keyword looks like `sizeof', but the
construct acts semantically like a type name defined with `typedef'.
--- 11967,11976 ----
File: gcc.info, Node: Typeof, Next: Lvalues, Prev: Constructing Calls, Up: C Extensions
! 5.6 Referring to a Type with `typeof'
! =====================================
! Another way to refer to the type of an expression is with `typeof'.
The syntax of using of this keyword looks like `sizeof', but the
construct acts semantically like a type name defined with `typedef'.
*************** This will work with all versions of GCC.
*** 12033,12042 ****
File: gcc.info, Node: Lvalues, Next: Conditionals, Prev: Typeof, Up: C Extensions
! Generalized Lvalues
! ===================
! Compound expressions, conditional expressions and casts are allowed as
lvalues provided their operands are lvalues. This means that you can
take their addresses or store values into them. All these extensions
are deprecated.
--- 12061,12070 ----
File: gcc.info, Node: Lvalues, Next: Conditionals, Prev: Typeof, Up: C Extensions
! 5.7 Generalized Lvalues
! =======================
! Compound expressions, conditional expressions and casts are allowed as
lvalues provided their operands are lvalues. This means that you can
take their addresses or store values into them. All these extensions
are deprecated.
*************** can simply write `(int *)&f'.
*** 12102,12113 ****
File: gcc.info, Node: Conditionals, Next: Long Long, Prev: Lvalues, Up: C Extensions
! Conditionals with Omitted Operands
! ==================================
! The middle operand in a conditional expression may be omitted. Then
! if the first operand is nonzero, its value is the value of the
! conditional expression.
Therefore, the expression
--- 12130,12141 ----
File: gcc.info, Node: Conditionals, Next: Long Long, Prev: Lvalues, Up: C Extensions
! 5.8 Conditionals with Omitted Operands
! ======================================
! The middle operand in a conditional expression may be omitted. Then if
! the first operand is nonzero, its value is the value of the conditional
! expression.
Therefore, the expression
*************** without the undesirable effects of recom
*** 12129,12144 ****
File: gcc.info, Node: Long Long, Next: Complex, Prev: Conditionals, Up: C Extensions
! Double-Word Integers
! ====================
! ISO C99 supports data types for integers that are at least 64 bits
! wide, and as an extension GCC supports them in C89 mode and in C++.
! Simply write `long long int' for a signed integer, or `unsigned long
! long int' for an unsigned integer. To make an integer constant of type
! `long long int', add the suffix `LL' to the integer. To make an
! integer constant of type `unsigned long long int', add the suffix `ULL'
! to the integer.
You can use these types in arithmetic like any other integer types.
Addition, subtraction, and bitwise boolean operations on these types
--- 12157,12172 ----
File: gcc.info, Node: Long Long, Next: Complex, Prev: Conditionals, Up: C Extensions
! 5.9 Double-Word Integers
! ========================
! ISO C99 supports data types for integers that are at least 64 bits wide,
! and as an extension GCC supports them in C89 mode and in C++. Simply
! write `long long int' for a signed integer, or `unsigned long long int'
! for an unsigned integer. To make an integer constant of type `long
! long int', add the suffix `LL' to the integer. To make an integer
! constant of type `unsigned long long int', add the suffix `ULL' to the
! integer.
You can use these types in arithmetic like any other integer types.
Addition, subtraction, and bitwise boolean operations on these types
*************** to avoid such problems is to use prototy
*** 12159,12168 ****
File: gcc.info, Node: Complex, Next: Hex Floats, Prev: Long Long, Up: C Extensions
! Complex Numbers
! ===============
! ISO C99 supports complex floating data types, and as an extension GCC
supports them in C89 mode and in C++, and supports complex integer data
types which are not part of ISO C99. You can declare complex types
using the keyword `_Complex'. As an extension, the older GNU keyword
--- 12187,12196 ----
File: gcc.info, Node: Complex, Next: Hex Floats, Prev: Long Long, Up: C Extensions
! 5.10 Complex Numbers
! ====================
! ISO C99 supports complex floating data types, and as an extension GCC
supports them in C89 mode and in C++, and supports complex integer data
types which are not part of ISO C99. You can declare complex types
using the keyword `_Complex'. As an extension, the older GNU keyword
*************** examine and set these two fictitious var
*** 12209,12218 ****
File: gcc.info, Node: Hex Floats, Next: Zero Length, Prev: Complex, Up: C Extensions
! Hex Floats
! ==========
! ISO C99 supports floating-point numbers written not only in the usual
decimal notation, such as `1.55e1', but also numbers such as `0x1.fp3'
written in hexadecimal format. As a GNU extension, GCC supports this
in C89 mode (except in some cases when strictly conforming) and in C++.
--- 12237,12246 ----
File: gcc.info, Node: Hex Floats, Next: Zero Length, Prev: Complex, Up: C Extensions
! 5.11 Hex Floats
! ===============
! ISO C99 supports floating-point numbers written not only in the usual
decimal notation, such as `1.55e1', but also numbers such as `0x1.fp3'
written in hexadecimal format. As a GNU extension, GCC supports this
in C89 mode (except in some cases when strictly conforming) and in C++.
*************** floating-point constants of type `float'
*** 12231,12240 ****
File: gcc.info, Node: Zero Length, Next: Variable Length, Prev: Hex Floats, Up: C Extensions
! Arrays of Length Zero
! =====================
! 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:
--- 12259,12268 ----
File: gcc.info, Node: Zero Length, Next: Variable Length, Prev: Hex Floats, Up: C Extensions
! 5.12 Arrays of Length Zero
! ==========================
! 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:
*************** variable-length object:
*** 12242,12248 ****
int length;
char contents[0];
};
!
struct line *thisline = (struct line *)
malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
--- 12270,12276 ----
int length;
char contents[0];
};
!
struct line *thisline = (struct line *)
malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
*************** I.e. in the following, `f1' is construct
*** 12285,12291 ****
struct f1 {
int x; int y[];
} f1 = { 1, { 2, 3, 4 } };
!
struct f2 {
struct f1 f1; int data[3];
} f2 = { { 1 }, { 2, 3, 4 } };
--- 12313,12319 ----
struct f1 {
int x; int y[];
} f1 = { 1, { 2, 3, 4 } };
!
struct f2 {
struct f1 f1; int data[3];
} f2 = { { 1 }, { 2, 3, 4 } };
*************** object. For example:
*** 12305,12311 ****
struct foo { int x; int y[]; };
struct bar { struct foo z; };
!
struct foo a = { 1, { 2, 3, 4 } }; // Valid.
struct bar b = { { 1, { 2, 3, 4 } } }; // Invalid.
struct bar c = { { 1, { } } }; // Valid.
--- 12333,12339 ----
struct foo { int x; int y[]; };
struct bar { struct foo z; };
!
struct foo a = { 1, { 2, 3, 4 } }; // Valid.
struct bar b = { { 1, { 2, 3, 4 } } }; // Invalid.
struct bar c = { { 1, { } } }; // Valid.
*************** object. For example:
*** 12314,12323 ****
File: gcc.info, Node: Empty Structures, Next: Variadic Macros, Prev: Variable Length, Up: C Extensions
! Structures With No Members
! ==========================
! GCC permits a C structure to have no members:
struct empty {
};
--- 12342,12351 ----
File: gcc.info, Node: Empty Structures, Next: Variadic Macros, Prev: Variable Length, Up: C Extensions
! 5.13 Structures With No Members
! ===============================
! GCC permits a C structure to have no members:
struct empty {
};
*************** member of type `char'.
*** 12329,12338 ****
File: gcc.info, Node: Variable Length, Next: Empty Structures, Prev: Zero Length, Up: C Extensions
! Arrays of Variable Length
! =========================
! Variable-length automatic arrays are allowed in ISO C99, and as an
extension GCC accepts them in C89 mode and in C++. (However, GCC's
implementation of variable-length arrays does not yet conform in detail
to the ISO C99 standard.) These arrays are declared like any other
--- 12357,12366 ----
File: gcc.info, Node: Variable Length, Next: Empty Structures, Prev: Zero Length, Up: C Extensions
! 5.14 Arrays of Variable Length
! ==============================
! Variable-length automatic arrays are allowed in ISO C99, and as an
extension GCC accepts them in C89 mode and in C++. (However, GCC's
implementation of variable-length arrays does not yet conform in detail
to the ISO C99 standard.) These arrays are declared like any other
*************** parameter forward declarations.
*** 12400,12409 ****
File: gcc.info, Node: Variadic Macros, Next: Escaped Newlines, Prev: Empty Structures, Up: C Extensions
! Macros with a Variable Number of Arguments.
! ===========================================
! In the ISO C standard of 1999, a macro can be declared to accept a
variable number of arguments much as a function can. The syntax for
defining the macro is similar to that of a function. Here is an
example:
--- 12428,12437 ----
File: gcc.info, Node: Variadic Macros, Next: Escaped Newlines, Prev: Empty Structures, Up: C Extensions
! 5.15 Macros with a Variable Number of Arguments.
! ================================================
! In the ISO C standard of 1999, a macro can be declared to accept a
variable number of arguments much as a function can. The syntax for
defining the macro is similar to that of a function. Here is an
example:
*************** these arguments are not macro expanded.
*** 12456,12465 ****
File: gcc.info, Node: Escaped Newlines, Next: Subscripting, Prev: Variadic Macros, Up: C Extensions
! Slightly Looser Rules for Escaped Newlines
! ==========================================
! Recently, the preprocessor has relaxed its treatment of escaped
newlines. Previously, the newline had to immediately follow a
backslash. The current implementation allows whitespace in the form of
spaces, horizontal and vertical tabs, and form feeds between the
--- 12484,12493 ----
File: gcc.info, Node: Escaped Newlines, Next: Subscripting, Prev: Variadic Macros, Up: C Extensions
! 5.16 Slightly Looser Rules for Escaped Newlines
! ===============================================
! Recently, the preprocessor has relaxed its treatment of escaped
newlines. Previously, the newline had to immediately follow a
backslash. The current implementation allows whitespace in the form of
spaces, horizontal and vertical tabs, and form feeds between the
*************** been replaced with spaces.
*** 12473,12482 ****
File: gcc.info, Node: Subscripting, Next: Pointer Arith, Prev: Escaped Newlines, Up: C Extensions
! Non-Lvalue Arrays May Have Subscripts
! =====================================
! In ISO C99, arrays that are not lvalues still decay to pointers, and
may be subscripted, although they may not be modified or used after the
next sequence point and the unary `&' operator may not be applied to
them. As an extension, GCC allows such arrays to be subscripted in C89
--- 12501,12510 ----
File: gcc.info, Node: Subscripting, Next: Pointer Arith, Prev: Escaped Newlines, Up: C Extensions
! 5.17 Non-Lvalue Arrays May Have Subscripts
! ==========================================
! In ISO C99, arrays that are not lvalues still decay to pointers, and
may be subscripted, although they may not be modified or used after the
next sequence point and the unary `&' operator may not be applied to
them. As an extension, GCC allows such arrays to be subscripted in C89
*************** mode, though otherwise they do not decay
*** 12484,12492 ****
For example, this is valid in GNU C though not valid in C89:
struct foo {int a[4];};
!
struct foo f();
!
bar (int index)
{
return f().a[index];
--- 12512,12520 ----
For example, this is valid in GNU C though not valid in C89:
struct foo {int a[4];};
!
struct foo f();
!
bar (int index)
{
return f().a[index];
*************** For example, this is valid in GNU C thou
*** 12495,12506 ****
File: gcc.info, Node: Pointer Arith, Next: Initializers, Prev: Subscripting, Up: C Extensions
! Arithmetic on `void'- and Function-Pointers
! ===========================================
! In GNU C, addition and subtraction operations are supported on
! pointers to `void' and on pointers to functions. This is done by
! treating the size of a `void' or of a function as 1.
A consequence of this is that `sizeof' is also allowed on `void' and
on function types, and returns 1.
--- 12523,12534 ----
File: gcc.info, Node: Pointer Arith, Next: Initializers, Prev: Subscripting, Up: C Extensions
! 5.18 Arithmetic on `void'- and Function-Pointers
! ================================================
! In GNU C, addition and subtraction operations are supported on pointers
! to `void' and on pointers to functions. This is done by treating the
! size of a `void' or of a function as 1.
A consequence of this is that `sizeof' is also allowed on `void' and
on function types, and returns 1.
*************** are used.
*** 12511,12520 ****
File: gcc.info, Node: Initializers, Next: Compound Literals, Prev: Pointer Arith, Up: C Extensions
! 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. Here is an example of an initializer with
run-time varying elements:
--- 12539,12548 ----
File: gcc.info, Node: Initializers, Next: Compound Literals, Prev: Pointer Arith, Up: C Extensions
! 5.19 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. Here is an example of an initializer with
run-time varying elements:
*************** run-time varying elements:
*** 12528,12537 ****
File: gcc.info, Node: Compound Literals, Next: Designated Inits, Prev: Initializers, Up: C Extensions
! Compound Literals
! =================
! ISO C99 supports compound literals. A compound literal looks like a
cast containing an initializer. Its value is an object of the type
specified in the cast, containing the elements specified in the
initializer; it is an lvalue. As an extension, GCC supports compound
--- 12556,12565 ----
File: gcc.info, Node: Compound Literals, Next: Designated Inits, Prev: Initializers, Up: C Extensions
! 5.20 Compound Literals
! ======================
! ISO C99 supports compound literals. A compound literal looks like a
cast containing an initializer. Its value is an object of the type
specified in the cast, containing the elements specified in the
initializer; it is an lvalue. As an extension, GCC supports compound
*************** The above lines are equivalent to the fo
*** 12586,12595 ****
File: gcc.info, Node: Designated Inits, Next: Cast to Union, Prev: Compound Literals, Up: C Extensions
! Designated Initializers
! =======================
! Standard C89 requires the elements of an initializer to appear in a
fixed order, the same as the order of the elements in the array or
structure being initialized.
--- 12614,12623 ----
File: gcc.info, Node: Designated Inits, Next: Cast to Union, Prev: Compound Literals, Up: C Extensions
! 5.21 Designated Initializers
! ============================
! Standard C89 requires the elements of an initializer to appear in a
fixed order, the same as the order of the elements in the array or
structure being initialized.
*************** a union, to specify which element of the
*** 12650,12656 ****
example,
union foo { int i; double d; };
!
union foo f = { .d = 4 };
will convert 4 to a `double' to store it in the union using the second
--- 12678,12684 ----
example,
union foo { int i; double d; };
!
union foo f = { .d = 4 };
will convert 4 to a `double' to store it in the union using the second
*************** Currently, GCC will discard them and iss
*** 12693,12702 ****
File: gcc.info, Node: Case Ranges, Next: Mixed Declarations, Prev: Cast to Union, Up: C Extensions
! Case Ranges
! ===========
! You can specify a range of consecutive values in a single `case' label,
like this:
case LOW ... HIGH:
--- 12721,12730 ----
File: gcc.info, Node: Case Ranges, Next: Mixed Declarations, Prev: Cast to Union, Up: C Extensions
! 5.22 Case Ranges
! ================
! You can specify a range of consecutive values in a single `case' label,
like this:
case LOW ... HIGH:
*************** rather than this:
*** 12721,12730 ****
File: gcc.info, Node: Cast to Union, Next: Case Ranges, Prev: Designated Inits, Up: C Extensions
! Cast to a Union Type
! ====================
! A cast to union type is similar to other casts, except that the type
specified is a union type. You can specify the type either with `union
TAG' or with a typedef name. A cast to union is actually a constructor
though, not a cast, and hence does not yield an lvalue like normal
--- 12749,12758 ----
File: gcc.info, Node: Cast to Union, Next: Case Ranges, Prev: Designated Inits, Up: C Extensions
! 5.23 Cast to a Union Type
! =========================
! A cast to union type is similar to other casts, except that the type
specified is a union type. You can specify the type either with `union
TAG' or with a typedef name. A cast to union is actually a constructor
though, not a cast, and hence does not yield an lvalue like normal
*************** union type is equivalent to storing in a
*** 12756,12765 ****
File: gcc.info, Node: Mixed Declarations, Next: Function Attributes, Prev: Case Ranges, Up: C Extensions
! Mixed Declarations and Code
! ===========================
! ISO C99 and ISO C++ allow declarations and code to be freely mixed
within compound statements. As an extension, GCC also allows this in
C89 mode. For example, you could do:
--- 12784,12793 ----
File: gcc.info, Node: Mixed Declarations, Next: Function Attributes, Prev: Case Ranges, Up: C Extensions
! 5.24 Mixed Declarations and Code
! ================================
! ISO C99 and ISO C++ allow declarations and code to be freely mixed
within compound statements. As an extension, GCC also allows this in
C89 mode. For example, you could do:
*************** the enclosing block.
*** 12774,12783 ****
File: gcc.info, Node: Function Attributes, Next: Attribute Syntax, Prev: Mixed Declarations, Up: C Extensions
! Declaring Attributes of Functions
! =================================
! In GNU C, you declare certain things about functions called in your
program which help the compiler optimize function calls and check your
code more carefully.
--- 12802,12811 ----
File: gcc.info, Node: Function Attributes, Next: Attribute Syntax, Prev: Mixed Declarations, Up: C Extensions
! 5.25 Declaring Attributes of Functions
! ======================================
! In GNU C, you declare certain things about functions called in your
program which help the compiler optimize function calls and check your
code more carefully.
*************** attributes.
*** 12808,12814 ****
`noreturn' to tell the compiler this fact. For example,
void fatal () __attribute__ ((noreturn));
!
void
fatal (/* ... */)
{
--- 12836,12842 ----
`noreturn' to tell the compiler this fact. For example,
void fatal () __attribute__ ((noreturn));
!
void
fatal (/* ... */)
{
*************** attributes.
*** 12838,12844 ****
older versions, is as follows:
typedef void voidfn ();
!
volatile voidfn fatal;
This approach does not work in GNU C++.
--- 12866,12872 ----
older versions, is as follows:
typedef void voidfn ();
!
volatile voidfn fatal;
This approach does not work in GNU C++.
*************** attributes.
*** 12872,12878 ****
multithreading environment).
The attribute `pure' is not implemented in GCC versions earlier
! than 2.96.
`const'
Many functions do not examine any values except their arguments,
--- 12900,12906 ----
multithreading environment).
The attribute `pure' is not implemented in GCC versions earlier
! than 2.96.
`const'
Many functions do not examine any values except their arguments,
*************** attributes.
*** 12892,12898 ****
versions, is as follows:
typedef int intfn ();
!
extern const intfn square;
This approach does not work in GNU C++ from 2.6.0 on, since the
--- 12920,12926 ----
versions, is as follows:
typedef int intfn ();
!
extern const intfn square;
This approach does not work in GNU C++ from 2.6.0 on, since the
*************** attributes.
*** 13422,13427 ****
--- 13450,13456 ----
table are to use a .def file with an `EXPORTS' section or, with
GNU ld, using the `--export-all' linker flag.
+
You can specify multiple attributes in a declaration by separating them
by commas within the double parentheses or by immediately following an
attribute declaration with another attribute declaration.
*************** Directives.
*** 13451,13460 ****
File: gcc.info, Node: Attribute Syntax, Next: Function Prototypes, Prev: Function Attributes, Up: C Extensions
! Attribute Syntax
! ================
! This section describes the syntax with which `__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
infelicities in the grammar for attributes, some forms described here
--- 13480,13489 ----
File: gcc.info, Node: Attribute Syntax, Next: Function Prototypes, Prev: Function Attributes, Up: C Extensions
! 5.26 Attribute Syntax
! =====================
! This section describes the syntax with which `__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
infelicities in the grammar for attributes, some forms described here
*************** to the function type.
*** 13657,13666 ****
File: gcc.info, Node: Function Prototypes, Next: C++ Comments, Prev: Attribute Syntax, Up: C Extensions
! Prototypes and Old-Style Function Definitions
! =============================================
! GNU C extends ISO C to allow a function prototype to override a later
old-style non-prototype definition. Consider the following example:
/* Use prototypes unless the compiler is old-fashioned. */
--- 13686,13695 ----
File: gcc.info, Node: Function Prototypes, Next: C++ Comments, Prev: Attribute Syntax, Up: C Extensions
! 5.27 Prototypes and Old-Style Function Definitions
! ==================================================
! GNU C extends ISO C to allow a function prototype to override a later
old-style non-prototype definition. Consider the following example:
/* Use prototypes unless the compiler is old-fashioned. */
*************** old-style non-prototype definition. Con
*** 13669,13678 ****
#else
#define P(x) ()
#endif
!
/* Prototype function declaration. */
int isroot P((uid_t));
!
/* Old-style function definition. */
int
isroot (x) /* ??? lossage here ??? */
--- 13698,13707 ----
#else
#define P(x) ()
#endif
!
/* Prototype function declaration. */
int isroot P((uid_t));
!
/* Old-style function definition. */
int
isroot (x) /* ??? lossage here ??? */
*************** promotion. Thus in GNU C the above exam
*** 13698,13704 ****
following:
int isroot (uid_t);
!
int
isroot (uid_t x)
{
--- 13727,13733 ----
following:
int isroot (uid_t);
!
int
isroot (uid_t x)
{
*************** extension is irrelevant.
*** 13711,13720 ****
File: gcc.info, Node: C++ Comments, Next: Dollar Signs, Prev: Function Prototypes, Up: C Extensions
! C++ Style Comments
! ==================
! In GNU C, you may use C++ style comments, which start with `//' and
continue until the end of the line. Many other C implementations allow
such comments, and they are included in the 1999 C standard. However,
C++ style comments are not recognized if you specify an `-std' option
--- 13740,13749 ----
File: gcc.info, Node: C++ Comments, Next: Dollar Signs, Prev: Function Prototypes, Up: C Extensions
! 5.28 C++ Style Comments
! =======================
! In GNU C, you may use C++ style comments, which start with `//' and
continue until the end of the line. Many other C implementations allow
such comments, and they are included in the 1999 C standard. However,
C++ style comments are not recognized if you specify an `-std' option
*************** specifying a version of ISO C before C99
*** 13724,13733 ****
File: gcc.info, Node: Dollar Signs, Next: Character Escapes, Prev: C++ Comments, Up: C Extensions
! Dollar Signs in Identifier Names
! ================================
! In GNU C, you may normally use dollar signs in identifier names. This
is because many traditional C implementations allow such identifiers.
However, dollar signs in identifiers are not supported on a few target
machines, typically because the target assembler does not allow them.
--- 13753,13762 ----
File: gcc.info, Node: Dollar Signs, Next: Character Escapes, Prev: C++ Comments, Up: C Extensions
! 5.29 Dollar Signs in Identifier Names
! =====================================
! In GNU C, you may normally use dollar signs in identifier names. This
is because many traditional C implementations allow such identifiers.
However, dollar signs in identifiers are not supported on a few target
machines, typically because the target assembler does not allow them.
*************** machines, typically because the target a
*** 13735,13753 ****
File: gcc.info, Node: Character Escapes, Next: Variable Attributes, Prev: Dollar Signs, Up: C Extensions
! The Character in Constants
! ================================
! You can use the sequence `\e' in a string or character constant to
stand for the ASCII character .
File: gcc.info, Node: Alignment, Next: Inline, Prev: Type Attributes, Up: C Extensions
! Inquiring on Alignment of Types or Variables
! ============================================
! The keyword `__alignof__' allows you to inquire about how an object is
aligned, or the minimum alignment usually required by a type. Its
syntax is just like `sizeof'.
--- 13764,13782 ----
File: gcc.info, Node: Character Escapes, Next: Variable Attributes, Prev: Dollar Signs, Up: C Extensions
! 5.30 The Character in Constants
! =====================================
! You can use the sequence `\e' in a string or character constant to
stand for the ASCII character .
File: gcc.info, Node: Alignment, Next: Inline, Prev: Type Attributes, Up: C Extensions
! 5.31 Inquiring on Alignment of Types or Variables
! =================================================
! The keyword `__alignof__' allows you to inquire about how an object is
aligned, or the minimum alignment usually required by a type. Its
syntax is just like `sizeof'.
*************** alignment is probably 2 or 4, the same a
*** 13775,13785 ****
File: gcc.info, Node: Variable Attributes, Next: Type Attributes, Prev: Character Escapes, Up: C Extensions
! Specifying Attributes of Variables
! ==================================
! The keyword `__attribute__' allows you to specify special attributes
! of variables or structure fields. This keyword is followed by an
attribute specification inside double parentheses. Some attributes are
currently defined generically for variables. Other attributes are
defined for variables on particular target systems. Other attributes
--- 13804,13814 ----
File: gcc.info, Node: Variable Attributes, Next: Type Attributes, Prev: Character Escapes, Up: C Extensions
! 5.32 Specifying Attributes of Variables
! =======================================
! The keyword `__attribute__' allows you to specify special attributes of
! variables or structure fields. This keyword is followed by an
attribute specification inside double parentheses. Some attributes are
currently defined generically for variables. Other attributes are
defined for variables on particular target systems. Other attributes
*************** attributes.
*** 13928,13942 ****
struct duart b __attribute__ ((section ("DUART_B"))) = { 0 };
char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
int init_data __attribute__ ((section ("INITDATA"))) = 0;
!
main()
{
/* Initialize stack pointer */
init_sp (stack + sizeof (stack));
!
/* Initialize initialized data */
memcpy (&init_data, &data, &edata - &data);
!
/* Turn on the serial ports */
init_duart (&a);
init_duart (&b);
--- 13957,13971 ----
struct duart b __attribute__ ((section ("DUART_B"))) = { 0 };
char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
int init_data __attribute__ ((section ("INITDATA"))) = 0;
!
main()
{
/* Initialize stack pointer */
init_sp (stack + sizeof (stack));
!
/* Initialize initialized data */
memcpy (&init_data, &data, &edata - &data);
!
/* Turn on the serial ports */
init_duart (&a);
init_duart (&b);
*************** attributes.
*** 13968,13974 ****
`shared' and marking the section shareable:
int foo __attribute__((section ("shared"), shared)) = 0;
!
int
main()
{
--- 13997,14003 ----
`shared' and marking the section shareable:
int foo __attribute__((section ("shared"), shared)) = 0;
!
int
main()
{
*************** attributes.
*** 14042,14051 ****
The `dllexport' attribute is described in *Note Function
Attributes::.
- M32R/D Variable Attributes
- --------------------------
! One attribute is currently defined for the M32R/D.
`model (MODEL-NAME)'
Use this attribute on the M32R/D to set the addressability of an
--- 14071,14081 ----
The `dllexport' attribute is described in *Note Function
Attributes::.
! 5.32.1 M32R/D Variable Attributes
! ---------------------------------
!
! One attribute is currently defined for the M32R/D.
`model (MODEL-NAME)'
Use this attribute on the M32R/D to set the addressability of an
*************** M32R/D Variable Attributes
*** 14059,14068 ****
address space (the compiler will generate `seth/add3' instructions
to load their addresses).
! i386 Variable Attributes
! ------------------------
! Two attributes are currently defined for i386 configurations:
`ms_struct' and `gcc_struct'
`ms_struct'
--- 14089,14098 ----
address space (the compiler will generate `seth/add3' instructions
to load their addresses).
! 5.32.2 i386 Variable Attributes
! -------------------------------
! Two attributes are currently defined for i386 configurations:
`ms_struct' and `gcc_struct'
`ms_struct'
*************** i386 Variable Attributes
*** 14080,14092 ****
File: gcc.info, Node: Type Attributes, Next: Alignment, Prev: Variable Attributes, Up: C Extensions
! Specifying Attributes of Types
! ==============================
! The keyword `__attribute__' allows you to specify special attributes
! of `struct' and `union' types when you define such types. This keyword
! is followed by an attribute specification inside double parentheses.
! Six attributes are currently defined for types: `aligned', `packed',
`transparent_union', `unused', `deprecated' and `may_alias'. Other
attributes are defined for functions (*note Function Attributes::) and
for variables (*note Variable Attributes::).
--- 14110,14122 ----
File: gcc.info, Node: Type Attributes, Next: Alignment, Prev: Variable Attributes, Up: C Extensions
! 5.33 Specifying Attributes of Types
! ===================================
! The keyword `__attribute__' allows you to specify special attributes of
! `struct' and `union' types when you define such types. This keyword is
! followed by an attribute specification inside double parentheses. Six
! attributes are currently defined for types: `aligned', `packed',
`transparent_union', `unused', `deprecated' and `may_alias'. Other
attributes are defined for functions (*note Function Attributes::) and
for variables (*note Variable Attributes::).
*************** attributes.
*** 14205,14211 ****
char c;
int i;
};
!
struct my_packed_struct __attribute__ ((__packed__))
{
char c;
--- 14235,14241 ----
char c;
int i;
};
!
struct my_packed_struct __attribute__ ((__packed__))
{
char c;
*************** attributes.
*** 14252,14258 ****
int *__ip;
union wait *__up;
} wait_status_ptr_t __attribute__ ((__transparent_union__));
!
pid_t wait (wait_status_ptr_t);
This interface allows either `int *' or `union wait *' arguments
--- 14282,14288 ----
int *__ip;
union wait *__up;
} wait_status_ptr_t __attribute__ ((__transparent_union__));
!
pid_t wait (wait_status_ptr_t);
This interface allows either `int *' or `union wait *' arguments
*************** attributes.
*** 14315,14332 ****
Example of use:
typedef short __attribute__((__may_alias__)) short_a;
!
int
main (void)
{
int a = 0x12345678;
short_a *b = (short_a *) &a;
!
b[1] = 0;
!
if (a == 0x12345678)
abort();
!
exit(0);
}
--- 14345,14362 ----
Example of use:
typedef short __attribute__((__may_alias__)) short_a;
!
int
main (void)
{
int a = 0x12345678;
short_a *b = (short_a *) &a;
!
b[1] = 0;
!
if (a == 0x12345678)
abort();
!
exit(0);
}
*************** attributes.
*** 14335,14342 ****
`-fstrict-aliasing', which is on by default at `-O2' or above in
recent GCC versions.
! i386 Type Attributes
! --------------------
Two attributes are currently defined for i386 configurations:
`ms_struct' and `gcc_struct'
--- 14365,14372 ----
`-fstrict-aliasing', which is on by default at `-O2' or above in
recent GCC versions.
! 5.33.1 i386 Type Attributes
! ---------------------------
Two attributes are currently defined for i386 configurations:
`ms_struct' and `gcc_struct'
*************** packed))'.
*** 14360,14369 ****
File: gcc.info, Node: Inline, Next: Extended Asm, Prev: Alignment, Up: C Extensions
! An Inline Function is As Fast As a Macro
! ========================================
! By declaring a function `inline', you can direct GCC to integrate that
function's code into the code for its callers. This makes execution
faster by eliminating the function-call overhead; in addition, if any
of the actual argument values are constant, their known values may
--- 14390,14399 ----
File: gcc.info, Node: Inline, Next: Extended Asm, Prev: Alignment, Up: C Extensions
! 5.34 An Inline Function is As Fast As a Macro
! =============================================
! By declaring a function `inline', you can direct GCC to integrate that
function's code into the code for its callers. This makes execution
faster by eliminating the function-call overhead; in addition, if any
of the actual argument values are constant, their known values may
*************** not affect the linkage of the function.
*** 14406,14412 ****
GCC automatically inlines member functions defined within the class
body of C++ programs even if they are not explicitly declared `inline'.
(You can override this with `-fno-default-inline'; *note Options
! Controlling C++ Dialect: C++ Dialect Options..)
When a function is both inline and `static', if all calls to the
function are integrated into the caller, and the function's address is
--- 14436,14442 ----
GCC automatically inlines member functions defined within the class
body of C++ programs even if they are not explicitly declared `inline'.
(You can override this with `-fno-default-inline'; *note Options
! Controlling C++ Dialect: C++ Dialect Options.)
When a function is both inline and `static', if all calls to the
function are integrated into the caller, and the function's address is
*************** specify the `always_inline' attribute fo
*** 14457,14466 ****
File: gcc.info, Node: Extended Asm, Next: Constraints, Prev: Inline, Up: C Extensions
! Assembler Instructions with C Expression Operands
! =================================================
! In an assembler instruction using `asm', you can specify the operands
of the instruction using C expressions. This means you need not guess
which registers or memory locations will contain the data you want to
use.
--- 14487,14496 ----
File: gcc.info, Node: Extended Asm, Next: Constraints, Prev: Inline, Up: C Extensions
! 5.35 Assembler Instructions with C Expression Operands
! ======================================================
! In an assembler instruction using `asm', you can specify the operands
of the instruction using C expressions. This means you need not guess
which registers or memory locations will contain the data you want to
use.
*************** previous instructions.
*** 14754,14766 ****
If you are writing a header file that should be includable in ISO C
programs, write `__asm__' instead of `asm'. *Note Alternate Keywords::.
! Size of an `asm'
! ----------------
! Some targets require that GCC track the size of each instruction used
! in order to generate correct code. Because the final length of an
! `asm' is only known by the assembler, GCC must make an estimate as to
! how big it will be. The estimate is formed by counting the number of
statements in the pattern of the `asm' and multiplying that by the
length of the longest instruction on that processor. Statements in the
`asm' are identified by newline characters and whatever statement
--- 14784,14796 ----
If you are writing a header file that should be includable in ISO C
programs, write `__asm__' instead of `asm'. *Note Alternate Keywords::.
! 5.35.1 Size of an `asm'
! -----------------------
! Some targets require that GCC track the size of each instruction used in
! order to generate correct code. Because the final length of an `asm'
! is only known by the assembler, GCC must make an estimate as to how big
! it will be. The estimate is formed by counting the number of
statements in the pattern of the `asm' and multiplying that by the
length of the longest instruction on that processor. Statements in the
`asm' are identified by newline characters and whatever statement
*************** space in the object file than would be n
*** 14775,14786 ****
If this happens then the assembler will produce a diagnostic saying that
a label is unreachable.
! i386 floating point asm operands
! --------------------------------
! There are several rules on the usage of stack-like regs in
! asm_operands insns. These rules apply only to the operands that are
! stack-like regs:
1. Given a set of input regs that die in an asm_operands, it is
necessary to know which are implicitly popped by the asm, and
--- 14805,14815 ----
If this happens then the assembler will produce a diagnostic saying that
a label is unreachable.
! 5.35.2 i386 floating point asm operands
! ---------------------------------------
! There are several rules on the usage of stack-like regs in asm_operands
! insns. These rules apply only to the operands that are stack-like regs:
1. Given a set of input regs that die in an asm_operands, it is
necessary to know which are implicitly popped by the asm, and
*************** clobber for reg-stack.c to know that `fy
*** 14855,14864 ****
File: gcc.info, Node: Constraints, Next: Asm Labels, Prev: Extended Asm, Up: C Extensions
! Constraints for `asm' Operands
! ==============================
! Here are specific details on what constraint letters you can use with
`asm' operands. Constraints can say whether an operand may be in a
register, and which kinds of register; whether the operand can be a
memory reference, and which kinds of address; whether the operand may
--- 14884,14893 ----
File: gcc.info, Node: Constraints, Next: Asm Labels, Prev: Extended Asm, Up: C Extensions
! 5.36 Constraints for `asm' Operands
! ===================================
! Here are specific details on what constraint letters you can use with
`asm' operands. Constraints can say whether an operand may be in a
register, and which kinds of register; whether the operand can be a
memory reference, and which kinds of address; whether the operand may
*************** Constraints can also require two operand
*** 14875,14884 ****
File: gcc.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
! Simple Constraints
! ------------------
! The simplest kind of constraint is a string full of letters, each of
which describes one kind of operand that is permitted. Here are the
letters that are allowed:
--- 14904,14913 ----
File: gcc.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
! 5.36.1 Simple Constraints
! -------------------------
! The simplest kind of constraint is a string full of letters, each of
which describes one kind of operand that is permitted. Here are the
letters that are allowed:
*************** OTHER-LETTERS
*** 15029,15045 ****
types. `d', `a' and `f' are defined on the 68000/68020 to stand
for data, address and floating point registers.
File: gcc.info, Node: Multi-Alternative, Next: Modifiers, Prev: Simple Constraints, Up: Constraints
! Multiple Alternative Constraints
! --------------------------------
! Sometimes a single instruction has multiple alternative sets of
! possible operands. For example, on the 68000, a logical-or instruction
! can combine register or an immediate value into memory, or it can
! combine any kind of operand into a register; but it cannot combine one
! memory location into another.
These constraints are represented as multiple alternatives. An
alternative can be described by a series of letters for each operand.
--- 15058,15075 ----
types. `d', `a' and `f' are defined on the 68000/68020 to stand
for data, address and floating point registers.
+
File: gcc.info, Node: Multi-Alternative, Next: Modifiers, Prev: Simple Constraints, Up: Constraints
! 5.36.2 Multiple Alternative Constraints
! ---------------------------------------
! Sometimes a single instruction has multiple alternative sets of possible
! operands. For example, on the 68000, a logical-or instruction can
! combine register or an immediate value into memory, or it can combine
! any kind of operand into a register; but it cannot combine one memory
! location into another.
These constraints are represented as multiple alternatives. An
alternative can be described by a series of letters for each operand.
*************** and `!' characters:
*** 15070,15079 ****
File: gcc.info, Node: Modifiers, Next: Machine Constraints, Prev: Multi-Alternative, Up: Constraints
! Constraint Modifier Characters
! ------------------------------
! Here are constraint modifier characters.
`='
Means that this operand is write-only for this instruction: the
--- 15100,15109 ----
File: gcc.info, Node: Modifiers, Next: Machine Constraints, Prev: Multi-Alternative, Up: Constraints
! 5.36.3 Constraint Modifier Characters
! -------------------------------------
! Here are constraint modifier characters.
`='
Means that this operand is write-only for this instruction: the
*************** Constraint Modifier Characters
*** 15131,15145 ****
register preferences. `*' has no effect on the meaning of the
constraint as a constraint, and no effect on reloading.
File: gcc.info, Node: Machine Constraints, Prev: Modifiers, Up: Constraints
! Constraints for Particular Machines
! -----------------------------------
! Whenever possible, you should use the general-purpose constraint
! letters in `asm' arguments, since they will convey meaning more readily
! to people reading your code. Failing that, use the constraint letters
that usually have very similar meanings across architectures. The most
commonly used constraints are `m' and `r' (for memory and
general-purpose registers respectively; *note Simple Constraints::), and
--- 15161,15176 ----
register preferences. `*' has no effect on the meaning of the
constraint as a constraint, and no effect on reloading.
+
File: gcc.info, Node: Machine Constraints, Prev: Modifiers, Up: Constraints
! 5.36.4 Constraints for Particular Machines
! ------------------------------------------
! Whenever possible, you should use the general-purpose constraint letters
! in `asm' arguments, since they will convey meaning more readily to
! people reading your code. Failing that, use the constraint letters
that usually have very similar meanings across architectures. The most
commonly used constraints are `m' and `r' (for memory and
general-purpose registers respectively; *note Simple Constraints::), and
*************** _FRV--`frv.h'_
*** 15631,15636 ****
--- 15662,15668 ----
12-bit signed integer constant that is greater than
zero--i.e. in the range of 1 to 2047.
+
_IP2K--`ip2k.h'_
`a'
*************** _Motorola 68HC11 & 68HC12 families--`m68
*** 15848,15853 ****
--- 15880,15886 ----
`P'
Constants in the range -8 to 2
+
_SPARC--`sparc.h'_
`f'
*************** _SPARC--`sparc.h'_
*** 15927,15932 ****
--- 15960,15966 ----
`W'
Memory address for `e' constraint registers.
+
_TMS320C3x/C4x--`c4x.h'_
`a'
*************** _TMS320C3x/C4x--`c4x.h'_
*** 16009,16014 ****
--- 16043,16049 ----
`U'
Symbolic address
+
_S/390 and zSeries--`s390.h'_
`a'
*************** _S/390 and zSeries--`s390.h'_
*** 16053,16061 ****
mode of the containing operand
`0,F:'
! value of the other parts (F - all bits set) The
! constraint matches if the specified part of a constant has a
! value different from it's other parts.
`Q'
Memory reference without index register and with short
--- 16088,16096 ----
mode of the containing operand
`0,F:'
! value of the other parts (F - all bits set)
! The constraint matches if the specified part of a constant
! has a value different from it's other parts.
`Q'
Memory reference without index register and with short
*************** _S/390 and zSeries--`s390.h'_
*** 16080,16085 ****
--- 16115,16121 ----
`Y'
Shift count operand.
+
_Xstormy16--`stormy16.h'_
`a'
*************** _Xstormy16--`stormy16.h'_
*** 16149,16154 ****
--- 16185,16191 ----
`Z'
The constant 0.
+
_Xtensa--`xtensa.h'_
`a'
*************** _Xtensa--`xtensa.h'_
*** 16172,16184 ****
`L'
Unsigned constant valid for BccUI instructions
File: gcc.info, Node: Asm Labels, Next: Explicit Reg Vars, Prev: Constraints, Up: C Extensions
! Controlling Names Used in Assembler Code
! ========================================
! You can specify the name to be used in the assembler code for a C
function or variable by writing the `asm' (or `__asm__') keyword after
the declarator as follows:
--- 16209,16223 ----
`L'
Unsigned constant valid for BccUI instructions
+
+
File: gcc.info, Node: Asm Labels, Next: Explicit Reg Vars, Prev: Constraints, Up: C Extensions
! 5.37 Controlling Names Used in Assembler Code
! =============================================
! You can specify the name to be used in the assembler code for a C
function or variable by writing the `asm' (or `__asm__') keyword after
the declarator as follows:
*************** can get the same effect by writing a dec
*** 16203,16209 ****
before its definition and putting `asm' there, like this:
extern func () asm ("FUNC");
!
func (x, y)
int x, y;
/* ... */
--- 16242,16248 ----
before its definition and putting `asm' there, like this:
extern func () asm ("FUNC");
!
func (x, y)
int x, y;
/* ... */
*************** registers. Perhaps that will be added.
*** 16217,16226 ****
File: gcc.info, Node: Explicit Reg Vars, Next: Alternate Keywords, Prev: Asm Labels, Up: C Extensions
! Variables in Specified Registers
! ================================
! GNU C allows you to put a few global variables into specified hardware
registers. You can also specify the register in which an ordinary
register variable should be allocated.
--- 16256,16265 ----
File: gcc.info, Node: Explicit Reg Vars, Next: Alternate Keywords, Prev: Asm Labels, Up: C Extensions
! 5.38 Variables in Specified Registers
! =====================================
! GNU C allows you to put a few global variables into specified hardware
registers. You can also specify the register in which an ordinary
register variable should be allocated.
*************** register variable should be allocated.
*** 16252,16261 ****
File: gcc.info, Node: Global Reg Vars, Next: Local Reg Vars, Up: Explicit Reg Vars
! Defining Global Register Variables
! ----------------------------------
! You can define a global register variable in GNU C like this:
register int *foo asm ("a5");
--- 16291,16300 ----
File: gcc.info, Node: Global Reg Vars, Next: Local Reg Vars, Up: Explicit Reg Vars
! 5.38.1 Defining Global Register Variables
! -----------------------------------------
! You can define a global register variable in GNU C like this:
register int *foo asm ("a5");
*************** course, it will not do to use more than
*** 16342,16352 ****
File: gcc.info, Node: Local Reg Vars, Prev: Global Reg Vars, Up: Explicit Reg Vars
! Specifying Registers for Local Variables
! ----------------------------------------
! You can define a local register variable with a specified register
! like this:
register int *foo asm ("a5");
--- 16381,16391 ----
File: gcc.info, Node: Local Reg Vars, Prev: Global Reg Vars, Up: Explicit Reg Vars
! 5.38.2 Specifying Registers for Local Variables
! -----------------------------------------------
! You can define a local register variable with a specified register like
! this:
register int *foo asm ("a5");
*************** register variables may be deleted or mov
*** 16383,16392 ****
File: gcc.info, Node: Alternate Keywords, Next: Incomplete Enums, Prev: Explicit Reg Vars, Up: C Extensions
! Alternate Keywords
! ==================
! `-ansi' and the various `-std' options disable certain keywords. This
causes trouble when you want to use GNU C extensions, or a
general-purpose header file that should be usable by all programs,
including ISO C programs. The keywords `asm', `typeof' and `inline'
--- 16422,16431 ----
File: gcc.info, Node: Alternate Keywords, Next: Incomplete Enums, Prev: Explicit Reg Vars, Up: C Extensions
! 5.39 Alternate Keywords
! =======================
! `-ansi' and the various `-std' options disable certain keywords. This
causes trouble when you want to use GNU C extensions, or a
general-purpose header file that should be usable by all programs,
including ISO C programs. The keywords `asm', `typeof' and `inline'
*************** aside from this.
*** 16417,16426 ****
File: gcc.info, Node: Incomplete Enums, Next: Function Names, Prev: Alternate Keywords, Up: C Extensions
! Incomplete `enum' Types
! =======================
! You can define an `enum' tag without specifying its possible values.
This results in an incomplete type, much like what you get if you write
`struct foo' without describing the elements. A later declaration
which does specify the possible values completes the type.
--- 16456,16465 ----
File: gcc.info, Node: Incomplete Enums, Next: Function Names, Prev: Alternate Keywords, Up: C Extensions
! 5.40 Incomplete `enum' Types
! ============================
! You can define an `enum' tag without specifying its possible values.
This results in an incomplete type, much like what you get if you write
`struct foo' without describing the elements. A later declaration
which does specify the possible values completes the type.
*************** incomplete. However, you can work with
*** 16436,16445 ****
File: gcc.info, Node: Function Names, Next: Return Address, Prev: Incomplete Enums, Up: C Extensions
! Function Names as Strings
! =========================
! GCC provides three magic variables which hold the name of the current
function, as a string. The first of these is `__func__', which is part
of the C99 standard:
--- 16475,16484 ----
File: gcc.info, Node: Function Names, Next: Return Address, Prev: Incomplete Enums, Up: C Extensions
! 5.41 Function Names as Strings
! ==============================
! GCC provides three magic variables which hold the name of the current
function, as a string. The first of these is `__func__', which is part
of the C99 standard:
*************** of the C99 standard:
*** 16447,16453 ****
as if, immediately following the opening brace of each function
definition, the declaration
static const char __func__[] = "function-name";
!
appeared, where function-name is the name of the lexically-enclosing
function. This name is the unadorned name of the function.
--- 16486,16492 ----
as if, immediately following the opening brace of each function
definition, the declaration
static const char __func__[] = "function-name";
!
appeared, where function-name is the name of the lexically-enclosing
function. This name is the unadorned name of the function.
*************** the function as well as its bare name.
*** 16471,16477 ****
extern "C" {
extern int printf (char *, ...);
}
!
class a {
public:
void sub (int i)
--- 16510,16516 ----
extern "C" {
extern int printf (char *, ...);
}
!
class a {
public:
void sub (int i)
*************** the function as well as its bare name.
*** 16480,16486 ****
printf ("__PRETTY_FUNCTION__ = %s\n", __PRETTY_FUNCTION__);
}
};
!
int
main (void)
{
--- 16519,16525 ----
printf ("__PRETTY_FUNCTION__ = %s\n", __PRETTY_FUNCTION__);
}
};
!
int
main (void)
{
*************** arrays, and they could be concatenated w
*** 16504,16516 ****
File: gcc.info, Node: Return Address, Next: Vector Extensions, Prev: Function Names, Up: C Extensions
! Getting the Return or Frame Address of a Function
! =================================================
! These functions may be used to get information about the callers of a
function.
! - Built-in Function: void * __builtin_return_address (unsigned int
LEVEL)
This function returns the return address of the current function,
or of one of its callers. The LEVEL argument is number of frames
--- 16543,16555 ----
File: gcc.info, Node: Return Address, Next: Vector Extensions, Prev: Function Names, Up: C Extensions
! 5.42 Getting the Return or Frame Address of a Function
! ======================================================
! These functions may be used to get information about the callers of a
function.
! -- Built-in Function: void * __builtin_return_address (unsigned int
LEVEL)
This function returns the return address of the current function,
or of one of its callers. The LEVEL argument is number of frames
*************** function.
*** 16533,16539 ****
This function should only be used with a nonzero argument for
debugging purposes.
! - Built-in Function: void * __builtin_frame_address (unsigned int
LEVEL)
This function is similar to `__builtin_return_address', but it
returns the address of the function frame rather than the return
--- 16572,16578 ----
This function should only be used with a nonzero argument for
debugging purposes.
! -- Built-in Function: void * __builtin_frame_address (unsigned int
LEVEL)
This function is similar to `__builtin_return_address', but it
returns the address of the function frame rather than the return
*************** function.
*** 16563,16572 ****
File: gcc.info, Node: Vector Extensions, Next: Other Builtins, Prev: Return Address, Up: C Extensions
! Using vector instructions through built-in functions
! ====================================================
! On some targets, the instruction set contains SIMD vector instructions
that operate on multiple values contained in one large register at the
same time. For example, on the i386 the MMX, 3Dnow! and SSE extensions
can be used this way.
--- 16602,16611 ----
File: gcc.info, Node: Vector Extensions, Next: Other Builtins, Prev: Return Address, Up: C Extensions
! 5.43 Using vector instructions through built-in functions
! =========================================================
! On some targets, the instruction set contains SIMD vector instructions
that operate on multiple values contained in one large register at the
same time. For example, on the i386 the MMX, 3Dnow! and SSE extensions
can be used this way.
*************** to the corresponding 4 elements in B and
*** 16623,16631 ****
stored in C.
typedef int v4si __attribute__ ((mode(V4SI)));
!
v4si a, b, c;
!
c = a + b;
Subtraction, multiplication, division, and the logical operations
--- 16662,16670 ----
stored in C.
typedef int v4si __attribute__ ((mode(V4SI)));
!
v4si a, b, c;
!
c = a + b;
Subtraction, multiplication, division, and the logical operations
*************** third could look like this:
*** 16658,16667 ****
File: gcc.info, Node: Other Builtins, Next: Target Builtins, Prev: Vector Extensions, Up: C Extensions
! Other built-in functions provided by GCC
! ========================================
! GCC provides a large number of built-in functions other than the ones
mentioned above. Some of these are for internal use in the processing
of exceptions or variable-length argument lists and will not be
documented here because they may change from time to time; we do not
--- 16697,16706 ----
File: gcc.info, Node: Other Builtins, Next: Target Builtins, Prev: Vector Extensions, Up: C Extensions
! 5.44 Other built-in functions provided by GCC
! =============================================
! GCC provides a large number of built-in functions other than the ones
mentioned above. Some of these are for internal use in the processing
of exceptions or variable-length argument lists and will not be
documented here because they may change from time to time; we do not
*************** the same names as the standard macros (
*** 16749,16755 ****
`__builtin_' prefixed. We intend for a library implementor to be able
to simply `#define' each standard macro to its built-in equivalent.
! - Built-in Function: int __builtin_types_compatible_p (TYPE1, TYPE2)
You can use the built-in function `__builtin_types_compatible_p' to
determine whether two types are the same.
--- 16788,16794 ----
`__builtin_' prefixed. We intend for a library implementor to be able
to simply `#define' each standard macro to its built-in equivalent.
! -- Built-in Function: int __builtin_types_compatible_p (TYPE1, TYPE2)
You can use the built-in function `__builtin_types_compatible_p' to
determine whether two types are the same.
*************** to simply `#define' each standard macro
*** 16794,16800 ****
_Note:_ This construct is only available for C.
! - Built-in Function: TYPE __builtin_choose_expr (CONST_EXP, EXP1, EXP2)
You can use the built-in function `__builtin_choose_expr' to
evaluate code depending on the value of a constant expression.
This built-in function returns EXP1 if CONST_EXP, which is a
--- 16833,16840 ----
_Note:_ This construct is only available for C.
! -- Built-in Function: TYPE __builtin_choose_expr (CONST_EXP, EXP1,
! EXP2)
You can use the built-in function `__builtin_choose_expr' to
evaluate code depending on the value of a constant expression.
This built-in function returns EXP1 if CONST_EXP, which is a
*************** to simply `#define' each standard macro
*** 16834,16840 ****
future revisions.
! - Built-in Function: int __builtin_constant_p (EXP)
You can use the built-in function `__builtin_constant_p' to
determine if a value is known to be constant at compile-time and
hence that GCC can perform constant-folding on expressions
--- 16874,16880 ----
future revisions.
! -- Built-in Function: int __builtin_constant_p (EXP)
You can use the built-in function `__builtin_constant_p' to
determine if a value is known to be constant at compile-time and
hence that GCC can perform constant-folding on expressions
*************** to simply `#define' each standard macro
*** 16880,16886 ****
initializers. The earliest version where it is completely safe is
3.0.1.
! - Built-in Function: long __builtin_expect (long EXP, long C)
You may use `__builtin_expect' to provide the compiler with branch
prediction information. In general, you should prefer to use
actual profile feedback for this (`-fprofile-arcs'), as
--- 16920,16926 ----
initializers. The earliest version where it is completely safe is
3.0.1.
! -- Built-in Function: long __builtin_expect (long EXP, long C)
You may use `__builtin_expect' to provide the compiler with branch
prediction information. In general, you should prefer to use
actual profile feedback for this (`-fprofile-arcs'), as
*************** to simply `#define' each standard macro
*** 16905,16911 ****
when testing pointer or floating-point values.
! - Built-in Function: void __builtin_prefetch (const void *ADDR, ...)
This function is used to minimize cache-miss latency by moving
data into a cache before it is accessed. You can insert calls to
`__builtin_prefetch' into code for which you know addresses of
--- 16945,16951 ----
when testing pointer or floating-point values.
! -- Built-in Function: void __builtin_prefetch (const void *ADDR, ...)
This function is used to minimize cache-miss latency by moving
data into a cache before it is accessed. You can insert calls to
`__builtin_prefetch' into code for which you know addresses of
*************** to simply `#define' each standard macro
*** 16944,16975 ****
expression is evaluated if it includes side effects but no other
code is generated and GCC does not issue a warning.
! - Built-in Function: double __builtin_huge_val (void)
Returns a positive infinity, if supported by the floating-point
format, else `DBL_MAX'. This function is suitable for
implementing the ISO C macro `HUGE_VAL'.
! - Built-in Function: float __builtin_huge_valf (void)
Similar to `__builtin_huge_val', except the return type is `float'.
! - Built-in Function: long double __builtin_huge_vall (void)
Similar to `__builtin_huge_val', except the return type is `long
double'.
! - Built-in Function: double __builtin_inf (void)
Similar to `__builtin_huge_val', except a warning is generated if
the target floating-point format does not support infinities.
This function is suitable for implementing the ISO C99 macro
`INFINITY'.
! - Built-in Function: float __builtin_inff (void)
Similar to `__builtin_inf', except the return type is `float'.
! - Built-in Function: long double __builtin_infl (void)
Similar to `__builtin_inf', except the return type is `long
double'.
! - Built-in Function: double __builtin_nan (const char *str)
This is an implementation of the ISO C99 function `nan'.
Since ISO C99 defines this function in terms of `strtod', which we
--- 16984,17015 ----
expression is evaluated if it includes side effects but no other
code is generated and GCC does not issue a warning.
! -- Built-in Function: double __builtin_huge_val (void)
Returns a positive infinity, if supported by the floating-point
format, else `DBL_MAX'. This function is suitable for
implementing the ISO C macro `HUGE_VAL'.
! -- Built-in Function: float __builtin_huge_valf (void)
Similar to `__builtin_huge_val', except the return type is `float'.
! -- Built-in Function: long double __builtin_huge_vall (void)
Similar to `__builtin_huge_val', except the return type is `long
double'.
! -- Built-in Function: double __builtin_inf (void)
Similar to `__builtin_huge_val', except a warning is generated if
the target floating-point format does not support infinities.
This function is suitable for implementing the ISO C99 macro
`INFINITY'.
! -- Built-in Function: float __builtin_inff (void)
Similar to `__builtin_inf', except the return type is `float'.
! -- Built-in Function: long double __builtin_infl (void)
Similar to `__builtin_inf', except the return type is `long
double'.
! -- Built-in Function: double __builtin_nan (const char *str)
This is an implementation of the ISO C99 function `nan'.
Since ISO C99 defines this function in terms of `strtod', which we
*************** to simply `#define' each standard macro
*** 16984,17072 ****
This function, if given a string literal, is evaluated early enough
that it is considered a compile-time constant.
! - Built-in Function: float __builtin_nanf (const char *str)
Similar to `__builtin_nan', except the return type is `float'.
! - Built-in Function: long double __builtin_nanl (const char *str)
Similar to `__builtin_nan', except the return type is `long
double'.
! - Built-in Function: double __builtin_nans (const char *str)
Similar to `__builtin_nan', except the significand is forced to be
a signaling NaN. The `nans' function is proposed by WG14 N965.
! - Built-in Function: float __builtin_nansf (const char *str)
Similar to `__builtin_nans', except the return type is `float'.
! - Built-in Function: long double __builtin_nansl (const char *str)
Similar to `__builtin_nans', except the return type is `long
double'.
! - Built-in Function: int __builtin_ffs (unsigned int x)
Returns one plus the index of the least significant 1-bit of X, or
if X is zero, returns zero.
! - Built-in Function: int __builtin_clz (unsigned int x)
Returns the number of leading 0-bits in X, starting at the most
significant bit position. If X is 0, the result is undefined.
! - Built-in Function: int __builtin_ctz (unsigned int x)
Returns the number of trailing 0-bits in X, starting at the least
significant bit position. If X is 0, the result is undefined.
! - Built-in Function: int __builtin_popcount (unsigned int x)
Returns the number of 1-bits in X.
! - Built-in Function: int __builtin_parity (unsigned int x)
Returns the parity of X, i.e. the number of 1-bits in X modulo 2.
! - Built-in Function: int __builtin_ffsl (unsigned long)
Similar to `__builtin_ffs', except the argument type is `unsigned
long'.
! - Built-in Function: int __builtin_clzl (unsigned long)
Similar to `__builtin_clz', except the argument type is `unsigned
long'.
! - Built-in Function: int __builtin_ctzl (unsigned long)
Similar to `__builtin_ctz', except the argument type is `unsigned
long'.
! - Built-in Function: int __builtin_popcountl (unsigned long)
Similar to `__builtin_popcount', except the argument type is
`unsigned long'.
! - Built-in Function: int __builtin_parityl (unsigned long)
Similar to `__builtin_parity', except the argument type is
`unsigned long'.
! - Built-in Function: int __builtin_ffsll (unsigned long long)
Similar to `__builtin_ffs', except the argument type is `unsigned
long long'.
! - Built-in Function: int __builtin_clzll (unsigned long long)
Similar to `__builtin_clz', except the argument type is `unsigned
long long'.
! - Built-in Function: int __builtin_ctzll (unsigned long long)
Similar to `__builtin_ctz', except the argument type is `unsigned
long long'.
! - Built-in Function: int __builtin_popcountll (unsigned long long)
Similar to `__builtin_popcount', except the argument type is
`unsigned long long'.
! - Built-in Function: int __builtin_parityll (unsigned long long)
Similar to `__builtin_parity', except the argument type is
`unsigned long long'.
File: gcc.info, Node: Target Builtins, Next: Pragmas, Prev: Other Builtins, Up: C Extensions
! Built-in Functions Specific to Particular Target Machines
! =========================================================
! On some target machines, GCC supports many built-in functions specific
to those machines. Generally these generate calls to specific machine
instructions, but allow the compiler to schedule those calls.
--- 17024,17112 ----
This function, if given a string literal, is evaluated early enough
that it is considered a compile-time constant.
! -- Built-in Function: float __builtin_nanf (const char *str)
Similar to `__builtin_nan', except the return type is `float'.
! -- Built-in Function: long double __builtin_nanl (const char *str)
Similar to `__builtin_nan', except the return type is `long
double'.
! -- Built-in Function: double __builtin_nans (const char *str)
Similar to `__builtin_nan', except the significand is forced to be
a signaling NaN. The `nans' function is proposed by WG14 N965.
! -- Built-in Function: float __builtin_nansf (const char *str)
Similar to `__builtin_nans', except the return type is `float'.
! -- Built-in Function: long double __builtin_nansl (const char *str)
Similar to `__builtin_nans', except the return type is `long
double'.
! -- Built-in Function: int __builtin_ffs (unsigned int x)
Returns one plus the index of the least significant 1-bit of X, or
if X is zero, returns zero.
! -- Built-in Function: int __builtin_clz (unsigned int x)
Returns the number of leading 0-bits in X, starting at the most
significant bit position. If X is 0, the result is undefined.
! -- Built-in Function: int __builtin_ctz (unsigned int x)
Returns the number of trailing 0-bits in X, starting at the least
significant bit position. If X is 0, the result is undefined.
! -- Built-in Function: int __builtin_popcount (unsigned int x)
Returns the number of 1-bits in X.
! -- Built-in Function: int __builtin_parity (unsigned int x)
Returns the parity of X, i.e. the number of 1-bits in X modulo 2.
! -- Built-in Function: int __builtin_ffsl (unsigned long)
Similar to `__builtin_ffs', except the argument type is `unsigned
long'.
! -- Built-in Function: int __builtin_clzl (unsigned long)
Similar to `__builtin_clz', except the argument type is `unsigned
long'.
! -- Built-in Function: int __builtin_ctzl (unsigned long)
Similar to `__builtin_ctz', except the argument type is `unsigned
long'.
! -- Built-in Function: int __builtin_popcountl (unsigned long)
Similar to `__builtin_popcount', except the argument type is
`unsigned long'.
! -- Built-in Function: int __builtin_parityl (unsigned long)
Similar to `__builtin_parity', except the argument type is
`unsigned long'.
! -- Built-in Function: int __builtin_ffsll (unsigned long long)
Similar to `__builtin_ffs', except the argument type is `unsigned
long long'.
! -- Built-in Function: int __builtin_clzll (unsigned long long)
Similar to `__builtin_clz', except the argument type is `unsigned
long long'.
! -- Built-in Function: int __builtin_ctzll (unsigned long long)
Similar to `__builtin_ctz', except the argument type is `unsigned
long long'.
! -- Built-in Function: int __builtin_popcountll (unsigned long long)
Similar to `__builtin_popcount', except the argument type is
`unsigned long long'.
! -- Built-in Function: int __builtin_parityll (unsigned long long)
Similar to `__builtin_parity', except the argument type is
`unsigned long long'.
File: gcc.info, Node: Target Builtins, Next: Pragmas, Prev: Other Builtins, Up: C Extensions
! 5.45 Built-in Functions Specific to Particular Target Machines
! ==============================================================
! On some target machines, GCC supports many built-in functions specific
to those machines. Generally these generate calls to specific machine
instructions, but allow the compiler to schedule those calls.
*************** instructions, but allow the compiler to
*** 17080,17089 ****
File: gcc.info, Node: Alpha Built-in Functions, Next: ARM Built-in Functions, Up: Target Builtins
! Alpha Built-in Functions
! ------------------------
! These built-in functions are available for the Alpha family of
processors, depending on the command-line switches used.
The following built-in functions are always available. They all
--- 17120,17129 ----
File: gcc.info, Node: Alpha Built-in Functions, Next: ARM Built-in Functions, Up: Target Builtins
! 5.45.1 Alpha Built-in Functions
! -------------------------------
! These built-in functions are available for the Alpha family of
processors, depending on the command-line switches used.
The following built-in functions are always available. They all
*************** when invoked with `-mtls-kernel', they i
*** 17154,17169 ****
File: gcc.info, Node: ARM Built-in Functions, Next: X86 Built-in Functions, Prev: Alpha Built-in Functions, Up: Target Builtins
! ARM Built-in Functions
! ----------------------
! These built-in functions are available for the ARM family of
processors, when the `-mcpu=iwmmxt' switch is used:
typedef int v2si __attribute__ ((vector_size (8)));
typedef short v4hi __attribute__ ((vector_size (8)));
typedef char v8qi __attribute__ ((vector_size (8)));
!
int __builtin_arm_getwcx (int)
void __builtin_arm_setwcx (int, int)
int __builtin_arm_textrmsb (v8qi, int)
--- 17194,17209 ----
File: gcc.info, Node: ARM Built-in Functions, Next: X86 Built-in Functions, Prev: Alpha Built-in Functions, Up: Target Builtins
! 5.45.2 ARM Built-in Functions
! -----------------------------
! These built-in functions are available for the ARM family of
processors, when the `-mcpu=iwmmxt' switch is used:
typedef int v2si __attribute__ ((vector_size (8)));
typedef short v4hi __attribute__ ((vector_size (8)));
typedef char v8qi __attribute__ ((vector_size (8)));
!
int __builtin_arm_getwcx (int)
void __builtin_arm_setwcx (int, int)
int __builtin_arm_textrmsb (v8qi, int)
*************** processors, when the `-mcpu=iwmmxt' swit
*** 17302,17311 ****
File: gcc.info, Node: X86 Built-in Functions, Next: PowerPC AltiVec Built-in Functions, Prev: ARM Built-in Functions, Up: Target Builtins
! X86 Built-in Functions
! ----------------------
! These built-in functions are available for the i386 and x86-64 family
of computers, depending on the command-line switches used.
The following machine modes are available for use with MMX built-in
--- 17342,17351 ----
File: gcc.info, Node: X86 Built-in Functions, Next: PowerPC AltiVec Built-in Functions, Prev: ARM Built-in Functions, Up: Target Builtins
! 5.45.3 X86 Built-in Functions
! -----------------------------
! These built-in functions are available for the i386 and x86-64 family
of computers, depending on the command-line switches used.
The following machine modes are available for use with MMX built-in
*************** that is part of the name.
*** 17545,17568 ****
File: gcc.info, Node: PowerPC AltiVec Built-in Functions, Prev: X86 Built-in Functions, Up: Target Builtins
! PowerPC AltiVec Built-in Functions
! ----------------------------------
! GCC provides an interface for the PowerPC family of processors to
! access the AltiVec operations described in Motorola's AltiVec
! Programming Interface Manual. The interface is made available by
! including `' and using `-maltivec' and `-mabi=altivec'. The
! interface supports the following vector types.
vector unsigned char
vector signed char
vector bool char
!
vector unsigned short
vector signed short
vector bool short
vector pixel
!
vector unsigned int
vector signed int
vector bool int
--- 17585,17608 ----
File: gcc.info, Node: PowerPC AltiVec Built-in Functions, Prev: X86 Built-in Functions, Up: Target Builtins
! 5.45.4 PowerPC AltiVec Built-in Functions
! -----------------------------------------
! GCC provides an interface for the PowerPC family of processors to access
! the AltiVec operations described in Motorola's AltiVec Programming
! Interface Manual. The interface is made available by including
! `' and using `-maltivec' and `-mabi=altivec'. The interface
! supports the following vector types.
vector unsigned char
vector signed char
vector bool char
!
vector unsigned short
vector signed short
vector bool short
vector pixel
!
vector unsigned int
vector signed int
vector bool int
*************** values within the range required for tha
*** 17616,17626 ****
vector signed short vec_abs (vector signed short);
vector signed int vec_abs (vector signed int);
vector float vec_abs (vector float);
!
vector signed char vec_abss (vector signed char);
vector signed short vec_abss (vector signed short);
vector signed int vec_abss (vector signed int);
!
vector signed char vec_add (vector bool char, vector signed char);
vector signed char vec_add (vector signed char, vector bool char);
vector signed char vec_add (vector signed char, vector signed char);
--- 17656,17666 ----
vector signed short vec_abs (vector signed short);
vector signed int vec_abs (vector signed int);
vector float vec_abs (vector float);
!
vector signed char vec_abss (vector signed char);
vector signed short vec_abss (vector signed short);
vector signed int vec_abss (vector signed int);
!
vector signed char vec_add (vector bool char, vector signed char);
vector signed char vec_add (vector signed char, vector bool char);
vector signed char vec_add (vector signed char, vector signed char);
*************** values within the range required for tha
*** 17644,17652 ****
vector unsigned int vec_add (vector unsigned int, vector bool int);
vector unsigned int vec_add (vector unsigned int, vector unsigned int);
vector float vec_add (vector float, vector float);
!
vector float vec_vaddfp (vector float, vector float);
!
vector signed int vec_vadduwm (vector bool int, vector signed int);
vector signed int vec_vadduwm (vector signed int, vector bool int);
vector signed int vec_vadduwm (vector signed int, vector signed int);
--- 17684,17692 ----
vector unsigned int vec_add (vector unsigned int, vector bool int);
vector unsigned int vec_add (vector unsigned int, vector unsigned int);
vector float vec_add (vector float, vector float);
!
vector float vec_vaddfp (vector float, vector float);
!
vector signed int vec_vadduwm (vector bool int, vector signed int);
vector signed int vec_vadduwm (vector signed int, vector bool int);
vector signed int vec_vadduwm (vector signed int, vector signed int);
*************** values within the range required for tha
*** 17654,17660 ****
vector unsigned int vec_vadduwm (vector unsigned int, vector bool int);
vector unsigned int vec_vadduwm (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vadduhm (vector bool short,
vector signed short);
vector signed short vec_vadduhm (vector signed short,
--- 17694,17700 ----
vector unsigned int vec_vadduwm (vector unsigned int, vector bool int);
vector unsigned int vec_vadduwm (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vadduhm (vector bool short,
vector signed short);
vector signed short vec_vadduhm (vector signed short,
*************** values within the range required for tha
*** 17667,17673 ****
vector bool short);
vector unsigned short vec_vadduhm (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vaddubm (vector bool char, vector signed char);
vector signed char vec_vaddubm (vector signed char, vector bool char);
vector signed char vec_vaddubm (vector signed char, vector signed char);
--- 17707,17713 ----
vector bool short);
vector unsigned short vec_vadduhm (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vaddubm (vector bool char, vector signed char);
vector signed char vec_vaddubm (vector signed char, vector bool char);
vector signed char vec_vaddubm (vector signed char, vector signed char);
*************** values within the range required for tha
*** 17677,17685 ****
vector bool char);
vector unsigned char vec_vaddubm (vector unsigned char,
vector unsigned char);
!
vector unsigned int vec_addc (vector unsigned int, vector unsigned int);
!
vector unsigned char vec_adds (vector bool char, vector unsigned char);
vector unsigned char vec_adds (vector unsigned char, vector bool char);
vector unsigned char vec_adds (vector unsigned char,
--- 17717,17725 ----
vector bool char);
vector unsigned char vec_vaddubm (vector unsigned char,
vector unsigned char);
!
vector unsigned int vec_addc (vector unsigned int, vector unsigned int);
!
vector unsigned char vec_adds (vector bool char, vector unsigned char);
vector unsigned char vec_adds (vector unsigned char, vector bool char);
vector unsigned char vec_adds (vector unsigned char,
*************** values within the range required for tha
*** 17702,17742 ****
vector signed int vec_adds (vector bool int, vector signed int);
vector signed int vec_adds (vector signed int, vector bool int);
vector signed int vec_adds (vector signed int, vector signed int);
!
vector signed int vec_vaddsws (vector bool int, vector signed int);
vector signed int vec_vaddsws (vector signed int, vector bool int);
vector signed int vec_vaddsws (vector signed int, vector signed int);
!
vector unsigned int vec_vadduws (vector bool int, vector unsigned int);
vector unsigned int vec_vadduws (vector unsigned int, vector bool int);
vector unsigned int vec_vadduws (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vaddshs (vector bool short,
vector signed short);
vector signed short vec_vaddshs (vector signed short,
vector bool short);
vector signed short vec_vaddshs (vector signed short,
vector signed short);
!
vector unsigned short vec_vadduhs (vector bool short,
vector unsigned short);
vector unsigned short vec_vadduhs (vector unsigned short,
vector bool short);
vector unsigned short vec_vadduhs (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vaddsbs (vector bool char, vector signed char);
vector signed char vec_vaddsbs (vector signed char, vector bool char);
vector signed char vec_vaddsbs (vector signed char, vector signed char);
!
vector unsigned char vec_vaddubs (vector bool char,
vector unsigned char);
vector unsigned char vec_vaddubs (vector unsigned char,
vector bool char);
vector unsigned char vec_vaddubs (vector unsigned char,
vector unsigned char);
!
vector float vec_and (vector float, vector float);
vector float vec_and (vector float, vector bool int);
vector float vec_and (vector bool int, vector float);
--- 17742,17782 ----
vector signed int vec_adds (vector bool int, vector signed int);
vector signed int vec_adds (vector signed int, vector bool int);
vector signed int vec_adds (vector signed int, vector signed int);
!
vector signed int vec_vaddsws (vector bool int, vector signed int);
vector signed int vec_vaddsws (vector signed int, vector bool int);
vector signed int vec_vaddsws (vector signed int, vector signed int);
!
vector unsigned int vec_vadduws (vector bool int, vector unsigned int);
vector unsigned int vec_vadduws (vector unsigned int, vector bool int);
vector unsigned int vec_vadduws (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vaddshs (vector bool short,
vector signed short);
vector signed short vec_vaddshs (vector signed short,
vector bool short);
vector signed short vec_vaddshs (vector signed short,
vector signed short);
!
vector unsigned short vec_vadduhs (vector bool short,
vector unsigned short);
vector unsigned short vec_vadduhs (vector unsigned short,
vector bool short);
vector unsigned short vec_vadduhs (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vaddsbs (vector bool char, vector signed char);
vector signed char vec_vaddsbs (vector signed char, vector bool char);
vector signed char vec_vaddsbs (vector signed char, vector signed char);
!
vector unsigned char vec_vaddubs (vector bool char,
vector unsigned char);
vector unsigned char vec_vaddubs (vector unsigned char,
vector bool char);
vector unsigned char vec_vaddubs (vector unsigned char,
vector unsigned char);
!
vector float vec_and (vector float, vector float);
vector float vec_and (vector float, vector bool int);
vector float vec_and (vector bool int, vector float);
*************** values within the range required for tha
*** 17765,17771 ****
vector unsigned char vec_and (vector unsigned char, vector bool char);
vector unsigned char vec_and (vector unsigned char,
vector unsigned char);
!
vector float vec_andc (vector float, vector float);
vector float vec_andc (vector float, vector bool int);
vector float vec_andc (vector bool int, vector float);
--- 17805,17811 ----
vector unsigned char vec_and (vector unsigned char, vector bool char);
vector unsigned char vec_and (vector unsigned char,
vector unsigned char);
!
vector float vec_andc (vector float, vector float);
vector float vec_andc (vector float, vector bool int);
vector float vec_andc (vector bool int, vector float);
*************** values within the range required for tha
*** 17794,17800 ****
vector unsigned char vec_andc (vector unsigned char, vector bool char);
vector unsigned char vec_andc (vector unsigned char,
vector unsigned char);
!
vector unsigned char vec_avg (vector unsigned char,
vector unsigned char);
vector signed char vec_avg (vector signed char, vector signed char);
--- 17834,17840 ----
vector unsigned char vec_andc (vector unsigned char, vector bool char);
vector unsigned char vec_andc (vector unsigned char,
vector unsigned char);
!
vector unsigned char vec_avg (vector unsigned char,
vector unsigned char);
vector signed char vec_avg (vector signed char, vector signed char);
*************** values within the range required for tha
*** 17803,17829 ****
vector signed short vec_avg (vector signed short, vector signed short);
vector unsigned int vec_avg (vector unsigned int, vector unsigned int);
vector signed int vec_avg (vector signed int, vector signed int);
!
vector signed int vec_vavgsw (vector signed int, vector signed int);
!
vector unsigned int vec_vavguw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vavgsh (vector signed short,
vector signed short);
!
vector unsigned short vec_vavguh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vavgsb (vector signed char, vector signed char);
!
vector unsigned char vec_vavgub (vector unsigned char,
vector unsigned char);
!
vector float vec_ceil (vector float);
!
vector signed int vec_cmpb (vector float, vector float);
!
vector bool char vec_cmpeq (vector signed char, vector signed char);
vector bool char vec_cmpeq (vector unsigned char, vector unsigned char);
vector bool short vec_cmpeq (vector signed short, vector signed short);
--- 17843,17869 ----
vector signed short vec_avg (vector signed short, vector signed short);
vector unsigned int vec_avg (vector unsigned int, vector unsigned int);
vector signed int vec_avg (vector signed int, vector signed int);
!
vector signed int vec_vavgsw (vector signed int, vector signed int);
!
vector unsigned int vec_vavguw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vavgsh (vector signed short,
vector signed short);
!
vector unsigned short vec_vavguh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vavgsb (vector signed char, vector signed char);
!
vector unsigned char vec_vavgub (vector unsigned char,
vector unsigned char);
!
vector float vec_ceil (vector float);
!
vector signed int vec_cmpb (vector float, vector float);
!
vector bool char vec_cmpeq (vector signed char, vector signed char);
vector bool char vec_cmpeq (vector unsigned char, vector unsigned char);
vector bool short vec_cmpeq (vector signed short, vector signed short);
*************** values within the range required for tha
*** 17832,17854 ****
vector bool int vec_cmpeq (vector signed int, vector signed int);
vector bool int vec_cmpeq (vector unsigned int, vector unsigned int);
vector bool int vec_cmpeq (vector float, vector float);
!
vector bool int vec_vcmpeqfp (vector float, vector float);
!
vector bool int vec_vcmpequw (vector signed int, vector signed int);
vector bool int vec_vcmpequw (vector unsigned int, vector unsigned int);
!
vector bool short vec_vcmpequh (vector signed short,
vector signed short);
vector bool short vec_vcmpequh (vector unsigned short,
vector unsigned short);
!
vector bool char vec_vcmpequb (vector signed char, vector signed char);
vector bool char vec_vcmpequb (vector unsigned char,
vector unsigned char);
!
vector bool int vec_cmpge (vector float, vector float);
!
vector bool char vec_cmpgt (vector unsigned char, vector unsigned char);
vector bool char vec_cmpgt (vector signed char, vector signed char);
vector bool short vec_cmpgt (vector unsigned short,
--- 17872,17894 ----
vector bool int vec_cmpeq (vector signed int, vector signed int);
vector bool int vec_cmpeq (vector unsigned int, vector unsigned int);
vector bool int vec_cmpeq (vector float, vector float);
!
vector bool int vec_vcmpeqfp (vector float, vector float);
!
vector bool int vec_vcmpequw (vector signed int, vector signed int);
vector bool int vec_vcmpequw (vector unsigned int, vector unsigned int);
!
vector bool short vec_vcmpequh (vector signed short,
vector signed short);
vector bool short vec_vcmpequh (vector unsigned short,
vector unsigned short);
!
vector bool char vec_vcmpequb (vector signed char, vector signed char);
vector bool char vec_vcmpequb (vector unsigned char,
vector unsigned char);
!
vector bool int vec_cmpge (vector float, vector float);
!
vector bool char vec_cmpgt (vector unsigned char, vector unsigned char);
vector bool char vec_cmpgt (vector signed char, vector signed char);
vector bool short vec_cmpgt (vector unsigned short,
*************** values within the range required for tha
*** 17857,17882 ****
vector bool int vec_cmpgt (vector unsigned int, vector unsigned int);
vector bool int vec_cmpgt (vector signed int, vector signed int);
vector bool int vec_cmpgt (vector float, vector float);
!
vector bool int vec_vcmpgtfp (vector float, vector float);
!
vector bool int vec_vcmpgtsw (vector signed int, vector signed int);
!
vector bool int vec_vcmpgtuw (vector unsigned int, vector unsigned int);
!
vector bool short vec_vcmpgtsh (vector signed short,
vector signed short);
!
vector bool short vec_vcmpgtuh (vector unsigned short,
vector unsigned short);
!
vector bool char vec_vcmpgtsb (vector signed char, vector signed char);
!
vector bool char vec_vcmpgtub (vector unsigned char,
vector unsigned char);
!
vector bool int vec_cmple (vector float, vector float);
!
vector bool char vec_cmplt (vector unsigned char, vector unsigned char);
vector bool char vec_cmplt (vector signed char, vector signed char);
vector bool short vec_cmplt (vector unsigned short,
--- 17897,17922 ----
vector bool int vec_cmpgt (vector unsigned int, vector unsigned int);
vector bool int vec_cmpgt (vector signed int, vector signed int);
vector bool int vec_cmpgt (vector float, vector float);
!
vector bool int vec_vcmpgtfp (vector float, vector float);
!
vector bool int vec_vcmpgtsw (vector signed int, vector signed int);
!
vector bool int vec_vcmpgtuw (vector unsigned int, vector unsigned int);
!
vector bool short vec_vcmpgtsh (vector signed short,
vector signed short);
!
vector bool short vec_vcmpgtuh (vector unsigned short,
vector unsigned short);
!
vector bool char vec_vcmpgtsb (vector signed char, vector signed char);
!
vector bool char vec_vcmpgtub (vector unsigned char,
vector unsigned char);
!
vector bool int vec_cmple (vector float, vector float);
!
vector bool char vec_cmplt (vector unsigned char, vector unsigned char);
vector bool char vec_cmplt (vector signed char, vector signed char);
vector bool short vec_cmplt (vector unsigned short,
*************** values within the range required for tha
*** 17885,17906 ****
vector bool int vec_cmplt (vector unsigned int, vector unsigned int);
vector bool int vec_cmplt (vector signed int, vector signed int);
vector bool int vec_cmplt (vector float, vector float);
!
vector float vec_ctf (vector unsigned int, const int);
vector float vec_ctf (vector signed int, const int);
!
vector float vec_vcfsx (vector signed int, const int);
!
vector float vec_vcfux (vector unsigned int, const int);
!
vector signed int vec_cts (vector float, const int);
!
vector unsigned int vec_ctu (vector float, const int);
!
void vec_dss (const int);
!
void vec_dssall (void);
!
void vec_dst (const vector unsigned char *, int, const int);
void vec_dst (const vector signed char *, int, const int);
void vec_dst (const vector bool char *, int, const int);
--- 17925,17946 ----
vector bool int vec_cmplt (vector unsigned int, vector unsigned int);
vector bool int vec_cmplt (vector signed int, vector signed int);
vector bool int vec_cmplt (vector float, vector float);
!
vector float vec_ctf (vector unsigned int, const int);
vector float vec_ctf (vector signed int, const int);
!
vector float vec_vcfsx (vector signed int, const int);
!
vector float vec_vcfux (vector unsigned int, const int);
!
vector signed int vec_cts (vector float, const int);
!
vector unsigned int vec_ctu (vector float, const int);
!
void vec_dss (const int);
!
void vec_dssall (void);
!
void vec_dst (const vector unsigned char *, int, const int);
void vec_dst (const vector signed char *, int, const int);
void vec_dst (const vector bool char *, int, const int);
*************** values within the range required for tha
*** 17921,17927 ****
void vec_dst (const unsigned long *, int, const int);
void vec_dst (const long *, int, const int);
void vec_dst (const float *, int, const int);
!
void vec_dstst (const vector unsigned char *, int, const int);
void vec_dstst (const vector signed char *, int, const int);
void vec_dstst (const vector bool char *, int, const int);
--- 17961,17967 ----
void vec_dst (const unsigned long *, int, const int);
void vec_dst (const long *, int, const int);
void vec_dst (const float *, int, const int);
!
void vec_dstst (const vector unsigned char *, int, const int);
void vec_dstst (const vector signed char *, int, const int);
void vec_dstst (const vector bool char *, int, const int);
*************** values within the range required for tha
*** 17942,17948 ****
void vec_dstst (const unsigned long *, int, const int);
void vec_dstst (const long *, int, const int);
void vec_dstst (const float *, int, const int);
!
void vec_dststt (const vector unsigned char *, int, const int);
void vec_dststt (const vector signed char *, int, const int);
void vec_dststt (const vector bool char *, int, const int);
--- 17982,17988 ----
void vec_dstst (const unsigned long *, int, const int);
void vec_dstst (const long *, int, const int);
void vec_dstst (const float *, int, const int);
!
void vec_dststt (const vector unsigned char *, int, const int);
void vec_dststt (const vector signed char *, int, const int);
void vec_dststt (const vector bool char *, int, const int);
*************** values within the range required for tha
*** 17963,17969 ****
void vec_dststt (const unsigned long *, int, const int);
void vec_dststt (const long *, int, const int);
void vec_dststt (const float *, int, const int);
!
void vec_dstt (const vector unsigned char *, int, const int);
void vec_dstt (const vector signed char *, int, const int);
void vec_dstt (const vector bool char *, int, const int);
--- 18003,18009 ----
void vec_dststt (const unsigned long *, int, const int);
void vec_dststt (const long *, int, const int);
void vec_dststt (const float *, int, const int);
!
void vec_dstt (const vector unsigned char *, int, const int);
void vec_dstt (const vector signed char *, int, const int);
void vec_dstt (const vector bool char *, int, const int);
*************** values within the range required for tha
*** 17984,17994 ****
void vec_dstt (const unsigned long *, int, const int);
void vec_dstt (const long *, int, const int);
void vec_dstt (const float *, int, const int);
!
vector float vec_expte (vector float);
!
vector float vec_floor (vector float);
!
vector float vec_ld (int, const vector float *);
vector float vec_ld (int, const float *);
vector bool int vec_ld (int, const vector bool int *);
--- 18024,18034 ----
void vec_dstt (const unsigned long *, int, const int);
void vec_dstt (const long *, int, const int);
void vec_dstt (const float *, int, const int);
!
vector float vec_expte (vector float);
!
vector float vec_floor (vector float);
!
vector float vec_ld (int, const vector float *);
vector float vec_ld (int, const float *);
vector bool int vec_ld (int, const vector bool int *);
*************** values within the range required for tha
*** 18009,18015 ****
vector signed char vec_ld (int, const signed char *);
vector unsigned char vec_ld (int, const vector unsigned char *);
vector unsigned char vec_ld (int, const unsigned char *);
!
vector signed char vec_lde (int, const signed char *);
vector unsigned char vec_lde (int, const unsigned char *);
vector signed short vec_lde (int, const short *);
--- 18049,18055 ----
vector signed char vec_ld (int, const signed char *);
vector unsigned char vec_ld (int, const vector unsigned char *);
vector unsigned char vec_ld (int, const unsigned char *);
!
vector signed char vec_lde (int, const signed char *);
vector unsigned char vec_lde (int, const unsigned char *);
vector signed short vec_lde (int, const short *);
*************** values within the range required for tha
*** 18019,18037 ****
vector unsigned int vec_lde (int, const unsigned int *);
vector signed int vec_lde (int, const long *);
vector unsigned int vec_lde (int, const unsigned long *);
!
vector float vec_lvewx (int, float *);
vector signed int vec_lvewx (int, int *);
vector unsigned int vec_lvewx (int, unsigned int *);
vector signed int vec_lvewx (int, long *);
vector unsigned int vec_lvewx (int, unsigned long *);
!
vector signed short vec_lvehx (int, short *);
vector unsigned short vec_lvehx (int, unsigned short *);
!
vector signed char vec_lvebx (int, char *);
vector unsigned char vec_lvebx (int, unsigned char *);
!
vector float vec_ldl (int, const vector float *);
vector float vec_ldl (int, const float *);
vector bool int vec_ldl (int, const vector bool int *);
--- 18059,18077 ----
vector unsigned int vec_lde (int, const unsigned int *);
vector signed int vec_lde (int, const long *);
vector unsigned int vec_lde (int, const unsigned long *);
!
vector float vec_lvewx (int, float *);
vector signed int vec_lvewx (int, int *);
vector unsigned int vec_lvewx (int, unsigned int *);
vector signed int vec_lvewx (int, long *);
vector unsigned int vec_lvewx (int, unsigned long *);
!
vector signed short vec_lvehx (int, short *);
vector unsigned short vec_lvehx (int, unsigned short *);
!
vector signed char vec_lvebx (int, char *);
vector unsigned char vec_lvebx (int, unsigned char *);
!
vector float vec_ldl (int, const vector float *);
vector float vec_ldl (int, const float *);
vector bool int vec_ldl (int, const vector bool int *);
*************** values within the range required for tha
*** 18052,18060 ****
vector signed char vec_ldl (int, const signed char *);
vector unsigned char vec_ldl (int, const vector unsigned char *);
vector unsigned char vec_ldl (int, const unsigned char *);
!
vector float vec_loge (vector float);
!
vector unsigned char vec_lvsl (int, const volatile unsigned char *);
vector unsigned char vec_lvsl (int, const volatile signed char *);
vector unsigned char vec_lvsl (int, const volatile unsigned short *);
--- 18092,18100 ----
vector signed char vec_ldl (int, const signed char *);
vector unsigned char vec_ldl (int, const vector unsigned char *);
vector unsigned char vec_ldl (int, const unsigned char *);
!
vector float vec_loge (vector float);
!
vector unsigned char vec_lvsl (int, const volatile unsigned char *);
vector unsigned char vec_lvsl (int, const volatile signed char *);
vector unsigned char vec_lvsl (int, const volatile unsigned short *);
*************** values within the range required for tha
*** 18064,18070 ****
vector unsigned char vec_lvsl (int, const volatile unsigned long *);
vector unsigned char vec_lvsl (int, const volatile long *);
vector unsigned char vec_lvsl (int, const volatile float *);
!
vector unsigned char vec_lvsr (int, const volatile unsigned char *);
vector unsigned char vec_lvsr (int, const volatile signed char *);
vector unsigned char vec_lvsr (int, const volatile unsigned short *);
--- 18104,18110 ----
vector unsigned char vec_lvsl (int, const volatile unsigned long *);
vector unsigned char vec_lvsl (int, const volatile long *);
vector unsigned char vec_lvsl (int, const volatile float *);
!
vector unsigned char vec_lvsr (int, const volatile unsigned char *);
vector unsigned char vec_lvsr (int, const volatile signed char *);
vector unsigned char vec_lvsr (int, const volatile unsigned short *);
*************** values within the range required for tha
*** 18074,18086 ****
vector unsigned char vec_lvsr (int, const volatile unsigned long *);
vector unsigned char vec_lvsr (int, const volatile long *);
vector unsigned char vec_lvsr (int, const volatile float *);
!
vector float vec_madd (vector float, vector float, vector float);
!
vector signed short vec_madds (vector signed short,
vector signed short,
vector signed short);
!
vector unsigned char vec_max (vector bool char, vector unsigned char);
vector unsigned char vec_max (vector unsigned char, vector bool char);
vector unsigned char vec_max (vector unsigned char,
--- 18114,18126 ----
vector unsigned char vec_lvsr (int, const volatile unsigned long *);
vector unsigned char vec_lvsr (int, const volatile long *);
vector unsigned char vec_lvsr (int, const volatile float *);
!
vector float vec_madd (vector float, vector float, vector float);
!
vector signed short vec_madds (vector signed short,
vector signed short,
vector signed short);
!
vector unsigned char vec_max (vector bool char, vector unsigned char);
vector unsigned char vec_max (vector unsigned char, vector bool char);
vector unsigned char vec_max (vector unsigned char,
*************** values within the range required for tha
*** 18104,18144 ****
vector signed int vec_max (vector signed int, vector bool int);
vector signed int vec_max (vector signed int, vector signed int);
vector float vec_max (vector float, vector float);
!
vector float vec_vmaxfp (vector float, vector float);
!
vector signed int vec_vmaxsw (vector bool int, vector signed int);
vector signed int vec_vmaxsw (vector signed int, vector bool int);
vector signed int vec_vmaxsw (vector signed int, vector signed int);
!
vector unsigned int vec_vmaxuw (vector bool int, vector unsigned int);
vector unsigned int vec_vmaxuw (vector unsigned int, vector bool int);
vector unsigned int vec_vmaxuw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vmaxsh (vector bool short, vector signed short);
vector signed short vec_vmaxsh (vector signed short, vector bool short);
vector signed short vec_vmaxsh (vector signed short,
vector signed short);
!
vector unsigned short vec_vmaxuh (vector bool short,
vector unsigned short);
vector unsigned short vec_vmaxuh (vector unsigned short,
vector bool short);
vector unsigned short vec_vmaxuh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vmaxsb (vector bool char, vector signed char);
vector signed char vec_vmaxsb (vector signed char, vector bool char);
vector signed char vec_vmaxsb (vector signed char, vector signed char);
!
vector unsigned char vec_vmaxub (vector bool char,
vector unsigned char);
vector unsigned char vec_vmaxub (vector unsigned char,
vector bool char);
vector unsigned char vec_vmaxub (vector unsigned char,
vector unsigned char);
!
vector bool char vec_mergeh (vector bool char, vector bool char);
vector signed char vec_mergeh (vector signed char, vector signed char);
vector unsigned char vec_mergeh (vector unsigned char,
--- 18144,18184 ----
vector signed int vec_max (vector signed int, vector bool int);
vector signed int vec_max (vector signed int, vector signed int);
vector float vec_max (vector float, vector float);
!
vector float vec_vmaxfp (vector float, vector float);
!
vector signed int vec_vmaxsw (vector bool int, vector signed int);
vector signed int vec_vmaxsw (vector signed int, vector bool int);
vector signed int vec_vmaxsw (vector signed int, vector signed int);
!
vector unsigned int vec_vmaxuw (vector bool int, vector unsigned int);
vector unsigned int vec_vmaxuw (vector unsigned int, vector bool int);
vector unsigned int vec_vmaxuw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vmaxsh (vector bool short, vector signed short);
vector signed short vec_vmaxsh (vector signed short, vector bool short);
vector signed short vec_vmaxsh (vector signed short,
vector signed short);
!
vector unsigned short vec_vmaxuh (vector bool short,
vector unsigned short);
vector unsigned short vec_vmaxuh (vector unsigned short,
vector bool short);
vector unsigned short vec_vmaxuh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vmaxsb (vector bool char, vector signed char);
vector signed char vec_vmaxsb (vector signed char, vector bool char);
vector signed char vec_vmaxsb (vector signed char, vector signed char);
!
vector unsigned char vec_vmaxub (vector bool char,
vector unsigned char);
vector unsigned char vec_vmaxub (vector unsigned char,
vector bool char);
vector unsigned char vec_vmaxub (vector unsigned char,
vector unsigned char);
!
vector bool char vec_mergeh (vector bool char, vector bool char);
vector signed char vec_mergeh (vector signed char, vector signed char);
vector unsigned char vec_mergeh (vector unsigned char,
*************** values within the range required for tha
*** 18154,18178 ****
vector signed int vec_mergeh (vector signed int, vector signed int);
vector unsigned int vec_mergeh (vector unsigned int,
vector unsigned int);
!
vector float vec_vmrghw (vector float, vector float);
vector bool int vec_vmrghw (vector bool int, vector bool int);
vector signed int vec_vmrghw (vector signed int, vector signed int);
vector unsigned int vec_vmrghw (vector unsigned int,
vector unsigned int);
!
vector bool short vec_vmrghh (vector bool short, vector bool short);
vector signed short vec_vmrghh (vector signed short,
vector signed short);
vector unsigned short vec_vmrghh (vector unsigned short,
vector unsigned short);
vector pixel vec_vmrghh (vector pixel, vector pixel);
!
vector bool char vec_vmrghb (vector bool char, vector bool char);
vector signed char vec_vmrghb (vector signed char, vector signed char);
vector unsigned char vec_vmrghb (vector unsigned char,
vector unsigned char);
!
vector bool char vec_mergel (vector bool char, vector bool char);
vector signed char vec_mergel (vector signed char, vector signed char);
vector unsigned char vec_mergel (vector unsigned char,
--- 18194,18218 ----
vector signed int vec_mergeh (vector signed int, vector signed int);
vector unsigned int vec_mergeh (vector unsigned int,
vector unsigned int);
!
vector float vec_vmrghw (vector float, vector float);
vector bool int vec_vmrghw (vector bool int, vector bool int);
vector signed int vec_vmrghw (vector signed int, vector signed int);
vector unsigned int vec_vmrghw (vector unsigned int,
vector unsigned int);
!
vector bool short vec_vmrghh (vector bool short, vector bool short);
vector signed short vec_vmrghh (vector signed short,
vector signed short);
vector unsigned short vec_vmrghh (vector unsigned short,
vector unsigned short);
vector pixel vec_vmrghh (vector pixel, vector pixel);
!
vector bool char vec_vmrghb (vector bool char, vector bool char);
vector signed char vec_vmrghb (vector signed char, vector signed char);
vector unsigned char vec_vmrghb (vector unsigned char,
vector unsigned char);
!
vector bool char vec_mergel (vector bool char, vector bool char);
vector signed char vec_mergel (vector signed char, vector signed char);
vector unsigned char vec_mergel (vector unsigned char,
*************** values within the range required for tha
*** 18188,18214 ****
vector signed int vec_mergel (vector signed int, vector signed int);
vector unsigned int vec_mergel (vector unsigned int,
vector unsigned int);
!
vector float vec_vmrglw (vector float, vector float);
vector signed int vec_vmrglw (vector signed int, vector signed int);
vector unsigned int vec_vmrglw (vector unsigned int,
vector unsigned int);
vector bool int vec_vmrglw (vector bool int, vector bool int);
!
vector bool short vec_vmrglh (vector bool short, vector bool short);
vector signed short vec_vmrglh (vector signed short,
vector signed short);
vector unsigned short vec_vmrglh (vector unsigned short,
vector unsigned short);
vector pixel vec_vmrglh (vector pixel, vector pixel);
!
vector bool char vec_vmrglb (vector bool char, vector bool char);
vector signed char vec_vmrglb (vector signed char, vector signed char);
vector unsigned char vec_vmrglb (vector unsigned char,
vector unsigned char);
!
vector unsigned short vec_mfvscr (void);
!
vector unsigned char vec_min (vector bool char, vector unsigned char);
vector unsigned char vec_min (vector unsigned char, vector bool char);
vector unsigned char vec_min (vector unsigned char,
--- 18228,18254 ----
vector signed int vec_mergel (vector signed int, vector signed int);
vector unsigned int vec_mergel (vector unsigned int,
vector unsigned int);
!
vector float vec_vmrglw (vector float, vector float);
vector signed int vec_vmrglw (vector signed int, vector signed int);
vector unsigned int vec_vmrglw (vector unsigned int,
vector unsigned int);
vector bool int vec_vmrglw (vector bool int, vector bool int);
!
vector bool short vec_vmrglh (vector bool short, vector bool short);
vector signed short vec_vmrglh (vector signed short,
vector signed short);
vector unsigned short vec_vmrglh (vector unsigned short,
vector unsigned short);
vector pixel vec_vmrglh (vector pixel, vector pixel);
!
vector bool char vec_vmrglb (vector bool char, vector bool char);
vector signed char vec_vmrglb (vector signed char, vector signed char);
vector unsigned char vec_vmrglb (vector unsigned char,
vector unsigned char);
!
vector unsigned short vec_mfvscr (void);
!
vector unsigned char vec_min (vector bool char, vector unsigned char);
vector unsigned char vec_min (vector unsigned char, vector bool char);
vector unsigned char vec_min (vector unsigned char,
*************** values within the range required for tha
*** 18232,18272 ****
vector signed int vec_min (vector signed int, vector bool int);
vector signed int vec_min (vector signed int, vector signed int);
vector float vec_min (vector float, vector float);
!
vector float vec_vminfp (vector float, vector float);
!
vector signed int vec_vminsw (vector bool int, vector signed int);
vector signed int vec_vminsw (vector signed int, vector bool int);
vector signed int vec_vminsw (vector signed int, vector signed int);
!
vector unsigned int vec_vminuw (vector bool int, vector unsigned int);
vector unsigned int vec_vminuw (vector unsigned int, vector bool int);
vector unsigned int vec_vminuw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vminsh (vector bool short, vector signed short);
vector signed short vec_vminsh (vector signed short, vector bool short);
vector signed short vec_vminsh (vector signed short,
vector signed short);
!
vector unsigned short vec_vminuh (vector bool short,
vector unsigned short);
vector unsigned short vec_vminuh (vector unsigned short,
vector bool short);
vector unsigned short vec_vminuh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vminsb (vector bool char, vector signed char);
vector signed char vec_vminsb (vector signed char, vector bool char);
vector signed char vec_vminsb (vector signed char, vector signed char);
!
vector unsigned char vec_vminub (vector bool char,
vector unsigned char);
vector unsigned char vec_vminub (vector unsigned char,
vector bool char);
vector unsigned char vec_vminub (vector unsigned char,
vector unsigned char);
!
vector signed short vec_mladd (vector signed short,
vector signed short,
vector signed short);
--- 18272,18312 ----
vector signed int vec_min (vector signed int, vector bool int);
vector signed int vec_min (vector signed int, vector signed int);
vector float vec_min (vector float, vector float);
!
vector float vec_vminfp (vector float, vector float);
!
vector signed int vec_vminsw (vector bool int, vector signed int);
vector signed int vec_vminsw (vector signed int, vector bool int);
vector signed int vec_vminsw (vector signed int, vector signed int);
!
vector unsigned int vec_vminuw (vector bool int, vector unsigned int);
vector unsigned int vec_vminuw (vector unsigned int, vector bool int);
vector unsigned int vec_vminuw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vminsh (vector bool short, vector signed short);
vector signed short vec_vminsh (vector signed short, vector bool short);
vector signed short vec_vminsh (vector signed short,
vector signed short);
!
vector unsigned short vec_vminuh (vector bool short,
vector unsigned short);
vector unsigned short vec_vminuh (vector unsigned short,
vector bool short);
vector unsigned short vec_vminuh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vminsb (vector bool char, vector signed char);
vector signed char vec_vminsb (vector signed char, vector bool char);
vector signed char vec_vminsb (vector signed char, vector signed char);
!
vector unsigned char vec_vminub (vector bool char,
vector unsigned char);
vector unsigned char vec_vminub (vector unsigned char,
vector bool char);
vector unsigned char vec_vminub (vector unsigned char,
vector unsigned char);
!
vector signed short vec_mladd (vector signed short,
vector signed short,
vector signed short);
*************** values within the range required for tha
*** 18279,18289 ****
vector unsigned short vec_mladd (vector unsigned short,
vector unsigned short,
vector unsigned short);
!
vector signed short vec_mradds (vector signed short,
vector signed short,
vector signed short);
!
vector unsigned int vec_msum (vector unsigned char,
vector unsigned char,
vector unsigned int);
--- 18319,18329 ----
vector unsigned short vec_mladd (vector unsigned short,
vector unsigned short,
vector unsigned short);
!
vector signed short vec_mradds (vector signed short,
vector signed short,
vector signed short);
!
vector unsigned int vec_msum (vector unsigned char,
vector unsigned char,
vector unsigned int);
*************** values within the range required for tha
*** 18296,18333 ****
vector signed int vec_msum (vector signed short,
vector signed short,
vector signed int);
!
vector signed int vec_vmsumshm (vector signed short,
vector signed short,
vector signed int);
!
vector unsigned int vec_vmsumuhm (vector unsigned short,
vector unsigned short,
vector unsigned int);
!
vector signed int vec_vmsummbm (vector signed char,
vector unsigned char,
vector signed int);
!
vector unsigned int vec_vmsumubm (vector unsigned char,
vector unsigned char,
vector unsigned int);
!
vector unsigned int vec_msums (vector unsigned short,
vector unsigned short,
vector unsigned int);
vector signed int vec_msums (vector signed short,
vector signed short,
vector signed int);
!
vector signed int vec_vmsumshs (vector signed short,
vector signed short,
vector signed int);
!
vector unsigned int vec_vmsumuhs (vector unsigned short,
vector unsigned short,
vector unsigned int);
!
void vec_mtvscr (vector signed int);
void vec_mtvscr (vector unsigned int);
void vec_mtvscr (vector bool int);
--- 18336,18373 ----
vector signed int vec_msum (vector signed short,
vector signed short,
vector signed int);
!
vector signed int vec_vmsumshm (vector signed short,
vector signed short,
vector signed int);
!
vector unsigned int vec_vmsumuhm (vector unsigned short,
vector unsigned short,
vector unsigned int);
!
vector signed int vec_vmsummbm (vector signed char,
vector unsigned char,
vector signed int);
!
vector unsigned int vec_vmsumubm (vector unsigned char,
vector unsigned char,
vector unsigned int);
!
vector unsigned int vec_msums (vector unsigned short,
vector unsigned short,
vector unsigned int);
vector signed int vec_msums (vector signed short,
vector signed short,
vector signed int);
!
vector signed int vec_vmsumshs (vector signed short,
vector signed short,
vector signed int);
!
vector unsigned int vec_vmsumuhs (vector unsigned short,
vector unsigned short,
vector unsigned int);
!
void vec_mtvscr (vector signed int);
void vec_mtvscr (vector unsigned int);
void vec_mtvscr (vector bool int);
*************** values within the range required for tha
*** 18338,18344 ****
void vec_mtvscr (vector signed char);
void vec_mtvscr (vector unsigned char);
void vec_mtvscr (vector bool char);
!
vector unsigned short vec_mule (vector unsigned char,
vector unsigned char);
vector signed short vec_mule (vector signed char,
--- 18378,18384 ----
void vec_mtvscr (vector signed char);
void vec_mtvscr (vector unsigned char);
void vec_mtvscr (vector bool char);
!
vector unsigned short vec_mule (vector unsigned char,
vector unsigned char);
vector signed short vec_mule (vector signed char,
*************** values within the range required for tha
*** 18346,18385 ****
vector unsigned int vec_mule (vector unsigned short,
vector unsigned short);
vector signed int vec_mule (vector signed short, vector signed short);
!
vector signed int vec_vmulesh (vector signed short,
vector signed short);
!
vector unsigned int vec_vmuleuh (vector unsigned short,
vector unsigned short);
!
vector signed short vec_vmulesb (vector signed char,
vector signed char);
!
vector unsigned short vec_vmuleub (vector unsigned char,
vector unsigned char);
!
vector unsigned short vec_mulo (vector unsigned char,
vector unsigned char);
vector signed short vec_mulo (vector signed char, vector signed char);
vector unsigned int vec_mulo (vector unsigned short,
vector unsigned short);
vector signed int vec_mulo (vector signed short, vector signed short);
!
vector signed int vec_vmulosh (vector signed short,
vector signed short);
!
vector unsigned int vec_vmulouh (vector unsigned short,
vector unsigned short);
!
vector signed short vec_vmulosb (vector signed char,
vector signed char);
!
vector unsigned short vec_vmuloub (vector unsigned char,
vector unsigned char);
!
vector float vec_nmsub (vector float, vector float, vector float);
!
vector float vec_nor (vector float, vector float);
vector signed int vec_nor (vector signed int, vector signed int);
vector unsigned int vec_nor (vector unsigned int, vector unsigned int);
--- 18386,18425 ----
vector unsigned int vec_mule (vector unsigned short,
vector unsigned short);
vector signed int vec_mule (vector signed short, vector signed short);
!
vector signed int vec_vmulesh (vector signed short,
vector signed short);
!
vector unsigned int vec_vmuleuh (vector unsigned short,
vector unsigned short);
!
vector signed short vec_vmulesb (vector signed char,
vector signed char);
!
vector unsigned short vec_vmuleub (vector unsigned char,
vector unsigned char);
!
vector unsigned short vec_mulo (vector unsigned char,
vector unsigned char);
vector signed short vec_mulo (vector signed char, vector signed char);
vector unsigned int vec_mulo (vector unsigned short,
vector unsigned short);
vector signed int vec_mulo (vector signed short, vector signed short);
!
vector signed int vec_vmulosh (vector signed short,
vector signed short);
!
vector unsigned int vec_vmulouh (vector unsigned short,
vector unsigned short);
!
vector signed short vec_vmulosb (vector signed char,
vector signed char);
!
vector unsigned short vec_vmuloub (vector unsigned char,
vector unsigned char);
!
vector float vec_nmsub (vector float, vector float, vector float);
!
vector float vec_nor (vector float, vector float);
vector signed int vec_nor (vector signed int, vector signed int);
vector unsigned int vec_nor (vector unsigned int, vector unsigned int);
*************** values within the range required for tha
*** 18392,18398 ****
vector unsigned char vec_nor (vector unsigned char,
vector unsigned char);
vector bool char vec_nor (vector bool char, vector bool char);
!
vector float vec_or (vector float, vector float);
vector float vec_or (vector float, vector bool int);
vector float vec_or (vector bool int, vector float);
--- 18432,18438 ----
vector unsigned char vec_nor (vector unsigned char,
vector unsigned char);
vector bool char vec_nor (vector bool char, vector bool char);
!
vector float vec_or (vector float, vector float);
vector float vec_or (vector float, vector bool int);
vector float vec_or (vector bool int, vector float);
*************** values within the range required for tha
*** 18419,18425 ****
vector unsigned char vec_or (vector unsigned char, vector bool char);
vector unsigned char vec_or (vector unsigned char,
vector unsigned char);
!
vector signed char vec_pack (vector signed short, vector signed short);
vector unsigned char vec_pack (vector unsigned short,
vector unsigned short);
--- 18459,18465 ----
vector unsigned char vec_or (vector unsigned char, vector bool char);
vector unsigned char vec_or (vector unsigned char,
vector unsigned char);
!
vector signed char vec_pack (vector signed short, vector signed short);
vector unsigned char vec_pack (vector unsigned short,
vector unsigned short);
*************** values within the range required for tha
*** 18428,18465 ****
vector unsigned short vec_pack (vector unsigned int,
vector unsigned int);
vector bool short vec_pack (vector bool int, vector bool int);
!
vector bool short vec_vpkuwum (vector bool int, vector bool int);
vector signed short vec_vpkuwum (vector signed int, vector signed int);
vector unsigned short vec_vpkuwum (vector unsigned int,
vector unsigned int);
!
vector bool char vec_vpkuhum (vector bool short, vector bool short);
vector signed char vec_vpkuhum (vector signed short,
vector signed short);
vector unsigned char vec_vpkuhum (vector unsigned short,
vector unsigned short);
!
vector pixel vec_packpx (vector unsigned int, vector unsigned int);
!
vector unsigned char vec_packs (vector unsigned short,
vector unsigned short);
vector signed char vec_packs (vector signed short, vector signed short);
vector unsigned short vec_packs (vector unsigned int,
vector unsigned int);
vector signed short vec_packs (vector signed int, vector signed int);
!
vector signed short vec_vpkswss (vector signed int, vector signed int);
!
vector unsigned short vec_vpkuwus (vector unsigned int,
vector unsigned int);
!
vector signed char vec_vpkshss (vector signed short,
vector signed short);
!
vector unsigned char vec_vpkuhus (vector unsigned short,
vector unsigned short);
!
vector unsigned char vec_packsu (vector unsigned short,
vector unsigned short);
vector unsigned char vec_packsu (vector signed short,
--- 18468,18505 ----
vector unsigned short vec_pack (vector unsigned int,
vector unsigned int);
vector bool short vec_pack (vector bool int, vector bool int);
!
vector bool short vec_vpkuwum (vector bool int, vector bool int);
vector signed short vec_vpkuwum (vector signed int, vector signed int);
vector unsigned short vec_vpkuwum (vector unsigned int,
vector unsigned int);
!
vector bool char vec_vpkuhum (vector bool short, vector bool short);
vector signed char vec_vpkuhum (vector signed short,
vector signed short);
vector unsigned char vec_vpkuhum (vector unsigned short,
vector unsigned short);
!
vector pixel vec_packpx (vector unsigned int, vector unsigned int);
!
vector unsigned char vec_packs (vector unsigned short,
vector unsigned short);
vector signed char vec_packs (vector signed short, vector signed short);
vector unsigned short vec_packs (vector unsigned int,
vector unsigned int);
vector signed short vec_packs (vector signed int, vector signed int);
!
vector signed short vec_vpkswss (vector signed int, vector signed int);
!
vector unsigned short vec_vpkuwus (vector unsigned int,
vector unsigned int);
!
vector signed char vec_vpkshss (vector signed short,
vector signed short);
!
vector unsigned char vec_vpkuhus (vector unsigned short,
vector unsigned short);
!
vector unsigned char vec_packsu (vector unsigned short,
vector unsigned short);
vector unsigned char vec_packsu (vector signed short,
*************** values within the range required for tha
*** 18467,18479 ****
vector unsigned short vec_packsu (vector unsigned int,
vector unsigned int);
vector unsigned short vec_packsu (vector signed int, vector signed int);
!
vector unsigned short vec_vpkswus (vector signed int,
vector signed int);
!
vector unsigned char vec_vpkshus (vector signed short,
vector signed short);
!
vector float vec_perm (vector float,
vector float,
vector unsigned char);
--- 18507,18519 ----
vector unsigned short vec_packsu (vector unsigned int,
vector unsigned int);
vector unsigned short vec_packsu (vector signed int, vector signed int);
!
vector unsigned short vec_vpkswus (vector signed int,
vector signed int);
!
vector unsigned char vec_vpkshus (vector signed short,
vector signed short);
!
vector float vec_perm (vector float,
vector float,
vector unsigned char);
*************** values within the range required for tha
*** 18507,18515 ****
vector bool char vec_perm (vector bool char,
vector bool char,
vector unsigned char);
!
vector float vec_re (vector float);
!
vector signed char vec_rl (vector signed char,
vector unsigned char);
vector unsigned char vec_rl (vector unsigned char,
--- 18547,18555 ----
vector bool char vec_perm (vector bool char,
vector bool char,
vector unsigned char);
!
vector float vec_re (vector float);
!
vector signed char vec_rl (vector signed char,
vector unsigned char);
vector unsigned char vec_rl (vector unsigned char,
*************** values within the range required for tha
*** 18519,18541 ****
vector unsigned short);
vector signed int vec_rl (vector signed int, vector unsigned int);
vector unsigned int vec_rl (vector unsigned int, vector unsigned int);
!
vector signed int vec_vrlw (vector signed int, vector unsigned int);
vector unsigned int vec_vrlw (vector unsigned int, vector unsigned int);
!
vector signed short vec_vrlh (vector signed short,
vector unsigned short);
vector unsigned short vec_vrlh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vrlb (vector signed char, vector unsigned char);
vector unsigned char vec_vrlb (vector unsigned char,
vector unsigned char);
!
vector float vec_round (vector float);
!
vector float vec_rsqrte (vector float);
!
vector float vec_sel (vector float, vector float, vector bool int);
vector float vec_sel (vector float, vector float, vector unsigned int);
vector signed int vec_sel (vector signed int,
--- 18559,18581 ----
vector unsigned short);
vector signed int vec_rl (vector signed int, vector unsigned int);
vector unsigned int vec_rl (vector unsigned int, vector unsigned int);
!
vector signed int vec_vrlw (vector signed int, vector unsigned int);
vector unsigned int vec_vrlw (vector unsigned int, vector unsigned int);
!
vector signed short vec_vrlh (vector signed short,
vector unsigned short);
vector unsigned short vec_vrlh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vrlb (vector signed char, vector unsigned char);
vector unsigned char vec_vrlb (vector unsigned char,
vector unsigned char);
!
vector float vec_round (vector float);
!
vector float vec_rsqrte (vector float);
!
vector float vec_sel (vector float, vector float, vector bool int);
vector float vec_sel (vector float, vector float, vector unsigned int);
vector signed int vec_sel (vector signed int,
*************** values within the range required for tha
*** 18592,18598 ****
vector bool char vec_sel (vector bool char,
vector bool char,
vector unsigned char);
!
vector signed char vec_sl (vector signed char,
vector unsigned char);
vector unsigned char vec_sl (vector unsigned char,
--- 18632,18638 ----
vector bool char vec_sel (vector bool char,
vector bool char,
vector unsigned char);
!
vector signed char vec_sl (vector signed char,
vector unsigned char);
vector unsigned char vec_sl (vector unsigned char,
*************** values within the range required for tha
*** 18602,18620 ****
vector unsigned short);
vector signed int vec_sl (vector signed int, vector unsigned int);
vector unsigned int vec_sl (vector unsigned int, vector unsigned int);
!
vector signed int vec_vslw (vector signed int, vector unsigned int);
vector unsigned int vec_vslw (vector unsigned int, vector unsigned int);
!
vector signed short vec_vslh (vector signed short,
vector unsigned short);
vector unsigned short vec_vslh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vslb (vector signed char, vector unsigned char);
vector unsigned char vec_vslb (vector unsigned char,
vector unsigned char);
!
vector float vec_sld (vector float, vector float, const int);
vector signed int vec_sld (vector signed int,
vector signed int,
--- 18642,18660 ----
vector unsigned short);
vector signed int vec_sl (vector signed int, vector unsigned int);
vector unsigned int vec_sl (vector unsigned int, vector unsigned int);
!
vector signed int vec_vslw (vector signed int, vector unsigned int);
vector unsigned int vec_vslw (vector unsigned int, vector unsigned int);
!
vector signed short vec_vslh (vector signed short,
vector unsigned short);
vector unsigned short vec_vslh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vslb (vector signed char, vector unsigned char);
vector unsigned char vec_vslb (vector unsigned char,
vector unsigned char);
!
vector float vec_sld (vector float, vector float, const int);
vector signed int vec_sld (vector signed int,
vector signed int,
*************** values within the range required for tha
*** 18646,18652 ****
vector bool char vec_sld (vector bool char,
vector bool char,
const int);
!
vector signed int vec_sll (vector signed int,
vector unsigned int);
vector signed int vec_sll (vector signed int,
--- 18686,18692 ----
vector bool char vec_sld (vector bool char,
vector bool char,
const int);
!
vector signed int vec_sll (vector signed int,
vector unsigned int);
vector signed int vec_sll (vector signed int,
*************** values within the range required for tha
*** 18695,18701 ****
vector bool char vec_sll (vector bool char, vector unsigned int);
vector bool char vec_sll (vector bool char, vector unsigned short);
vector bool char vec_sll (vector bool char, vector unsigned char);
!
vector float vec_slo (vector float, vector signed char);
vector float vec_slo (vector float, vector unsigned char);
vector signed int vec_slo (vector signed int, vector signed char);
--- 18735,18741 ----
vector bool char vec_sll (vector bool char, vector unsigned int);
vector bool char vec_sll (vector bool char, vector unsigned short);
vector bool char vec_sll (vector bool char, vector unsigned char);
!
vector float vec_slo (vector float, vector signed char);
vector float vec_slo (vector float, vector unsigned char);
vector signed int vec_slo (vector signed int, vector signed char);
*************** values within the range required for tha
*** 18715,18721 ****
vector unsigned char vec_slo (vector unsigned char, vector signed char);
vector unsigned char vec_slo (vector unsigned char,
vector unsigned char);
!
vector signed char vec_splat (vector signed char, const int);
vector unsigned char vec_splat (vector unsigned char, const int);
vector bool char vec_splat (vector bool char, const int);
--- 18755,18761 ----
vector unsigned char vec_slo (vector unsigned char, vector signed char);
vector unsigned char vec_slo (vector unsigned char,
vector unsigned char);
!
vector signed char vec_splat (vector signed char, const int);
vector unsigned char vec_splat (vector unsigned char, const int);
vector bool char vec_splat (vector bool char, const int);
*************** values within the range required for tha
*** 18727,18759 ****
vector signed int vec_splat (vector signed int, const int);
vector unsigned int vec_splat (vector unsigned int, const int);
vector bool int vec_splat (vector bool int, const int);
!
vector float vec_vspltw (vector float, const int);
vector signed int vec_vspltw (vector signed int, const int);
vector unsigned int vec_vspltw (vector unsigned int, const int);
vector bool int vec_vspltw (vector bool int, const int);
!
vector bool short vec_vsplth (vector bool short, const int);
vector signed short vec_vsplth (vector signed short, const int);
vector unsigned short vec_vsplth (vector unsigned short, const int);
vector pixel vec_vsplth (vector pixel, const int);
!
vector signed char vec_vspltb (vector signed char, const int);
vector unsigned char vec_vspltb (vector unsigned char, const int);
vector bool char vec_vspltb (vector bool char, const int);
!
vector signed char vec_splat_s8 (const int);
!
vector signed short vec_splat_s16 (const int);
!
vector signed int vec_splat_s32 (const int);
!
vector unsigned char vec_splat_u8 (const int);
!
vector unsigned short vec_splat_u16 (const int);
!
vector unsigned int vec_splat_u32 (const int);
!
vector signed char vec_sr (vector signed char, vector unsigned char);
vector unsigned char vec_sr (vector unsigned char,
vector unsigned char);
--- 18767,18799 ----
vector signed int vec_splat (vector signed int, const int);
vector unsigned int vec_splat (vector unsigned int, const int);
vector bool int vec_splat (vector bool int, const int);
!
vector float vec_vspltw (vector float, const int);
vector signed int vec_vspltw (vector signed int, const int);
vector unsigned int vec_vspltw (vector unsigned int, const int);
vector bool int vec_vspltw (vector bool int, const int);
!
vector bool short vec_vsplth (vector bool short, const int);
vector signed short vec_vsplth (vector signed short, const int);
vector unsigned short vec_vsplth (vector unsigned short, const int);
vector pixel vec_vsplth (vector pixel, const int);
!
vector signed char vec_vspltb (vector signed char, const int);
vector unsigned char vec_vspltb (vector unsigned char, const int);
vector bool char vec_vspltb (vector bool char, const int);
!
vector signed char vec_splat_s8 (const int);
!
vector signed short vec_splat_s16 (const int);
!
vector signed int vec_splat_s32 (const int);
!
vector unsigned char vec_splat_u8 (const int);
!
vector unsigned short vec_splat_u16 (const int);
!
vector unsigned int vec_splat_u32 (const int);
!
vector signed char vec_sr (vector signed char, vector unsigned char);
vector unsigned char vec_sr (vector unsigned char,
vector unsigned char);
*************** values within the range required for tha
*** 18763,18781 ****
vector unsigned short);
vector signed int vec_sr (vector signed int, vector unsigned int);
vector unsigned int vec_sr (vector unsigned int, vector unsigned int);
!
vector signed int vec_vsrw (vector signed int, vector unsigned int);
vector unsigned int vec_vsrw (vector unsigned int, vector unsigned int);
!
vector signed short vec_vsrh (vector signed short,
vector unsigned short);
vector unsigned short vec_vsrh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsrb (vector signed char, vector unsigned char);
vector unsigned char vec_vsrb (vector unsigned char,
vector unsigned char);
!
vector signed char vec_sra (vector signed char, vector unsigned char);
vector unsigned char vec_sra (vector unsigned char,
vector unsigned char);
--- 18803,18821 ----
vector unsigned short);
vector signed int vec_sr (vector signed int, vector unsigned int);
vector unsigned int vec_sr (vector unsigned int, vector unsigned int);
!
vector signed int vec_vsrw (vector signed int, vector unsigned int);
vector unsigned int vec_vsrw (vector unsigned int, vector unsigned int);
!
vector signed short vec_vsrh (vector signed short,
vector unsigned short);
vector unsigned short vec_vsrh (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsrb (vector signed char, vector unsigned char);
vector unsigned char vec_vsrb (vector unsigned char,
vector unsigned char);
!
vector signed char vec_sra (vector signed char, vector unsigned char);
vector unsigned char vec_sra (vector unsigned char,
vector unsigned char);
*************** values within the range required for tha
*** 18785,18804 ****
vector unsigned short);
vector signed int vec_sra (vector signed int, vector unsigned int);
vector unsigned int vec_sra (vector unsigned int, vector unsigned int);
!
vector signed int vec_vsraw (vector signed int, vector unsigned int);
vector unsigned int vec_vsraw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vsrah (vector signed short,
vector unsigned short);
vector unsigned short vec_vsrah (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsrab (vector signed char, vector unsigned char);
vector unsigned char vec_vsrab (vector unsigned char,
vector unsigned char);
!
vector signed int vec_srl (vector signed int, vector unsigned int);
vector signed int vec_srl (vector signed int, vector unsigned short);
vector signed int vec_srl (vector signed int, vector unsigned char);
--- 18825,18844 ----
vector unsigned short);
vector signed int vec_sra (vector signed int, vector unsigned int);
vector unsigned int vec_sra (vector unsigned int, vector unsigned int);
!
vector signed int vec_vsraw (vector signed int, vector unsigned int);
vector unsigned int vec_vsraw (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vsrah (vector signed short,
vector unsigned short);
vector unsigned short vec_vsrah (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsrab (vector signed char, vector unsigned char);
vector unsigned char vec_vsrab (vector unsigned char,
vector unsigned char);
!
vector signed int vec_srl (vector signed int, vector unsigned int);
vector signed int vec_srl (vector signed int, vector unsigned short);
vector signed int vec_srl (vector signed int, vector unsigned char);
*************** values within the range required for tha
*** 18837,18843 ****
vector bool char vec_srl (vector bool char, vector unsigned int);
vector bool char vec_srl (vector bool char, vector unsigned short);
vector bool char vec_srl (vector bool char, vector unsigned char);
!
vector float vec_sro (vector float, vector signed char);
vector float vec_sro (vector float, vector unsigned char);
vector signed int vec_sro (vector signed int, vector signed char);
--- 18877,18883 ----
vector bool char vec_srl (vector bool char, vector unsigned int);
vector bool char vec_srl (vector bool char, vector unsigned short);
vector bool char vec_srl (vector bool char, vector unsigned char);
!
vector float vec_sro (vector float, vector signed char);
vector float vec_sro (vector float, vector unsigned char);
vector signed int vec_sro (vector signed int, vector signed char);
*************** values within the range required for tha
*** 18857,18863 ****
vector unsigned char vec_sro (vector unsigned char, vector signed char);
vector unsigned char vec_sro (vector unsigned char,
vector unsigned char);
!
void vec_st (vector float, int, vector float *);
void vec_st (vector float, int, float *);
void vec_st (vector signed int, int, vector signed int *);
--- 18897,18903 ----
vector unsigned char vec_sro (vector unsigned char, vector signed char);
vector unsigned char vec_sro (vector unsigned char,
vector unsigned char);
!
void vec_st (vector float, int, vector float *);
void vec_st (vector float, int, float *);
void vec_st (vector signed int, int, vector signed int *);
*************** values within the range required for tha
*** 18884,18890 ****
void vec_st (vector bool char, int, vector bool char *);
void vec_st (vector bool char, int, unsigned char *);
void vec_st (vector bool char, int, signed char *);
!
void vec_ste (vector signed char, int, signed char *);
void vec_ste (vector unsigned char, int, unsigned char *);
void vec_ste (vector bool char, int, signed char *);
--- 18924,18930 ----
void vec_st (vector bool char, int, vector bool char *);
void vec_st (vector bool char, int, unsigned char *);
void vec_st (vector bool char, int, signed char *);
!
void vec_ste (vector signed char, int, signed char *);
void vec_ste (vector unsigned char, int, unsigned char *);
void vec_ste (vector bool char, int, signed char *);
*************** values within the range required for tha
*** 18900,18924 ****
void vec_ste (vector unsigned int, int, unsigned int *);
void vec_ste (vector bool int, int, int *);
void vec_ste (vector bool int, int, unsigned int *);
!
void vec_stvewx (vector float, int, float *);
void vec_stvewx (vector signed int, int, int *);
void vec_stvewx (vector unsigned int, int, unsigned int *);
void vec_stvewx (vector bool int, int, int *);
void vec_stvewx (vector bool int, int, unsigned int *);
!
void vec_stvehx (vector signed short, int, short *);
void vec_stvehx (vector unsigned short, int, unsigned short *);
void vec_stvehx (vector bool short, int, short *);
void vec_stvehx (vector bool short, int, unsigned short *);
void vec_stvehx (vector pixel, int, short *);
void vec_stvehx (vector pixel, int, unsigned short *);
!
void vec_stvebx (vector signed char, int, signed char *);
void vec_stvebx (vector unsigned char, int, unsigned char *);
void vec_stvebx (vector bool char, int, signed char *);
void vec_stvebx (vector bool char, int, unsigned char *);
!
void vec_stl (vector float, int, vector float *);
void vec_stl (vector float, int, float *);
void vec_stl (vector signed int, int, vector signed int *);
--- 18940,18964 ----
void vec_ste (vector unsigned int, int, unsigned int *);
void vec_ste (vector bool int, int, int *);
void vec_ste (vector bool int, int, unsigned int *);
!
void vec_stvewx (vector float, int, float *);
void vec_stvewx (vector signed int, int, int *);
void vec_stvewx (vector unsigned int, int, unsigned int *);
void vec_stvewx (vector bool int, int, int *);
void vec_stvewx (vector bool int, int, unsigned int *);
!
void vec_stvehx (vector signed short, int, short *);
void vec_stvehx (vector unsigned short, int, unsigned short *);
void vec_stvehx (vector bool short, int, short *);
void vec_stvehx (vector bool short, int, unsigned short *);
void vec_stvehx (vector pixel, int, short *);
void vec_stvehx (vector pixel, int, unsigned short *);
!
void vec_stvebx (vector signed char, int, signed char *);
void vec_stvebx (vector unsigned char, int, unsigned char *);
void vec_stvebx (vector bool char, int, signed char *);
void vec_stvebx (vector bool char, int, unsigned char *);
!
void vec_stl (vector float, int, vector float *);
void vec_stl (vector float, int, float *);
void vec_stl (vector signed int, int, vector signed int *);
*************** values within the range required for tha
*** 18945,18951 ****
void vec_stl (vector bool char, int, vector bool char *);
void vec_stl (vector bool char, int, unsigned char *);
void vec_stl (vector bool char, int, signed char *);
!
vector signed char vec_sub (vector bool char, vector signed char);
vector signed char vec_sub (vector signed char, vector bool char);
vector signed char vec_sub (vector signed char, vector signed char);
--- 18985,18991 ----
void vec_stl (vector bool char, int, vector bool char *);
void vec_stl (vector bool char, int, unsigned char *);
void vec_stl (vector bool char, int, signed char *);
!
vector signed char vec_sub (vector bool char, vector signed char);
vector signed char vec_sub (vector signed char, vector bool char);
vector signed char vec_sub (vector signed char, vector signed char);
*************** values within the range required for tha
*** 18969,18977 ****
vector unsigned int vec_sub (vector unsigned int, vector bool int);
vector unsigned int vec_sub (vector unsigned int, vector unsigned int);
vector float vec_sub (vector float, vector float);
!
vector float vec_vsubfp (vector float, vector float);
!
vector signed int vec_vsubuwm (vector bool int, vector signed int);
vector signed int vec_vsubuwm (vector signed int, vector bool int);
vector signed int vec_vsubuwm (vector signed int, vector signed int);
--- 19009,19017 ----
vector unsigned int vec_sub (vector unsigned int, vector bool int);
vector unsigned int vec_sub (vector unsigned int, vector unsigned int);
vector float vec_sub (vector float, vector float);
!
vector float vec_vsubfp (vector float, vector float);
!
vector signed int vec_vsubuwm (vector bool int, vector signed int);
vector signed int vec_vsubuwm (vector signed int, vector bool int);
vector signed int vec_vsubuwm (vector signed int, vector signed int);
*************** values within the range required for tha
*** 18979,18985 ****
vector unsigned int vec_vsubuwm (vector unsigned int, vector bool int);
vector unsigned int vec_vsubuwm (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vsubuhm (vector bool short,
vector signed short);
vector signed short vec_vsubuhm (vector signed short,
--- 19019,19025 ----
vector unsigned int vec_vsubuwm (vector unsigned int, vector bool int);
vector unsigned int vec_vsubuwm (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vsubuhm (vector bool short,
vector signed short);
vector signed short vec_vsubuhm (vector signed short,
*************** values within the range required for tha
*** 18992,18998 ****
vector bool short);
vector unsigned short vec_vsubuhm (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsububm (vector bool char, vector signed char);
vector signed char vec_vsububm (vector signed char, vector bool char);
vector signed char vec_vsububm (vector signed char, vector signed char);
--- 19032,19038 ----
vector bool short);
vector unsigned short vec_vsubuhm (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsububm (vector bool char, vector signed char);
vector signed char vec_vsububm (vector signed char, vector bool char);
vector signed char vec_vsububm (vector signed char, vector signed char);
*************** values within the range required for tha
*** 19002,19010 ****
vector bool char);
vector unsigned char vec_vsububm (vector unsigned char,
vector unsigned char);
!
vector unsigned int vec_subc (vector unsigned int, vector unsigned int);
!
vector unsigned char vec_subs (vector bool char, vector unsigned char);
vector unsigned char vec_subs (vector unsigned char, vector bool char);
vector unsigned char vec_subs (vector unsigned char,
--- 19042,19050 ----
vector bool char);
vector unsigned char vec_vsububm (vector unsigned char,
vector unsigned char);
!
vector unsigned int vec_subc (vector unsigned int, vector unsigned int);
!
vector unsigned char vec_subs (vector bool char, vector unsigned char);
vector unsigned char vec_subs (vector unsigned char, vector bool char);
vector unsigned char vec_subs (vector unsigned char,
*************** values within the range required for tha
*** 19027,19113 ****
vector signed int vec_subs (vector bool int, vector signed int);
vector signed int vec_subs (vector signed int, vector bool int);
vector signed int vec_subs (vector signed int, vector signed int);
!
vector signed int vec_vsubsws (vector bool int, vector signed int);
vector signed int vec_vsubsws (vector signed int, vector bool int);
vector signed int vec_vsubsws (vector signed int, vector signed int);
!
vector unsigned int vec_vsubuws (vector bool int, vector unsigned int);
vector unsigned int vec_vsubuws (vector unsigned int, vector bool int);
vector unsigned int vec_vsubuws (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vsubshs (vector bool short,
vector signed short);
vector signed short vec_vsubshs (vector signed short,
vector bool short);
vector signed short vec_vsubshs (vector signed short,
vector signed short);
!
vector unsigned short vec_vsubuhs (vector bool short,
vector unsigned short);
vector unsigned short vec_vsubuhs (vector unsigned short,
vector bool short);
vector unsigned short vec_vsubuhs (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsubsbs (vector bool char, vector signed char);
vector signed char vec_vsubsbs (vector signed char, vector bool char);
vector signed char vec_vsubsbs (vector signed char, vector signed char);
!
vector unsigned char vec_vsububs (vector bool char,
vector unsigned char);
vector unsigned char vec_vsububs (vector unsigned char,
vector bool char);
vector unsigned char vec_vsububs (vector unsigned char,
vector unsigned char);
!
vector unsigned int vec_sum4s (vector unsigned char,
vector unsigned int);
vector signed int vec_sum4s (vector signed char, vector signed int);
vector signed int vec_sum4s (vector signed short, vector signed int);
!
vector signed int vec_vsum4shs (vector signed short, vector signed int);
!
vector signed int vec_vsum4sbs (vector signed char, vector signed int);
!
vector unsigned int vec_vsum4ubs (vector unsigned char,
vector unsigned int);
!
vector signed int vec_sum2s (vector signed int, vector signed int);
!
vector signed int vec_sums (vector signed int, vector signed int);
!
vector float vec_trunc (vector float);
!
vector signed short vec_unpackh (vector signed char);
vector bool short vec_unpackh (vector bool char);
vector signed int vec_unpackh (vector signed short);
vector bool int vec_unpackh (vector bool short);
vector unsigned int vec_unpackh (vector pixel);
!
vector bool int vec_vupkhsh (vector bool short);
vector signed int vec_vupkhsh (vector signed short);
!
vector unsigned int vec_vupkhpx (vector pixel);
!
vector bool short vec_vupkhsb (vector bool char);
vector signed short vec_vupkhsb (vector signed char);
!
vector signed short vec_unpackl (vector signed char);
vector bool short vec_unpackl (vector bool char);
vector unsigned int vec_unpackl (vector pixel);
vector signed int vec_unpackl (vector signed short);
vector bool int vec_unpackl (vector bool short);
!
vector unsigned int vec_vupklpx (vector pixel);
!
vector bool int vec_vupklsh (vector bool short);
vector signed int vec_vupklsh (vector signed short);
!
vector bool short vec_vupklsb (vector bool char);
vector signed short vec_vupklsb (vector signed char);
!
vector float vec_xor (vector float, vector float);
vector float vec_xor (vector float, vector bool int);
vector float vec_xor (vector bool int, vector float);
--- 19067,19153 ----
vector signed int vec_subs (vector bool int, vector signed int);
vector signed int vec_subs (vector signed int, vector bool int);
vector signed int vec_subs (vector signed int, vector signed int);
!
vector signed int vec_vsubsws (vector bool int, vector signed int);
vector signed int vec_vsubsws (vector signed int, vector bool int);
vector signed int vec_vsubsws (vector signed int, vector signed int);
!
vector unsigned int vec_vsubuws (vector bool int, vector unsigned int);
vector unsigned int vec_vsubuws (vector unsigned int, vector bool int);
vector unsigned int vec_vsubuws (vector unsigned int,
vector unsigned int);
!
vector signed short vec_vsubshs (vector bool short,
vector signed short);
vector signed short vec_vsubshs (vector signed short,
vector bool short);
vector signed short vec_vsubshs (vector signed short,
vector signed short);
!
vector unsigned short vec_vsubuhs (vector bool short,
vector unsigned short);
vector unsigned short vec_vsubuhs (vector unsigned short,
vector bool short);
vector unsigned short vec_vsubuhs (vector unsigned short,
vector unsigned short);
!
vector signed char vec_vsubsbs (vector bool char, vector signed char);
vector signed char vec_vsubsbs (vector signed char, vector bool char);
vector signed char vec_vsubsbs (vector signed char, vector signed char);
!
vector unsigned char vec_vsububs (vector bool char,
vector unsigned char);
vector unsigned char vec_vsububs (vector unsigned char,
vector bool char);
vector unsigned char vec_vsububs (vector unsigned char,
vector unsigned char);
!
vector unsigned int vec_sum4s (vector unsigned char,
vector unsigned int);
vector signed int vec_sum4s (vector signed char, vector signed int);
vector signed int vec_sum4s (vector signed short, vector signed int);
!
vector signed int vec_vsum4shs (vector signed short, vector signed int);
!
vector signed int vec_vsum4sbs (vector signed char, vector signed int);
!
vector unsigned int vec_vsum4ubs (vector unsigned char,
vector unsigned int);
!
vector signed int vec_sum2s (vector signed int, vector signed int);
!
vector signed int vec_sums (vector signed int, vector signed int);
!
vector float vec_trunc (vector float);
!
vector signed short vec_unpackh (vector signed char);
vector bool short vec_unpackh (vector bool char);
vector signed int vec_unpackh (vector signed short);
vector bool int vec_unpackh (vector bool short);
vector unsigned int vec_unpackh (vector pixel);
!
vector bool int vec_vupkhsh (vector bool short);
vector signed int vec_vupkhsh (vector signed short);
!
vector unsigned int vec_vupkhpx (vector pixel);
!
vector bool short vec_vupkhsb (vector bool char);
vector signed short vec_vupkhsb (vector signed char);
!
vector signed short vec_unpackl (vector signed char);
vector bool short vec_unpackl (vector bool char);
vector unsigned int vec_unpackl (vector pixel);
vector signed int vec_unpackl (vector signed short);
vector bool int vec_unpackl (vector bool short);
!
vector unsigned int vec_vupklpx (vector pixel);
!
vector bool int vec_vupklsh (vector bool short);
vector signed int vec_vupklsh (vector signed short);
!
vector bool short vec_vupklsb (vector bool char);
vector signed short vec_vupklsb (vector signed char);
!
vector float vec_xor (vector float, vector float);
vector float vec_xor (vector float, vector bool int);
vector float vec_xor (vector bool int, vector float);
*************** values within the range required for tha
*** 19136,19142 ****
vector unsigned char vec_xor (vector unsigned char, vector bool char);
vector unsigned char vec_xor (vector unsigned char,
vector unsigned char);
!
int vec_all_eq (vector signed char, vector bool char);
int vec_all_eq (vector signed char, vector signed char);
int vec_all_eq (vector unsigned char, vector bool char);
--- 19176,19182 ----
vector unsigned char vec_xor (vector unsigned char, vector bool char);
vector unsigned char vec_xor (vector unsigned char,
vector unsigned char);
!
int vec_all_eq (vector signed char, vector bool char);
int vec_all_eq (vector signed char, vector signed char);
int vec_all_eq (vector unsigned char, vector bool char);
*************** values within the range required for tha
*** 19160,19166 ****
int vec_all_eq (vector bool int, vector unsigned int);
int vec_all_eq (vector bool int, vector signed int);
int vec_all_eq (vector float, vector float);
!
int vec_all_ge (vector bool char, vector unsigned char);
int vec_all_ge (vector unsigned char, vector bool char);
int vec_all_ge (vector unsigned char, vector unsigned char);
--- 19200,19206 ----
int vec_all_eq (vector bool int, vector unsigned int);
int vec_all_eq (vector bool int, vector signed int);
int vec_all_eq (vector float, vector float);
!
int vec_all_ge (vector bool char, vector unsigned char);
int vec_all_ge (vector unsigned char, vector bool char);
int vec_all_ge (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19180,19186 ****
int vec_all_ge (vector signed int, vector bool int);
int vec_all_ge (vector signed int, vector signed int);
int vec_all_ge (vector float, vector float);
!
int vec_all_gt (vector bool char, vector unsigned char);
int vec_all_gt (vector unsigned char, vector bool char);
int vec_all_gt (vector unsigned char, vector unsigned char);
--- 19220,19226 ----
int vec_all_ge (vector signed int, vector bool int);
int vec_all_ge (vector signed int, vector signed int);
int vec_all_ge (vector float, vector float);
!
int vec_all_gt (vector bool char, vector unsigned char);
int vec_all_gt (vector unsigned char, vector bool char);
int vec_all_gt (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19200,19208 ****
int vec_all_gt (vector signed int, vector bool int);
int vec_all_gt (vector signed int, vector signed int);
int vec_all_gt (vector float, vector float);
!
int vec_all_in (vector float, vector float);
!
int vec_all_le (vector bool char, vector unsigned char);
int vec_all_le (vector unsigned char, vector bool char);
int vec_all_le (vector unsigned char, vector unsigned char);
--- 19240,19248 ----
int vec_all_gt (vector signed int, vector bool int);
int vec_all_gt (vector signed int, vector signed int);
int vec_all_gt (vector float, vector float);
!
int vec_all_in (vector float, vector float);
!
int vec_all_le (vector bool char, vector unsigned char);
int vec_all_le (vector unsigned char, vector bool char);
int vec_all_le (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19222,19228 ****
int vec_all_le (vector signed int, vector bool int);
int vec_all_le (vector signed int, vector signed int);
int vec_all_le (vector float, vector float);
!
int vec_all_lt (vector bool char, vector unsigned char);
int vec_all_lt (vector unsigned char, vector bool char);
int vec_all_lt (vector unsigned char, vector unsigned char);
--- 19262,19268 ----
int vec_all_le (vector signed int, vector bool int);
int vec_all_le (vector signed int, vector signed int);
int vec_all_le (vector float, vector float);
!
int vec_all_lt (vector bool char, vector unsigned char);
int vec_all_lt (vector unsigned char, vector bool char);
int vec_all_lt (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19242,19250 ****
int vec_all_lt (vector signed int, vector bool int);
int vec_all_lt (vector signed int, vector signed int);
int vec_all_lt (vector float, vector float);
!
int vec_all_nan (vector float);
!
int vec_all_ne (vector signed char, vector bool char);
int vec_all_ne (vector signed char, vector signed char);
int vec_all_ne (vector unsigned char, vector bool char);
--- 19282,19290 ----
int vec_all_lt (vector signed int, vector bool int);
int vec_all_lt (vector signed int, vector signed int);
int vec_all_lt (vector float, vector float);
!
int vec_all_nan (vector float);
!
int vec_all_ne (vector signed char, vector bool char);
int vec_all_ne (vector signed char, vector signed char);
int vec_all_ne (vector unsigned char, vector bool char);
*************** values within the range required for tha
*** 19268,19284 ****
int vec_all_ne (vector bool int, vector unsigned int);
int vec_all_ne (vector bool int, vector signed int);
int vec_all_ne (vector float, vector float);
!
int vec_all_nge (vector float, vector float);
!
int vec_all_ngt (vector float, vector float);
!
int vec_all_nle (vector float, vector float);
!
int vec_all_nlt (vector float, vector float);
!
int vec_all_numeric (vector float);
!
int vec_any_eq (vector signed char, vector bool char);
int vec_any_eq (vector signed char, vector signed char);
int vec_any_eq (vector unsigned char, vector bool char);
--- 19308,19324 ----
int vec_all_ne (vector bool int, vector unsigned int);
int vec_all_ne (vector bool int, vector signed int);
int vec_all_ne (vector float, vector float);
!
int vec_all_nge (vector float, vector float);
!
int vec_all_ngt (vector float, vector float);
!
int vec_all_nle (vector float, vector float);
!
int vec_all_nlt (vector float, vector float);
!
int vec_all_numeric (vector float);
!
int vec_any_eq (vector signed char, vector bool char);
int vec_any_eq (vector signed char, vector signed char);
int vec_any_eq (vector unsigned char, vector bool char);
*************** values within the range required for tha
*** 19302,19308 ****
int vec_any_eq (vector bool int, vector unsigned int);
int vec_any_eq (vector bool int, vector signed int);
int vec_any_eq (vector float, vector float);
!
int vec_any_ge (vector signed char, vector bool char);
int vec_any_ge (vector unsigned char, vector bool char);
int vec_any_ge (vector unsigned char, vector unsigned char);
--- 19342,19348 ----
int vec_any_eq (vector bool int, vector unsigned int);
int vec_any_eq (vector bool int, vector signed int);
int vec_any_eq (vector float, vector float);
!
int vec_any_ge (vector signed char, vector bool char);
int vec_any_ge (vector unsigned char, vector bool char);
int vec_any_ge (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19322,19328 ****
int vec_any_ge (vector bool int, vector unsigned int);
int vec_any_ge (vector bool int, vector signed int);
int vec_any_ge (vector float, vector float);
!
int vec_any_gt (vector bool char, vector unsigned char);
int vec_any_gt (vector unsigned char, vector bool char);
int vec_any_gt (vector unsigned char, vector unsigned char);
--- 19362,19368 ----
int vec_any_ge (vector bool int, vector unsigned int);
int vec_any_ge (vector bool int, vector signed int);
int vec_any_ge (vector float, vector float);
!
int vec_any_gt (vector bool char, vector unsigned char);
int vec_any_gt (vector unsigned char, vector bool char);
int vec_any_gt (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19342,19348 ****
int vec_any_gt (vector signed int, vector bool int);
int vec_any_gt (vector signed int, vector signed int);
int vec_any_gt (vector float, vector float);
!
int vec_any_le (vector bool char, vector unsigned char);
int vec_any_le (vector unsigned char, vector bool char);
int vec_any_le (vector unsigned char, vector unsigned char);
--- 19382,19388 ----
int vec_any_gt (vector signed int, vector bool int);
int vec_any_gt (vector signed int, vector signed int);
int vec_any_gt (vector float, vector float);
!
int vec_any_le (vector bool char, vector unsigned char);
int vec_any_le (vector unsigned char, vector bool char);
int vec_any_le (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19362,19368 ****
int vec_any_le (vector signed int, vector bool int);
int vec_any_le (vector signed int, vector signed int);
int vec_any_le (vector float, vector float);
!
int vec_any_lt (vector bool char, vector unsigned char);
int vec_any_lt (vector unsigned char, vector bool char);
int vec_any_lt (vector unsigned char, vector unsigned char);
--- 19402,19408 ----
int vec_any_le (vector signed int, vector bool int);
int vec_any_le (vector signed int, vector signed int);
int vec_any_le (vector float, vector float);
!
int vec_any_lt (vector bool char, vector unsigned char);
int vec_any_lt (vector unsigned char, vector bool char);
int vec_any_lt (vector unsigned char, vector unsigned char);
*************** values within the range required for tha
*** 19382,19390 ****
int vec_any_lt (vector signed int, vector bool int);
int vec_any_lt (vector signed int, vector signed int);
int vec_any_lt (vector float, vector float);
!
int vec_any_nan (vector float);
!
int vec_any_ne (vector signed char, vector bool char);
int vec_any_ne (vector signed char, vector signed char);
int vec_any_ne (vector unsigned char, vector bool char);
--- 19422,19430 ----
int vec_any_lt (vector signed int, vector bool int);
int vec_any_lt (vector signed int, vector signed int);
int vec_any_lt (vector float, vector float);
!
int vec_any_nan (vector float);
!
int vec_any_ne (vector signed char, vector bool char);
int vec_any_ne (vector signed char, vector signed char);
int vec_any_ne (vector unsigned char, vector bool char);
*************** values within the range required for tha
*** 19408,19433 ****
int vec_any_ne (vector bool int, vector unsigned int);
int vec_any_ne (vector bool int, vector signed int);
int vec_any_ne (vector float, vector float);
!
int vec_any_nge (vector float, vector float);
!
int vec_any_ngt (vector float, vector float);
!
int vec_any_nle (vector float, vector float);
!
int vec_any_nlt (vector float, vector float);
!
int vec_any_numeric (vector float);
!
int vec_any_out (vector float, vector float);
File: gcc.info, Node: Pragmas, Next: Unnamed Fields, Prev: Target Builtins, Up: C Extensions
! Pragmas Accepted by GCC
! =======================
! GCC supports several types of pragmas, primarily in order to compile
code originally written for other compilers. Note that in general we
do not recommend the use of pragmas; *Note Function Attributes::, for
further explanation.
--- 19448,19473 ----
int vec_any_ne (vector bool int, vector unsigned int);
int vec_any_ne (vector bool int, vector signed int);
int vec_any_ne (vector float, vector float);
!
int vec_any_nge (vector float, vector float);
!
int vec_any_ngt (vector float, vector float);
!
int vec_any_nle (vector float, vector float);
!
int vec_any_nlt (vector float, vector float);
!
int vec_any_numeric (vector float);
!
int vec_any_out (vector float, vector float);
File: gcc.info, Node: Pragmas, Next: Unnamed Fields, Prev: Target Builtins, Up: C Extensions
! 5.46 Pragmas Accepted by GCC
! ============================
! GCC supports several types of pragmas, primarily in order to compile
code originally written for other compilers. Note that in general we
do not recommend the use of pragmas; *Note Function Attributes::, for
further explanation.
*************** further explanation.
*** 19443,19452 ****
File: gcc.info, Node: ARM Pragmas, Next: RS/6000 and PowerPC Pragmas, Up: Pragmas
! ARM Pragmas
! -----------
! The ARM target defines pragmas for controlling the default addition of
`long_call' and `short_call' attributes to functions. *Note Function
Attributes::, for information about the effects of these attributes.
--- 19483,19492 ----
File: gcc.info, Node: ARM Pragmas, Next: RS/6000 and PowerPC Pragmas, Up: Pragmas
! 5.46.1 ARM Pragmas
! ------------------
! The ARM target defines pragmas for controlling the default addition of
`long_call' and `short_call' attributes to functions. *Note Function
Attributes::, for information about the effects of these attributes.
*************** Attributes::, for information about the
*** 19463,19472 ****
File: gcc.info, Node: RS/6000 and PowerPC Pragmas, Next: Darwin Pragmas, Prev: ARM Pragmas, Up: Pragmas
! RS/6000 and PowerPC Pragmas
! ---------------------------
! The RS/6000 and PowerPC targets define one pragma for controlling
whether or not the `longcall' attribute is added to function
declarations by default. This pragma overrides the `-mlongcall'
option, but not the `longcall' and `shortcall' attributes. *Note
--- 19503,19512 ----
File: gcc.info, Node: RS/6000 and PowerPC Pragmas, Next: Darwin Pragmas, Prev: ARM Pragmas, Up: Pragmas
! 5.46.2 RS/6000 and PowerPC Pragmas
! ----------------------------------
! The RS/6000 and PowerPC targets define one pragma for controlling
whether or not the `longcall' attribute is added to function
declarations by default. This pragma overrides the `-mlongcall'
option, but not the `longcall' and `shortcall' attributes. *Note
*************** calls are and are not necessary.
*** 19484,19493 ****
File: gcc.info, Node: Darwin Pragmas, Next: Solaris Pragmas, Prev: RS/6000 and PowerPC Pragmas, Up: Pragmas
! Darwin Pragmas
! --------------
! The following pragmas are available for all architectures running the
Darwin operating system. These are useful for compatibility with other
Mac OS compilers.
--- 19524,19533 ----
File: gcc.info, Node: Darwin Pragmas, Next: Solaris Pragmas, Prev: RS/6000 and PowerPC Pragmas, Up: Pragmas
! 5.46.3 Darwin Pragmas
! ---------------------
! The following pragmas are available for all architectures running the
Darwin operating system. These are useful for compatibility with other
Mac OS compilers.
*************** Mac OS compilers.
*** 19513,19522 ****
File: gcc.info, Node: Solaris Pragmas, Next: Tru64 Pragmas, Prev: Darwin Pragmas, Up: Pragmas
! Solaris Pragmas
! ---------------
! For compatibility with the SunPRO compiler, the following pragma is
supported.
`redefine_extname OLDNAME NEWNAME'
--- 19553,19562 ----
File: gcc.info, Node: Solaris Pragmas, Next: Tru64 Pragmas, Prev: Darwin Pragmas, Up: Pragmas
! 5.46.4 Solaris Pragmas
! ----------------------
! For compatibility with the SunPRO compiler, the following pragma is
supported.
`redefine_extname OLDNAME NEWNAME'
*************** supported.
*** 19529,19538 ****
File: gcc.info, Node: Tru64 Pragmas, Prev: Solaris Pragmas, Up: Pragmas
! Tru64 Pragmas
! -------------
! For compatibility with the Compaq C compiler, the following pragma is
supported.
`extern_prefix STRING'
--- 19569,19578 ----
File: gcc.info, Node: Tru64 Pragmas, Prev: Solaris Pragmas, Up: Pragmas
! 5.46.5 Tru64 Pragmas
! --------------------
! For compatibility with the Compaq C compiler, the following pragma is
supported.
`extern_prefix STRING'
*************** supported.
*** 19550,19559 ****
File: gcc.info, Node: Unnamed Fields, Next: Thread-Local, Prev: Pragmas, Up: C Extensions
! Unnamed struct/union fields within structs/unions.
! ==================================================
! For compatibility with other compilers, GCC allows you to define a
structure or union that contains, as fields, structures and unions
without names. For example:
--- 19590,19599 ----
File: gcc.info, Node: Unnamed Fields, Next: Thread-Local, Prev: Pragmas, Up: C Extensions
! 5.47 Unnamed struct/union fields within structs/unions.
! =======================================================
! For compatibility with other compilers, GCC allows you to define a
structure or union that contains, as fields, structures and unions
without names. For example:
*************** constructs may be detected and treated a
*** 19587,19596 ****
File: gcc.info, Node: Thread-Local, Prev: Unnamed Fields, Up: C Extensions
! Thread-Local Storage
! ====================
! Thread-local storage (TLS) is a mechanism by which variables are
allocated such that there is one instance of the variable per extant
thread. The run-time model GCC uses to implement this originates in
the IA-64 processor-specific ABI, but has since been migrated to other
--- 19627,19636 ----
File: gcc.info, Node: Thread-Local, Prev: Unnamed Fields, Up: C Extensions
! 5.48 Thread-Local Storage
! =========================
! Thread-local storage (TLS) is a mechanism by which variables are
allocated such that there is one instance of the variable per extant
thread. The run-time model GCC uses to implement this originates in
the IA-64 processor-specific ABI, but has since been migrated to other
*************** is expected to function.
*** 19640,19649 ****
File: gcc.info, Node: C99 Thread-Local Edits, Next: C++98 Thread-Local Edits, Up: Thread-Local
! ISO/IEC 9899:1999 Edits for Thread-Local Storage
! ------------------------------------------------
! The following are a set of changes to ISO/IEC 9899:1999 (aka C99) that
document the exact semantics of the language extension.
* `5.1.2 Execution environments'
--- 19680,19689 ----
File: gcc.info, Node: C99 Thread-Local Edits, Next: C++98 Thread-Local Edits, Up: Thread-Local
! 5.48.1 ISO/IEC 9899:1999 Edits for Thread-Local Storage
! -------------------------------------------------------
! The following are a set of changes to ISO/IEC 9899:1999 (aka C99) that
document the exact semantics of the language extension.
* `5.1.2 Execution environments'
*************** document the exact semantics of the lang
*** 19695,19704 ****
File: gcc.info, Node: C++98 Thread-Local Edits, Prev: C99 Thread-Local Edits, Up: Thread-Local
! ISO/IEC 14882:1998 Edits for Thread-Local Storage
! -------------------------------------------------
! The following are a set of changes to ISO/IEC 14882:1998 (aka C++98)
that document the exact semantics of the language extension.
* [intro.execution]
--- 19735,19744 ----
File: gcc.info, Node: C++98 Thread-Local Edits, Prev: C99 Thread-Local Edits, Up: Thread-Local
! 5.48.2 ISO/IEC 14882:1998 Edits for Thread-Local Storage
! --------------------------------------------------------
! The following are a set of changes to ISO/IEC 14882:1998 (aka C++98)
that document the exact semantics of the language extension.
* [intro.execution]
*************** that document the exact semantics of the
*** 19805,19814 ****
File: gcc.info, Node: C++ Extensions, Next: Objective-C, Prev: C Extensions, Up: Top
! Extensions to the C++ Language
! ******************************
! The GNU compiler provides these extensions to the C++ language (and you
can also use most of the C language extensions in your C++ programs).
If you want to write code that checks whether these features are
available, you can test for the GNU compiler the same way as for C
--- 19845,19854 ----
File: gcc.info, Node: C++ Extensions, Next: Objective-C, Prev: C Extensions, Up: Top
! 6 Extensions to the C++ Language
! ********************************
! The GNU compiler provides these extensions to the C++ language (and you
can also use most of the C language extensions in your C++ programs).
If you want to write code that checks whether these features are
available, you can test for the GNU compiler the same way as for C
*************** programs: check for a predefined macro `
*** 19838,19847 ****
File: gcc.info, Node: Min and Max, Next: Volatiles, Up: C++ Extensions
! Minimum and Maximum Operators in C++
! ====================================
! It is very convenient to have operators which return the "minimum" or
the "maximum" of two arguments. In GNU C++ (but not in GNU C),
`A B'
--- 19878,19887 ----
File: gcc.info, Node: Min and Max, Next: Volatiles, Up: C++ Extensions
! 6.1 Minimum and Maximum Operators in C++
! ========================================
! It is very convenient to have operators which return the "minimum" or
the "maximum" of two arguments. In GNU C++ (but not in GNU C),
`A B'
*************** expressions with side-effects; `int min
*** 19875,19898 ****
File: gcc.info, Node: Volatiles, Next: Restricted Pointers, Prev: Min and Max, Up: C++ Extensions
! When is a Volatile Object Accessed?
! ===================================
! Both the C and C++ standard have the concept of volatile objects.
! These are normally accessed by pointers and used for accessing
! hardware. The standards encourage compilers to refrain from
! optimizations concerning accesses to volatile objects that it might
! perform on non-volatile objects. The C standard leaves it
! implementation defined as to what constitutes a volatile access. The
! C++ standard omits to specify this, except to say that C++ should
! behave in a similar manner to C with respect to volatiles, where
! possible. The minimum either standard specifies is that at a sequence
! point all previous accesses to volatile objects have stabilized and no
! subsequent accesses have occurred. Thus an implementation is free to
! reorder and combine volatile accesses which occur between sequence
! points, but cannot do so for accesses across a sequence point. The use
! of volatiles does not allow you to violate the restriction on updating
! objects multiple times within a sequence point.
In most expressions, it is intuitively obvious what is a read and what
is a write. For instance
--- 19915,19938 ----
File: gcc.info, Node: Volatiles, Next: Restricted Pointers, Prev: Min and Max, Up: C++ Extensions
! 6.2 When is a Volatile Object Accessed?
! =======================================
! Both the C and C++ standard have the concept of volatile objects. These
! are normally accessed by pointers and used for accessing hardware. The
! standards encourage compilers to refrain from optimizations concerning
! accesses to volatile objects that it might perform on non-volatile
! objects. The C standard leaves it implementation defined as to what
! constitutes a volatile access. The C++ standard omits to specify this,
! except to say that C++ should behave in a similar manner to C with
! respect to volatiles, where possible. The minimum either standard
! specifies is that at a sequence point all previous accesses to volatile
! objects have stabilized and no subsequent accesses have occurred. Thus
! an implementation is free to reorder and combine volatile accesses
! which occur between sequence points, but cannot do so for accesses
! across a sequence point. The use of volatiles does not allow you to
! violate the restriction on updating objects multiple times within a
! sequence point.
In most expressions, it is intuitively obvious what is a read and what
is a write. For instance
*************** an rvalue.
*** 19948,19957 ****
File: gcc.info, Node: Restricted Pointers, Next: Vague Linkage, Prev: Volatiles, Up: C++ Extensions
! Restricting Pointer Aliasing
! ============================
! As with the C front end, G++ understands the C99 feature of restricted
pointers, specified with the `__restrict__', or `__restrict' type
qualifier. Because you cannot compile C++ by specifying the `-std=c99'
language flag, `restrict' is not a keyword in C++.
--- 19988,19997 ----
File: gcc.info, Node: Restricted Pointers, Next: Vague Linkage, Prev: Volatiles, Up: C++ Extensions
! 6.3 Restricting Pointer Aliasing
! ================================
! As with the C front end, G++ understands the C99 feature of restricted
pointers, specified with the `__restrict__', or `__restrict' type
qualifier. Because you cannot compile C++ by specifying the `-std=c99'
language flag, `restrict' is not a keyword in C++.
*************** prototype as well.
*** 19991,20000 ****
File: gcc.info, Node: Vague Linkage, Next: C++ Interface, Prev: Restricted Pointers, Up: C++ Extensions
! Vague Linkage
! =============
! There are several constructs in C++ which require space in the object
file but are not clearly tied to a single translation unit. We say that
these constructs have "vague linkage". Typically such constructs are
emitted wherever they are needed, though sometimes we can be more
--- 20031,20040 ----
File: gcc.info, Node: Vague Linkage, Next: C++ Interface, Prev: Restricted Pointers, Up: C++ Extensions
! 6.4 Vague Linkage
! =================
! There are several constructs in C++ which require space in the object
file but are not clearly tied to a single translation unit. We say that
these constructs have "vague linkage". Typically such constructs are
emitted wherever they are needed, though sometimes we can be more
*************** Template Instantiations
*** 20046,20051 ****
--- 20086,20092 ----
instantiations, but there are other options as well. *Note
Where's the Template?: Template Instantiation.
+
When used with GNU ld version 2.8 or later on an ELF system such as
GNU/Linux or Solaris 2, or on Microsoft Windows, duplicate copies of
these constructs will be discarded at link time. This is known as
*************** another way to control placement of thes
*** 20067,20076 ****
File: gcc.info, Node: C++ Interface, Next: Template Instantiation, Prev: Vague Linkage, Up: C++ Extensions
! #pragma interface and implementation
! ====================================
! `#pragma interface' and `#pragma implementation' provide the user with
a way of explicitly directing the compiler to emit entities with vague
linkage (and debugging information) in a particular translation unit.
--- 20108,20117 ----
File: gcc.info, Node: C++ Interface, Next: Template Instantiation, Prev: Vague Linkage, Up: C++ Extensions
! 6.5 #pragma interface and implementation
! ========================================
! `#pragma interface' and `#pragma implementation' provide the user with
a way of explicitly directing the compiler to emit entities with vague
linkage (and debugging information) in a particular translation unit.
*************** information and of trailing suffixes, su
*** 20155,20164 ****
File: gcc.info, Node: Template Instantiation, Next: Bound member functions, Prev: C++ Interface, Up: C++ Extensions
! Where's the Template?
! =====================
! C++ templates are the first language feature to require more
intelligence from the environment than one usually finds on a UNIX
system. Somehow the compiler and linker have to make sure that each
template instance occurs exactly once in the executable if it is needed,
--- 20196,20205 ----
File: gcc.info, Node: Template Instantiation, Next: Bound member functions, Prev: C++ Interface, Up: C++ Extensions
! 6.6 Where's the Template?
! =========================
! C++ templates are the first language feature to require more
intelligence from the environment than one usually finds on a UNIX
system. Somehow the compiler and linker have to make sure that each
template instance occurs exactly once in the executable if it is needed,
*************** template instantiations:
*** 20252,20258 ****
#include "Foo.h"
#include "Foo.cc"
!
template class Foo;
template ostream& operator <<
(ostream&, const Foo&);
--- 20293,20299 ----
#include "Foo.h"
#include "Foo.cc"
!
template class Foo;
template ostream& operator <<
(ostream&, const Foo&);
*************** template instantiations:
*** 20290,20299 ****
File: gcc.info, Node: Bound member functions, Next: C++ Attributes, Prev: Template Instantiation, Up: C++ Extensions
! Extracting the function pointer from a bound pointer to member function
! =======================================================================
! In C++, pointer to member functions (PMFs) are implemented using a wide
pointer of sorts to handle all the possible call mechanisms; the PMF
needs to store information about how to adjust the `this' pointer, and
if the function pointed to is virtual, where to find the vtable, and
--- 20331,20340 ----
File: gcc.info, Node: Bound member functions, Next: C++ Attributes, Prev: Template Instantiation, Up: C++ Extensions
! 6.7 Extracting the function pointer from a bound pointer to member function
! ===========================================================================
! In C++, pointer to member functions (PMFs) are implemented using a wide
pointer of sorts to handle all the possible call mechanisms; the PMF
needs to store information about how to adjust the `this' pointer, and
if the function pointed to is virtual, where to find the vtable, and
*************** virtual function calls.
*** 20313,20319 ****
extern A a;
extern int (A::*fp)();
typedef int (*fptr)(A *);
!
fptr p = (fptr)(a.*fp);
For PMF constants (i.e. expressions of the form `&Klasse::Member'), no
--- 20354,20360 ----
extern A a;
extern int (A::*fp)();
typedef int (*fptr)(A *);
!
fptr p = (fptr)(a.*fp);
For PMF constants (i.e. expressions of the form `&Klasse::Member'), no
*************** converted to function pointers directly:
*** 20327,20336 ****
File: gcc.info, Node: C++ Attributes, Next: Strong Using, Prev: Bound member functions, Up: C++ Extensions
! C++-Specific Variable, Function, and Type Attributes
! ====================================================
! Some attributes only make sense for C++ programs.
`init_priority (PRIORITY)'
In Standard C++, objects defined at namespace scope are guaranteed
--- 20368,20377 ----
File: gcc.info, Node: C++ Attributes, Next: Strong Using, Prev: Bound member functions, Up: C++ Extensions
! 6.8 C++-Specific Variable, Function, and Type Attributes
! ========================================================
! Some attributes only make sense for C++ programs.
`init_priority (PRIORITY)'
In Standard C++, objects defined at namespace scope are guaranteed
*************** C++-Specific Variable, Function, and Typ
*** 20359,20373 ****
interface will be dispatched using GCJ's interface table
mechanism, instead of regular virtual table dispatch.
See also *Note Strong Using::.
File: gcc.info, Node: Strong Using, Next: Offsetof, Prev: C++ Attributes, Up: C++ Extensions
! Strong Using
! ============
! *Caution:* The semantics of this extension are not fully defined.
Users should refrain from using this extension as its semantics may
change subtly over time. It is possible that this extension wil be
removed in future versions of G++.
--- 20400,20415 ----
interface will be dispatched using GCJ's interface table
mechanism, instead of regular virtual table dispatch.
+
See also *Note Strong Using::.
File: gcc.info, Node: Strong Using, Next: Offsetof, Prev: C++ Attributes, Up: C++ Extensions
! 6.9 Strong Using
! ================
! *Caution:* The semantics of this extension are not fully defined.
Users should refrain from using this extension as its semantics may
change subtly over time. It is possible that this extension wil be
removed in future versions of G++.
*************** implementation namespaces. For example:
*** 20391,20400 ****
}
using namespace debug __attribute ((__strong__));
template <> struct A { }; // ok to specialize
!
template void f (A);
}
!
int main()
{
f (std::A()); // lookup finds std::f
--- 20433,20442 ----
}
using namespace debug __attribute ((__strong__));
template <> struct A { }; // ok to specialize
!
template void f (A);
}
!
int main()
{
f (std::A()); // lookup finds std::f
*************** implementation namespaces. For example:
*** 20404,20413 ****
File: gcc.info, Node: Offsetof, Next: Java Exceptions, Prev: Strong Using, Up: C++ Extensions
! Offsetof
! ========
! G++ uses a syntactic extension to implement the `offsetof' macro.
In particular:
--- 20446,20455 ----
File: gcc.info, Node: Offsetof, Next: Java Exceptions, Prev: Strong Using, Up: C++ Extensions
! 6.10 Offsetof
! =============
! G++ uses a syntactic extension to implement the `offsetof' macro.
In particular:
*************** directly; the only valid use of `__offse
*** 20423,20432 ****
File: gcc.info, Node: Java Exceptions, Next: Deprecated Features, Prev: Offsetof, Up: C++ Extensions
! Java Exceptions
! ===============
! The Java language uses a slightly different exception handling model
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
--- 20465,20474 ----
File: gcc.info, Node: Java Exceptions, Next: Deprecated Features, Prev: Offsetof, Up: C++ Extensions
! 6.11 Java Exceptions
! ====================
! The Java language uses a slightly different exception handling model
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
*************** there may be bugs in this area.
*** 20458,20467 ****
File: gcc.info, Node: Deprecated Features, Next: Backwards Compatibility, Prev: Java Exceptions, Up: C++ Extensions
! Deprecated Features
! ===================
! In the past, the GNU C++ compiler was extended to experiment with new
features, at a time when the C++ language was still evolving. Now that
the C++ standard is complete, some of those features are superseded by
superior alternatives. Using the old features might cause a warning in
--- 20500,20509 ----
File: gcc.info, Node: Deprecated Features, Next: Backwards Compatibility, Prev: Java Exceptions, Up: C++ Extensions
! 6.12 Deprecated Features
! ========================
! In the past, the GNU C++ compiler was extended to experiment with new
features, at a time when the C++ language was still evolving. Now that
the C++ standard is complete, some of those features are superseded by
superior alternatives. Using the old features might cause a warning in
*************** deprecated and will be removed from a fu
*** 20506,20522 ****
File: gcc.info, Node: Backwards Compatibility, Prev: Deprecated Features, Up: C++ Extensions
! Backwards Compatibility
! =======================
! Now that there is a definitive ISO standard C++, G++ has a
! specification to adhere to. The C++ language evolved over time, and
! features that used to be acceptable in previous drafts of the standard,
! such as the ARM [Annotated C++ Reference Manual], are no longer
! accepted. In order to allow compilation of C++ written to such drafts,
! G++ contains some backwards compatibilities. _All such backwards
! compatibility features are liable to disappear in future versions of
! G++._ They should be considered deprecated *Note Deprecated Features::.
`For scope'
If a variable is declared at for scope, it used to remain in scope
--- 20548,20564 ----
File: gcc.info, Node: Backwards Compatibility, Prev: Deprecated Features, Up: C++ Extensions
! 6.13 Backwards Compatibility
! ============================
! Now that there is a definitive ISO standard C++, G++ has a specification
! to adhere to. The C++ language evolved over time, and features that
! used to be acceptable in previous drafts of the standard, such as the
! ARM [Annotated C++ Reference Manual], are no longer accepted. In order
! to allow compilation of C++ written to such drafts, G++ contains some
! backwards compatibilities. _All such backwards compatibility features
! are liable to disappear in future versions of G++._ They should be
! considered deprecated *Note Deprecated Features::.
`For scope'
If a variable is declared at for scope, it used to remain in scope
*************** G++._ They should be considered deprecat
*** 20535,20544 ****
File: gcc.info, Node: Objective-C, Next: Compatibility, Prev: C++ Extensions, Up: Top
! GNU Objective-C runtime features
! ********************************
! This document is meant to describe some of the GNU Objective-C runtime
features. It is not intended to teach you Objective-C, there are
several resources on the Internet that present the language. Questions
and comments about this document to Ovidiu Predescu .
--- 20577,20586 ----
File: gcc.info, Node: Objective-C, Next: Compatibility, Prev: C++ Extensions, Up: Top
! 7 GNU Objective-C runtime features
! **********************************
! This document is meant to describe some of the GNU Objective-C runtime
features. It is not intended to teach you Objective-C, there are
several resources on the Internet that present the language. Questions
and comments about this document to Ovidiu Predescu .
*************** and comments about this document to Ovid
*** 20554,20563 ****
File: gcc.info, Node: Executing code before main, Next: Type encoding, Prev: Objective-C, Up: Objective-C
! `+load': Executing code before main
! ===================================
! The GNU Objective-C runtime provides a way that allows you to execute
code before the execution of the program enters the `main' function.
The code is executed on a per-class and a per-category basis, through a
special class method `+load'.
--- 20596,20605 ----
File: gcc.info, Node: Executing code before main, Next: Type encoding, Prev: Objective-C, Up: Objective-C
! 7.1 `+load': Executing code before main
! =======================================
! The GNU Objective-C runtime provides a way that allows you to execute
code before the execution of the program enters the `main' function.
The code is executed on a per-class and a per-category basis, through a
special class method `+load'.
*************** some cases could be too late.
*** 20576,20591 ****
FileStream *Stdin = nil;
FileStream *Stdout = nil;
FileStream *Stderr = nil;
!
@implementation FileStream
!
+ (void)initialize
{
Stdin = [[FileStream new] initWithFd:0];
Stdout = [[FileStream new] initWithFd:1];
Stderr = [[FileStream new] initWithFd:2];
}
!
/* Other methods here */
@end
--- 20618,20633 ----
FileStream *Stdin = nil;
FileStream *Stdout = nil;
FileStream *Stderr = nil;
!
@implementation FileStream
!
+ (void)initialize
{
Stdin = [[FileStream new] initWithFd:0];
Stdout = [[FileStream new] initWithFd:1];
Stderr = [[FileStream new] initWithFd:2];
}
!
/* Other methods here */
@end
*************** instead of `+initialize':
*** 20602,20615 ****
@implementation FileStream
!
+ (void)load
{
Stdin = [[FileStream new] initWithFd:0];
Stdout = [[FileStream new] initWithFd:1];
Stderr = [[FileStream new] initWithFd:2];
}
!
/* Other methods here */
@end
--- 20644,20657 ----
@implementation FileStream
!
+ (void)load
{
Stdin = [[FileStream new] initWithFd:0];
Stdout = [[FileStream new] initWithFd:1];
Stderr = [[FileStream new] initWithFd:2];
}
!
/* Other methods here */
@end
*************** instead of `+initialize'.
*** 20629,20638 ****
File: gcc.info, Node: What you can and what you cannot do in +load, Prev: Executing code before main, Up: Executing code before main
! What you can and what you cannot do in `+load'
! ----------------------------------------------
! The `+load' implementation in the GNU runtime guarantees you the
following things:
* you can write whatever C code you like;
--- 20671,20680 ----
File: gcc.info, Node: What you can and what you cannot do in +load, Prev: Executing code before main, Up: Executing code before main
! 7.1.1 What you can and what you cannot do in `+load'
! ----------------------------------------------------
! The `+load' implementation in the GNU runtime guarantees you the
following things:
* you can write whatever C code you like;
*************** above apply to classes defined in bundle
*** 20681,20690 ****
File: gcc.info, Node: Type encoding, Next: Garbage Collection, Prev: Executing code before main, Up: Objective-C
! Type encoding
! =============
! The Objective-C compiler generates type encodings for all the types.
These type encodings are used at runtime to find out information about
selectors and methods and about objects and classes.
--- 20723,20732 ----
File: gcc.info, Node: Type encoding, Next: Garbage Collection, Prev: Executing code before main, Up: Objective-C
! 7.2 Type encoding
! =================
! The Objective-C compiler generates type encodings for all the types.
These type encodings are used at runtime to find out information about
selectors and methods and about objects and classes.
*************** argument types.
*** 20776,20785 ****
File: gcc.info, Node: Garbage Collection, Next: Constant string objects, Prev: Type encoding, Up: Objective-C
! Garbage Collection
! ==================
! Support for a new memory management policy has been added by using a
powerful conservative garbage collector, known as the
Boehm-Demers-Weiser conservative garbage collector. It is available
from `http://www.hpl.hp.com/personal/Hans_Boehm/gc/'.
--- 20818,20827 ----
File: gcc.info, Node: Garbage Collection, Next: Constant string objects, Prev: Type encoding, Up: Objective-C
! 7.3 Garbage Collection
! ======================
! Support for a new memory management policy has been added by using a
powerful conservative garbage collector, known as the
Boehm-Demers-Weiser conservative garbage collector. It is available
from `http://www.hpl.hp.com/personal/Hans_Boehm/gc/'.
*************** following class does this:
*** 20816,20845 ****
{
const void* weakPointer;
}
!
- initWithPointer:(const void*)p;
- (const void*)weakPointer;
@end
!
!
@implementation WeakPointer
!
+ (void)initialize
{
class_ivar_set_gcinvisible (self, "weakPointer", YES);
}
!
- initWithPointer:(const void*)p
{
weakPointer = p;
return self;
}
!
- (const void*)weakPointer
{
return weakPointer;
}
!
@end
Weak pointers are supported through a new type character specifier
--- 20858,20887 ----
{
const void* weakPointer;
}
!
- initWithPointer:(const void*)p;
- (const void*)weakPointer;
@end
!
!
@implementation WeakPointer
!
+ (void)initialize
{
class_ivar_set_gcinvisible (self, "weakPointer", YES);
}
!
- initWithPointer:(const void*)p
{
weakPointer = p;
return self;
}
!
- (const void*)weakPointer
{
return weakPointer;
}
!
@end
Weak pointers are supported through a new type character specifier
*************** of the instance variable named as argume
*** 20850,20859 ****
File: gcc.info, Node: Constant string objects, Next: compatibility_alias, Prev: Garbage Collection, Up: Objective-C
! Constant string objects
! =======================
! GNU Objective-C provides constant string objects that are generated
directly by the compiler. You declare a constant string object by
prefixing a C constant string with the character `@':
--- 20892,20901 ----
File: gcc.info, Node: Constant string objects, Next: compatibility_alias, Prev: Garbage Collection, Up: Objective-C
! 7.4 Constant string objects
! ===========================
! GNU Objective-C provides constant string objects that are generated
directly by the compiler. You declare a constant string object by
prefixing a C constant string with the character `@':
*************** restrictions in doing this.
*** 20907,20916 ****
File: gcc.info, Node: compatibility_alias, Prev: Constant string objects, Up: Objective-C
! compatibility_alias
! ===================
! This is a feature of the Objective-C compiler rather than of the
runtime, anyway since it is documented nowhere and its existence was
forgotten, we are documenting it here.
--- 20949,20958 ----
File: gcc.info, Node: compatibility_alias, Prev: Constant string objects, Up: Objective-C
! 7.5 compatibility_alias
! =======================
! This is a feature of the Objective-C compiler rather than of the
runtime, anyway since it is documented nowhere and its existence was
forgotten, we are documenting it here.
*************** class name, it should replace it with `G
*** 20933,20942 ****
File: gcc.info, Node: Compatibility, Next: Gcov, Prev: Objective-C, Up: Top
! Binary Compatibility
! ********************
! Binary compatibility encompasses several related concepts:
"application binary interface (ABI)"
The set of runtime conventions followed by all of the tools that
--- 20975,20984 ----
File: gcc.info, Node: Compatibility, Next: Gcov, Prev: Objective-C, Up: Top
! 8 Binary Compatibility
! **********************
! Binary compatibility encompasses several related concepts:
"application binary interface (ABI)"
The set of runtime conventions followed by all of the tools that
*************** and `-nodefaultlibs'.
*** 21079,21088 ****
File: gcc.info, Node: Gcov, Next: Trouble, Prev: Compatibility, Up: Top
! `gcov'--a Test Coverage Program
! *******************************
! `gcov' is a tool you can use in conjunction with GCC to test code
coverage in your programs.
* Menu:
--- 21121,21130 ----
File: gcc.info, Node: Gcov, Next: Trouble, Prev: Compatibility, Up: Top
! 9 `gcov'--a Test Coverage Program
! *********************************
! `gcov' is a tool you can use in conjunction with GCC to test code
coverage in your programs.
* Menu:
*************** coverage in your programs.
*** 21095,21104 ****
File: gcc.info, Node: Gcov Intro, Next: Invoking Gcov, Up: Gcov
! Introduction to `gcov'
! ======================
! `gcov' is a test coverage program. Use it in concert with GCC to
analyze your programs to help create more efficient, faster running
code and to discover untested parts of your program. You can use
`gcov' as a profiling tool to help discover where your optimization
--- 21137,21146 ----
File: gcc.info, Node: Gcov Intro, Next: Invoking Gcov, Up: Gcov
! 9.1 Introduction to `gcov'
! ==========================
! `gcov' is a test coverage program. Use it in concert with GCC to
analyze your programs to help create more efficient, faster running
code and to discover untested parts of your program. You can use
`gcov' as a profiling tool to help discover where your optimization
*************** with any other profiling or test coverag
*** 21152,21159 ****
File: gcc.info, Node: Invoking Gcov, Next: Gcov and Optimization, Prev: Gcov Intro, Up: Gcov
! Invoking gcov
! =============
gcov [OPTIONS] SOURCEFILE
--- 21194,21201 ----
File: gcc.info, Node: Invoking Gcov, Next: Gcov and Optimization, Prev: Gcov Intro, Up: Gcov
! 9.2 Invoking gcov
! =================
gcov [OPTIONS] SOURCEFILE
*************** Invoking gcov
*** 21233,21238 ****
--- 21275,21281 ----
When branch counts are given, include those of unconditional
branches. Unconditional branches are normally not interesting.
+
`gcov' should be run with the current directory the same as that when
you invoked the compiler. Otherwise it will not be able to locate the
source files. `gcov' produces files called `MANGLEDNAME.gcov' in the
*************** new execution counts and finally writes
*** 21434,21443 ****
File: gcc.info, Node: Gcov and Optimization, Next: Gcov Data Files, Prev: Invoking Gcov, Up: Gcov
! Using `gcov' with GCC Optimization
! ==================================
! If you plan to use `gcov' to help optimize your code, you must first
compile your program with two special GCC options: `-fprofile-arcs
-ftest-coverage'. Aside from that, you can use any other GCC options;
but if you want to prove that every single line in your program was
--- 21477,21486 ----
File: gcc.info, Node: Gcov and Optimization, Next: Gcov Data Files, Prev: Invoking Gcov, Up: Gcov
! 9.3 Using `gcov' with GCC Optimization
! ======================================
! If you plan to use `gcov' to help optimize your code, you must first
compile your program with two special GCC options: `-fprofile-arcs
-ftest-coverage'. Aside from that, you can use any other GCC options;
but if you want to prove that every single line in your program was
*************** same source lines, the line counts thems
*** 21492,21501 ****
File: gcc.info, Node: Gcov Data Files, Prev: Gcov and Optimization, Up: Gcov
! Brief description of `gcov' data files
! ======================================
! `gcov' uses two files for profiling. The names of these files are
derived from the original _object_ file by substituting the file suffix
with either `.gcno', or `.gcda'. All of these files are placed in the
same directory as the object file, and contain data stored in a
--- 21535,21544 ----
File: gcc.info, Node: Gcov Data Files, Prev: Gcov and Optimization, Up: Gcov
! 9.4 Brief description of `gcov' data files
! ==========================================
! `gcov' uses two files for profiling. The names of these files are
derived from the original _object_ file by substituting the file suffix
with either `.gcno', or `.gcda'. All of these files are placed in the
same directory as the object file, and contain data stored in a
*************** coverage files.
*** 21518,21527 ****
File: gcc.info, Node: Trouble, Next: Bugs, Prev: Gcov, Up: Top
! Known Causes of Trouble with GCC
! ********************************
! 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.
--- 21561,21570 ----
File: gcc.info, Node: Trouble, Next: Bugs, Prev: Gcov, Up: Top
! 10 Known Causes of Trouble with GCC
! ***********************************
! 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.
*************** where people's opinions differ as to wha
*** 21551,21558 ****
File: gcc.info, Node: Actual Bugs, Next: Cross-Compiler Problems, Up: Trouble
! Actual Bugs We Haven't Fixed Yet
! ================================
* The `fixincludes' script interacts badly with automounters; if the
directory of system header files is automounted, it tends to be
--- 21594,21601 ----
File: gcc.info, Node: Actual Bugs, Next: Cross-Compiler Problems, Up: Trouble
! 10.1 Actual Bugs We Haven't Fixed Yet
! =====================================
* The `fixincludes' script interacts badly with automounters; if the
directory of system header files is automounted, it tends to be
*************** Actual Bugs We Haven't Fixed Yet
*** 21573,21582 ****
File: gcc.info, Node: Cross-Compiler Problems, Next: Interoperation, Prev: Actual Bugs, Up: Trouble
! Cross-Compiler Problems
! =======================
! You may run into problems with cross compilation on certain machines,
for several reasons.
* Cross compilation can run into trouble for certain machines because
--- 21616,21625 ----
File: gcc.info, Node: Cross-Compiler Problems, Next: Interoperation, Prev: Actual Bugs, Up: Trouble
! 10.2 Cross-Compiler Problems
! ============================
! You may run into problems with cross compilation on certain machines,
for several reasons.
* Cross compilation can run into trouble for certain machines because
*************** for several reasons.
*** 21607,21616 ****
File: gcc.info, Node: Interoperation, Next: External Bugs, Prev: Cross-Compiler Problems, Up: Trouble
! Interoperation
! ==============
! This section lists various difficulties encountered in using GCC
together with other compilers or with the assemblers, linkers,
libraries and debuggers on certain systems.
--- 21650,21659 ----
File: gcc.info, Node: Interoperation, Next: External Bugs, Prev: Cross-Compiler Problems, Up: Trouble
! 10.3 Interoperation
! ===================
! This section lists various difficulties encountered in using GCC
together with other compilers or with the assemblers, linkers,
libraries and debuggers on certain systems.
*************** libraries and debuggers on certain syste
*** 21671,21683 ****
access_double (double *unaligned_ptr)
{
union d2i { double d; int i[2]; };
!
union d2i *p = (union d2i *) unaligned_ptr;
union d2i u;
!
u.i[0] = p->i[0];
u.i[1] = p->i[1];
!
return u.d;
}
--- 21714,21726 ----
access_double (double *unaligned_ptr)
{
union d2i { double d; int i[2]; };
!
union d2i *p = (union d2i *) unaligned_ptr;
union d2i u;
!
u.i[0] = p->i[0];
u.i[1] = p->i[1];
!
return u.d;
}
*************** libraries and debuggers on certain syste
*** 21752,21760 ****
* On the IBM RS/6000, compiling code of the form
extern int foo;
!
... foo ...
!
static int foo;
will cause the linker to report an undefined symbol `foo'.
--- 21795,21803 ----
* On the IBM RS/6000, compiling code of the form
extern int foo;
!
... foo ...
!
static int foo;
will cause the linker to report an undefined symbol `foo'.
*************** libraries and debuggers on certain syste
*** 21819,21828 ****
File: gcc.info, Node: External Bugs, Next: Incompatibilities, Prev: Interoperation, Up: Trouble
! Problems Compiling Certain Programs
! ===================================
! Certain programs have problems compiling.
* Parse errors may occur compiling X11 on a Decstation running
Ultrix 4.2 because of problems in DEC's versions of the X11 header
--- 21862,21871 ----
File: gcc.info, Node: External Bugs, Next: Incompatibilities, Prev: Interoperation, Up: Trouble
! 10.4 Problems Compiling Certain Programs
! ========================================
! Certain programs have problems compiling.
* Parse errors may occur compiling X11 on a Decstation running
Ultrix 4.2 because of problems in DEC's versions of the X11 header
*************** Problems Compiling Certain Programs
*** 21857,21866 ****
File: gcc.info, Node: Incompatibilities, Next: Fixed Headers, Prev: External Bugs, Up: Trouble
! Incompatibilities of GCC
! ========================
! There are several noteworthy incompatibilities between GNU C and K&R
(non-ISO) versions of C.
* GCC normally makes string constants read-only. If several
--- 21900,21909 ----
File: gcc.info, Node: Incompatibilities, Next: Fixed Headers, Prev: External Bugs, Up: Trouble
! 10.5 Incompatibilities of GCC
! =============================
! There are several noteworthy incompatibilities between GNU C and K&R
(non-ISO) versions of C.
* GCC normally makes string constants read-only. If several
*************** Incompatibilities of GCC
*** 21901,21915 ****
function:
jmp_buf j;
!
foo ()
{
int a, b;
!
a = fun1 ();
if (setjmp (j))
return a;
!
a = fun2 ();
/* `longjmp (j)' may occur in `fun3'. */
return a + fun3 ();
--- 21944,21958 ----
function:
jmp_buf j;
!
foo ()
{
int a, b;
!
a = fun1 ();
if (setjmp (j))
return a;
!
a = fun2 ();
/* `longjmp (j)' may occur in `fun3'. */
return a + fun3 ();
*************** Incompatibilities of GCC
*** 22050,22059 ****
File: gcc.info, Node: Fixed Headers, Next: Standard Libraries, Prev: Incompatibilities, Up: Trouble
! Fixed Header Files
! ==================
! GCC needs to install corrected versions of some system header files.
This is because most target systems have some header files that won't
work with GCC unless they are changed. Some have bugs, some are
incompatible with ISO C, and some depend on special features of other
--- 22093,22102 ----
File: gcc.info, Node: Fixed Headers, Next: Standard Libraries, Prev: Incompatibilities, Up: Trouble
! 10.6 Fixed Header Files
! =======================
! GCC needs to install corrected versions of some system header files.
This is because most target systems have some header files that won't
work with GCC unless they are changed. Some have bugs, some are
incompatible with ISO C, and some depend on special features of other
*************** the right thing automatically.
*** 22100,22109 ****
File: gcc.info, Node: Standard Libraries, Next: Disappointments, Prev: Fixed Headers, Up: Trouble
! Standard Libraries
! ==================
! GCC by itself attempts to be a conforming freestanding implementation.
*Note Language Standards Supported by GCC: Standards, for details of
what this means. Beyond the library facilities required of such an
implementation, the rest of the C library is supplied by the vendor of
--- 22143,22152 ----
File: gcc.info, Node: Standard Libraries, Next: Disappointments, Prev: Fixed Headers, Up: Trouble
! 10.7 Standard Libraries
! =======================
! GCC by itself attempts to be a conforming freestanding implementation.
*Note Language Standards Supported by GCC: Standards, for details of
what this means. Beyond the library facilities required of such an
implementation, the rest of the C library is supplied by the vendor of
*************** operating system vendor if newer librari
*** 22128,22137 ****
File: gcc.info, Node: Disappointments, Next: C++ Misunderstandings, Prev: Standard Libraries, Up: Trouble
! Disappointments and Misunderstandings
! =====================================
! These problems are perhaps regrettable, but we don't know any practical
way around them.
* Certain local variables aren't recognized by debuggers when you
--- 22171,22180 ----
File: gcc.info, Node: Disappointments, Next: C++ Misunderstandings, Prev: Standard Libraries, Up: Trouble
! 10.8 Disappointments and Misunderstandings
! ==========================================
! These problems are perhaps regrettable, but we don't know any practical
way around them.
* Certain local variables aren't recognized by debuggers when you
*************** way around them.
*** 22150,22158 ****
like this:
int foo (struct mumble *);
!
struct mumble { ... };
!
int foo (struct mumble *x)
{ ... }
--- 22193,22201 ----
like this:
int foo (struct mumble *);
!
struct mumble { ... };
!
int foo (struct mumble *x)
{ ... }
*************** way around them.
*** 22224,22233 ****
File: gcc.info, Node: C++ Misunderstandings, Next: Protoize Caveats, Prev: Disappointments, Up: Trouble
! Common Misunderstandings with GNU C++
! =====================================
! C++ is a complex language and an evolving one, and its standard
definition (the ISO C++ standard) was only recently completed. As a
result, your C++ compiler may occasionally surprise you, even when its
behavior is correct. This section discusses some areas that frequently
--- 22267,22276 ----
File: gcc.info, Node: C++ Misunderstandings, Next: Protoize Caveats, Prev: Disappointments, Up: Trouble
! 10.9 Common Misunderstandings with GNU C++
! ==========================================
! C++ is a complex language and an evolving one, and its standard
definition (the ISO C++ standard) was only recently completed. As a
result, your C++ compiler may occasionally surprise you, even when its
behavior is correct. This section discusses some areas that frequently
*************** give rise to questions of this sort.
*** 22243,22253 ****
File: gcc.info, Node: Static Definitions, Next: Name lookup, Up: C++ Misunderstandings
! Declare _and_ Define Static Members
! -----------------------------------
! When a class has static data members, it is not enough to _declare_
! the static member; you must also _define_ it. For example:
class Foo
{
--- 22286,22296 ----
File: gcc.info, Node: Static Definitions, Next: Name lookup, Up: C++ Misunderstandings
! 10.9.1 Declare _and_ Define Static Members
! ------------------------------------------
! When a class has static data members, it is not enough to _declare_ the
! static member; you must also _define_ it. For example:
class Foo
{
*************** any static data members that lack defini
*** 22273,22288 ****
File: gcc.info, Node: Name lookup, Next: Temporaries, Prev: Static Definitions, Up: C++ Misunderstandings
! Name lookup, templates, and accessing members of base classes
! -------------------------------------------------------------
! The C++ standard prescribes that all names that are not dependent on
template parameters are bound to their present definitions when parsing
a template function or class.(1) Only names that are dependent are
looked up at the point of instantiation. For example, consider
void foo(double);
!
struct A {
template
void f () {
--- 22316,22331 ----
File: gcc.info, Node: Name lookup, Next: Temporaries, Prev: Static Definitions, Up: C++ Misunderstandings
! 10.9.2 Name lookup, templates, and accessing members of base classes
! --------------------------------------------------------------------
! The C++ standard prescribes that all names that are not dependent on
template parameters are bound to their present definitions when parsing
a template function or class.(1) Only names that are dependent are
looked up at the point of instantiation. For example, consider
void foo(double);
!
struct A {
template
void f () {
*************** looked up at the point of instantiation.
*** 22292,22298 ****
t.bar(); // 3
foo (t); // 4
}
!
static const int N;
};
--- 22335,22341 ----
t.bar(); // 3
foo (t); // 4
}
!
static const int N;
};
*************** different from non-template codes. The m
*** 22321,22327 ****
template struct Base {
int i;
};
!
template struct Derived : public Base {
int get_i() { return i; }
};
--- 22364,22370 ----
template struct Base {
int i;
};
!
template struct Derived : public Base {
int get_i() { return i; }
};
*************** class:
*** 22348,22354 ****
template struct Base {
int f();
};
!
template struct Derived : Base {
int g() { return f(); };
};
--- 22391,22397 ----
template struct Base {
int f();
};
!
template struct Derived : Base {
int g() { return f(); };
};
*************** will also be used in the rest of this se
*** 22388,22397 ****
File: gcc.info, Node: Temporaries, Next: Copy Assignment, Prev: Name lookup, Up: C++ Misunderstandings
! Temporaries May Vanish Before You Expect
! ----------------------------------------
! It is dangerous to use pointers or references to _portions_ of a
temporary object. The compiler may very well delete the object before
you expect it to, leaving a pointer to garbage. The most common place
where this problem crops up is in classes like string classes,
--- 22431,22440 ----
File: gcc.info, Node: Temporaries, Next: Copy Assignment, Prev: Name lookup, Up: C++ Misunderstandings
! 10.9.3 Temporaries May Vanish Before You Expect
! -----------------------------------------------
! It is dangerous to use pointers or references to _portions_ of a
temporary object. The compiler may very well delete the object before
you expect it to, leaving a pointer to garbage. The most common place
where this problem crops up is in classes like string classes,
*************** pointers to `char':
*** 22407,22413 ****
string strfunc ();
void charfunc (const char *);
!
void
f ()
{
--- 22450,22456 ----
string strfunc ();
void charfunc (const char *);
!
void
f ()
{
*************** example:
*** 22440,22449 ****
File: gcc.info, Node: Copy Assignment, Prev: Temporaries, Up: C++ Misunderstandings
! Implicit Copy-Assignment for Virtual Bases
! ------------------------------------------
! When a base class is virtual, only one subobject of the base class
belongs to each full object. Also, the constructors and destructors are
invoked only once, and called from the most-derived class. However,
such objects behave unspecified when being assigned. For example:
--- 22483,22492 ----
File: gcc.info, Node: Copy Assignment, Prev: Temporaries, Up: C++ Misunderstandings
! 10.9.4 Implicit Copy-Assignment for Virtual Bases
! -------------------------------------------------
! When a base class is virtual, only one subobject of the base class
belongs to each full object. Also, the constructors and destructors are
invoked only once, and called from the most-derived class. However,
such objects behave unspecified when being assigned. For example:
*************** such objects behave unspecified when bei
*** 22456,22476 ****
name = strdup (other.name);
}
};
!
struct A:virtual Base{
int val;
A():Base("A"){}
};
!
struct B:virtual Base{
int bval;
B():Base("B"){}
};
!
struct Derived:public A, public B{
Derived():Base("Derived"){}
};
!
void func(Derived &d1, Derived &d2)
{
d1 = d2;
--- 22499,22519 ----
name = strdup (other.name);
}
};
!
struct A:virtual Base{
int val;
A():Base("A"){}
};
!
struct B:virtual Base{
int bval;
B():Base("B"){}
};
!
struct Derived:public A, public B{
Derived():Base("Derived"){}
};
!
void func(Derived &d1, Derived &d2)
{
d1 = d2;
*************** subobject is assigned.
*** 22496,22505 ****
File: gcc.info, Node: Protoize Caveats, Next: Non-bugs, Prev: C++ Misunderstandings, Up: Trouble
! Caveats of using `protoize'
! ===========================
! The conversion programs `protoize' and `unprotoize' can sometimes
change a source file in a way that won't work unless you rearrange it.
* `protoize' can insert references to a type name or type tag before
--- 22539,22548 ----
File: gcc.info, Node: Protoize Caveats, Next: Non-bugs, Prev: C++ Misunderstandings, Up: Trouble
! 10.10 Caveats of using `protoize'
! =================================
! The conversion programs `protoize' and `unprotoize' can sometimes
change a source file in a way that won't work unless you rearrange it.
* `protoize' can insert references to a type name or type tag before
*************** change a source file in a way that won't
*** 22574,22584 ****
File: gcc.info, Node: Non-bugs, Next: Warnings and Errors, Prev: Protoize Caveats, Up: Trouble
! Certain Changes We Don't Want to Make
! =====================================
! This section lists changes that people frequently request, but which
! we do not make because we think GCC is better without them.
* Checking the number and type of arguments to a function which has
an old-fashioned definition and no prototype.
--- 22617,22627 ----
File: gcc.info, Node: Non-bugs, Next: Warnings and Errors, Prev: Protoize Caveats, Up: Trouble
! 10.11 Certain Changes We Don't Want to Make
! ===========================================
! This section lists changes that people frequently request, but which we
! do not make because we think GCC is better without them.
* Checking the number and type of arguments to a function which has
an old-fashioned definition and no prototype.
*************** we do not make because we think GCC is b
*** 22756,22762 ****
behave differently from one compiler to another:
void func (int, int);
!
int i = 2;
func (i++, i++);
--- 22799,22805 ----
behave differently from one compiler to another:
void func (int, int);
!
int i = 2;
func (i++, i++);
*************** we do not make because we think GCC is b
*** 22790,22799 ****
File: gcc.info, Node: Warnings and Errors, Prev: Non-bugs, Up: Trouble
! Warning Messages and Error Messages
! ===================================
! The GNU compiler can produce two kinds of diagnostics: errors and
warnings. Each kind has a different purpose:
"Errors" report problems that make it impossible to compile your
--- 22833,22842 ----
File: gcc.info, Node: Warnings and Errors, Prev: Non-bugs, Up: Trouble
! 10.12 Warning Messages and Error Messages
! =========================================
! The GNU compiler can produce two kinds of diagnostics: errors and
warnings. Each kind has a different purpose:
"Errors" report problems that make it impossible to compile your
*************** more detail on these and related command
*** 22827,22836 ****
File: gcc.info, Node: Bugs, Next: Service, Prev: Trouble, Up: Top
! Reporting Bugs
! **************
! Your bug reports play an essential role in making GCC reliable.
When you encounter a problem, the first thing to do is to see if it is
already known. *Note Trouble::. If it isn't known, then you should
--- 22870,22879 ----
File: gcc.info, Node: Bugs, Next: Service, Prev: Trouble, Up: Top
! 11 Reporting Bugs
! *****************
! Your bug reports play an essential role in making GCC reliable.
When you encounter a problem, the first thing to do is to see if it is
already known. *Note Trouble::. If it isn't known, then you should
*************** report the problem.
*** 22846,22855 ****
File: gcc.info, Node: Bug Criteria, Next: Bug Reporting, Up: Bugs
! Have You Found a Bug?
! =====================
! If you are not sure whether you have found a bug, here are some
guidelines:
* If the compiler gets a fatal signal, for any input whatever, that
--- 22889,22898 ----
File: gcc.info, Node: Bug Criteria, Next: Bug Reporting, Up: Bugs
! 11.1 Have You Found a Bug?
! ==========================
! If you are not sure whether you have found a bug, here are some
guidelines:
* If the compiler gets a fatal signal, for any input whatever, that
*************** guidelines:
*** 22897,22906 ****
File: gcc.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Bugs
! How and where to Report Bugs
! ============================
! Bugs should be reported to the GCC bug database. Please refer to
`http://gcc.gnu.org/bugs.html' for up-to-date instructions how to
submit bug reports. Copies of this file in HTML (`bugs.html') and
plain text (`BUGS') are also part of GCC releases.
--- 22940,22949 ----
File: gcc.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Bugs
! 11.2 How and where to Report Bugs
! =================================
! Bugs should be reported to the GCC bug database. Please refer to
`http://gcc.gnu.org/bugs.html' for up-to-date instructions how to
submit bug reports. Copies of this file in HTML (`bugs.html') and
plain text (`BUGS') are also part of GCC releases.
*************** plain text (`BUGS') are also part of GCC
*** 22908,22917 ****
File: gcc.info, Node: Service, Next: Contributing, Prev: Bugs, Up: Top
! How To Get Help with GCC
! ************************
! If you need help installing, using or changing GCC, there are two ways
to find it:
* Send a message to a suitable network mailing list. First try
--- 22951,22960 ----
File: gcc.info, Node: Service, Next: Contributing, Prev: Bugs, Up: Top
! 12 How To Get Help with GCC
! ***************************
! If you need help installing, using or changing GCC, there are two ways
to find it:
* Send a message to a suitable network mailing list. First try
*************** to find it:
*** 22930,22940 ****
File: gcc.info, Node: Contributing, Next: Funding, Prev: Service, Up: Top
! Contributing to GCC Development
! *******************************
! If you would like to help pretest GCC releases to assure they work
! well, current development sources are available by CVS (see
`http://gcc.gnu.org/cvs.html'). Source and binary snapshots are also
available for FTP; see `http://gcc.gnu.org/snapshots.html'.
--- 22973,22983 ----
File: gcc.info, Node: Contributing, Next: Funding, Prev: Service, Up: Top
! 13 Contributing to GCC Development
! **********************************
! If you would like to help pretest GCC releases to assure they work well,
! current development sources are available by CVS (see
`http://gcc.gnu.org/cvs.html'). Source and binary snapshots are also
available for FTP; see `http://gcc.gnu.org/snapshots.html'.
*************** File: gcc.info, Node: Funding, Next: G
*** 22954,22960 ****
Funding Free Software
*********************
! If you want to have more free software a few years from now, it makes
sense for you to help encourage people to contribute funds for its
development. The most effective approach known is to encourage
commercial redistributors to donate.
--- 22997,23003 ----
Funding Free Software
*********************
! If you want to have more free software a few years from now, it makes
sense for you to help encourage people to contribute funds for its
development. The most effective approach known is to encourage
commercial redistributors to donate.
*************** File: gcc.info, Node: GNU Project, Nex
*** 23004,23010 ****
The GNU Project and GNU/Linux
*****************************
! The GNU Project was launched in 1984 to develop a complete Unix-like
operating system which is free software: the GNU system. (GNU is a
recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".)
Variants of the GNU operating system, which use the kernel Linux, are
--- 23047,23053 ----
The GNU Project and GNU/Linux
*****************************
! The GNU Project was launched in 1984 to develop a complete Unix-like
operating system which is free software: the GNU system. (GNU is a
recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".)
Variants of the GNU operating system, which use the kernel Linux, are
*************** GNU GENERAL PUBLIC LICENSE
*** 23022,23037 ****
**************************
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
--- 23065,23081 ----
**************************
Version 2, June 1991
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
*************** modification follow.
*** 23286,23292 ****
and reuse of software generally.
NO WARRANTY
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
--- 23330,23335 ----
*************** modification follow.
*** 23310,23320 ****
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
-
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
--- 23353,23362 ----
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
*************** the "copyright" line and a pointer to wh
*** 23326,23342 ****
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--- 23368,23384 ----
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*************** necessary. Here is a sample; alter the
*** 23365,23371 ****
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
--- 23407,23413 ----
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
*************** GNU Free Documentation License
*** 23382,23390 ****
******************************
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
--- 23424,23433 ----
******************************
Version 1.2, November 2002
+
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 23778,23784 ****
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
--- 23821,23827 ----
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
*************** File: gcc.info, Node: Contributors, Ne
*** 23812,23818 ****
Contributors to GCC
*******************
! The GCC project would like to thank its many contributors. Without
them the project would not have been nearly as successful as it has
been. Any omissions in this list are accidental. Feel free to contact
or if you have been left out or
--- 23855,23861 ----
Contributors to GCC
*******************
! The GCC project would like to thank its many contributors. Without
them the project would not have been nearly as successful as it has
been. Any omissions in this list are accidental. Feel free to contact
or if you have been left out or
*************** File: gcc.info, Node: Option Index, Ne
*** 24659,25969 ****
Option Index
************
! GCC's command line options are indexed here without any initial `-' or
`--'. Where an option has both positive and negative forms (such as
`-fOPTION' and `-fno-OPTION'), relevant entries in the manual are
indexed under the most appropriate form; it may sometimes be useful to
look up both forms.
* Menu:
! * ###: Overall Options.
! * -mf930: SPARC Options.
! * -mf934: SPARC Options.
* A: Preprocessor Options.
! * all_load: Darwin Options.
! * allowable_client: Darwin Options.
! * ansi <1>: Non-bugs.
! * ansi <2>: Other Builtins.
* ansi <3>: Preprocessor Options.
! * ansi <4>: C Dialect Options.
! * ansi: Standards.
! * arch_errors_fatal: Darwin Options.
! * arch_only: Darwin Options.
! * aux-info: C Dialect Options.
! * b: Target Options.
! * B: Directory Options.
! * bcopy-builtin: PDP-11 Options.
! * bind_at_load: Darwin Options.
! * bundle: Darwin Options.
! * bundle_loader: Darwin Options.
! * c: Link Options.
* C: Preprocessor Options.
! * c: Overall Options.
! * client_name: Darwin Options.
! * compatibility_version: Darwin Options.
! * crossjumping: Optimize Options.
! * current_version: Darwin Options.
* D: Preprocessor Options.
! * d: Debugging Options.
! * da: Debugging Options.
! * dA: Debugging Options.
! * dB: Debugging Options.
! * db: Debugging Options.
! * dC: Debugging Options.
! * dc: Debugging Options.
* dD <1>: Preprocessor Options.
! * dD: Debugging Options.
! * dd: Debugging Options.
! * dE: Debugging Options.
! * dependency-file: Darwin Options.
! * dF: Debugging Options.
! * df: Debugging Options.
! * dG: Debugging Options.
! * dg: Debugging Options.
! * dH: Debugging Options.
! * dh: Debugging Options.
* dI: Preprocessor Options.
! * di: Debugging Options.
! * dj: Debugging Options.
! * dk: Debugging Options.
! * dL: Debugging Options.
! * dl: Debugging Options.
* dM: Preprocessor Options.
! * dm: Debugging Options.
! * dM: Debugging Options.
* dN <1>: Preprocessor Options.
! * dN: Debugging Options.
! * dn: Debugging Options.
! * do: Debugging Options.
! * dP: Debugging Options.
! * dp: Debugging Options.
! * dR: Debugging Options.
! * dr: Debugging Options.
! * dS: Debugging Options.
! * ds: Debugging Options.
! * dT: Debugging Options.
! * dt: Debugging Options.
! * dU: Debugging Options.
! * du: Debugging Options.
! * dumpmachine: Debugging Options.
! * dumpspecs: Debugging Options.
! * dumpversion: Debugging Options.
! * dv: Debugging Options.
! * dV: Debugging Options.
! * dw: Debugging Options.
! * dx: Debugging Options.
! * dy: Debugging Options.
! * dylib_file: Darwin Options.
! * dylinker_install_name: Darwin Options.
! * dynamic: Darwin Options.
! * dynamiclib: Darwin Options.
! * dZ: Debugging Options.
! * dz: Debugging Options.
! * E <1>: Link Options.
! * E: Overall Options.
! * EB <1>: ARC Options.
! * EB: MIPS Options.
! * EL <1>: ARC Options.
! * EL: MIPS Options.
! * exported_symbols_list: Darwin Options.
* fabi-version: C++ Dialect Options.
! * falign-functions: Optimize Options.
! * falign-jumps: Optimize Options.
! * falign-labels: Optimize Options.
! * falign-loops: Optimize Options.
! * fargument-alias: Code Gen Options.
! * fargument-noalias: Code Gen Options.
! * fargument-noalias-global: Code Gen Options.
! * fbounds-check: Code Gen Options.
! * fbranch-probabilities: Optimize Options.
! * fbranch-target-load-optimize: Optimize Options.
! * fbranch-target-load-optimize2: Optimize Options.
! * fcall-saved <1>: Interoperation.
! * fcall-saved: Code Gen Options.
! * fcall-used: Code Gen Options.
! * fcaller-saves: Optimize Options.
* fcheck-new: C++ Dialect Options.
* fcommon: Variable Attributes.
! * fcond-mismatch: C Dialect Options.
* fconserve-space: C++ Dialect Options.
* fconstant-string-class: Objective-C Dialect Options.
! * fcse-follow-jumps: Optimize Options.
! * fcse-skip-blocks: Optimize Options.
! * fdata-sections: Optimize Options.
! * fdelayed-branch: Optimize Options.
! * fdelete-null-pointer-checks: Optimize Options.
* fdiagnostics-show-location: Language Independent Options.
! * fdollars-in-identifiers <1>: Interoperation.
* fdollars-in-identifiers: Preprocessor Options.
! * fdump-class-hierarchy: Debugging Options.
! * fdump-translation-unit: Debugging Options.
! * fdump-tree: Debugging Options.
! * fdump-unnumbered: Debugging Options.
! * feliminate-dwarf2-dups: Debugging Options.
! * feliminate-unused-debug-symbols: Debugging Options.
! * feliminate-unused-debug-types: Debugging Options.
! * fexceptions: Code Gen Options.
* fexec-charset: Preprocessor Options.
! * fexpensive-optimizations: Optimize Options.
! * ffast-math: Optimize Options.
! * ffinite-math-only: Optimize Options.
! * ffixed: Code Gen Options.
! * ffloat-store <1>: Disappointments.
! * ffloat-store: Optimize Options.
* ffor-scope: C++ Dialect Options.
! * fforce-addr: Optimize Options.
! * fforce-mem: Optimize Options.
* ffreestanding <1>: Function Attributes.
! * ffreestanding <2>: C Dialect Options.
! * ffreestanding: Standards.
! * ffunction-sections: Optimize Options.
! * fgcse: Optimize Options.
! * fgcse-las: Optimize Options.
! * fgcse-lm: Optimize Options.
! * fgcse-sm: Optimize Options.
* fgnu-runtime: Objective-C Dialect Options.
! * fhosted: C Dialect Options.
! * filelist: Darwin Options.
! * finhibit-size-directive: Code Gen Options.
! * finline-functions: Optimize Options.
! * finline-limit: Optimize Options.
* finput-charset: Preprocessor Options.
* finstrument-functions <1>: Function Attributes.
! * finstrument-functions: Code Gen Options.
! * fkeep-inline-functions <1>: Inline.
! * fkeep-inline-functions: Optimize Options.
! * fkeep-static-consts: Optimize Options.
! * flat_namespace: Darwin Options.
! * fleading-underscore: Code Gen Options.
! * floop-optimize: Optimize Options.
! * fmem-report: Debugging Options.
* fmessage-length: Language Independent Options.
! * fmove-all-movables: Optimize Options.
* fms-extensions <1>: C++ Dialect Options.
! * fms-extensions: C Dialect Options.
! * fnew-ra: Optimize Options.
* fnext-runtime: Objective-C Dialect Options.
* fno-access-control: C++ Dialect Options.
! * fno-asm: C Dialect Options.
! * fno-branch-count-reg: Optimize Options.
! * fno-builtin <1>: Other Builtins.
! * fno-builtin: C Dialect Options.
* fno-common <1>: Variable Attributes.
! * fno-common: Code Gen Options.
* fno-const-strings: C++ Dialect Options.
! * fno-cprop-registers: Optimize Options.
! * fno-default-inline <1>: Inline.
! * fno-default-inline <2>: Optimize Options.
* fno-default-inline: C++ Dialect Options.
! * fno-defer-pop: Optimize Options.
* fno-elide-constructors: C++ Dialect Options.
* fno-enforce-eh-specs: C++ Dialect Options.
* fno-for-scope: C++ Dialect Options.
! * fno-function-cse: Optimize Options.
* fno-gnu-keywords: C++ Dialect Options.
! * fno-guess-branch-probability: Optimize Options.
! * fno-ident: Code Gen Options.
! * fno-implement-inlines <1>: C++ Interface.
* fno-implement-inlines: C++ Dialect Options.
* fno-implicit-inline-templates: C++ Dialect Options.
* fno-implicit-templates <1>: Template Instantiation.
* fno-implicit-templates: C++ Dialect Options.
! * fno-inline: Optimize Options.
! * fno-math-errno: Optimize Options.
* fno-nil-receivers: Objective-C Dialect Options.
* fno-nonansi-builtins: C++ Dialect Options.
* fno-operator-names: C++ Dialect Options.
* fno-optional-diags: C++ Dialect Options.
! * fno-peephole: Optimize Options.
! * fno-peephole2: Optimize Options.
* fno-rtti: C++ Dialect Options.
! * fno-sched-interblock: Optimize Options.
! * fno-sched-spec: Optimize Options.
* fno-show-column: Preprocessor Options.
! * fno-signed-bitfields: C Dialect Options.
! * fno-stack-limit: Code Gen Options.
! * fno-trapping-math: Optimize Options.
! * fno-unsigned-bitfields: C Dialect Options.
* fno-weak: C++ Dialect Options.
* fno-working-directory: Preprocessor Options.
! * fno-zero-initialized-in-bss: Optimize Options.
! * fnon-call-exceptions: Code Gen Options.
* fobjc-exceptions: Objective-C Dialect Options.
! * fold-unroll-all-loops: Optimize Options.
! * fold-unroll-loops: Optimize Options.
! * fomit-frame-pointer: Optimize Options.
! * foptimize-register-move: Optimize Options.
! * foptimize-sibling-calls: Optimize Options.
! * force_cpusubtype_ALL: Darwin Options.
! * force_flat_namespace: Darwin Options.
! * fpack-struct: Code Gen Options.
! * fpcc-struct-return <1>: Incompatibilities.
! * fpcc-struct-return: Code Gen Options.
* fpch-deps: Preprocessor Options.
! * fpeel-loops: Optimize Options.
* fpermissive: C++ Dialect Options.
! * fPIC: Code Gen Options.
! * fpic: Code Gen Options.
! * fPIE: Code Gen Options.
! * fpie: Code Gen Options.
! * fprefetch-loop-arrays: Optimize Options.
* fpreprocessed: Preprocessor Options.
! * fprofile-arcs <1>: Other Builtins.
! * fprofile-arcs: Debugging Options.
! * fprofile-generate: Optimize Options.
! * fprofile-use: Optimize Options.
! * fprofile-values: Optimize Options.
! * frandom-string: Debugging Options.
! * freduce-all-givs: Optimize Options.
! * freg-struct-return: Code Gen Options.
! * fregmove: Optimize Options.
! * frename-registers: Optimize Options.
! * freorder-blocks: Optimize Options.
! * freorder-functions: Optimize Options.
* freplace-objc-classes: Objective-C Dialect Options.
* frepo <1>: Template Instantiation.
* frepo: C++ Dialect Options.
! * frerun-cse-after-loop: Optimize Options.
! * frerun-loop-opt: Optimize Options.
! * frounding-math: Optimize Options.
! * fsched-spec-load: Optimize Options.
! * fsched-spec-load-dangerous: Optimize Options.
! * fsched-stalled-insns: Optimize Options.
! * fsched-stalled-insns-dep: Optimize Options.
! * fsched-verbose: Debugging Options.
! * fsched2-use-superblocks: Optimize Options.
! * fsched2-use-traces: Optimize Options.
! * fschedule-insns: Optimize Options.
! * fschedule-insns2: Optimize Options.
! * fshared-data: Code Gen Options.
! * fshort-double: Code Gen Options.
! * fshort-enums <1>: Non-bugs.
! * fshort-enums <2>: Type Attributes.
! * fshort-enums: Code Gen Options.
! * fshort-wchar: Code Gen Options.
! * fsignaling-nans: Optimize Options.
! * fsigned-bitfields <1>: Non-bugs.
! * fsigned-bitfields: C Dialect Options.
! * fsigned-char: C Dialect Options.
! * fsingle-precision-constant: Optimize Options.
! * fstack-check: Code Gen Options.
! * fstack-limit-register: Code Gen Options.
! * fstack-limit-symbol: Code Gen Options.
* fstats: C++ Dialect Options.
! * fstrength-reduce: Optimize Options.
! * fstrict-aliasing: Optimize Options.
! * fsyntax-only: Warning Options.
* ftabstop: Preprocessor Options.
* ftemplate-depth: C++ Dialect Options.
! * ftest-coverage: Debugging Options.
! * fthread-jumps: Optimize Options.
! * ftime-report: Debugging Options.
! * ftracer: Optimize Options.
! * ftrapv: Code Gen Options.
! * funit-at-a-time: Optimize Options.
! * funroll-all-loops: Optimize Options.
! * funroll-loops <1>: Non-bugs.
! * funroll-loops: Optimize Options.
! * funsafe-math-optimizations: Optimize Options.
! * funsigned-bitfields <1>: Non-bugs.
! * funsigned-bitfields: C Dialect Options.
! * funsigned-char: C Dialect Options.
! * funswitch-loops: Optimize Options.
! * funwind-tables: Code Gen Options.
* fuse-cxa-atexit: C++ Dialect Options.
! * fverbose-asm: Code Gen Options.
! * fvpt: Optimize Options.
! * fweb: Optimize Options.
* fwide-exec-charset: Preprocessor Options.
* fworking-directory: Preprocessor Options.
! * fwrapv: Code Gen Options.
! * fwritable-strings <1>: Incompatibilities.
! * fwritable-strings: C Dialect Options.
* fzero-link: Objective-C Dialect Options.
! * G <1>: System V Options.
! * G <2>: MIPS Options.
* G <3>: RS/6000 and PowerPC Options.
! * G: M32R/D Options.
! * g: Debugging Options.
! * gcoff: Debugging Options.
! * gdwarf-2: Debugging Options.
* gen-decls: Objective-C Dialect Options.
! * ggdb: Debugging Options.
! * gnu-ld: HPPA Options.
! * gstabs: Debugging Options.
! * gstabs+: Debugging Options.
! * gvms: Debugging Options.
! * gxcoff: Debugging Options.
! * gxcoff+: Debugging Options.
* H: Preprocessor Options.
! * headerpad_max_install_names: Darwin Options.
* help <1>: Preprocessor Options.
! * help: Overall Options.
! * hp-ld: HPPA Options.
! * I <1>: Directory Options.
* I: Preprocessor Options.
! * I- <1>: Directory Options.
* I-: Preprocessor Options.
* idirafter: Preprocessor Options.
! * if-conversion: Optimize Options.
! * if-conversion2: Optimize Options.
* imacros: Preprocessor Options.
! * image_base: Darwin Options.
* include: Preprocessor Options.
! * init: Darwin Options.
! * install_name: Darwin Options.
* iprefix: Preprocessor Options.
* isystem: Preprocessor Options.
* iwithprefix: Preprocessor Options.
* iwithprefixbefore: Preprocessor Options.
! * keep_private_externs: Darwin Options.
! * L: Directory Options.
! * l: Link Options.
! * lobjc: Link Options.
* M: Preprocessor Options.
! * m1: SH Options.
! * m10: PDP-11 Options.
* m128bit-long-double: i386 and x86-64 Options.
! * m16-bit: CRIS Options.
! * m2: SH Options.
! * m210: MCore Options.
! * m3: SH Options.
* m31: S/390 and zSeries Options.
* m32 <1>: i386 and x86-64 Options.
! * m32: SPARC Options.
! * m32-bit: CRIS Options.
! * m32032: NS32K Options.
! * m32081: NS32K Options.
! * m32332: NS32K Options.
! * m32381: NS32K Options.
! * m32532: NS32K Options.
! * m32r: M32R/D Options.
! * m32r2: M32R/D Options.
! * m32rx: M32R/D Options.
! * m340: MCore Options.
* m386: i386 and x86-64 Options.
* m3dnow: i386 and x86-64 Options.
! * m3e: SH Options.
! * m4: SH Options.
! * m4-nofpu: SH Options.
! * m4-single: SH Options.
! * m4-single-only: SH Options.
! * m40: PDP-11 Options.
! * m45: PDP-11 Options.
* m486: i386 and x86-64 Options.
! * m4byte-functions: MCore Options.
! * m5200: M680x0 Options.
* m64 <1>: S/390 and zSeries Options.
* m64 <2>: i386 and x86-64 Options.
! * m64: SPARC Options.
! * m68000: M680x0 Options.
! * m68020: M680x0 Options.
! * m68020-40: M680x0 Options.
! * m68020-60: M680x0 Options.
! * m68030: M680x0 Options.
! * m68040: M680x0 Options.
! * m68060: M680x0 Options.
! * m6811: M68hc1x Options.
! * m6812: M68hc1x Options.
! * m68881: M680x0 Options.
! * m68hc11: M68hc1x Options.
! * m68hc12: M68hc1x Options.
! * m68hcs12: M68hc1x Options.
! * m68S12: M68hc1x Options.
! * m8-bit: CRIS Options.
* m96bit-long-double: i386 and x86-64 Options.
! * mabi-mmixware: MMIX Options.
! * mabi=32: MIPS Options.
! * mabi=64: MIPS Options.
* mabi=altivec: RS/6000 and PowerPC Options.
! * mabi=eabi: MIPS Options.
! * mabi=gnu: MMIX Options.
! * mabi=n32: MIPS Options.
* mabi=no-altivec: RS/6000 and PowerPC Options.
* mabi=no-spe: RS/6000 and PowerPC Options.
! * mabi=o64: MIPS Options.
* mabi=spe: RS/6000 and PowerPC Options.
! * mabicalls: MIPS Options.
! * mabort-on-noreturn: ARM Options.
! * mabshi: PDP-11 Options.
! * mac0: PDP-11 Options.
! * macc-4: FRV Options.
! * macc-8: FRV Options.
* maccumulate-outgoing-args: i386 and x86-64 Options.
* mads: RS/6000 and PowerPC Options.
* maix-struct-return: RS/6000 and PowerPC Options.
* maix32: RS/6000 and PowerPC Options.
* maix64: RS/6000 and PowerPC Options.
! * malign-300: H8/300 Options.
* malign-double: i386 and x86-64 Options.
! * malign-int: M680x0 Options.
! * malign-loops: M32R/D Options.
* malign-natural: RS/6000 and PowerPC Options.
* malign-power: RS/6000 and PowerPC Options.
! * malignment-traps: ARM Options.
! * malloc-cc: FRV Options.
! * malpha-as: DEC Alpha Options.
* maltivec: RS/6000 and PowerPC Options.
! * mam33: MN10300 Options.
! * maout: CRIS Options.
! * mapcs: ARM Options.
! * mapcs-26: ARM Options.
! * mapcs-32: ARM Options.
! * mapcs-frame: ARM Options.
! * mapp-regs <1>: V850 Options.
! * mapp-regs: SPARC Options.
! * march <1>: CRIS Options.
* march <2>: S/390 and zSeries Options.
! * march <3>: HPPA Options.
* march <4>: i386 and x86-64 Options.
! * march <5>: MIPS Options.
! * march: ARM Options.
! * masm-compat: Intel 960 Options.
! * masm-optimize: D30V Options.
* masm=DIALECT: i386 and x86-64 Options.
! * mauto-incdec: M68hc1x Options.
! * mauto-pic: IA-64 Options.
! * mb: SH Options.
! * mb-step: IA-64 Options.
* mbackchain: S/390 and zSeries Options.
! * mbase-addresses: MMIX Options.
! * mbcopy: PDP-11 Options.
* mbig <1>: TMS320C3x/C4x Options.
* mbig: RS/6000 and PowerPC Options.
! * mbig-endian <1>: IA-64 Options.
! * mbig-endian <2>: MCore Options.
* mbig-endian <3>: RS/6000 and PowerPC Options.
! * mbig-endian: ARM Options.
* mbig-memory: TMS320C3x/C4x Options.
! * mbig-switch <1>: V850 Options.
! * mbig-switch: HPPA Options.
! * mbigtable: SH Options.
* mbit-align: RS/6000 and PowerPC Options.
! * mbitfield <1>: NS32K Options.
! * mbitfield: M680x0 Options.
* mbk: TMS320C3x/C4x Options.
! * mbranch-cheap: PDP-11 Options.
! * mbranch-cost: D30V Options.
! * mbranch-cost=NUMBER: M32R/D Options.
! * mbranch-expensive: PDP-11 Options.
! * mbranch-likely: MIPS Options.
! * mbranch-predict: MMIX Options.
! * mbuild-constants: DEC Alpha Options.
! * mbwx: DEC Alpha Options.
! * mc68000: M680x0 Options.
! * mc68020: M680x0 Options.
! * mca: Intel 960 Options.
* mcall-gnu: RS/6000 and PowerPC Options.
* mcall-linux: RS/6000 and PowerPC Options.
* mcall-netbsd: RS/6000 and PowerPC Options.
! * mcall-prologues: AVR Options.
* mcall-solaris: RS/6000 and PowerPC Options.
* mcall-sysv: RS/6000 and PowerPC Options.
* mcall-sysv-eabi: RS/6000 and PowerPC Options.
* mcall-sysv-noeabi: RS/6000 and PowerPC Options.
! * mcallee-super-interworking: ARM Options.
! * mcaller-super-interworking: ARM Options.
! * mcallgraph-data: MCore Options.
! * mcc-init: CRIS Options.
! * mcf: Intel 960 Options.
! * mcheck-zero-division: MIPS Options.
! * mcirrus-fix-invalid-insns: ARM Options.
! * mcix: DEC Alpha Options.
! * mcmodel=embmedany: SPARC Options.
* mcmodel=kernel: i386 and x86-64 Options.
* mcmodel=large: i386 and x86-64 Options.
! * mcmodel=medany: SPARC Options.
* mcmodel=medium: i386 and x86-64 Options.
! * mcmodel=medlow: SPARC Options.
! * mcmodel=medmid: SPARC Options.
* mcmodel=small: i386 and x86-64 Options.
! * mcode-align: Intel 960 Options.
! * mcomplex-addr: Intel 960 Options.
! * mcond-exec <1>: FRV Options.
! * mcond-exec: D30V Options.
! * mcond-move: FRV Options.
! * mconst-align: CRIS Options.
! * mconst16: Xtensa Options.
! * mconstant-gp: IA-64 Options.
! * mcpu <1>: FRV Options.
! * mcpu <2>: CRIS Options.
! * mcpu <3>: ARC Options.
* mcpu <4>: TMS320C3x/C4x Options.
! * mcpu <5>: DEC Alpha Options.
* mcpu <6>: i386 and x86-64 Options.
* mcpu <7>: RS/6000 and PowerPC Options.
! * mcpu <8>: ARM Options.
! * mcpu: SPARC Options.
! * mcpu32: M680x0 Options.
! * mcypress: SPARC Options.
* MD: Preprocessor Options.
! * mdalign: SH Options.
! * mdata: ARC Options.
! * mdata-align: CRIS Options.
* mdb: TMS320C3x/C4x Options.
* mdebug <1>: S/390 and zSeries Options.
! * mdebug: M32R/D Options.
! * mdec-asm: PDP-11 Options.
! * mdisable-callt: V850 Options.
! * mdisable-fpregs: HPPA Options.
! * mdisable-indexing: HPPA Options.
! * mdiv: MCore Options.
! * mdouble: FRV Options.
! * mdouble-float: MIPS Options.
* mdp-isr-reload: TMS320C3x/C4x Options.
! * mdwarf2-asm: IA-64 Options.
! * mdword: FRV Options.
* mdynamic-no-pic: RS/6000 and PowerPC Options.
* meabi: RS/6000 and PowerPC Options.
! * mearly-stop-bits: IA-64 Options.
! * melf <1>: MMIX Options.
! * melf: CRIS Options.
! * melinux: CRIS Options.
! * melinux-stacksize: CRIS Options.
* memb: RS/6000 and PowerPC Options.
! * membedded-data: MIPS Options.
! * membedded-pic: MIPS Options.
! * mep: V850 Options.
! * mepsilon: MMIX Options.
* mesa: S/390 and zSeries Options.
! * metrax100: CRIS Options.
! * metrax4: CRIS Options.
! * mexplicit-relocs <1>: DEC Alpha Options.
! * mexplicit-relocs: MIPS Options.
! * mextmem: D30V Options.
! * mextmemory: D30V Options.
* MF: Preprocessor Options.
* mfast-fix: TMS320C3x/C4x Options.
! * mfast-indirect-calls: HPPA Options.
! * mfaster-structs: SPARC Options.
! * mfix: DEC Alpha Options.
! * mfix-sb1: MIPS Options.
! * mfixed-cc: FRV Options.
! * mfixed-range: IA-64 Options.
! * mflat: SPARC Options.
* mfloat-gprs: RS/6000 and PowerPC Options.
! * mfloat-ieee: DEC Alpha Options.
! * mfloat-vax: DEC Alpha Options.
! * mfloat32: PDP-11 Options.
! * mfloat64: PDP-11 Options.
! * mflush-func: MIPS Options.
! * mflush-func=NAME: M32R/D Options.
! * mflush-trap=NUMBER: M32R/D Options.
! * mfmovd: SH Options.
! * mfp: ARM Options.
! * mfp-reg: DEC Alpha Options.
! * mfp-rounding-mode: DEC Alpha Options.
! * mfp-trap-mode: DEC Alpha Options.
! * mfp32: MIPS Options.
! * mfp64: MIPS Options.
! * mfpe: ARM Options.
! * mfpr-32: FRV Options.
! * mfpr-64: FRV Options.
! * mfpu <1>: PDP-11 Options.
! * mfpu: SPARC Options.
* mfull-toc: RS/6000 and PowerPC Options.
! * mfused-madd <1>: Xtensa Options.
* mfused-madd <2>: S/390 and zSeries Options.
! * mfused-madd <3>: MIPS Options.
* mfused-madd: RS/6000 and PowerPC Options.
! * mg: VAX Options.
* MG: Preprocessor Options.
! * mgas <1>: DEC Alpha Options.
! * mgas: HPPA Options.
! * mgnu: VAX Options.
! * mgnu-as: IA-64 Options.
! * mgnu-ld: IA-64 Options.
! * mgotplt: CRIS Options.
! * mgp32: MIPS Options.
! * mgp64: MIPS Options.
! * mgpr-32: FRV Options.
! * mgpr-64: FRV Options.
! * mh: H8/300 Options.
! * mhard-float <1>: FRV Options.
* mhard-float <2>: S/390 and zSeries Options.
! * mhard-float <3>: MIPS Options.
* mhard-float <4>: RS/6000 and PowerPC Options.
! * mhard-float <5>: ARM Options.
! * mhard-float: SPARC Options.
! * mhard-quad-float: SPARC Options.
! * mhardlit: MCore Options.
! * mhimem: NS32K Options.
! * mhitachi: SH Options.
! * mic-compat: Intel 960 Options.
! * mic2.0-compat: Intel 960 Options.
! * mic3.0-compat: Intel 960 Options.
! * mieee <1>: SH Options.
! * mieee: DEC Alpha Options.
! * mieee-compare: NS32K Options.
! * mieee-conformant: DEC Alpha Options.
* mieee-fp: i386 and x86-64 Options.
! * mieee-with-inexact: DEC Alpha Options.
! * milp32: IA-64 Options.
! * mimpure-text: SPARC Options.
! * minit-stack: AVR Options.
* minline-all-stringops: i386 and x86-64 Options.
! * minline-float-divide-max-throughput: IA-64 Options.
! * minline-float-divide-min-latency: IA-64 Options.
! * minline-int-divide-max-throughput: IA-64 Options.
! * minline-int-divide-min-latency: IA-64 Options.
! * minline-sqrt-max-throughput: IA-64 Options.
! * minline-sqrt-min-latency: IA-64 Options.
! * minmax: M68hc1x Options.
* minsert-sched-nops: RS/6000 and PowerPC Options.
! * mint16: PDP-11 Options.
! * mint32 <1>: PDP-11 Options.
! * mint32: H8/300 Options.
! * mint64: MIPS Options.
! * mintel-asm: Intel 960 Options.
! * mips1: MIPS Options.
! * mips16: MIPS Options.
! * mips2: MIPS Options.
! * mips3: MIPS Options.
! * mips32: MIPS Options.
! * mips32r2: MIPS Options.
! * mips4: MIPS Options.
! * mips64: MIPS Options.
* misel: RS/6000 and PowerPC Options.
! * misize: SH Options.
! * missue-rate=NUMBER: M32R/D Options.
! * mjump-in-delay: HPPA Options.
! * mka: Intel 960 Options.
! * mkb: Intel 960 Options.
! * mknuthdiv: MMIX Options.
! * ml: SH Options.
! * mlarge-data: DEC Alpha Options.
! * mlarge-text: DEC Alpha Options.
! * mleaf-procedures: Intel 960 Options.
! * mlibfuncs: MMIX Options.
! * mlibrary-pic: FRV Options.
! * mlinker-opt: HPPA Options.
! * mlinux: CRIS Options.
* mlittle: RS/6000 and PowerPC Options.
! * mlittle-endian <1>: IA-64 Options.
! * mlittle-endian <2>: MCore Options.
* mlittle-endian <3>: RS/6000 and PowerPC Options.
! * mlittle-endian <4>: ARM Options.
! * mlittle-endian: SPARC Options.
! * mlong-calls <1>: V850 Options.
! * mlong-calls <2>: MIPS Options.
! * mlong-calls <3>: ARM Options.
! * mlong-calls: M68hc1x Options.
! * mlong-double-64: Intel 960 Options.
! * mlong-load-store: HPPA Options.
! * mlong32: MIPS Options.
! * mlong64: MIPS Options.
* mlongcall: RS/6000 and PowerPC Options.
! * mlongcalls: Xtensa Options.
* mloop-unsigned: TMS320C3x/C4x Options.
! * mlp64: IA-64 Options.
* MM: Preprocessor Options.
! * mmad: MIPS Options.
! * mmangle-cpu: ARC Options.
! * mmax: DEC Alpha Options.
! * mmax-stack-frame: CRIS Options.
! * mmc: Intel 960 Options.
! * mmcu: AVR Options.
* MMD: Preprocessor Options.
! * mmedia: FRV Options.
! * mmemcpy: MIPS Options.
! * mmemory-latency: DEC Alpha Options.
* mmemparm: TMS320C3x/C4x Options.
* mminimal-toc: RS/6000 and PowerPC Options.
* mmmx: i386 and x86-64 Options.
! * mmodel=large: M32R/D Options.
! * mmodel=medium: M32R/D Options.
! * mmodel=small: M32R/D Options.
* mmpyi: TMS320C3x/C4x Options.
! * mmul-bug-workaround: CRIS Options.
! * mmuladd: FRV Options.
! * mmult-bug: MN10300 Options.
! * mmulti-add: NS32K Options.
! * mmulti-cond-exec: FRV Options.
* mmultiple: RS/6000 and PowerPC Options.
* mmvcle: S/390 and zSeries Options.
* mmvme: RS/6000 and PowerPC Options.
! * mn: H8/300 Options.
! * mnested-cond-exec: FRV Options.
* mnew-mnemonics: RS/6000 and PowerPC Options.
* mno-3dnow: i386 and x86-64 Options.
! * mno-4byte-functions: MCore Options.
! * mno-abicalls: MIPS Options.
! * mno-abshi: PDP-11 Options.
! * mno-ac0: PDP-11 Options.
* mno-align-double: i386 and x86-64 Options.
! * mno-align-int: M680x0 Options.
! * mno-align-loops: M32R/D Options.
* mno-align-stringops: i386 and x86-64 Options.
! * mno-alignment-traps: ARM Options.
* mno-altivec: RS/6000 and PowerPC Options.
! * mno-am33: MN10300 Options.
! * mno-app-regs <1>: V850 Options.
! * mno-app-regs: SPARC Options.
! * mno-asm-optimize: D30V Options.
* mno-backchain: S/390 and zSeries Options.
! * mno-base-addresses: MMIX Options.
* mno-bit-align: RS/6000 and PowerPC Options.
* mno-bk: TMS320C3x/C4x Options.
! * mno-branch-likely: MIPS Options.
! * mno-branch-predict: MMIX Options.
! * mno-bwx: DEC Alpha Options.
! * mno-callgraph-data: MCore Options.
! * mno-check-zero-division: MIPS Options.
! * mno-cirrus-fix-invalid-insns: ARM Options.
! * mno-cix: DEC Alpha Options.
! * mno-code-align: Intel 960 Options.
! * mno-complex-addr: Intel 960 Options.
! * mno-cond-exec: FRV Options.
! * mno-cond-move: FRV Options.
! * mno-const-align: CRIS Options.
! * mno-const16: Xtensa Options.
! * mno-crt0: MN10300 Options.
! * mno-data-align: CRIS Options.
* mno-db: TMS320C3x/C4x Options.
* mno-debug: S/390 and zSeries Options.
! * mno-div: MCore Options.
! * mno-double: FRV Options.
! * mno-dwarf2-asm: IA-64 Options.
! * mno-dword: FRV Options.
* mno-eabi: RS/6000 and PowerPC Options.
! * mno-early-stop-bits: IA-64 Options.
! * mno-eflags: FRV Options.
! * mno-embedded-data: MIPS Options.
! * mno-embedded-pic: MIPS Options.
! * mno-ep: V850 Options.
! * mno-epsilon: MMIX Options.
! * mno-explicit-relocs <1>: DEC Alpha Options.
! * mno-explicit-relocs: MIPS Options.
* mno-fancy-math-387: i386 and x86-64 Options.
* mno-fast-fix: TMS320C3x/C4x Options.
! * mno-faster-structs: SPARC Options.
! * mno-fix: DEC Alpha Options.
! * mno-flat: SPARC Options.
! * mno-float32: PDP-11 Options.
! * mno-float64: PDP-11 Options.
! * mno-flush-func: M32R/D Options.
! * mno-flush-trap: M32R/D Options.
* mno-fp-in-toc: RS/6000 and PowerPC Options.
! * mno-fp-regs: DEC Alpha Options.
* mno-fp-ret-in-387: i386 and x86-64 Options.
! * mno-fpu: SPARC Options.
! * mno-fused-madd <1>: Xtensa Options.
* mno-fused-madd <2>: S/390 and zSeries Options.
! * mno-fused-madd <3>: MIPS Options.
* mno-fused-madd: RS/6000 and PowerPC Options.
! * mno-gnu-as: IA-64 Options.
! * mno-gnu-ld: IA-64 Options.
! * mno-gotplt: CRIS Options.
! * mno-hardlit: MCore Options.
! * mno-ieee-compare: NS32K Options.
* mno-ieee-fp: i386 and x86-64 Options.
! * mno-int16: PDP-11 Options.
! * mno-int32: PDP-11 Options.
! * mno-interrupts: AVR Options.
! * mno-knuthdiv: MMIX Options.
! * mno-leaf-procedures: Intel 960 Options.
! * mno-libfuncs: MMIX Options.
! * mno-long-calls <1>: V850 Options.
! * mno-long-calls <2>: HPPA Options.
! * mno-long-calls <3>: MIPS Options.
! * mno-long-calls <4>: ARM Options.
! * mno-long-calls: M68hc1x Options.
* mno-longcall: RS/6000 and PowerPC Options.
! * mno-longcalls: Xtensa Options.
* mno-loop-unsigned: TMS320C3x/C4x Options.
! * mno-mad: MIPS Options.
! * mno-max: DEC Alpha Options.
! * mno-media: FRV Options.
! * mno-memcpy: MIPS Options.
! * mno-mips16: MIPS Options.
* mno-mmx: i386 and x86-64 Options.
* mno-mpyi: TMS320C3x/C4x Options.
! * mno-mul-bug-workaround: CRIS Options.
! * mno-muladd: FRV Options.
! * mno-mult-bug: MN10300 Options.
! * mno-multi-cond-exec: FRV Options.
* mno-multiple: RS/6000 and PowerPC Options.
* mno-mvcle: S/390 and zSeries Options.
! * mno-nested-cond-exec: FRV Options.
! * mno-pack: FRV Options.
* mno-parallel-insns: TMS320C3x/C4x Options.
* mno-parallel-mpy: TMS320C3x/C4x Options.
! * mno-pic: IA-64 Options.
* mno-power: RS/6000 and PowerPC Options.
* mno-power2: RS/6000 and PowerPC Options.
* mno-powerpc: RS/6000 and PowerPC Options.
* mno-powerpc-gfxopt: RS/6000 and PowerPC Options.
* mno-powerpc-gpopt: RS/6000 and PowerPC Options.
* mno-powerpc64: RS/6000 and PowerPC Options.
! * mno-prolog-function: V850 Options.
! * mno-prologue-epilogue: CRIS Options.
* mno-prototype: RS/6000 and PowerPC Options.
* mno-push-args: i386 and x86-64 Options.
! * mno-register-names: IA-64 Options.
* mno-regnames: RS/6000 and PowerPC Options.
! * mno-relax-immediate: MCore Options.
* mno-relocatable: RS/6000 and PowerPC Options.
* mno-relocatable-lib: RS/6000 and PowerPC Options.
! * mno-rnames: MIPS Options.
* mno-rptb: TMS320C3x/C4x Options.
* mno-rpts: TMS320C3x/C4x Options.
! * mno-scc: FRV Options.
! * mno-sched-prolog: ARM Options.
! * mno-sdata <1>: IA-64 Options.
* mno-sdata: RS/6000 and PowerPC Options.
! * mno-side-effects: CRIS Options.
! * mno-single-exit: MMIX Options.
! * mno-slow-bytes: MCore Options.
* mno-small-exec: S/390 and zSeries Options.
! * mno-soft-float: DEC Alpha Options.
! * mno-space-regs: HPPA Options.
! * mno-split: PDP-11 Options.
! * mno-split-addresses: MIPS Options.
* mno-sse: i386 and x86-64 Options.
! * mno-stack-align: CRIS Options.
! * mno-stack-bias: SPARC Options.
! * mno-strict-align <1>: Intel 960 Options.
* mno-strict-align <2>: RS/6000 and PowerPC Options.
! * mno-strict-align: M680x0 Options.
* mno-string: RS/6000 and PowerPC Options.
* mno-sum-in-toc: RS/6000 and PowerPC Options.
* mno-svr3-shlib: i386 and x86-64 Options.
! * mno-tablejump: AVR Options.
! * mno-tail-call: Intel 960 Options.
! * mno-target-align: Xtensa Options.
! * mno-text-section-literals: Xtensa Options.
* mno-toc: RS/6000 and PowerPC Options.
! * mno-toplevel-symbols: MMIX Options.
! * mno-unaligned-doubles: SPARC Options.
! * mno-uninit-const-in-rodata: MIPS Options.
* mno-update: RS/6000 and PowerPC Options.
! * mno-v8plus: SPARC Options.
! * mno-vis: SPARC Options.
! * mno-vliw-branch: FRV Options.
! * mno-volatile-asm-stop: IA-64 Options.
! * mno-wide-bitfields: MCore Options.
! * mno-xgot: MIPS Options.
* mno-xl-compat: RS/6000 and PowerPC Options.
! * mno-zero-extend: MMIX Options.
! * mnobitfield <1>: NS32K Options.
! * mnobitfield: M680x0 Options.
! * mnohimem: NS32K Options.
! * mnomacsave: SH Options.
! * mnominmax: M68hc1x Options.
! * mnomulti-add: NS32K Options.
! * mnop-fun-dllimport: ARM Options.
! * mnoregparam: NS32K Options.
! * mnosb: NS32K Options.
! * mnumerics: Intel 960 Options.
! * mold-align: Intel 960 Options.
* mold-mnemonics: RS/6000 and PowerPC Options.
* momit-leaf-frame-pointer: i386 and x86-64 Options.
! * monchip: D30V Options.
* MP: Preprocessor Options.
! * mpa-risc-1-0: HPPA Options.
! * mpa-risc-1-1: HPPA Options.
! * mpa-risc-2-0: HPPA Options.
! * mpack: FRV Options.
! * mpadstruct: SH Options.
* mparallel-insns: TMS320C3x/C4x Options.
* mparallel-mpy: TMS320C3x/C4x Options.
* mparanoid: TMS320C3x/C4x Options.
! * mpcrel: M680x0 Options.
! * mpdebug: CRIS Options.
* mpe: RS/6000 and PowerPC Options.
* mpentium: i386 and x86-64 Options.
* mpentiumpro: i386 and x86-64 Options.
! * mpic-register: ARM Options.
! * mpoke-function-name: ARM Options.
! * mportable-runtime: HPPA Options.
* mpower: RS/6000 and PowerPC Options.
* mpower2: RS/6000 and PowerPC Options.
* mpowerpc: RS/6000 and PowerPC Options.
* mpowerpc-gfxopt: RS/6000 and PowerPC Options.
* mpowerpc-gpopt: RS/6000 and PowerPC Options.
* mpowerpc64: RS/6000 and PowerPC Options.
! * mprefergot: SH Options.
* mpreferred-stack-boundary: i386 and x86-64 Options.
* mprioritize-restricted-insns: RS/6000 and PowerPC Options.
! * mprolog-function: V850 Options.
! * mprologue-epilogue: CRIS Options.
* mprototype: RS/6000 and PowerPC Options.
* mpush-args: i386 and x86-64 Options.
* MQ: Preprocessor Options.
! * mregister-names: IA-64 Options.
* mregnames: RS/6000 and PowerPC Options.
! * mregparam: NS32K Options.
* mregparm <1>: TMS320C3x/C4x Options.
* mregparm: i386 and x86-64 Options.
! * mrelax <1>: SH Options.
! * mrelax <2>: H8/300 Options.
! * mrelax: MN10300 Options.
! * mrelax-immediate: MCore Options.
* mrelocatable: RS/6000 and PowerPC Options.
* mrelocatable-lib: RS/6000 and PowerPC Options.
! * mrnames: MIPS Options.
! * mrodata: ARC Options.
* mrptb: TMS320C3x/C4x Options.
* mrpts: TMS320C3x/C4x Options.
* mrtd <1>: Function Attributes.
! * mrtd <2>: NS32K Options.
* mrtd <3>: i386 and x86-64 Options.
! * mrtd: M680x0 Options.
! * ms: H8/300 Options.
! * ms2600: H8/300 Options.
! * msa: Intel 960 Options.
! * msb <1>: NS32K Options.
! * msb: Intel 960 Options.
! * mscc: FRV Options.
* msched-costly-dep: RS/6000 and PowerPC Options.
! * mschedule: HPPA Options.
! * msda: V850 Options.
! * msdata <1>: IA-64 Options.
* msdata: RS/6000 and PowerPC Options.
* msdata-data: RS/6000 and PowerPC Options.
* msdata=default: RS/6000 and PowerPC Options.
* msdata=eabi: RS/6000 and PowerPC Options.
* msdata=none <1>: RS/6000 and PowerPC Options.
! * msdata=none: M32R/D Options.
! * msdata=sdata: M32R/D Options.
* msdata=sysv: RS/6000 and PowerPC Options.
! * msdata=use: M32R/D Options.
! * mshort <1>: M68hc1x Options.
! * mshort: M680x0 Options.
! * msim <1>: Xstormy16 Options.
* msim: RS/6000 and PowerPC Options.
! * msingle-exit: MMIX Options.
! * msingle-float: MIPS Options.
! * msingle-pic-base: ARM Options.
! * msio: HPPA Options.
! * msize: AVR Options.
! * mslow-bytes: MCore Options.
* msmall: TMS320C3x/C4x Options.
! * msmall-data: DEC Alpha Options.
* msmall-exec: S/390 and zSeries Options.
* msmall-memory: TMS320C3x/C4x Options.
! * msmall-text: DEC Alpha Options.
! * msoft-float <1>: FRV Options.
! * msoft-float <2>: PDP-11 Options.
* msoft-float <3>: S/390 and zSeries Options.
! * msoft-float <4>: NS32K Options.
! * msoft-float <5>: DEC Alpha Options.
! * msoft-float <6>: Intel 960 Options.
! * msoft-float <7>: HPPA Options.
* msoft-float <8>: i386 and x86-64 Options.
! * msoft-float <9>: MIPS Options.
* msoft-float <10>: RS/6000 and PowerPC Options.
! * msoft-float <11>: ARM Options.
! * msoft-float <12>: SPARC Options.
! * msoft-float: M680x0 Options.
! * msoft-quad-float: SPARC Options.
! * msoft-reg-count: M68hc1x Options.
! * mspace <1>: V850 Options.
! * mspace: SH Options.
! * msparclite: SPARC Options.
* mspe: RS/6000 and PowerPC Options.
! * msplit: PDP-11 Options.
! * msplit-addresses: MIPS Options.
* msse: i386 and x86-64 Options.
! * mstack-align: CRIS Options.
! * mstack-bias: SPARC Options.
! * mstrict-align <1>: Intel 960 Options.
* mstrict-align <2>: RS/6000 and PowerPC Options.
! * mstrict-align: M680x0 Options.
* mstring: RS/6000 and PowerPC Options.
! * mstructure-size-boundary: ARM Options.
! * msupersparc: SPARC Options.
* msvr3-shlib: i386 and x86-64 Options.
* msvr4-struct-return: RS/6000 and PowerPC Options.
! * mt: IA-64 Options.
* MT: Preprocessor Options.
! * mtail-call: Intel 960 Options.
! * mtarget-align: Xtensa Options.
! * mtda: V850 Options.
! * mtext: ARC Options.
! * mtext-section-literals: Xtensa Options.
* mthreads: i386 and x86-64 Options.
! * mthumb: ARM Options.
! * mthumb-interwork: ARM Options.
* mti: TMS320C3x/C4x Options.
! * mtiny-stack: AVR Options.
* mtls-direct-seg-refs: i386 and x86-64 Options.
! * mtls-size: IA-64 Options.
* mtoc: RS/6000 and PowerPC Options.
! * mtomcat-stats: FRV Options.
! * mtoplevel-symbols: MMIX Options.
! * mtpcs-frame: ARM Options.
! * mtpcs-leaf-frame: ARM Options.
! * mtrap-precision: DEC Alpha Options.
! * mtune <1>: CRIS Options.
* mtune <2>: S/390 and zSeries Options.
! * mtune <3>: DEC Alpha Options.
! * mtune <4>: i386 and x86-64 Options.
! * mtune <5>: MIPS Options.
! * mtune <6>: RS/6000 and PowerPC Options.
! * mtune <7>: ARM Options.
! * mtune: SPARC Options.
! * mtune-arch: IA-64 Options.
! * multi_module: Darwin Options.
! * multiply_defined: Darwin Options.
! * multiply_defined_unused: Darwin Options.
! * munaligned-doubles: SPARC Options.
! * muninit-const-in-rodata: MIPS Options.
! * munix: VAX Options.
! * munix-asm: PDP-11 Options.
* mupdate: RS/6000 and PowerPC Options.
! * musermode: SH Options.
! * mv8: SPARC Options.
! * mv850: V850 Options.
! * mv850e: V850 Options.
! * mv850e1: V850 Options.
! * mv8plus: SPARC Options.
! * mvis: SPARC Options.
! * mvliw-branch: FRV Options.
* mvms-return-codes: DEC Alpha/VMS Options.
! * mvolatile-asm-stop: IA-64 Options.
* mvxworks: RS/6000 and PowerPC Options.
! * mwide-bitfields: MCore Options.
* mwindiss: RS/6000 and PowerPC Options.
! * mwords-little-endian: ARM Options.
! * mxgot: MIPS Options.
* mxl-compat: RS/6000 and PowerPC Options.
* myellowknife: RS/6000 and PowerPC Options.
* mzarch: S/390 and zSeries Options.
! * mzda: V850 Options.
! * mzero-extend: MMIX Options.
! * no-integrated-cpp: C Dialect Options.
* no-red-zone: i386 and x86-64 Options.
! * noall_load: Darwin Options.
! * nocpp: MIPS Options.
! * nodefaultlibs: Link Options.
! * nofixprebinding: Darwin Options.
! * nolibdld: HPPA Options.
! * nomultidefs: Darwin Options.
! * noprebind: Darwin Options.
! * noseglinkedit: Darwin Options.
! * nostartfiles: Link Options.
* nostdinc: Preprocessor Options.
* nostdinc++ <1>: Preprocessor Options.
* nostdinc++: C++ Dialect Options.
! * nostdlib: Link Options.
* o: Preprocessor Options.
! * O: Optimize Options.
! * o: Overall Options.
! * O0: Optimize Options.
! * O1: Optimize Options.
! * O2: Optimize Options.
! * O3: Optimize Options.
! * Os: Optimize Options.
* P: Preprocessor Options.
! * p: Debugging Options.
! * pagezero_size: Darwin Options.
! * param: Optimize Options.
! * pass-exit-codes: Overall Options.
* pedantic <1>: Warnings and Errors.
! * pedantic <2>: Alternate Keywords.
! * pedantic <3>: C Extensions.
* pedantic <4>: Preprocessor Options.
! * pedantic <5>: Warning Options.
! * pedantic: Standards.
* pedantic-errors <1>: Warnings and Errors.
! * pedantic-errors <2>: Non-bugs.
! * pedantic-errors <3>: Actual Bugs.
* pedantic-errors <4>: Preprocessor Options.
! * pedantic-errors <5>: Warning Options.
! * pedantic-errors: Standards.
! * pg: Debugging Options.
! * pie: Link Options.
! * pipe: Overall Options.
! * prebind: Darwin Options.
! * prebind_all_twolevel_modules: Darwin Options.
* preprocessor: Preprocessor Options.
! * print-file-name: Debugging Options.
! * print-libgcc-file-name: Debugging Options.
! * print-multi-directory: Debugging Options.
! * print-multi-lib: Debugging Options.
* print-objc-runtime-info: Objective-C Dialect Options.
! * print-prog-name: Debugging Options.
! * print-search-dirs: Debugging Options.
! * private_bundle: Darwin Options.
! * pthread <1>: IA-64 Options.
* pthread: RS/6000 and PowerPC Options.
! * pthreads: SPARC Options.
! * Q: Debugging Options.
! * Qn: System V Options.
! * Qy: System V Options.
! * read_only_relocs: Darwin Options.
* remap: Preprocessor Options.
! * s: Link Options.
! * S <1>: Link Options.
! * S: Overall Options.
! * save-temps: Debugging Options.
! * sectalign: Darwin Options.
! * sectcreate: Darwin Options.
! * sectobjectsymbols: Darwin Options.
! * sectorder: Darwin Options.
! * seg1addr: Darwin Options.
! * seg_addr_table: Darwin Options.
! * seg_addr_table_filename: Darwin Options.
! * seglinkedit: Darwin Options.
! * segprot: Darwin Options.
! * segs_read_only_addr: Darwin Options.
! * segs_read_write_addr: Darwin Options.
! * shared: Link Options.
! * shared-libgcc: Link Options.
! * sim: CRIS Options.
! * sim2: CRIS Options.
! * single_module: Darwin Options.
! * specs: Directory Options.
! * static <1>: HPPA Options.
! * static <2>: Darwin Options.
! * static: Link Options.
! * static-libgcc: Link Options.
! * std <1>: Non-bugs.
! * std <2>: Other Builtins.
! * std <3>: C Dialect Options.
! * std: Standards.
* std=: Preprocessor Options.
! * sub_library: Darwin Options.
! * sub_umbrella: Darwin Options.
! * symbolic: Link Options.
* target-help <1>: Preprocessor Options.
! * target-help: Overall Options.
! * threads <1>: HPPA Options.
! * threads: SPARC Options.
! * time: Debugging Options.
! * traditional <1>: Incompatibilities.
! * traditional: C Dialect Options.
* traditional-cpp <1>: Preprocessor Options.
! * traditional-cpp: C Dialect Options.
* trigraphs <1>: Preprocessor Options.
! * trigraphs: C Dialect Options.
! * twolevel_namespace: Darwin Options.
! * u: Link Options.
* U: Preprocessor Options.
! * umbrella: Darwin Options.
* undef: Preprocessor Options.
! * undefined: Darwin Options.
! * unexported_symbols_list: Darwin Options.
! * V: Target Options.
* v <1>: Preprocessor Options.
! * v: Overall Options.
* version <1>: Preprocessor Options.
! * version: Overall Options.
! * W: Incompatibilities.
* w: Preprocessor Options.
! * W: Warning Options.
! * w: Warning Options.
! * Wa: Assembler Options.
* Wabi: C++ Dialect Options.
! * Waggregate-return: Warning Options.
! * Wall <1>: Standard Libraries.
* Wall <2>: Preprocessor Options.
! * Wall: Warning Options.
! * Wbad-function-cast: Warning Options.
! * Wcast-align: Warning Options.
! * Wcast-qual: Warning Options.
! * Wchar-subscripts: Warning Options.
* Wcomment <1>: Preprocessor Options.
! * Wcomment: Warning Options.
* Wcomments: Preprocessor Options.
! * Wconversion <1>: Protoize Caveats.
! * Wconversion: Warning Options.
* Wctor-dtor-privacy: C++ Dialect Options.
! * Wdeclaration-after-statement: Warning Options.
! * Wdisabled-optimization: Warning Options.
! * Wdiv-by-zero: Warning Options.
! * weak_reference_mismatches: Darwin Options.
* Weffc++: C++ Dialect Options.
* Wendif-labels <1>: Preprocessor Options.
! * Wendif-labels: Warning Options.
* Werror <1>: Preprocessor Options.
! * Werror: Warning Options.
! * Werror-implicit-function-declaration: Warning Options.
! * Wextra: Warning Options.
! * Wfloat-equal: Warning Options.
* Wformat <1>: Function Attributes.
! * Wformat: Warning Options.
* Wformat-nonliteral <1>: Function Attributes.
! * Wformat-nonliteral: Warning Options.
! * Wformat-security: Warning Options.
! * Wformat-y2k: Warning Options.
! * Wformat=2: Warning Options.
! * whatsloaded: Darwin Options.
! * whyload: Darwin Options.
! * Wimplicit: Warning Options.
! * Wimplicit-function-declaration: Warning Options.
! * Wimplicit-int: Warning Options.
* Wimport: Preprocessor Options.
! * Winit-self: Warning Options.
! * Winline <1>: Inline.
! * Winline: Warning Options.
! * Winvalid-pch: Warning Options.
! * Wl: Link Options.
! * Wlarger-than: Warning Options.
! * Wlong-long: Warning Options.
! * Wmain: Warning Options.
! * Wmissing-braces: Warning Options.
! * Wmissing-declarations: Warning Options.
! * Wmissing-format-attribute: Warning Options.
! * Wmissing-noreturn: Warning Options.
! * Wmissing-prototypes: Warning Options.
! * Wmultichar: Warning Options.
! * Wnested-externs: Warning Options.
* Wno-deprecated: C++ Dialect Options.
! * Wno-deprecated-declarations: Warning Options.
! * Wno-div-by-zero: Warning Options.
! * Wno-format-extra-args: Warning Options.
! * Wno-format-zero-length: Warning Options.
! * Wno-import: Warning Options.
! * Wno-invalid-offsetof: Warning Options.
! * Wno-long-long: Warning Options.
! * Wno-multichar: Warning Options.
* Wno-non-template-friend: C++ Dialect Options.
* Wno-pmf-conversions <1>: Bound member functions.
* Wno-pmf-conversions: C++ Dialect Options.
* Wno-protocol: Objective-C Dialect Options.
* Wnon-virtual-dtor: C++ Dialect Options.
! * Wnonnull: Warning Options.
* Wold-style-cast: C++ Dialect Options.
! * Wold-style-definition: Warning Options.
* Woverloaded-virtual: C++ Dialect Options.
* Wp: Preprocessor Options.
! * Wpacked: Warning Options.
! * Wpadded: Warning Options.
! * Wparentheses: Warning Options.
! * Wpointer-arith <1>: Pointer Arith.
! * Wpointer-arith: Warning Options.
! * Wredundant-decls: Warning Options.
* Wreorder: C++ Dialect Options.
! * Wreturn-type: Warning Options.
* Wselector: Objective-C Dialect Options.
! * Wsequence-point: Warning Options.
! * Wshadow: Warning Options.
! * Wsign-compare: Warning Options.
* Wsign-promo: C++ Dialect Options.
! * Wstrict-aliasing: Warning Options.
! * Wstrict-prototypes: Warning Options.
! * Wswitch: Warning Options.
! * Wswitch-enum: Warning Options.
! * Wswitch-switch: Warning Options.
* Wsystem-headers <1>: Preprocessor Options.
! * Wsystem-headers: Warning Options.
* Wtraditional <1>: Preprocessor Options.
! * Wtraditional: Warning Options.
* Wtrigraphs <1>: Preprocessor Options.
! * Wtrigraphs: Warning Options.
* Wundeclared-selector: Objective-C Dialect Options.
* Wundef <1>: Preprocessor Options.
! * Wundef: Warning Options.
! * Wuninitialized: Warning Options.
! * Wunknown-pragmas: Warning Options.
! * Wunreachable-code: Warning Options.
! * Wunused: Warning Options.
! * Wunused-function: Warning Options.
! * Wunused-label: Warning Options.
* Wunused-macros: Preprocessor Options.
! * Wunused-parameter: Warning Options.
! * Wunused-value: Warning Options.
! * Wunused-variable: Warning Options.
! * Wwrite-strings: Warning Options.
* x <1>: Preprocessor Options.
! * x: Overall Options.
! * Xassembler: Assembler Options.
! * Xlinker: Link Options.
! * Ym: System V Options.
! * YP: System V Options.
File: gcc.info, Node: Keyword Index, Prev: Option Index, Up: Top
--- 24702,26331 ----
Option Index
************
! GCC's command line options are indexed here without any initial `-' or
`--'. Where an option has both positive and negative forms (such as
`-fOPTION' and `-fno-OPTION'), relevant entries in the manual are
indexed under the most appropriate form; it may sometimes be useful to
look up both forms.
+ [index ]
* Menu:
! * ###: Overall Options. (line 174)
! * -mf930: SPARC Options. (line 122)
! * -mf934: SPARC Options. (line 122)
* A: Preprocessor Options.
! (line 474)
! * all_load: Darwin Options. (line 11)
! * allowable_client: Darwin Options. (line 87)
! * ansi <1>: Non-bugs. (line 107)
! * ansi <2>: Other Builtins. (line 22)
* ansi <3>: Preprocessor Options.
! (line 308)
! * ansi <4>: C Dialect Options. (line 10)
! * ansi: Standards. (line 13)
! * arch_errors_fatal: Darwin Options. (line 15)
! * arch_only: Darwin Options. (line 87)
! * aux-info: C Dialect Options. (line 97)
! * b: Target Options. (line 13)
! * B: Directory Options. (line 55)
! * bcopy-builtin: PDP-11 Options. (line 32)
! * bind_at_load: Darwin Options. (line 19)
! * bundle: Darwin Options. (line 24)
! * bundle_loader: Darwin Options. (line 28)
! * c: Link Options. (line 20)
* C: Preprocessor Options.
! (line 521)
! * c: Overall Options. (line 126)
! * client_name: Darwin Options. (line 87)
! * compatibility_version: Darwin Options. (line 87)
! * crossjumping: Optimize Options. (line 382)
! * current_version: Darwin Options. (line 87)
* D: Preprocessor Options.
! (line 33)
! * d: Debugging Options. (line 199)
! * da: Debugging Options. (line 327)
! * dA: Debugging Options. (line 210)
! * dB: Debugging Options. (line 217)
! * db: Debugging Options. (line 214)
! * dC: Debugging Options. (line 224)
! * dc: Debugging Options. (line 220)
* dD <1>: Preprocessor Options.
! (line 502)
! * dD: Debugging Options. (line 234)
! * dd: Debugging Options. (line 229)
! * dE: Debugging Options. (line 238)
! * dependency-file: Darwin Options. (line 87)
! * dF: Debugging Options. (line 245)
! * df: Debugging Options. (line 241)
! * dG: Debugging Options. (line 251)
! * dg: Debugging Options. (line 248)
! * dH: Debugging Options. (line 330)
! * dh: Debugging Options. (line 255)
* dI: Preprocessor Options.
! (line 511)
! * di: Debugging Options. (line 258)
! * dj: Debugging Options. (line 261)
! * dk: Debugging Options. (line 264)
! * dL: Debugging Options. (line 271)
! * dl: Debugging Options. (line 268)
* dM: Preprocessor Options.
! (line 490)
! * dm: Debugging Options. (line 333)
! * dM: Debugging Options. (line 275)
* dN <1>: Preprocessor Options.
! (line 508)
! * dN: Debugging Options. (line 282)
! * dn: Debugging Options. (line 279)
! * do: Debugging Options. (line 285)
! * dP: Debugging Options. (line 342)
! * dp: Debugging Options. (line 337)
! * dR: Debugging Options. (line 291)
! * dr: Debugging Options. (line 288)
! * dS: Debugging Options. (line 298)
! * ds: Debugging Options. (line 294)
! * dT: Debugging Options. (line 305)
! * dt: Debugging Options. (line 301)
! * dU: Debugging Options. (line 311)
! * du: Debugging Options. (line 308)
! * dumpmachine: Debugging Options. (line 504)
! * dumpspecs: Debugging Options. (line 512)
! * dumpversion: Debugging Options. (line 508)
! * dv: Debugging Options. (line 346)
! * dV: Debugging Options. (line 314)
! * dw: Debugging Options. (line 318)
! * dx: Debugging Options. (line 351)
! * dy: Debugging Options. (line 355)
! * dylib_file: Darwin Options. (line 87)
! * dylinker_install_name: Darwin Options. (line 87)
! * dynamic: Darwin Options. (line 87)
! * dynamiclib: Darwin Options. (line 87)
! * dZ: Debugging Options. (line 324)
! * dz: Debugging Options. (line 321)
! * E <1>: Link Options. (line 20)
! * E: Overall Options. (line 147)
! * EB <1>: ARC Options. (line 12)
! * EB: MIPS Options. (line 7)
! * EL <1>: ARC Options. (line 9)
! * EL: MIPS Options. (line 10)
! * exported_symbols_list: Darwin Options. (line 87)
* fabi-version: C++ Dialect Options.
! (line 20)
! * falign-functions: Optimize Options. (line 644)
! * falign-jumps: Optimize Options. (line 694)
! * falign-labels: Optimize Options. (line 662)
! * falign-loops: Optimize Options. (line 680)
! * fargument-alias: Code Gen Options. (line 314)
! * fargument-noalias: Code Gen Options. (line 314)
! * fargument-noalias-global: Code Gen Options. (line 314)
! * fbounds-check: Code Gen Options. (line 15)
! * fbranch-probabilities: Optimize Options. (line 876)
! * fbranch-target-load-optimize: Optimize Options. (line 1004)
! * fbranch-target-load-optimize2: Optimize Options. (line 1010)
! * fcall-saved <1>: Interoperation. (line 197)
! * fcall-saved: Code Gen Options. (line 230)
! * fcall-used: Code Gen Options. (line 216)
! * fcaller-saves: Optimize Options. (line 516)
* fcheck-new: C++ Dialect Options.
+ (line 34)
* fcommon: Variable Attributes.
! (line 92)
! * fcond-mismatch: C Dialect Options. (line 197)
* fconserve-space: C++ Dialect Options.
+ (line 44)
* fconstant-string-class: Objective-C Dialect Options.
! (line 24)
! * fcse-follow-jumps: Optimize Options. (line 311)
! * fcse-skip-blocks: Optimize Options. (line 320)
! * fdata-sections: Optimize Options. (line 985)
! * fdelayed-branch: Optimize Options. (line 435)
! * fdelete-null-pointer-checks: Optimize Options. (line 404)
* fdiagnostics-show-location: Language Independent Options.
! (line 21)
! * fdollars-in-identifiers <1>: Interoperation. (line 193)
* fdollars-in-identifiers: Preprocessor Options.
! (line 409)
! * fdump-class-hierarchy: Debugging Options. (line 374)
! * fdump-translation-unit: Debugging Options. (line 366)
! * fdump-tree: Debugging Options. (line 382)
! * fdump-unnumbered: Debugging Options. (line 358)
! * feliminate-dwarf2-dups: Debugging Options. (line 112)
! * feliminate-unused-debug-symbols: Debugging Options. (line 53)
! * feliminate-unused-debug-types: Debugging Options. (line 516)
! * fexceptions: Code Gen Options. (line 34)
* fexec-charset: Preprocessor Options.
! (line 431)
! * fexpensive-optimizations: Optimize Options. (line 417)
! * ffast-math: Optimize Options. (line 767)
! * ffinite-math-only: Optimize Options. (line 807)
! * ffixed: Code Gen Options. (line 204)
! * ffloat-store <1>: Disappointments. (line 79)
! * ffloat-store: Optimize Options. (line 753)
* ffor-scope: C++ Dialect Options.
! (line 81)
! * fforce-addr: Optimize Options. (line 141)
! * fforce-mem: Optimize Options. (line 132)
* ffreestanding <1>: Function Attributes.
! (line 170)
! * ffreestanding <2>: C Dialect Options. (line 162)
! * ffreestanding: Standards. (line 81)
! * ffunction-sections: Optimize Options. (line 985)
! * fgcse: Optimize Options. (line 339)
! * fgcse-las: Optimize Options. (line 368)
! * fgcse-lm: Optimize Options. (line 350)
! * fgcse-sm: Optimize Options. (line 359)
* fgnu-runtime: Objective-C Dialect Options.
! (line 33)
! * fhosted: C Dialect Options. (line 155)
! * filelist: Darwin Options. (line 87)
! * finhibit-size-directive: Code Gen Options. (line 154)
! * finline-functions: Optimize Options. (line 173)
! * finline-limit: Optimize Options. (line 184)
* finput-charset: Preprocessor Options.
+ (line 444)
* finstrument-functions <1>: Function Attributes.
! (line 246)
! * finstrument-functions: Code Gen Options. (line 255)
! * fkeep-inline-functions <1>: Inline. (line 51)
! * fkeep-inline-functions: Optimize Options. (line 222)
! * fkeep-static-consts: Optimize Options. (line 228)
! * flat_namespace: Darwin Options. (line 87)
! * fleading-underscore: Code Gen Options. (line 329)
! * floop-optimize: Optimize Options. (line 375)
! * fmem-report: Debugging Options. (line 137)
* fmessage-length: Language Independent Options.
! (line 15)
! * fmove-all-movables: Optimize Options. (line 529)
* fms-extensions <1>: C++ Dialect Options.
! (line 116)
! * fms-extensions: C Dialect Options. (line 172)
! * fnew-ra: Optimize Options. (line 257)
* fnext-runtime: Objective-C Dialect Options.
+ (line 37)
* fno-access-control: C++ Dialect Options.
! (line 30)
! * fno-asm: C Dialect Options. (line 113)
! * fno-branch-count-reg: Optimize Options. (line 262)
! * fno-builtin <1>: Other Builtins. (line 14)
! * fno-builtin: C Dialect Options. (line 127)
* fno-common <1>: Variable Attributes.
! (line 92)
! * fno-common: Code Gen Options. (line 142)
* fno-const-strings: C++ Dialect Options.
! (line 56)
! * fno-cprop-registers: Optimize Options. (line 725)
! * fno-default-inline <1>: Inline. (line 46)
! * fno-default-inline <2>: Optimize Options. (line 117)
* fno-default-inline: C++ Dialect Options.
! (line 187)
! * fno-defer-pop: Optimize Options. (line 124)
* fno-elide-constructors: C++ Dialect Options.
+ (line 67)
* fno-enforce-eh-specs: C++ Dialect Options.
+ (line 73)
* fno-for-scope: C++ Dialect Options.
! (line 81)
! * fno-function-cse: Optimize Options. (line 273)
* fno-gnu-keywords: C++ Dialect Options.
! (line 93)
! * fno-guess-branch-probability: Optimize Options. (line 563)
! * fno-ident: Code Gen Options. (line 151)
! * fno-implement-inlines <1>: C++ Interface. (line 75)
* fno-implement-inlines: C++ Dialect Options.
+ (line 110)
* fno-implicit-inline-templates: C++ Dialect Options.
+ (line 104)
* fno-implicit-templates <1>: Template Instantiation.
+ (line 87)
* fno-implicit-templates: C++ Dialect Options.
! (line 98)
! * fno-inline: Optimize Options. (line 167)
! * fno-math-errno: Optimize Options. (line 780)
* fno-nil-receivers: Objective-C Dialect Options.
+ (line 43)
* fno-nonansi-builtins: C++ Dialect Options.
+ (line 121)
* fno-operator-names: C++ Dialect Options.
+ (line 126)
* fno-optional-diags: C++ Dialect Options.
! (line 130)
! * fno-peephole: Optimize Options. (line 554)
! * fno-peephole2: Optimize Options. (line 554)
* fno-rtti: C++ Dialect Options.
! (line 145)
! * fno-sched-interblock: Optimize Options. (line 461)
! * fno-sched-spec: Optimize Options. (line 466)
* fno-show-column: Preprocessor Options.
! (line 469)
! * fno-signed-bitfields: C Dialect Options. (line 230)
! * fno-stack-limit: Code Gen Options. (line 298)
! * fno-trapping-math: Optimize Options. (line 817)
! * fno-unsigned-bitfields: C Dialect Options. (line 230)
* fno-weak: C++ Dialect Options.
+ (line 172)
* fno-working-directory: Preprocessor Options.
! (line 454)
! * fno-zero-initialized-in-bss: Optimize Options. (line 284)
! * fnon-call-exceptions: Code Gen Options. (line 48)
* fobjc-exceptions: Objective-C Dialect Options.
! (line 50)
! * fold-unroll-all-loops: Optimize Options. (line 960)
! * fold-unroll-loops: Optimize Options. (line 952)
! * fomit-frame-pointer: Optimize Options. (line 146)
! * foptimize-register-move: Optimize Options. (line 424)
! * foptimize-sibling-calls: Optimize Options. (line 162)
! * force_cpusubtype_ALL: Darwin Options. (line 87)
! * force_flat_namespace: Darwin Options. (line 87)
! * fpack-struct: Code Gen Options. (line 247)
! * fpcc-struct-return <1>: Incompatibilities. (line 172)
! * fpcc-struct-return: Code Gen Options. (line 70)
* fpch-deps: Preprocessor Options.
! (line 281)
! * fpeel-loops: Optimize Options. (line 941)
* fpermissive: C++ Dialect Options.
! (line 135)
! * fPIC: Code Gen Options. (line 188)
! * fpic: Code Gen Options. (line 170)
! * fPIE: Code Gen Options. (line 198)
! * fpie: Code Gen Options. (line 198)
! * fprefetch-loop-arrays: Optimize Options. (line 977)
* fpreprocessed: Preprocessor Options.
! (line 412)
! * fprofile-arcs <1>: Other Builtins. (line 227)
! * fprofile-arcs: Debugging Options. (line 141)
! * fprofile-generate: Optimize Options. (line 732)
! * fprofile-use: Optimize Options. (line 741)
! * fprofile-values: Optimize Options. (line 895)
! * frandom-string: Debugging Options. (line 415)
! * freduce-all-givs: Optimize Options. (line 533)
! * freg-struct-return: Code Gen Options. (line 88)
! * fregmove: Optimize Options. (line 424)
! * frename-registers: Optimize Options. (line 707)
! * freorder-blocks: Optimize Options. (line 581)
! * freorder-functions: Optimize Options. (line 587)
* freplace-objc-classes: Objective-C Dialect Options.
+ (line 135)
* frepo <1>: Template Instantiation.
+ (line 62)
* frepo: C++ Dialect Options.
! (line 140)
! * frerun-cse-after-loop: Optimize Options. (line 328)
! * frerun-loop-opt: Optimize Options. (line 334)
! * frounding-math: Optimize Options. (line 832)
! * fsched-spec-load: Optimize Options. (line 471)
! * fsched-spec-load-dangerous: Optimize Options. (line 476)
! * fsched-stalled-insns: Optimize Options. (line 481)
! * fsched-stalled-insns-dep: Optimize Options. (line 486)
! * fsched-verbose: Debugging Options. (line 425)
! * fsched2-use-superblocks: Optimize Options. (line 493)
! * fsched2-use-traces: Optimize Options. (line 504)
! * fschedule-insns: Optimize Options. (line 442)
! * fschedule-insns2: Optimize Options. (line 452)
! * fshared-data: Code Gen Options. (line 135)
! * fshort-double: Code Gen Options. (line 117)
! * fshort-enums <1>: Non-bugs. (line 42)
! * fshort-enums <2>: Type Attributes. (line 112)
! * fshort-enums: Code Gen Options. (line 106)
! * fshort-wchar: Code Gen Options. (line 125)
! * fsignaling-nans: Optimize Options. (line 852)
! * fsigned-bitfields <1>: Non-bugs. (line 57)
! * fsigned-bitfields: C Dialect Options. (line 230)
! * fsigned-char: C Dialect Options. (line 220)
! * fsingle-precision-constant: Optimize Options. (line 867)
! * fstack-check: Code Gen Options. (line 283)
! * fstack-limit-register: Code Gen Options. (line 298)
! * fstack-limit-symbol: Code Gen Options. (line 298)
* fstats: C++ Dialect Options.
! (line 153)
! * fstrength-reduce: Optimize Options. (line 296)
! * fstrict-aliasing: Optimize Options. (line 601)
! * fsyntax-only: Warning Options. (line 22)
* ftabstop: Preprocessor Options.
+ (line 425)
* ftemplate-depth: C++ Dialect Options.
! (line 158)
! * ftest-coverage: Debugging Options. (line 190)
! * fthread-jumps: Optimize Options. (line 302)
! * ftime-report: Debugging Options. (line 133)
! * ftracer: Optimize Options. (line 917)
! * ftrapv: Code Gen Options. (line 22)
! * funit-at-a-time: Optimize Options. (line 922)
! * funroll-all-loops: Optimize Options. (line 935)
! * funroll-loops <1>: Non-bugs. (line 173)
! * funroll-loops: Optimize Options. (line 927)
! * funsafe-math-optimizations: Optimize Options. (line 793)
! * funsigned-bitfields <1>: Non-bugs. (line 57)
! * funsigned-bitfields: C Dialect Options. (line 230)
! * funsigned-char: C Dialect Options. (line 202)
! * funswitch-loops: Optimize Options. (line 947)
! * funwind-tables: Code Gen Options. (line 57)
* fuse-cxa-atexit: C++ Dialect Options.
! (line 165)
! * fverbose-asm: Code Gen Options. (line 161)
! * fvpt: Optimize Options. (line 903)
! * fweb: Optimize Options. (line 714)
* fwide-exec-charset: Preprocessor Options.
+ (line 436)
* fworking-directory: Preprocessor Options.
! (line 454)
! * fwrapv: Code Gen Options. (line 26)
! * fwritable-strings <1>: Incompatibilities. (line 22)
! * fwritable-strings: C Dialect Options. (line 236)
* fzero-link: Objective-C Dialect Options.
! (line 145)
! * G <1>: System V Options. (line 10)
! * G <2>: MIPS Options. (line 177)
* G <3>: RS/6000 and PowerPC Options.
! (line 513)
! * G: M32R/D Options. (line 57)
! * g: Debugging Options. (line 10)
! * gcoff: Debugging Options. (line 63)
! * gdwarf-2: Debugging Options. (line 81)
* gen-decls: Objective-C Dialect Options.
! (line 155)
! * ggdb: Debugging Options. (line 39)
! * gnu-ld: HPPA Options. (line 110)
! * gstabs: Debugging Options. (line 45)
! * gstabs+: Debugging Options. (line 57)
! * gvms: Debugging Options. (line 85)
! * gxcoff: Debugging Options. (line 68)
! * gxcoff+: Debugging Options. (line 73)
* H: Preprocessor Options.
! (line 576)
! * headerpad_max_install_names: Darwin Options. (line 87)
* help <1>: Preprocessor Options.
! (line 568)
! * help: Overall Options. (line 185)
! * hp-ld: HPPA Options. (line 122)
! * I <1>: Directory Options. (line 10)
* I: Preprocessor Options.
! (line 65)
! * I- <1>: Directory Options. (line 31)
* I-: Preprocessor Options.
+ (line 345)
* idirafter: Preprocessor Options.
! (line 386)
! * if-conversion: Optimize Options. (line 389)
! * if-conversion2: Optimize Options. (line 398)
* imacros: Preprocessor Options.
! (line 377)
! * image_base: Darwin Options. (line 87)
* include: Preprocessor Options.
! (line 366)
! * init: Darwin Options. (line 87)
! * install_name: Darwin Options. (line 87)
* iprefix: Preprocessor Options.
+ (line 391)
* isystem: Preprocessor Options.
+ (line 403)
* iwithprefix: Preprocessor Options.
+ (line 397)
* iwithprefixbefore: Preprocessor Options.
! (line 397)
! * keep_private_externs: Darwin Options. (line 87)
! * L: Directory Options. (line 51)
! * l: Link Options. (line 26)
! * lobjc: Link Options. (line 53)
* M: Preprocessor Options.
! (line 174)
! * m1: SH Options. (line 9)
! * m10: PDP-11 Options. (line 29)
* m128bit-long-double: i386 and x86-64 Options.
! (line 216)
! * m16-bit: CRIS Options. (line 69)
! * m2: SH Options. (line 12)
! * m210: MCore Options. (line 43)
! * m3: SH Options. (line 18)
* m31: S/390 and zSeries Options.
+ (line 35)
* m32 <1>: i386 and x86-64 Options.
! (line 391)
! * m32: SPARC Options. (line 218)
! * m32-bit: CRIS Options. (line 69)
! * m32032: NS32K Options. (line 13)
! * m32081: NS32K Options. (line 27)
! * m32332: NS32K Options. (line 18)
! * m32381: NS32K Options. (line 31)
! * m32532: NS32K Options. (line 23)
! * m32r: M32R/D Options. (line 15)
! * m32r2: M32R/D Options. (line 9)
! * m32rx: M32R/D Options. (line 12)
! * m340: MCore Options. (line 43)
* m386: i386 and x86-64 Options.
+ (line 107)
* m3dnow: i386 and x86-64 Options.
! (line 323)
! * m3e: SH Options. (line 21)
! * m4: SH Options. (line 35)
! * m4-nofpu: SH Options. (line 24)
! * m4-single: SH Options. (line 31)
! * m4-single-only: SH Options. (line 27)
! * m40: PDP-11 Options. (line 23)
! * m45: PDP-11 Options. (line 26)
* m486: i386 and x86-64 Options.
! (line 107)
! * m4byte-functions: MCore Options. (line 27)
! * m5200: M680x0 Options. (line 59)
* m64 <1>: S/390 and zSeries Options.
+ (line 35)
* m64 <2>: i386 and x86-64 Options.
! (line 391)
! * m64: SPARC Options. (line 218)
! * m68000: M680x0 Options. (line 13)
! * m68020: M680x0 Options. (line 21)
! * m68020-40: M680x0 Options. (line 66)
! * m68020-60: M680x0 Options. (line 73)
! * m68030: M680x0 Options. (line 30)
! * m68040: M680x0 Options. (line 34)
! * m68060: M680x0 Options. (line 42)
! * m6811: M68hc1x Options. (line 13)
! * m6812: M68hc1x Options. (line 18)
! * m68881: M680x0 Options. (line 25)
! * m68hc11: M68hc1x Options. (line 13)
! * m68hc12: M68hc1x Options. (line 18)
! * m68hcs12: M68hc1x Options. (line 23)
! * m68S12: M68hc1x Options. (line 23)
! * m8-bit: CRIS Options. (line 69)
* m96bit-long-double: i386 and x86-64 Options.
! (line 216)
! * mabi-mmixware: MMIX Options. (line 20)
! * mabi=32: MIPS Options. (line 87)
! * mabi=64: MIPS Options. (line 87)
* mabi=altivec: RS/6000 and PowerPC Options.
! (line 408)
! * mabi=eabi: MIPS Options. (line 87)
! * mabi=gnu: MMIX Options. (line 20)
! * mabi=n32: MIPS Options. (line 87)
* mabi=no-altivec: RS/6000 and PowerPC Options.
+ (line 413)
* mabi=no-spe: RS/6000 and PowerPC Options.
! (line 146)
! * mabi=o64: MIPS Options. (line 87)
* mabi=spe: RS/6000 and PowerPC Options.
! (line 141)
! * mabicalls: MIPS Options. (line 95)
! * mabort-on-noreturn: ARM Options. (line 171)
! * mabshi: PDP-11 Options. (line 55)
! * mac0: PDP-11 Options. (line 16)
! * macc-4: FRV Options. (line 59)
! * macc-8: FRV Options. (line 62)
* maccumulate-outgoing-args: i386 and x86-64 Options.
+ (line 342)
* mads: RS/6000 and PowerPC Options.
+ (line 438)
* maix-struct-return: RS/6000 and PowerPC Options.
+ (line 401)
* maix32: RS/6000 and PowerPC Options.
+ (line 196)
* maix64: RS/6000 and PowerPC Options.
! (line 196)
! * malign-300: H8/300 Options. (line 31)
* malign-double: i386 and x86-64 Options.
! (line 202)
! * malign-int: M680x0 Options. (line 125)
! * malign-loops: M32R/D Options. (line 73)
* malign-natural: RS/6000 and PowerPC Options.
+ (line 234)
* malign-power: RS/6000 and PowerPC Options.
! (line 234)
! * malignment-traps: ARM Options. (line 87)
! * malloc-cc: FRV Options. (line 25)
! * malpha-as: DEC Alpha Options. (line 159)
* maltivec: RS/6000 and PowerPC Options.
! (line 135)
! * mam33: MN10300 Options. (line 17)
! * maout: CRIS Options. (line 92)
! * mapcs: ARM Options. (line 18)
! * mapcs-26: ARM Options. (line 21)
! * mapcs-32: ARM Options. (line 29)
! * mapcs-frame: ARM Options. (line 10)
! * mapp-regs <1>: V850 Options. (line 57)
! * mapp-regs: SPARC Options. (line 10)
! * march <1>: CRIS Options. (line 10)
* march <2>: S/390 and zSeries Options.
! (line 63)
! * march <3>: HPPA Options. (line 9)
* march <4>: i386 and x86-64 Options.
! (line 96)
! * march <5>: MIPS Options. (line 14)
! * march: ARM Options. (line 144)
! * masm-compat: Intel 960 Options. (line 58)
! * masm-optimize: D30V Options. (line 24)
* masm=DIALECT: i386 and x86-64 Options.
! (line 159)
! * mauto-incdec: M68hc1x Options. (line 26)
! * mauto-pic: IA-64 Options. (line 53)
! * mb: SH Options. (line 38)
! * mb-step: IA-64 Options. (line 36)
* mbackchain: S/390 and zSeries Options.
! (line 20)
! * mbase-addresses: MMIX Options. (line 54)
! * mbcopy: PDP-11 Options. (line 36)
* mbig <1>: TMS320C3x/C4x Options.
+ (line 18)
* mbig: RS/6000 and PowerPC Options.
! (line 333)
! * mbig-endian <1>: IA-64 Options. (line 9)
! * mbig-endian <2>: MCore Options. (line 39)
* mbig-endian <3>: RS/6000 and PowerPC Options.
! (line 333)
! * mbig-endian: ARM Options. (line 75)
* mbig-memory: TMS320C3x/C4x Options.
! (line 18)
! * mbig-switch <1>: V850 Options. (line 52)
! * mbig-switch: HPPA Options. (line 27)
! * mbigtable: SH Options. (line 54)
* mbit-align: RS/6000 and PowerPC Options.
! (line 287)
! * mbitfield <1>: NS32K Options. (line 66)
! * mbitfield: M680x0 Options. (line 97)
* mbk: TMS320C3x/C4x Options.
! (line 27)
! * mbranch-cheap: PDP-11 Options. (line 65)
! * mbranch-cost: D30V Options. (line 29)
! * mbranch-cost=NUMBER: M32R/D Options. (line 82)
! * mbranch-expensive: PDP-11 Options. (line 61)
! * mbranch-likely: MIPS Options. (line 291)
! * mbranch-predict: MMIX Options. (line 49)
! * mbuild-constants: DEC Alpha Options. (line 142)
! * mbwx: DEC Alpha Options. (line 171)
! * mc68000: M680x0 Options. (line 13)
! * mc68020: M680x0 Options. (line 21)
! * mca: Intel 960 Options. (line 9)
* mcall-gnu: RS/6000 and PowerPC Options.
+ (line 393)
* mcall-linux: RS/6000 and PowerPC Options.
+ (line 389)
* mcall-netbsd: RS/6000 and PowerPC Options.
! (line 397)
! * mcall-prologues: AVR Options. (line 43)
* mcall-solaris: RS/6000 and PowerPC Options.
+ (line 385)
* mcall-sysv: RS/6000 and PowerPC Options.
+ (line 372)
* mcall-sysv-eabi: RS/6000 and PowerPC Options.
+ (line 379)
* mcall-sysv-noeabi: RS/6000 and PowerPC Options.
! (line 382)
! * mcallee-super-interworking: ARM Options. (line 261)
! * mcaller-super-interworking: ARM Options. (line 267)
! * mcallgraph-data: MCore Options. (line 31)
! * mcc-init: CRIS Options. (line 46)
! * mcf: Intel 960 Options. (line 9)
! * mcheck-zero-division: MIPS Options. (line 235)
! * mcirrus-fix-invalid-insns: ARM Options. (line 214)
! * mcix: DEC Alpha Options. (line 171)
! * mcmodel=embmedany: SPARC Options. (line 240)
* mcmodel=kernel: i386 and x86-64 Options.
+ (line 412)
* mcmodel=large: i386 and x86-64 Options.
! (line 424)
! * mcmodel=medany: SPARC Options. (line 234)
* mcmodel=medium: i386 and x86-64 Options.
! (line 417)
! * mcmodel=medlow: SPARC Options. (line 223)
! * mcmodel=medmid: SPARC Options. (line 228)
* mcmodel=small: i386 and x86-64 Options.
! (line 406)
! * mcode-align: Intel 960 Options. (line 47)
! * mcomplex-addr: Intel 960 Options. (line 39)
! * mcond-exec <1>: FRV Options. (line 98)
! * mcond-exec: D30V Options. (line 34)
! * mcond-move: FRV Options. (line 74)
! * mconst-align: CRIS Options. (line 60)
! * mconst16: Xtensa Options. (line 10)
! * mconstant-gp: IA-64 Options. (line 49)
! * mcpu <1>: FRV Options. (line 150)
! * mcpu <2>: CRIS Options. (line 10)
! * mcpu <3>: ARC Options. (line 23)
* mcpu <4>: TMS320C3x/C4x Options.
! (line 9)
! * mcpu <5>: DEC Alpha Options. (line 223)
* mcpu <6>: i386 and x86-64 Options.
+ (line 101)
* mcpu <7>: RS/6000 and PowerPC Options.
! (line 82)
! * mcpu <8>: ARM Options. (line 121)
! * mcpu: SPARC Options. (line 127)
! * mcpu32: M680x0 Options. (line 51)
! * mcypress: SPARC Options. (line 122)
* MD: Preprocessor Options.
! (line 262)
! * mdalign: SH Options. (line 44)
! * mdata: ARC Options. (line 30)
! * mdata-align: CRIS Options. (line 60)
* mdb: TMS320C3x/C4x Options.
+ (line 32)
* mdebug <1>: S/390 and zSeries Options.
! (line 59)
! * mdebug: M32R/D Options. (line 69)
! * mdec-asm: PDP-11 Options. (line 78)
! * mdisable-callt: V850 Options. (line 80)
! * mdisable-fpregs: HPPA Options. (line 37)
! * mdisable-indexing: HPPA Options. (line 44)
! * mdiv: MCore Options. (line 15)
! * mdouble: FRV Options. (line 38)
! * mdouble-float: MIPS Options. (line 154)
* mdp-isr-reload: TMS320C3x/C4x Options.
! (line 45)
! * mdwarf2-asm: IA-64 Options. (line 82)
! * mdword: FRV Options. (line 32)
* mdynamic-no-pic: RS/6000 and PowerPC Options.
+ (line 338)
* meabi: RS/6000 and PowerPC Options.
! (line 461)
! * mearly-stop-bits: IA-64 Options. (line 88)
! * melf <1>: MMIX Options. (line 44)
! * melf: CRIS Options. (line 95)
! * melinux: CRIS Options. (line 99)
! * melinux-stacksize: CRIS Options. (line 25)
* memb: RS/6000 and PowerPC Options.
! (line 456)
! * membedded-data: MIPS Options. (line 186)
! * membedded-pic: MIPS Options. (line 124)
! * mep: V850 Options. (line 16)
! * mepsilon: MMIX Options. (line 15)
* mesa: S/390 and zSeries Options.
! (line 43)
! * metrax100: CRIS Options. (line 31)
! * metrax4: CRIS Options. (line 31)
! * mexplicit-relocs <1>: DEC Alpha Options. (line 184)
! * mexplicit-relocs: MIPS Options. (line 206)
! * mextmem: D30V Options. (line 9)
! * mextmemory: D30V Options. (line 14)
* MF: Preprocessor Options.
+ (line 208)
* mfast-fix: TMS320C3x/C4x Options.
! (line 62)
! * mfast-indirect-calls: HPPA Options. (line 56)
! * mfaster-structs: SPARC Options. (line 88)
! * mfix: DEC Alpha Options. (line 171)
! * mfix-sb1: MIPS Options. (line 275)
! * mfixed-cc: FRV Options. (line 28)
! * mfixed-range: IA-64 Options. (line 93)
! * mflat: SPARC Options. (line 59)
* mfloat-gprs: RS/6000 and PowerPC Options.
! (line 160)
! * mfloat-ieee: DEC Alpha Options. (line 179)
! * mfloat-vax: DEC Alpha Options. (line 179)
! * mfloat32: PDP-11 Options. (line 52)
! * mfloat64: PDP-11 Options. (line 48)
! * mflush-func: MIPS Options. (line 281)
! * mflush-func=NAME: M32R/D Options. (line 94)
! * mflush-trap=NUMBER: M32R/D Options. (line 87)
! * mfmovd: SH Options. (line 58)
! * mfp: ARM Options. (line 153)
! * mfp-reg: DEC Alpha Options. (line 25)
! * mfp-rounding-mode: DEC Alpha Options. (line 85)
! * mfp-trap-mode: DEC Alpha Options. (line 63)
! * mfp32: MIPS Options. (line 137)
! * mfp64: MIPS Options. (line 140)
! * mfpe: ARM Options. (line 153)
! * mfpr-32: FRV Options. (line 13)
! * mfpr-64: FRV Options. (line 16)
! * mfpu <1>: PDP-11 Options. (line 9)
! * mfpu: SPARC Options. (line 20)
* mfull-toc: RS/6000 and PowerPC Options.
! (line 169)
! * mfused-madd <1>: Xtensa Options. (line 19)
* mfused-madd <2>: S/390 and zSeries Options.
! (line 77)
! * mfused-madd <3>: MIPS Options. (line 260)
* mfused-madd: RS/6000 and PowerPC Options.
! (line 281)
! * mg: VAX Options. (line 17)
* MG: Preprocessor Options.
! (line 217)
! * mgas <1>: DEC Alpha Options. (line 159)
! * mgas: HPPA Options. (line 72)
! * mgnu: VAX Options. (line 13)
! * mgnu-as: IA-64 Options. (line 18)
! * mgnu-ld: IA-64 Options. (line 23)
! * mgotplt: CRIS Options. (line 86)
! * mgp32: MIPS Options. (line 131)
! * mgp64: MIPS Options. (line 134)
! * mgpr-32: FRV Options. (line 7)
! * mgpr-64: FRV Options. (line 10)
! * mh: H8/300 Options. (line 14)
! * mhard-float <1>: FRV Options. (line 19)
* mhard-float <2>: S/390 and zSeries Options.
! (line 11)
! * mhard-float <3>: MIPS Options. (line 143)
* mhard-float <4>: RS/6000 and PowerPC Options.
! (line 243)
! * mhard-float <5>: ARM Options. (line 53)
! * mhard-float: SPARC Options. (line 20)
! * mhard-quad-float: SPARC Options. (line 41)
! * mhardlit: MCore Options. (line 10)
! * mhimem: NS32K Options. (line 111)
! * mhitachi: SH Options. (line 61)
! * mic-compat: Intel 960 Options. (line 54)
! * mic2.0-compat: Intel 960 Options. (line 54)
! * mic3.0-compat: Intel 960 Options. (line 54)
! * mieee <1>: SH Options. (line 68)
! * mieee: DEC Alpha Options. (line 39)
! * mieee-compare: NS32K Options. (line 55)
! * mieee-conformant: DEC Alpha Options. (line 134)
* mieee-fp: i386 and x86-64 Options.
! (line 164)
! * mieee-with-inexact: DEC Alpha Options. (line 52)
! * milp32: IA-64 Options. (line 117)
! * mimpure-text: SPARC Options. (line 98)
! * minit-stack: AVR Options. (line 35)
* minline-all-stringops: i386 and x86-64 Options.
! (line 363)
! * minline-float-divide-max-throughput: IA-64 Options. (line 61)
! * minline-float-divide-min-latency: IA-64 Options. (line 57)
! * minline-int-divide-max-throughput: IA-64 Options. (line 69)
! * minline-int-divide-min-latency: IA-64 Options. (line 65)
! * minline-sqrt-max-throughput: IA-64 Options. (line 77)
! * minline-sqrt-min-latency: IA-64 Options. (line 73)
! * minmax: M68hc1x Options. (line 31)
* minsert-sched-nops: RS/6000 and PowerPC Options.
! (line 360)
! * mint16: PDP-11 Options. (line 40)
! * mint32 <1>: PDP-11 Options. (line 44)
! * mint32: H8/300 Options. (line 28)
! * mint64: MIPS Options. (line 158)
! * mintel-asm: Intel 960 Options. (line 58)
! * mips1: MIPS Options. (line 58)
! * mips16: MIPS Options. (line 80)
! * mips2: MIPS Options. (line 61)
! * mips3: MIPS Options. (line 64)
! * mips32: MIPS Options. (line 70)
! * mips32r2: MIPS Options. (line 73)
! * mips4: MIPS Options. (line 67)
! * mips64: MIPS Options. (line 76)
* misel: RS/6000 and PowerPC Options.
! (line 150)
! * misize: SH Options. (line 71)
! * missue-rate=NUMBER: M32R/D Options. (line 79)
! * mjump-in-delay: HPPA Options. (line 32)
! * mka: Intel 960 Options. (line 9)
! * mkb: Intel 960 Options. (line 9)
! * mknuthdiv: MMIX Options. (line 33)
! * ml: SH Options. (line 41)
! * mlarge-data: DEC Alpha Options. (line 195)
! * mlarge-text: DEC Alpha Options. (line 213)
! * mleaf-procedures: Intel 960 Options. (line 22)
! * mlibfuncs: MMIX Options. (line 10)
! * mlibrary-pic: FRV Options. (line 56)
! * mlinker-opt: HPPA Options. (line 82)
! * mlinux: CRIS Options. (line 104)
* mlittle: RS/6000 and PowerPC Options.
! (line 327)
! * mlittle-endian <1>: IA-64 Options. (line 13)
! * mlittle-endian <2>: MCore Options. (line 39)
* mlittle-endian <3>: RS/6000 and PowerPC Options.
! (line 327)
! * mlittle-endian <4>: ARM Options. (line 71)
! * mlittle-endian: SPARC Options. (line 212)
! * mlong-calls <1>: V850 Options. (line 10)
! * mlong-calls <2>: MIPS Options. (line 246)
! * mlong-calls <3>: ARM Options. (line 176)
! * mlong-calls: M68hc1x Options. (line 35)
! * mlong-double-64: Intel 960 Options. (line 70)
! * mlong-load-store: HPPA Options. (line 63)
! * mlong32: MIPS Options. (line 168)
! * mlong64: MIPS Options. (line 163)
* mlongcall: RS/6000 and PowerPC Options.
! (line 527)
! * mlongcalls: Xtensa Options. (line 60)
* mloop-unsigned: TMS320C3x/C4x Options.
! (line 94)
! * mlp64: IA-64 Options. (line 117)
* MM: Preprocessor Options.
! (line 198)
! * mmad: MIPS Options. (line 255)
! * mmangle-cpu: ARC Options. (line 15)
! * mmax: DEC Alpha Options. (line 171)
! * mmax-stack-frame: CRIS Options. (line 22)
! * mmc: Intel 960 Options. (line 9)
! * mmcu: AVR Options. (line 9)
* MMD: Preprocessor Options.
! (line 277)
! * mmedia: FRV Options. (line 44)
! * mmemcpy: MIPS Options. (line 240)
! * mmemory-latency: DEC Alpha Options. (line 266)
* mmemparm: TMS320C3x/C4x Options.
+ (line 109)
* mminimal-toc: RS/6000 and PowerPC Options.
+ (line 169)
* mmmx: i386 and x86-64 Options.
! (line 323)
! * mmodel=large: M32R/D Options. (line 33)
! * mmodel=medium: M32R/D Options. (line 27)
! * mmodel=small: M32R/D Options. (line 18)
* mmpyi: TMS320C3x/C4x Options.
! (line 53)
! * mmul-bug-workaround: CRIS Options. (line 36)
! * mmuladd: FRV Options. (line 50)
! * mmult-bug: MN10300 Options. (line 9)
! * mmulti-add: NS32K Options. (line 37)
! * mmulti-cond-exec: FRV Options. (line 122)
* mmultiple: RS/6000 and PowerPC Options.
+ (line 249)
* mmvcle: S/390 and zSeries Options.
+ (line 53)
* mmvme: RS/6000 and PowerPC Options.
! (line 433)
! * mn: H8/300 Options. (line 20)
! * mnested-cond-exec: FRV Options. (line 135)
* mnew-mnemonics: RS/6000 and PowerPC Options.
+ (line 67)
* mno-3dnow: i386 and x86-64 Options.
! (line 323)
! * mno-4byte-functions: MCore Options. (line 27)
! * mno-abicalls: MIPS Options. (line 95)
! * mno-abshi: PDP-11 Options. (line 58)
! * mno-ac0: PDP-11 Options. (line 20)
* mno-align-double: i386 and x86-64 Options.
! (line 202)
! * mno-align-int: M680x0 Options. (line 125)
! * mno-align-loops: M32R/D Options. (line 76)
* mno-align-stringops: i386 and x86-64 Options.
! (line 358)
! * mno-alignment-traps: ARM Options. (line 104)
* mno-altivec: RS/6000 and PowerPC Options.
! (line 135)
! * mno-am33: MN10300 Options. (line 20)
! * mno-app-regs <1>: V850 Options. (line 61)
! * mno-app-regs: SPARC Options. (line 10)
! * mno-asm-optimize: D30V Options. (line 24)
* mno-backchain: S/390 and zSeries Options.
! (line 20)
! * mno-base-addresses: MMIX Options. (line 54)
* mno-bit-align: RS/6000 and PowerPC Options.
+ (line 287)
* mno-bk: TMS320C3x/C4x Options.
! (line 27)
! * mno-branch-likely: MIPS Options. (line 291)
! * mno-branch-predict: MMIX Options. (line 49)
! * mno-bwx: DEC Alpha Options. (line 171)
! * mno-callgraph-data: MCore Options. (line 31)
! * mno-check-zero-division: MIPS Options. (line 235)
! * mno-cirrus-fix-invalid-insns: ARM Options. (line 214)
! * mno-cix: DEC Alpha Options. (line 171)
! * mno-code-align: Intel 960 Options. (line 47)
! * mno-complex-addr: Intel 960 Options. (line 39)
! * mno-cond-exec: FRV Options. (line 104)
! * mno-cond-move: FRV Options. (line 80)
! * mno-const-align: CRIS Options. (line 60)
! * mno-const16: Xtensa Options. (line 10)
! * mno-crt0: MN10300 Options. (line 24)
! * mno-data-align: CRIS Options. (line 60)
* mno-db: TMS320C3x/C4x Options.
+ (line 32)
* mno-debug: S/390 and zSeries Options.
! (line 59)
! * mno-div: MCore Options. (line 15)
! * mno-double: FRV Options. (line 41)
! * mno-dwarf2-asm: IA-64 Options. (line 82)
! * mno-dword: FRV Options. (line 35)
* mno-eabi: RS/6000 and PowerPC Options.
! (line 461)
! * mno-early-stop-bits: IA-64 Options. (line 88)
! * mno-eflags: FRV Options. (line 71)
! * mno-embedded-data: MIPS Options. (line 186)
! * mno-embedded-pic: MIPS Options. (line 124)
! * mno-ep: V850 Options. (line 16)
! * mno-epsilon: MMIX Options. (line 15)
! * mno-explicit-relocs <1>: DEC Alpha Options. (line 184)
! * mno-explicit-relocs: MIPS Options. (line 206)
* mno-fancy-math-387: i386 and x86-64 Options.
+ (line 191)
* mno-fast-fix: TMS320C3x/C4x Options.
! (line 62)
! * mno-faster-structs: SPARC Options. (line 88)
! * mno-fix: DEC Alpha Options. (line 171)
! * mno-flat: SPARC Options. (line 59)
! * mno-float32: PDP-11 Options. (line 48)
! * mno-float64: PDP-11 Options. (line 52)
! * mno-flush-func: M32R/D Options. (line 99)
! * mno-flush-trap: M32R/D Options. (line 91)
* mno-fp-in-toc: RS/6000 and PowerPC Options.
! (line 169)
! * mno-fp-regs: DEC Alpha Options. (line 25)
* mno-fp-ret-in-387: i386 and x86-64 Options.
! (line 181)
! * mno-fpu: SPARC Options. (line 25)
! * mno-fused-madd <1>: Xtensa Options. (line 19)
* mno-fused-madd <2>: S/390 and zSeries Options.
! (line 77)
! * mno-fused-madd <3>: MIPS Options. (line 260)
* mno-fused-madd: RS/6000 and PowerPC Options.
! (line 281)
! * mno-gnu-as: IA-64 Options. (line 18)
! * mno-gnu-ld: IA-64 Options. (line 23)
! * mno-gotplt: CRIS Options. (line 86)
! * mno-hardlit: MCore Options. (line 10)
! * mno-ieee-compare: NS32K Options. (line 55)
* mno-ieee-fp: i386 and x86-64 Options.
! (line 164)
! * mno-int16: PDP-11 Options. (line 44)
! * mno-int32: PDP-11 Options. (line 40)
! * mno-interrupts: AVR Options. (line 39)
! * mno-knuthdiv: MMIX Options. (line 33)
! * mno-leaf-procedures: Intel 960 Options. (line 22)
! * mno-libfuncs: MMIX Options. (line 10)
! * mno-long-calls <1>: V850 Options. (line 10)
! * mno-long-calls <2>: HPPA Options. (line 135)
! * mno-long-calls <3>: MIPS Options. (line 246)
! * mno-long-calls <4>: ARM Options. (line 176)
! * mno-long-calls: M68hc1x Options. (line 35)
* mno-longcall: RS/6000 and PowerPC Options.
! (line 527)
! * mno-longcalls: Xtensa Options. (line 60)
* mno-loop-unsigned: TMS320C3x/C4x Options.
! (line 94)
! * mno-mad: MIPS Options. (line 255)
! * mno-max: DEC Alpha Options. (line 171)
! * mno-media: FRV Options. (line 47)
! * mno-memcpy: MIPS Options. (line 240)
! * mno-mips16: MIPS Options. (line 80)
* mno-mmx: i386 and x86-64 Options.
+ (line 323)
* mno-mpyi: TMS320C3x/C4x Options.
! (line 53)
! * mno-mul-bug-workaround: CRIS Options. (line 36)
! * mno-muladd: FRV Options. (line 53)
! * mno-mult-bug: MN10300 Options. (line 13)
! * mno-multi-cond-exec: FRV Options. (line 129)
* mno-multiple: RS/6000 and PowerPC Options.
+ (line 249)
* mno-mvcle: S/390 and zSeries Options.
! (line 53)
! * mno-nested-cond-exec: FRV Options. (line 141)
! * mno-pack: FRV Options. (line 68)
* mno-parallel-insns: TMS320C3x/C4x Options.
+ (line 115)
* mno-parallel-mpy: TMS320C3x/C4x Options.
! (line 120)
! * mno-pic: IA-64 Options. (line 26)
* mno-power: RS/6000 and PowerPC Options.
+ (line 19)
* mno-power2: RS/6000 and PowerPC Options.
+ (line 19)
* mno-powerpc: RS/6000 and PowerPC Options.
+ (line 19)
* mno-powerpc-gfxopt: RS/6000 and PowerPC Options.
+ (line 19)
* mno-powerpc-gpopt: RS/6000 and PowerPC Options.
+ (line 19)
* mno-powerpc64: RS/6000 and PowerPC Options.
! (line 19)
! * mno-prolog-function: V850 Options. (line 23)
! * mno-prologue-epilogue: CRIS Options. (line 76)
* mno-prototype: RS/6000 and PowerPC Options.
+ (line 417)
* mno-push-args: i386 and x86-64 Options.
! (line 335)
! * mno-register-names: IA-64 Options. (line 40)
* mno-regnames: RS/6000 and PowerPC Options.
! (line 521)
! * mno-relax-immediate: MCore Options. (line 19)
* mno-relocatable: RS/6000 and PowerPC Options.
+ (line 304)
* mno-relocatable-lib: RS/6000 and PowerPC Options.
! (line 312)
! * mno-rnames: MIPS Options. (line 227)
* mno-rptb: TMS320C3x/C4x Options.
+ (line 72)
* mno-rpts: TMS320C3x/C4x Options.
! (line 81)
! * mno-scc: FRV Options. (line 92)
! * mno-sched-prolog: ARM Options. (line 44)
! * mno-sdata <1>: IA-64 Options. (line 45)
* mno-sdata: RS/6000 and PowerPC Options.
! (line 508)
! * mno-side-effects: CRIS Options. (line 51)
! * mno-single-exit: MMIX Options. (line 66)
! * mno-slow-bytes: MCore Options. (line 35)
* mno-small-exec: S/390 and zSeries Options.
! (line 28)
! * mno-soft-float: DEC Alpha Options. (line 10)
! * mno-space-regs: HPPA Options. (line 49)
! * mno-split: PDP-11 Options. (line 71)
! * mno-split-addresses: MIPS Options. (line 200)
* mno-sse: i386 and x86-64 Options.
! (line 323)
! * mno-stack-align: CRIS Options. (line 60)
! * mno-stack-bias: SPARC Options. (line 249)
! * mno-strict-align <1>: Intel 960 Options. (line 62)
* mno-strict-align <2>: RS/6000 and PowerPC Options.
! (line 299)
! * mno-strict-align: M680x0 Options. (line 145)
* mno-string: RS/6000 and PowerPC Options.
+ (line 260)
* mno-sum-in-toc: RS/6000 and PowerPC Options.
+ (line 169)
* mno-svr3-shlib: i386 and x86-64 Options.
! (line 243)
! * mno-tablejump: AVR Options. (line 47)
! * mno-tail-call: Intel 960 Options. (line 31)
! * mno-target-align: Xtensa Options. (line 47)
! * mno-text-section-literals: Xtensa Options. (line 35)
* mno-toc: RS/6000 and PowerPC Options.
! (line 321)
! * mno-toplevel-symbols: MMIX Options. (line 40)
! * mno-unaligned-doubles: SPARC Options. (line 76)
! * mno-uninit-const-in-rodata: MIPS Options. (line 194)
* mno-update: RS/6000 and PowerPC Options.
! (line 271)
! * mno-v8plus: SPARC Options. (line 197)
! * mno-vis: SPARC Options. (line 204)
! * mno-vliw-branch: FRV Options. (line 116)
! * mno-volatile-asm-stop: IA-64 Options. (line 32)
! * mno-wide-bitfields: MCore Options. (line 23)
! * mno-xgot: MIPS Options. (line 100)
* mno-xl-compat: RS/6000 and PowerPC Options.
! (line 204)
! * mno-zero-extend: MMIX Options. (line 27)
! * mnobitfield <1>: NS32K Options. (line 61)
! * mnobitfield: M680x0 Options. (line 93)
! * mnohimem: NS32K Options. (line 118)
! * mnomacsave: SH Options. (line 64)
! * mnominmax: M68hc1x Options. (line 31)
! * mnomulti-add: NS32K Options. (line 46)
! * mnop-fun-dllimport: ARM Options. (line 201)
! * mnoregparam: NS32K Options. (line 97)
! * mnosb: NS32K Options. (line 105)
! * mnumerics: Intel 960 Options. (line 16)
! * mold-align: Intel 960 Options. (line 65)
* mold-mnemonics: RS/6000 and PowerPC Options.
+ (line 67)
* momit-leaf-frame-pointer: i386 and x86-64 Options.
! (line 370)
! * monchip: D30V Options. (line 17)
* MP: Preprocessor Options.
! (line 227)
! * mpa-risc-1-0: HPPA Options. (line 23)
! * mpa-risc-1-1: HPPA Options. (line 23)
! * mpa-risc-2-0: HPPA Options. (line 23)
! * mpack: FRV Options. (line 65)
! * mpadstruct: SH Options. (line 74)
* mparallel-insns: TMS320C3x/C4x Options.
+ (line 115)
* mparallel-mpy: TMS320C3x/C4x Options.
+ (line 120)
* mparanoid: TMS320C3x/C4x Options.
! (line 45)
! * mpcrel: M680x0 Options. (line 137)
! * mpdebug: CRIS Options. (line 40)
* mpe: RS/6000 and PowerPC Options.
+ (line 223)
* mpentium: i386 and x86-64 Options.
+ (line 107)
* mpentiumpro: i386 and x86-64 Options.
! (line 107)
! * mpic-register: ARM Options. (line 210)
! * mpoke-function-name: ARM Options. (line 224)
! * mportable-runtime: HPPA Options. (line 68)
* mpower: RS/6000 and PowerPC Options.
+ (line 19)
* mpower2: RS/6000 and PowerPC Options.
+ (line 19)
* mpowerpc: RS/6000 and PowerPC Options.
+ (line 19)
* mpowerpc-gfxopt: RS/6000 and PowerPC Options.
+ (line 19)
* mpowerpc-gpopt: RS/6000 and PowerPC Options.
+ (line 19)
* mpowerpc64: RS/6000 and PowerPC Options.
! (line 19)
! * mprefergot: SH Options. (line 81)
* mpreferred-stack-boundary: i386 and x86-64 Options.
+ (line 283)
* mprioritize-restricted-insns: RS/6000 and PowerPC Options.
! (line 344)
! * mprolog-function: V850 Options. (line 23)
! * mprologue-epilogue: CRIS Options. (line 76)
* mprototype: RS/6000 and PowerPC Options.
+ (line 417)
* mpush-args: i386 and x86-64 Options.
+ (line 335)
* MQ: Preprocessor Options.
! (line 253)
! * mregister-names: IA-64 Options. (line 40)
* mregnames: RS/6000 and PowerPC Options.
! (line 521)
! * mregparam: NS32K Options. (line 89)
* mregparm <1>: TMS320C3x/C4x Options.
+ (line 109)
* mregparm: i386 and x86-64 Options.
! (line 272)
! * mrelax <1>: SH Options. (line 50)
! * mrelax <2>: H8/300 Options. (line 9)
! * mrelax: MN10300 Options. (line 27)
! * mrelax-immediate: MCore Options. (line 19)
* mrelocatable: RS/6000 and PowerPC Options.
+ (line 304)
* mrelocatable-lib: RS/6000 and PowerPC Options.
! (line 312)
! * mrnames: MIPS Options. (line 227)
! * mrodata: ARC Options. (line 30)
* mrptb: TMS320C3x/C4x Options.
+ (line 72)
* mrpts: TMS320C3x/C4x Options.
+ (line 81)
* mrtd <1>: Function Attributes.
! (line 425)
! * mrtd <2>: NS32K Options. (line 70)
* mrtd <3>: i386 and x86-64 Options.
! (line 248)
! * mrtd: M680x0 Options. (line 102)
! * ms: H8/300 Options. (line 17)
! * ms2600: H8/300 Options. (line 24)
! * msa: Intel 960 Options. (line 9)
! * msb <1>: NS32K Options. (line 101)
! * msb: Intel 960 Options. (line 9)
! * mscc: FRV Options. (line 86)
* msched-costly-dep: RS/6000 and PowerPC Options.
! (line 351)
! * mschedule: HPPA Options. (line 75)
! * msda: V850 Options. (line 40)
! * msdata <1>: IA-64 Options. (line 45)
* msdata: RS/6000 and PowerPC Options.
+ (line 495)
* msdata-data: RS/6000 and PowerPC Options.
+ (line 500)
* msdata=default: RS/6000 and PowerPC Options.
+ (line 495)
* msdata=eabi: RS/6000 and PowerPC Options.
+ (line 475)
* msdata=none <1>: RS/6000 and PowerPC Options.
! (line 508)
! * msdata=none: M32R/D Options. (line 40)
! * msdata=sdata: M32R/D Options. (line 49)
* msdata=sysv: RS/6000 and PowerPC Options.
! (line 486)
! * msdata=use: M32R/D Options. (line 53)
! * mshort <1>: M68hc1x Options. (line 40)
! * mshort: M680x0 Options. (line 90)
! * msim <1>: Xstormy16 Options. (line 9)
* msim: RS/6000 and PowerPC Options.
! (line 427)
! * msingle-exit: MMIX Options. (line 66)
! * msingle-float: MIPS Options. (line 150)
! * msingle-pic-base: ARM Options. (line 204)
! * msio: HPPA Options. (line 104)
! * msize: AVR Options. (line 32)
! * mslow-bytes: MCore Options. (line 35)
* msmall: TMS320C3x/C4x Options.
! (line 18)
! * msmall-data: DEC Alpha Options. (line 195)
* msmall-exec: S/390 and zSeries Options.
+ (line 28)
* msmall-memory: TMS320C3x/C4x Options.
! (line 18)
! * msmall-text: DEC Alpha Options. (line 213)
! * msoft-float <1>: FRV Options. (line 22)
! * msoft-float <2>: PDP-11 Options. (line 13)
* msoft-float <3>: S/390 and zSeries Options.
! (line 11)
! * msoft-float <4>: NS32K Options. (line 50)
! * msoft-float <5>: DEC Alpha Options. (line 10)
! * msoft-float <6>: Intel 960 Options. (line 16)
! * msoft-float <7>: HPPA Options. (line 88)
* msoft-float <8>: i386 and x86-64 Options.
! (line 169)
! * msoft-float <9>: MIPS Options. (line 146)
* msoft-float <10>: RS/6000 and PowerPC Options.
! (line 243)
! * msoft-float <11>: ARM Options. (line 57)
! * msoft-float <12>: SPARC Options. (line 25)
! * msoft-float: M680x0 Options. (line 80)
! * msoft-quad-float: SPARC Options. (line 45)
! * msoft-reg-count: M68hc1x Options. (line 43)
! * mspace <1>: V850 Options. (line 30)
! * mspace: SH Options. (line 78)
! * msparclite: SPARC Options. (line 114)
* mspe: RS/6000 and PowerPC Options.
! (line 155)
! * msplit: PDP-11 Options. (line 68)
! * msplit-addresses: MIPS Options. (line 200)
* msse: i386 and x86-64 Options.
! (line 323)
! * mstack-align: CRIS Options. (line 60)
! * mstack-bias: SPARC Options. (line 249)
! * mstrict-align <1>: Intel 960 Options. (line 62)
* mstrict-align <2>: RS/6000 and PowerPC Options.
! (line 299)
! * mstrict-align: M680x0 Options. (line 145)
* mstring: RS/6000 and PowerPC Options.
! (line 260)
! * mstructure-size-boundary: ARM Options. (line 159)
! * msupersparc: SPARC Options. (line 122)
* msvr3-shlib: i386 and x86-64 Options.
+ (line 243)
* msvr4-struct-return: RS/6000 and PowerPC Options.
! (line 404)
! * mt: IA-64 Options. (line 109)
* MT: Preprocessor Options.
! (line 239)
! * mtail-call: Intel 960 Options. (line 31)
! * mtarget-align: Xtensa Options. (line 47)
! * mtda: V850 Options. (line 34)
! * mtext: ARC Options. (line 30)
! * mtext-section-literals: Xtensa Options. (line 35)
* mthreads: i386 and x86-64 Options.
! (line 350)
! * mthumb: ARM Options. (line 245)
! * mthumb-interwork: ARM Options. (line 37)
* mti: TMS320C3x/C4x Options.
! (line 102)
! * mtiny-stack: AVR Options. (line 50)
* mtls-direct-seg-refs: i386 and x86-64 Options.
! (line 378)
! * mtls-size: IA-64 Options. (line 100)
* mtoc: RS/6000 and PowerPC Options.
! (line 321)
! * mtomcat-stats: FRV Options. (line 147)
! * mtoplevel-symbols: MMIX Options. (line 40)
! * mtpcs-frame: ARM Options. (line 249)
! * mtpcs-leaf-frame: ARM Options. (line 255)
! * mtrap-precision: DEC Alpha Options. (line 109)
! * mtune <1>: CRIS Options. (line 16)
* mtune <2>: S/390 and zSeries Options.
! (line 70)
! * mtune <3>: IA-64 Options. (line 104)
! * mtune <4>: DEC Alpha Options. (line 262)
! * mtune <5>: i386 and x86-64 Options.
! (line 10)
! * mtune <6>: MIPS Options. (line 43)
! * mtune <7>: RS/6000 and PowerPC Options.
! (line 125)
! * mtune <8>: ARM Options. (line 134)
! * mtune: SPARC Options. (line 185)
! * multi_module: Darwin Options. (line 87)
! * multiply_defined: Darwin Options. (line 87)
! * multiply_defined_unused: Darwin Options. (line 87)
! * munaligned-doubles: SPARC Options. (line 76)
! * muninit-const-in-rodata: MIPS Options. (line 194)
! * munix: VAX Options. (line 9)
! * munix-asm: PDP-11 Options. (line 74)
* mupdate: RS/6000 and PowerPC Options.
! (line 271)
! * musermode: SH Options. (line 86)
! * mv8: SPARC Options. (line 114)
! * mv850: V850 Options. (line 49)
! * mv850e: V850 Options. (line 69)
! * mv850e1: V850 Options. (line 64)
! * mv8plus: SPARC Options. (line 197)
! * mvis: SPARC Options. (line 204)
! * mvliw-branch: FRV Options. (line 110)
* mvms-return-codes: DEC Alpha/VMS Options.
! (line 9)
! * mvolatile-asm-stop: IA-64 Options. (line 32)
* mvxworks: RS/6000 and PowerPC Options.
! (line 448)
! * mwide-bitfields: MCore Options. (line 23)
* mwindiss: RS/6000 and PowerPC Options.
! (line 452)
! * mwords-little-endian: ARM Options. (line 79)
! * mxgot: MIPS Options. (line 100)
* mxl-compat: RS/6000 and PowerPC Options.
+ (line 204)
* myellowknife: RS/6000 and PowerPC Options.
+ (line 443)
* mzarch: S/390 and zSeries Options.
! (line 43)
! * mzda: V850 Options. (line 45)
! * mzero-extend: MMIX Options. (line 27)
! * no-integrated-cpp: C Dialect Options. (line 179)
* no-red-zone: i386 and x86-64 Options.
! (line 398)
! * noall_load: Darwin Options. (line 87)
! * nocpp: MIPS Options. (line 270)
! * nodefaultlibs: Link Options. (line 62)
! * nofixprebinding: Darwin Options. (line 87)
! * nolibdld: HPPA Options. (line 161)
! * nomultidefs: Darwin Options. (line 87)
! * noprebind: Darwin Options. (line 87)
! * noseglinkedit: Darwin Options. (line 87)
! * nostartfiles: Link Options. (line 57)
* nostdinc: Preprocessor Options.
+ (line 356)
* nostdinc++ <1>: Preprocessor Options.
+ (line 361)
* nostdinc++: C++ Dialect Options.
! (line 179)
! * nostdlib: Link Options. (line 72)
* o: Preprocessor Options.
! (line 73)
! * O: Optimize Options. (line 32)
! * o: Overall Options. (line 154)
! * O0: Optimize Options. (line 91)
! * O1: Optimize Options. (line 32)
! * O2: Optimize Options. (line 54)
! * O3: Optimize Options. (line 86)
! * Os: Optimize Options. (line 94)
* P: Preprocessor Options.
! (line 515)
! * p: Debugging Options. (line 117)
! * pagezero_size: Darwin Options. (line 87)
! * param: Optimize Options. (line 1014)
! * pass-exit-codes: Overall Options. (line 113)
* pedantic <1>: Warnings and Errors.
! (line 25)
! * pedantic <2>: Alternate Keywords. (line 29)
! * pedantic <3>: C Extensions. (line 6)
* pedantic <4>: Preprocessor Options.
! (line 164)
! * pedantic <5>: Warning Options. (line 26)
! * pedantic: Standards. (line 13)
* pedantic-errors <1>: Warnings and Errors.
! (line 25)
! * pedantic-errors <2>: Non-bugs. (line 208)
! * pedantic-errors <3>: Actual Bugs. (line 18)
* pedantic-errors <4>: Preprocessor Options.
! (line 169)
! * pedantic-errors <5>: Warning Options. (line 68)
! * pedantic-errors: Standards. (line 13)
! * pg: Debugging Options. (line 123)
! * pie: Link Options. (line 94)
! * pipe: Overall Options. (line 179)
! * prebind: Darwin Options. (line 87)
! * prebind_all_twolevel_modules: Darwin Options. (line 87)
* preprocessor: Preprocessor Options.
! (line 24)
! * print-file-name: Debugging Options. (line 462)
! * print-libgcc-file-name: Debugging Options. (line 483)
! * print-multi-directory: Debugging Options. (line 468)
! * print-multi-lib: Debugging Options. (line 473)
* print-objc-runtime-info: Objective-C Dialect Options.
! (line 193)
! * print-prog-name: Debugging Options. (line 480)
! * print-search-dirs: Debugging Options. (line 491)
! * private_bundle: Darwin Options. (line 87)
! * pthread <1>: IA-64 Options. (line 109)
* pthread: RS/6000 and PowerPC Options.
! (line 548)
! * pthreads: SPARC Options. (line 263)
! * Q: Debugging Options. (line 129)
! * Qn: System V Options. (line 18)
! * Qy: System V Options. (line 14)
! * read_only_relocs: Darwin Options. (line 87)
* remap: Preprocessor Options.
! (line 563)
! * s: Link Options. (line 100)
! * S <1>: Link Options. (line 20)
! * S: Overall Options. (line 137)
! * save-temps: Debugging Options. (line 440)
! * sectalign: Darwin Options. (line 87)
! * sectcreate: Darwin Options. (line 87)
! * sectobjectsymbols: Darwin Options. (line 87)
! * sectorder: Darwin Options. (line 87)
! * seg1addr: Darwin Options. (line 87)
! * seg_addr_table: Darwin Options. (line 87)
! * seg_addr_table_filename: Darwin Options. (line 87)
! * seglinkedit: Darwin Options. (line 87)
! * segprot: Darwin Options. (line 87)
! * segs_read_only_addr: Darwin Options. (line 87)
! * segs_read_write_addr: Darwin Options. (line 87)
! * shared: Link Options. (line 109)
! * shared-libgcc: Link Options. (line 117)
! * sim: CRIS Options. (line 108)
! * sim2: CRIS Options. (line 114)
! * single_module: Darwin Options. (line 87)
! * specs: Directory Options. (line 98)
! * static <1>: HPPA Options. (line 165)
! * static <2>: Darwin Options. (line 87)
! * static: Link Options. (line 104)
! * static-libgcc: Link Options. (line 117)
! * std <1>: Non-bugs. (line 107)
! * std <2>: Other Builtins. (line 22)
! * std <3>: C Dialect Options. (line 46)
! * std: Standards. (line 13)
* std=: Preprocessor Options.
! (line 308)
! * sub_library: Darwin Options. (line 87)
! * sub_umbrella: Darwin Options. (line 87)
! * symbolic: Link Options. (line 152)
* target-help <1>: Preprocessor Options.
! (line 568)
! * target-help: Overall Options. (line 194)
! * threads <1>: HPPA Options. (line 178)
! * threads: SPARC Options. (line 257)
! * time: Debugging Options. (line 448)
! * traditional <1>: Incompatibilities. (line 6)
! * traditional: C Dialect Options. (line 191)
* traditional-cpp <1>: Preprocessor Options.
! (line 546)
! * traditional-cpp: C Dialect Options. (line 191)
* trigraphs <1>: Preprocessor Options.
! (line 550)
! * trigraphs: C Dialect Options. (line 175)
! * twolevel_namespace: Darwin Options. (line 87)
! * u: Link Options. (line 174)
* U: Preprocessor Options.
! (line 57)
! * umbrella: Darwin Options. (line 87)
* undef: Preprocessor Options.
! (line 61)
! * undefined: Darwin Options. (line 87)
! * unexported_symbols_list: Darwin Options. (line 87)
! * V: Target Options. (line 22)
* v <1>: Preprocessor Options.
! (line 572)
! * v: Overall Options. (line 168)
* version <1>: Preprocessor Options.
! (line 585)
! * version: Overall Options. (line 198)
! * W: Incompatibilities. (line 66)
* w: Preprocessor Options.
! (line 160)
! * W: Warning Options. (line 456)
! * w: Warning Options. (line 72)
! * Wa: Assembler Options. (line 9)
* Wabi: C++ Dialect Options.
! (line 193)
! * Waggregate-return: Warning Options. (line 724)
! * Wall <1>: Standard Libraries. (line 6)
* Wall <2>: Preprocessor Options.
! (line 79)
! * Wall: Warning Options. (line 441)
! * Wbad-function-cast: Warning Options. (line 678)
! * Wcast-align: Warning Options. (line 687)
! * Wcast-qual: Warning Options. (line 682)
! * Wchar-subscripts: Warning Options. (line 78)
* Wcomment <1>: Preprocessor Options.
! (line 87)
! * Wcomment: Warning Options. (line 83)
* Wcomments: Preprocessor Options.
! (line 87)
! * Wconversion <1>: Protoize Caveats. (line 31)
! * Wconversion: Warning Options. (line 704)
* Wctor-dtor-privacy: C++ Dialect Options.
! (line 271)
! * Wdeclaration-after-statement: Warning Options. (line 651)
! * Wdisabled-optimization: Warning Options. (line 872)
! * Wdiv-by-zero: Warning Options. (line 543)
! * weak_reference_mismatches: Darwin Options. (line 87)
* Weffc++: C++ Dialect Options.
+ (line 297)
* Wendif-labels <1>: Preprocessor Options.
! (line 137)
! * Wendif-labels: Warning Options. (line 661)
* Werror <1>: Preprocessor Options.
! (line 150)
! * Werror: Warning Options. (line 881)
! * Werror-implicit-function-declaration: Warning Options. (line 185)
! * Wextra: Warning Options. (line 456)
! * Wfloat-equal: Warning Options. (line 559)
* Wformat <1>: Function Attributes.
! (line 137)
! * Wformat: Warning Options. (line 87)
* Wformat-nonliteral <1>: Function Attributes.
! (line 185)
! * Wformat-nonliteral: Warning Options. (line 139)
! * Wformat-security: Warning Options. (line 144)
! * Wformat-y2k: Warning Options. (line 117)
! * Wformat=2: Warning Options. (line 155)
! * whatsloaded: Darwin Options. (line 87)
! * whyload: Darwin Options. (line 87)
! * Wimplicit: Warning Options. (line 189)
! * Wimplicit-function-declaration: Warning Options. (line 185)
! * Wimplicit-int: Warning Options. (line 181)
* Wimport: Preprocessor Options.
! (line 110)
! * Winit-self: Warning Options. (line 167)
! * Winline <1>: Inline. (line 35)
! * Winline: Warning Options. (line 835)
! * Winvalid-pch: Warning Options. (line 862)
! * Wl: Link Options. (line 170)
! * Wlarger-than: Warning Options. (line 669)
! * Wlong-long: Warning Options. (line 866)
! * Wmain: Warning Options. (line 192)
! * Wmissing-braces: Warning Options. (line 197)
! * Wmissing-declarations: Warning Options. (line 745)
! * Wmissing-format-attribute: Warning Options. (line 759)
! * Wmissing-noreturn: Warning Options. (line 751)
! * Wmissing-prototypes: Warning Options. (line 739)
! * Wmultichar: Warning Options. (line 769)
! * Wnested-externs: Warning Options. (line 810)
* Wno-deprecated: C++ Dialect Options.
! (line 327)
! * Wno-deprecated-declarations: Warning Options. (line 775)
! * Wno-div-by-zero: Warning Options. (line 543)
! * Wno-format-extra-args: Warning Options. (line 121)
! * Wno-format-zero-length: Warning Options. (line 135)
! * Wno-import: Warning Options. (line 75)
! * Wno-invalid-offsetof: Warning Options. (line 848)
! * Wno-long-long: Warning Options. (line 866)
! * Wno-multichar: Warning Options. (line 769)
* Wno-non-template-friend: C++ Dialect Options.
+ (line 331)
* Wno-pmf-conversions <1>: Bound member functions.
+ (line 35)
* Wno-pmf-conversions: C++ Dialect Options.
+ (line 372)
* Wno-protocol: Objective-C Dialect Options.
+ (line 159)
* Wnon-virtual-dtor: C++ Dialect Options.
! (line 276)
! * Wnonnull: Warning Options. (line 160)
* Wold-style-cast: C++ Dialect Options.
! (line 347)
! * Wold-style-definition: Warning Options. (line 735)
* Woverloaded-virtual: C++ Dialect Options.
+ (line 353)
* Wp: Preprocessor Options.
! (line 13)
! * Wpacked: Warning Options. (line 781)
! * Wpadded: Warning Options. (line 798)
! * Wparentheses: Warning Options. (line 205)
! * Wpointer-arith <1>: Pointer Arith. (line 13)
! * Wpointer-arith: Warning Options. (line 672)
! * Wredundant-decls: Warning Options. (line 805)
* Wreorder: C++ Dialect Options.
! (line 281)
! * Wreturn-type: Warning Options. (line 290)
* Wselector: Objective-C Dialect Options.
! (line 169)
! * Wsequence-point: Warning Options. (line 243)
! * Wshadow: Warning Options. (line 664)
! * Wsign-compare: Warning Options. (line 717)
* Wsign-promo: C++ Dialect Options.
! (line 376)
! * Wstrict-aliasing: Warning Options. (line 434)
! * Wstrict-prototypes: Warning Options. (line 729)
! * Wswitch: Warning Options. (line 300)
! * Wswitch-enum: Warning Options. (line 310)
! * Wswitch-switch: Warning Options. (line 307)
* Wsystem-headers <1>: Preprocessor Options.
! (line 154)
! * Wsystem-headers: Warning Options. (line 548)
* Wtraditional <1>: Preprocessor Options.
! (line 104)
! * Wtraditional: Warning Options. (line 574)
* Wtrigraphs <1>: Preprocessor Options.
! (line 92)
! * Wtrigraphs: Warning Options. (line 316)
* Wundeclared-selector: Objective-C Dialect Options.
+ (line 181)
* Wundef <1>: Preprocessor Options.
! (line 113)
! * Wundef: Warning Options. (line 658)
! * Wuninitialized: Warning Options. (line 358)
! * Wunknown-pragmas: Warning Options. (line 427)
! * Wunreachable-code: Warning Options. (line 813)
! * Wunused: Warning Options. (line 351)
! * Wunused-function: Warning Options. (line 321)
! * Wunused-label: Warning Options. (line 325)
* Wunused-macros: Preprocessor Options.
! (line 118)
! * Wunused-parameter: Warning Options. (line 331)
! * Wunused-value: Warning Options. (line 345)
! * Wunused-variable: Warning Options. (line 338)
! * Wwrite-strings: Warning Options. (line 693)
* x <1>: Preprocessor Options.
! (line 292)
! * x: Overall Options. (line 90)
! * Xassembler: Assembler Options. (line 13)
! * Xlinker: Link Options. (line 158)
! * Ym: System V Options. (line 26)
! * YP: System V Options. (line 22)
File: gcc.info, Node: Keyword Index, Prev: Option Index, Up: Top
*************** File: gcc.info, Node: Keyword Index, P
*** 25971,27161 ****
Keyword Index
*************
* Menu:
! * ! in constraint: Multi-Alternative.
! * # in constraint: Modifiers.
! * #pragma: Pragmas.
! * #pragma implementation: C++ Interface.
! * #pragma implementation, implied: C++ Interface.
! * #pragma interface: C++ Interface.
! * #pragma, reason for not using: Function Attributes.
! * $: Dollar Signs.
! * % in constraint: Modifiers.
! * %include: Spec Files.
! * %include_noerr: Spec Files.
! * %rename: Spec Files.
! * & in constraint: Modifiers.
! * ': Incompatibilities.
! * * in constraint: Modifiers.
! * + in constraint: Modifiers.
! * -lgcc, use with -nodefaultlibs: Link Options.
! * -lgcc, use with -nostdlib: Link Options.
! * -nodefaultlibs and unresolved references: Link Options.
! * -nostdlib and unresolved references: Link Options.
* .sdata/.sdata2 references (PowerPC): RS/6000 and PowerPC Options.
! * //: C++ Comments.
! * 0 in constraint: Simple Constraints.
! * < in constraint: Simple Constraints.
! * in constraint: Simple Constraints.
! * >?: Min and Max.
! * ? in constraint: Multi-Alternative.
! * ?: extensions <1>: Conditionals.
! * ?: extensions: Lvalues.
! * ?: side effect: Conditionals.
! * _ in variables in macros: Typeof.
! * __builtin_apply: Constructing Calls.
! * __builtin_apply_args: Constructing Calls.
! * __builtin_choose_expr: Other Builtins.
! * __builtin_clz: Other Builtins.
! * __builtin_clzl: Other Builtins.
! * __builtin_clzll: Other Builtins.
! * __builtin_constant_p: Other Builtins.
! * __builtin_ctz: Other Builtins.
! * __builtin_ctzl: Other Builtins.
! * __builtin_ctzll: Other Builtins.
! * __builtin_expect: Other Builtins.
! * __builtin_ffs: Other Builtins.
! * __builtin_ffsl: Other Builtins.
! * __builtin_ffsll: Other Builtins.
! * __builtin_frame_address: Return Address.
! * __builtin_huge_val: Other Builtins.
! * __builtin_huge_valf: Other Builtins.
! * __builtin_huge_vall: Other Builtins.
! * __builtin_inf: Other Builtins.
! * __builtin_inff: Other Builtins.
! * __builtin_infl: Other Builtins.
! * __builtin_isgreater: Other Builtins.
! * __builtin_isgreaterequal: Other Builtins.
! * __builtin_isless: Other Builtins.
! * __builtin_islessequal: Other Builtins.
! * __builtin_islessgreater: Other Builtins.
! * __builtin_isunordered: Other Builtins.
! * __builtin_nan: Other Builtins.
! * __builtin_nanf: Other Builtins.
! * __builtin_nanl: Other Builtins.
! * __builtin_nans: Other Builtins.
! * __builtin_nansf: Other Builtins.
! * __builtin_nansl: Other Builtins.
! * __builtin_parity: Other Builtins.
! * __builtin_parityl: Other Builtins.
! * __builtin_parityll: Other Builtins.
! * __builtin_popcount: Other Builtins.
! * __builtin_popcountl: Other Builtins.
! * __builtin_popcountll: Other Builtins.
! * __builtin_prefetch: Other Builtins.
! * __builtin_return: Constructing Calls.
! * __builtin_return_address: Return Address.
! * __builtin_types_compatible_p: Other Builtins.
! * __complex__ keyword: Complex.
! * __declspec(dllexport): Function Attributes.
! * __declspec(dllimport): Function Attributes.
! * __extension__: Alternate Keywords.
! * __func__ identifier: Function Names.
! * __FUNCTION__ identifier: Function Names.
! * __imag__ keyword: Complex.
! * __PRETTY_FUNCTION__ identifier: Function Names.
! * __real__ keyword: Complex.
! * __STDC_HOSTED__: Standards.
! * __thread: Thread-Local.
! * _Complex keyword: Complex.
! * _exit: Other Builtins.
! * _Exit: Other Builtins.
! * ABI: Compatibility.
! * abort: Other Builtins.
! * abs: Other Builtins.
! * accessing volatiles: Volatiles.
! * acos: Other Builtins.
! * acosf: Other Builtins.
! * acosh: Other Builtins.
! * acoshf: Other Builtins.
! * acoshl: Other Builtins.
! * acosl: Other Builtins.
! * Ada: G++ and GCC.
! * address constraints: Simple Constraints.
! * address of a label: Labels as Values.
! * address_operand: Simple Constraints.
! * alias attribute: Function Attributes.
! * aliasing of parameters: Code Gen Options.
! * aligned attribute <1>: Type Attributes.
! * aligned attribute: Variable Attributes.
! * alignment: Alignment.
! * alloca: Other Builtins.
! * alloca vs variable-length arrays: Variable Length.
! * alternate keywords: Alternate Keywords.
! * always_inline function attribute: Function Attributes.
* AMD x86-64 Options: i386 and x86-64 Options.
! * AMD1: Standards.
! * ANSI C: Standards.
! * ANSI C standard: Standards.
! * ANSI C89: Standards.
! * ANSI support: C Dialect Options.
! * ANSI X3.159-1989: Standards.
! * apostrophes: Incompatibilities.
! * application binary interface: Compatibility.
! * ARC Options: ARC Options.
* ARM [Annotated C++ Reference Manual]: Backwards Compatibility.
! * ARM options: ARM Options.
! * arrays of length zero: Zero Length.
! * arrays of variable length: Variable Length.
! * arrays, non-lvalue: Subscripting.
! * asin: Other Builtins.
! * asinf: Other Builtins.
! * asinh: Other Builtins.
! * asinhf: Other Builtins.
! * asinhl: Other Builtins.
! * asinl: Other Builtins.
! * asm constraints: Constraints.
! * asm expressions: Extended Asm.
! * assembler instructions: Extended Asm.
! * assembler names for identifiers: Asm Labels.
! * assembly code, invalid: Bug Criteria.
! * atan: Other Builtins.
! * atan2: Other Builtins.
! * atan2f: Other Builtins.
! * atan2l: Other Builtins.
! * atanf: Other Builtins.
! * atanh: Other Builtins.
! * atanhf: Other Builtins.
! * atanhl: Other Builtins.
! * atanl: Other Builtins.
! * attribute of types: Type Attributes.
! * attribute of variables: Variable Attributes.
! * attribute syntax: Attribute Syntax.
! * autoincrement/decrement addressing: Simple Constraints.
! * automatic inline for C++ member fns: Inline.
! * AVR Options: AVR Options.
* Backwards Compatibility: Backwards Compatibility.
! * base class members: Name lookup.
! * bcmp: Other Builtins.
! * binary compatibility: Compatibility.
* bound pointer to member function: Bound member functions.
! * bug criteria: Bug Criteria.
! * bugs: Bugs.
! * bugs, known: Trouble.
! * built-in functions <1>: Other Builtins.
! * built-in functions: C Dialect Options.
! * bzero: Other Builtins.
! * C compilation options: Invoking GCC.
! * C intermediate output, nonexistent: G++ and GCC.
! * C language extensions: C Extensions.
! * C language, traditional: C Dialect Options.
! * C standard: Standards.
! * C standards: Standards.
! * c++: Invoking G++.
! * C++: G++ and GCC.
! * C++ comments: C++ Comments.
! * C++ compilation options: Invoking GCC.
! * C++ interface and implementation headers: C++ Interface.
! * C++ language extensions: C++ Extensions.
! * C++ member fns, automatically inline: Inline.
* C++ misunderstandings: C++ Misunderstandings.
! * C++ options, command line: C++ Dialect Options.
! * C++ pragmas, effect on inlining: C++ Interface.
! * C++ source file suffixes: Invoking G++.
* C++ static data, declaring and defining: Static Definitions.
! * C89: Standards.
! * C90: Standards.
! * C94: Standards.
! * C95: Standards.
! * C99: Standards.
! * C9X: Standards.
* C_INCLUDE_PATH: Environment Variables.
! * cabs: Other Builtins.
! * cabsf: Other Builtins.
! * cabsl: Other Builtins.
! * cacos: Other Builtins.
! * cacosf: Other Builtins.
! * cacosh: Other Builtins.
! * cacoshf: Other Builtins.
! * cacoshl: Other Builtins.
! * cacosl: Other Builtins.
* calling functions through the function vector on the H8/300 processors: Function Attributes.
! * calloc: Other Builtins.
! * carg: Other Builtins.
! * cargf: Other Builtins.
! * cargl: Other Builtins.
! * case labels in initializers: Designated Inits.
! * case ranges: Case Ranges.
! * casin: Other Builtins.
! * casinf: Other Builtins.
! * casinh: Other Builtins.
! * casinhf: Other Builtins.
! * casinhl: Other Builtins.
! * casinl: Other Builtins.
! * cast to a union: Cast to Union.
! * casts as lvalues: Lvalues.
! * catan: Other Builtins.
! * catanf: Other Builtins.
! * catanh: Other Builtins.
! * catanhf: Other Builtins.
! * catanhl: Other Builtins.
! * catanl: Other Builtins.
! * cbrt: Other Builtins.
! * cbrtf: Other Builtins.
! * cbrtl: Other Builtins.
! * ccos: Other Builtins.
! * ccosf: Other Builtins.
! * ccosh: Other Builtins.
! * ccoshf: Other Builtins.
! * ccoshl: Other Builtins.
! * ccosl: Other Builtins.
! * ceil: Other Builtins.
! * ceilf: Other Builtins.
! * ceill: Other Builtins.
! * cexp: Other Builtins.
! * cexpf: Other Builtins.
! * cexpl: Other Builtins.
! * cimag: Other Builtins.
! * cimagf: Other Builtins.
! * cimagl: Other Builtins.
! * cleanup attribute: Variable Attributes.
! * COBOL: G++ and GCC.
! * code generation conventions: Code Gen Options.
! * code, mixed with declarations: Mixed Declarations.
! * command options: Invoking GCC.
! * comments, C++ style: C++ Comments.
! * common attribute: Variable Attributes.
* comparison of signed and unsigned values, warning: Warning Options.
! * compiler bugs, reporting: Bug Reporting.
! * compiler compared to C++ preprocessor: G++ and GCC.
! * compiler options, C++: C++ Dialect Options.
* compiler options, Objective-C: Objective-C Dialect Options.
! * compiler version, specifying: Target Options.
* COMPILER_PATH: Environment Variables.
! * complex conjugation: Complex.
! * complex numbers: Complex.
! * compound expressions as lvalues: Lvalues.
! * compound literals: Compound Literals.
! * computed gotos: Labels as Values.
! * conditional expressions as lvalues: Lvalues.
! * conditional expressions, extensions: Conditionals.
! * conflicting types: Disappointments.
! * conj: Other Builtins.
! * conjf: Other Builtins.
! * conjl: Other Builtins.
! * const applied to function: Function Attributes.
! * const function attribute: Function Attributes.
! * constants in constraints: Simple Constraints.
! * constraint modifier characters: Modifiers.
! * constraint, matching: Simple Constraints.
! * constraints, asm: Constraints.
! * constraints, machine specific: Machine Constraints.
! * constructing calls: Constructing Calls.
! * constructor expressions: Compound Literals.
! * constructor function attribute: Function Attributes.
! * contributors: Contributors.
! * copysign: Other Builtins.
! * copysignf: Other Builtins.
! * copysignl: Other Builtins.
! * core dump: Bug Criteria.
! * cos: Other Builtins.
! * cosf: Other Builtins.
! * cosh: Other Builtins.
! * coshf: Other Builtins.
! * coshl: Other Builtins.
! * cosl: Other Builtins.
* CPATH: Environment Variables.
* CPLUS_INCLUDE_PATH: Environment Variables.
! * cpow: Other Builtins.
! * cpowf: Other Builtins.
! * cpowl: Other Builtins.
! * cproj: Other Builtins.
! * cprojf: Other Builtins.
! * cprojl: Other Builtins.
! * creal: Other Builtins.
! * crealf: Other Builtins.
! * creall: Other Builtins.
! * CRIS Options: CRIS Options.
! * cross compiling: Target Options.
! * csin: Other Builtins.
! * csinf: Other Builtins.
! * csinh: Other Builtins.
! * csinhf: Other Builtins.
! * csinhl: Other Builtins.
! * csinl: Other Builtins.
! * csqrt: Other Builtins.
! * csqrtf: Other Builtins.
! * csqrtl: Other Builtins.
! * ctan: Other Builtins.
! * ctanf: Other Builtins.
! * ctanh: Other Builtins.
! * ctanhf: Other Builtins.
! * ctanhl: Other Builtins.
! * ctanl: Other Builtins.
! * D30V Options: D30V Options.
! * Darwin options: Darwin Options.
! * DBX: Interoperation.
! * dcgettext: Other Builtins.
! * deallocating variable length arrays: Variable Length.
! * debugging information options: Debugging Options.
! * declaration scope: Incompatibilities.
! * declarations inside expressions: Statement Exprs.
! * declarations, mixed with code: Mixed Declarations.
! * declaring attributes of functions: Function Attributes.
! * declaring static data in C++: Static Definitions.
! * defining static data in C++: Static Definitions.
* dependencies for make as output: Environment Variables.
* dependencies, make: Preprocessor Options.
* DEPENDENCIES_OUTPUT: Environment Variables.
! * dependent name lookup: Name lookup.
! * deprecated attribute: Variable Attributes.
! * deprecated attribute.: Function Attributes.
! * designated initializers: Designated Inits.
! * designator lists: Designated Inits.
! * designators: Designated Inits.
! * destructor function attribute: Function Attributes.
! * dgettext: Other Builtins.
* diagnostic messages: Language Independent Options.
! * dialect options: C Dialect Options.
! * digits in constraint: Simple Constraints.
! * directory options: Directory Options.
! * dollar signs in identifier names: Dollar Signs.
! * double-word arithmetic: Long Long.
! * downward funargs: Nested Functions.
! * drem: Other Builtins.
! * dremf: Other Builtins.
! * dreml: Other Builtins.
! * E in constraint: Simple Constraints.
! * earlyclobber operand: Modifiers.
* eight bit data on the H8/300, H8/300H, and H8S: Function Attributes.
! * empty structures: Empty Structures.
* environment variables: Environment Variables.
! * erf: Other Builtins.
! * erfc: Other Builtins.
! * erfcf: Other Builtins.
! * erfcl: Other Builtins.
! * erff: Other Builtins.
! * erfl: Other Builtins.
! * error messages: Warnings and Errors.
! * escaped newlines: Escaped Newlines.
! * exclamation point: Multi-Alternative.
! * exit: Other Builtins.
! * exp: Other Builtins.
! * exp10: Other Builtins.
! * exp10f: Other Builtins.
! * exp10l: Other Builtins.
! * exp2: Other Builtins.
! * exp2f: Other Builtins.
! * exp2l: Other Builtins.
! * expf: Other Builtins.
! * expl: Other Builtins.
! * explicit register variables: Explicit Reg Vars.
! * expm1: Other Builtins.
! * expm1f: Other Builtins.
! * expm1l: Other Builtins.
! * expressions containing statements: Statement Exprs.
! * expressions, compound, as lvalues: Lvalues.
! * expressions, conditional, as lvalues: Lvalues.
! * expressions, constructor: Compound Literals.
! * extended asm: Extended Asm.
! * extensible constraints: Simple Constraints.
! * extensions, ?: <1>: Conditionals.
! * extensions, ?:: Lvalues.
! * extensions, C language: C Extensions.
! * extensions, C++ language: C++ Extensions.
! * external declaration scope: Incompatibilities.
! * F in constraint: Simple Constraints.
! * fabs: Other Builtins.
! * fabsf: Other Builtins.
! * fabsl: Other Builtins.
! * fatal signal: Bug Criteria.
! * fdim: Other Builtins.
! * fdimf: Other Builtins.
! * fdiml: Other Builtins.
* FDL, GNU Free Documentation License: GNU Free Documentation License.
! * ffs: Other Builtins.
! * file name suffix: Overall Options.
! * file names: Link Options.
! * flexible array members: Zero Length.
! * float as function value type: Incompatibilities.
! * floating point precision <1>: Disappointments.
! * floating point precision: Optimize Options.
! * floor: Other Builtins.
! * floorf: Other Builtins.
! * floorl: Other Builtins.
! * fma: Other Builtins.
! * fmaf: Other Builtins.
! * fmal: Other Builtins.
! * fmax: Other Builtins.
! * fmaxf: Other Builtins.
! * fmaxl: Other Builtins.
! * fmin: Other Builtins.
! * fminf: Other Builtins.
! * fminl: Other Builtins.
! * fmod: Other Builtins.
! * fmodf: Other Builtins.
! * fmodl: Other Builtins.
! * format function attribute: Function Attributes.
! * format_arg function attribute: Function Attributes.
! * Fortran: G++ and GCC.
! * forwarding calls: Constructing Calls.
! * fprintf: Other Builtins.
! * fprintf_unlocked: Other Builtins.
! * fputs: Other Builtins.
! * fputs_unlocked: Other Builtins.
! * freestanding environment: Standards.
! * freestanding implementation: Standards.
! * frexp: Other Builtins.
! * frexpf: Other Builtins.
! * frexpl: Other Builtins.
! * FRV Options: FRV Options.
! * fscanf: Other Builtins.
! * fscanf, and constant strings: Incompatibilities.
! * function addressability on the M32R/D: Function Attributes.
! * function attributes: Function Attributes.
! * function pointers, arithmetic: Pointer Arith.
! * function prototype declarations: Function Prototypes.
* function without a prologue/epilogue code: Function Attributes.
! * function, size of pointer to: Pointer Arith.
* functions called via pointer on the RS/6000 and PowerPC: Function Attributes.
! * functions in arbitrary sections: Function Attributes.
* functions that are passed arguments in registers on the 386: Function Attributes.
! * functions that behave like malloc: Function Attributes.
* functions that do not pop the argument stack on the 386: Function Attributes.
* functions that do pop the argument stack on the 386: Function Attributes.
! * functions that have no side effects: Function Attributes.
! * functions that never return: Function Attributes.
* functions that pop the argument stack on the 386: Function Attributes.
* functions which do not handle memory bank switching on 68HC11/68HC12: Function Attributes.
* functions which handle memory bank switching: Function Attributes.
* functions with non-null pointer arguments: Function Attributes.
* functions with printf, scanf, strftime or strfmon style arguments: Function Attributes.
! * g in constraint: Simple Constraints.
! * G in constraint: Simple Constraints.
! * g++: Invoking G++.
! * G++: G++ and GCC.
! * gamma: Other Builtins.
! * gammaf: Other Builtins.
! * gammal: Other Builtins.
! * GCC: G++ and GCC.
! * GCC command options: Invoking GCC.
* GCC_EXEC_PREFIX: Environment Variables.
! * gcc_struct: Type Attributes.
! * gcc_struct attribute: Variable Attributes.
! * generalized lvalues: Lvalues.
! * gettext: Other Builtins.
! * global offset table: Code Gen Options.
! * global register after longjmp: Global Reg Vars.
! * global register variables: Global Reg Vars.
! * GNAT: G++ and GCC.
! * GNU C Compiler: G++ and GCC.
! * GNU Compiler Collection: G++ and GCC.
! * goto with computed label: Labels as Values.
! * gp-relative references (MIPS): MIPS Options.
! * gprof: Debugging Options.
! * grouping options: Invoking GCC.
! * H in constraint: Simple Constraints.
* hardware models and configurations, specifying: Submodel Options.
! * hex floats: Hex Floats.
! * hosted environment <1>: C Dialect Options.
! * hosted environment: Standards.
! * hosted implementation: Standards.
! * HPPA Options: HPPA Options.
! * hypot: Other Builtins.
! * hypotf: Other Builtins.
! * hypotl: Other Builtins.
! * I in constraint: Simple Constraints.
! * i in constraint: Simple Constraints.
* i386 Options: i386 and x86-64 Options.
! * IA-64 Options: IA-64 Options.
* IBM RS/6000 and PowerPC Options: RS/6000 and PowerPC Options.
! * identifier names, dollar signs in: Dollar Signs.
! * identifiers, names in assembler code: Asm Labels.
! * ilogb: Other Builtins.
! * ilogbf: Other Builtins.
! * ilogbl: Other Builtins.
! * imaxabs: Other Builtins.
* implementation-defined behavior, C language: C Implementation.
! * implied #pragma implementation: C++ Interface.
! * incompatibilities of GCC: Incompatibilities.
! * increment operators: Bug Criteria.
! * index: Other Builtins.
! * indirect calls on ARM: Function Attributes.
! * init_priority attribute: C++ Attributes.
! * initializations in expressions: Compound Literals.
! * initializers with labeled elements: Designated Inits.
! * initializers, non-constant: Initializers.
! * inline automatic for C++ member fns: Inline.
! * inline functions: Inline.
! * inline functions, omission of: Inline.
! * inlining and C++ pragmas: C++ Interface.
! * installation trouble: Trouble.
! * integrating function code: Inline.
* Intel 386 Options: i386 and x86-64 Options.
! * interface and implementation headers, C++: C++ Interface.
! * intermediate C version, nonexistent: G++ and GCC.
! * interrupt handler functions: Function Attributes.
* interrupt handler functions on the m68k, H8/300 and SH processors: Function Attributes.
! * introduction: Top.
! * invalid assembly code: Bug Criteria.
! * invalid input: Bug Criteria.
! * invoking g++: Invoking G++.
! * ISO 9899: Standards.
! * ISO C: Standards.
! * ISO C standard: Standards.
! * ISO C90: Standards.
! * ISO C94: Standards.
! * ISO C95: Standards.
! * ISO C99: Standards.
! * ISO C9X: Standards.
! * ISO support: C Dialect Options.
! * ISO/IEC 9899: Standards.
! * j0: Other Builtins.
! * j0f: Other Builtins.
! * j0l: Other Builtins.
! * j1: Other Builtins.
! * j1f: Other Builtins.
! * j1l: Other Builtins.
! * Java: G++ and GCC.
! * java_interface attribute: C++ Attributes.
! * jn: Other Builtins.
! * jnf: Other Builtins.
! * jnl: Other Builtins.
! * keywords, alternate: Alternate Keywords.
! * known causes of trouble: Trouble.
! * labeled elements in initializers: Designated Inits.
! * labels as values: Labels as Values.
! * labs: Other Builtins.
* LANG: Environment Variables.
! * language dialect options: C Dialect Options.
* LC_ALL: Environment Variables.
* LC_CTYPE: Environment Variables.
* LC_MESSAGES: Environment Variables.
! * ldexp: Other Builtins.
! * ldexpf: Other Builtins.
! * ldexpl: Other Builtins.
! * length-zero arrays: Zero Length.
! * lgamma: Other Builtins.
! * lgammaf: Other Builtins.
! * lgammal: Other Builtins.
! * Libraries: Link Options.
* LIBRARY_PATH: Environment Variables.
! * link options: Link Options.
! * LL integer suffix: Long Long.
! * llabs: Other Builtins.
! * llrint: Other Builtins.
! * llrintf: Other Builtins.
! * llrintl: Other Builtins.
! * llround: Other Builtins.
! * llroundf: Other Builtins.
! * llroundl: Other Builtins.
! * load address instruction: Simple Constraints.
! * local labels: Local Labels.
! * local variables in macros: Typeof.
! * local variables, specifying registers: Local Reg Vars.
* locale: Environment Variables.
* locale definition: Environment Variables.
! * log: Other Builtins.
! * log10: Other Builtins.
! * log10f: Other Builtins.
! * log10l: Other Builtins.
! * log1p: Other Builtins.
! * log1pf: Other Builtins.
! * log1pl: Other Builtins.
! * log2: Other Builtins.
! * log2f: Other Builtins.
! * log2l: Other Builtins.
! * logb: Other Builtins.
! * logbf: Other Builtins.
! * logbl: Other Builtins.
! * logf: Other Builtins.
! * logl: Other Builtins.
! * long long data types: Long Long.
! * longjmp: Global Reg Vars.
! * longjmp incompatibilities: Incompatibilities.
! * longjmp warnings: Warning Options.
! * lrint: Other Builtins.
! * lrintf: Other Builtins.
! * lrintl: Other Builtins.
! * lround: Other Builtins.
! * lroundf: Other Builtins.
! * lroundl: Other Builtins.
! * lvalues, generalized: Lvalues.
! * m in constraint: Simple Constraints.
! * M32R/D options: M32R/D Options.
! * M680x0 options: M680x0 Options.
! * M68hc1x options: M68hc1x Options.
! * machine dependent options: Submodel Options.
! * machine specific constraints: Machine Constraints.
! * macro with variable arguments: Variadic Macros.
! * macros containing asm: Extended Asm.
! * macros, inline alternative: Inline.
! * macros, local labels: Local Labels.
! * macros, local variables in: Typeof.
! * macros, statements in expressions: Statement Exprs.
! * macros, types of arguments: Typeof.
* make: Preprocessor Options.
! * malloc: Other Builtins.
! * malloc attribute: Function Attributes.
! * matching constraint: Simple Constraints.
! * maximum operator: Min and Max.
! * MCore options: MCore Options.
! * member fns, automatically inline: Inline.
! * memcmp: Other Builtins.
! * memcpy: Other Builtins.
! * memory references in constraints: Simple Constraints.
! * mempcpy: Other Builtins.
! * memset: Other Builtins.
! * Mercury: G++ and GCC.
* message formatting: Language Independent Options.
! * messages, warning: Warning Options.
! * messages, warning and error: Warnings and Errors.
! * middle-operands, omitted: Conditionals.
! * minimum operator: Min and Max.
! * MIPS options: MIPS Options.
* misunderstandings in C++: C++ Misunderstandings.
! * mixed declarations and code: Mixed Declarations.
! * mktemp, and constant strings: Incompatibilities.
! * MMIX Options: MMIX Options.
! * MN10300 options: MN10300 Options.
! * mode attribute: Variable Attributes.
! * modf: Other Builtins.
! * modff: Other Builtins.
! * modfl: Other Builtins.
! * modifiers in constraints: Modifiers.
! * ms_struct: Type Attributes.
! * ms_struct attribute: Variable Attributes.
! * multiple alternative constraints: Multi-Alternative.
! * multiprecision arithmetic: Long Long.
! * n in constraint: Simple Constraints.
! * names used in assembler code: Asm Labels.
! * naming convention, implementation headers: C++ Interface.
! * nearbyint: Other Builtins.
! * nearbyintf: Other Builtins.
! * nearbyintl: Other Builtins.
! * nested functions: Nested Functions.
! * newlines (escaped): Escaped Newlines.
! * nextafter: Other Builtins.
! * nextafterf: Other Builtins.
! * nextafterl: Other Builtins.
! * nexttoward: Other Builtins.
! * nexttowardf: Other Builtins.
! * nexttowardl: Other Builtins.
* no_instrument_function function attribute: Function Attributes.
! * nocommon attribute: Variable Attributes.
! * noinline function attribute: Function Attributes.
! * non-constant initializers: Initializers.
! * non-static inline function: Inline.
! * nonnull function attribute: Function Attributes.
! * noreturn function attribute: Function Attributes.
! * nothrow function attribute: Function Attributes.
! * NS32K options: NS32K Options.
! * o in constraint: Simple Constraints.
* OBJC_INCLUDE_PATH: Environment Variables.
! * Objective-C: G++ and GCC.
* Objective-C options, command line: Objective-C Dialect Options.
! * offsettable address: Simple Constraints.
! * old-style function definitions: Function Prototypes.
! * omitted middle-operands: Conditionals.
! * open coding: Inline.
! * operand constraints, asm: Constraints.
! * optimize options: Optimize Options.
* options to control diagnostics formatting: Language Independent Options.
! * options to control warnings: Warning Options.
! * options, C++: C++ Dialect Options.
! * options, code generation: Code Gen Options.
! * options, debugging: Debugging Options.
! * options, dialect: C Dialect Options.
! * options, directory search: Directory Options.
! * options, GCC command: Invoking GCC.
! * options, grouping: Invoking GCC.
! * options, linking: Link Options.
* options, Objective-C: Objective-C Dialect Options.
! * options, optimization: Optimize Options.
! * options, order: Invoking GCC.
* options, preprocessor: Preprocessor Options.
! * order of evaluation, side effects: Non-bugs.
! * order of options: Invoking GCC.
! * other register constraints: Simple Constraints.
! * output file option: Overall Options.
! * overloaded virtual fn, warning: C++ Dialect Options.
! * p in constraint: Simple Constraints.
! * packed attribute: Variable Attributes.
! * parameter forward declaration: Variable Length.
! * parameters, aliased: Code Gen Options.
! * Pascal: G++ and GCC.
! * PDP-11 Options: PDP-11 Options.
! * PIC: Code Gen Options.
* pmf: Bound member functions.
! * pointer arguments: Function Attributes.
* pointer to member function: Bound member functions.
! * portions of temporary objects, pointers to: Temporaries.
! * pow: Other Builtins.
! * pow10: Other Builtins.
! * pow10f: Other Builtins.
! * pow10l: Other Builtins.
! * powf: Other Builtins.
! * powl: Other Builtins.
! * pragma, extern_prefix: Tru64 Pragmas.
! * pragma, long_calls: ARM Pragmas.
! * pragma, long_calls_off: ARM Pragmas.
* pragma, longcall: RS/6000 and PowerPC Pragmas.
! * pragma, mark: Darwin Pragmas.
! * pragma, no_long_calls: ARM Pragmas.
! * pragma, options align: Darwin Pragmas.
! * pragma, reason for not using: Function Attributes.
! * pragma, redefine_extname: Solaris Pragmas.
! * pragma, segment: Darwin Pragmas.
! * pragma, unused: Darwin Pragmas.
! * pragmas: Pragmas.
! * pragmas in C++, effect on inlining: C++ Interface.
! * pragmas, interface and implementation: C++ Interface.
! * pragmas, warning of unknown: Warning Options.
! * precompiled headers: Precompiled Headers.
! * preprocessing numbers: Incompatibilities.
! * preprocessing tokens: Incompatibilities.
* preprocessor options: Preprocessor Options.
! * printf: Other Builtins.
! * printf_unlocked: Other Builtins.
! * prof: Debugging Options.
! * promotion of formal parameters: Function Prototypes.
! * pure function attribute: Function Attributes.
! * push address instruction: Simple Constraints.
! * putchar: Other Builtins.
! * puts: Other Builtins.
! * qsort, and global register variables: Global Reg Vars.
! * question mark: Multi-Alternative.
! * r in constraint: Simple Constraints.
! * ranges in case statements: Case Ranges.
! * read-only strings: Incompatibilities.
! * register variable after longjmp: Global Reg Vars.
! * registers: Extended Asm.
! * registers for local variables: Local Reg Vars.
! * registers in constraints: Simple Constraints.
! * registers, global allocation: Explicit Reg Vars.
! * registers, global variables in: Global Reg Vars.
! * regparm attribute: Function Attributes.
! * relocation truncated to fit (MIPS): MIPS Options.
! * remainder: Other Builtins.
! * remainderf: Other Builtins.
! * remainderl: Other Builtins.
! * remquo: Other Builtins.
! * remquof: Other Builtins.
! * remquol: Other Builtins.
! * reordering, warning: C++ Dialect Options.
! * reporting bugs: Bugs.
! * rest argument (in macro): Variadic Macros.
! * restricted pointers: Restricted Pointers.
! * restricted references: Restricted Pointers.
! * restricted this pointer: Restricted Pointers.
! * rindex: Other Builtins.
! * rint: Other Builtins.
! * rintf: Other Builtins.
! * rintl: Other Builtins.
! * round: Other Builtins.
! * roundf: Other Builtins.
! * roundl: Other Builtins.
* RS/6000 and PowerPC Options: RS/6000 and PowerPC Options.
! * RTTI: Vague Linkage.
! * run-time options: Code Gen Options.
! * s in constraint: Simple Constraints.
* S/390 and zSeries Options: S/390 and zSeries Options.
* save all registers on the H8/300, H8/300H, and H8S: Function Attributes.
! * scalb: Other Builtins.
! * scalbf: Other Builtins.
! * scalbl: Other Builtins.
! * scalbln: Other Builtins.
! * scalblnf: Other Builtins.
! * scalbn: Other Builtins.
! * scalbnf: Other Builtins.
! * scanf, and constant strings: Incompatibilities.
! * scanfnl: Other Builtins.
! * scope of a variable length array: Variable Length.
! * scope of declaration: Disappointments.
! * scope of external declarations: Incompatibilities.
! * search path: Directory Options.
! * section function attribute: Function Attributes.
! * section variable attribute: Variable Attributes.
! * setjmp: Global Reg Vars.
! * setjmp incompatibilities: Incompatibilities.
! * shared strings: Incompatibilities.
! * shared variable attribute: Variable Attributes.
! * side effect in ?:: Conditionals.
! * side effects, macro argument: Statement Exprs.
! * side effects, order of evaluation: Non-bugs.
* signal handler functions on the AVR processors: Function Attributes.
* signed and unsigned values, comparison warning: Warning Options.
! * significand: Other Builtins.
! * significandf: Other Builtins.
! * significandl: Other Builtins.
! * simple constraints: Simple Constraints.
! * sin: Other Builtins.
! * sincos: Other Builtins.
! * sincosf: Other Builtins.
! * sincosl: Other Builtins.
! * sinf: Other Builtins.
! * sinh: Other Builtins.
! * sinhf: Other Builtins.
! * sinhl: Other Builtins.
! * sinl: Other Builtins.
! * sizeof: Typeof.
! * smaller data references: M32R/D Options.
! * smaller data references (MIPS): MIPS Options.
* smaller data references (PowerPC): RS/6000 and PowerPC Options.
! * snprintf: Other Builtins.
! * SPARC options: SPARC Options.
! * Spec Files: Spec Files.
! * specified registers: Explicit Reg Vars.
* specifying compiler version and target machine: Target Options.
! * specifying hardware config: Submodel Options.
! * specifying machine version: Target Options.
! * specifying registers for local variables: Local Reg Vars.
! * speed of compilation: Precompiled Headers.
! * sprintf: Other Builtins.
! * sqrt: Other Builtins.
! * sqrtf: Other Builtins.
! * sqrtl: Other Builtins.
! * sscanf: Other Builtins.
! * sscanf, and constant strings: Incompatibilities.
! * statements inside expressions: Statement Exprs.
* static data in C++, declaring and defining: Static Definitions.
! * stpcpy: Other Builtins.
! * strcat: Other Builtins.
! * strchr: Other Builtins.
! * strcmp: Other Builtins.
! * strcpy: Other Builtins.
! * strcspn: Other Builtins.
! * strdup: Other Builtins.
! * strfmon: Other Builtins.
! * strftime: Other Builtins.
! * string constants: Incompatibilities.
! * strlen: Other Builtins.
! * strncat: Other Builtins.
! * strncmp: Other Builtins.
! * strncpy: Other Builtins.
! * strpbrk: Other Builtins.
! * strrchr: Other Builtins.
! * strspn: Other Builtins.
! * strstr: Other Builtins.
! * struct: Unnamed Fields.
! * structures: Incompatibilities.
! * structures, constructor expression: Compound Literals.
! * submodel options: Submodel Options.
! * subscripting: Subscripting.
! * subscripting and function values: Subscripting.
! * suffixes for C++ source: Invoking G++.
* SUNPRO_DEPENDENCIES: Environment Variables.
! * suppressing warnings: Warning Options.
* surprises in C++: C++ Misunderstandings.
! * syntax checking: Warning Options.
! * system headers, warnings from: Warning Options.
! * tan: Other Builtins.
! * tanf: Other Builtins.
! * tanh: Other Builtins.
! * tanhf: Other Builtins.
! * tanhl: Other Builtins.
! * tanl: Other Builtins.
! * target machine, specifying: Target Options.
! * target options: Target Options.
! * TC1: Standards.
! * TC2: Standards.
! * Technical Corrigenda: Standards.
! * Technical Corrigendum 1: Standards.
! * Technical Corrigendum 2: Standards.
* template instantiation: Template Instantiation.
! * temporaries, lifetime of: Temporaries.
! * tgamma: Other Builtins.
! * tgammaf: Other Builtins.
! * tgammal: Other Builtins.
! * Thread-Local Storage: Thread-Local.
! * thunks: Nested Functions.
* tiny data section on the H8/300H and H8S: Function Attributes.
! * TLS: Thread-Local.
! * tls_model attribute: Variable Attributes.
* TMPDIR: Environment Variables.
* TMS320C3x/C4x Options: TMS320C3x/C4x Options.
! * traditional C language: C Dialect Options.
! * treelang <1>: Standards.
! * treelang: G++ and GCC.
! * trunc: Other Builtins.
! * truncf: Other Builtins.
! * truncl: Other Builtins.
! * two-stage name lookup: Name lookup.
! * type alignment: Alignment.
! * type attributes: Type Attributes.
! * type_info: Vague Linkage.
! * typedef names as function parameters: Incompatibilities.
! * typeof: Typeof.
! * ULL integer suffix: Long Long.
! * Ultrix calling convention: Interoperation.
! * undefined behavior: Bug Criteria.
! * undefined function value: Bug Criteria.
! * underscores in variables in macros: Typeof.
! * union: Unnamed Fields.
! * union, casting to a: Cast to Union.
! * unions: Incompatibilities.
! * unknown pragmas, warning: Warning Options.
! * unresolved references and -nodefaultlibs: Link Options.
! * unresolved references and -nostdlib: Link Options.
! * unused attribute.: Function Attributes.
! * used attribute.: Function Attributes.
! * V in constraint: Simple Constraints.
! * V850 Options: V850 Options.
! * vague linkage: Vague Linkage.
! * value after longjmp: Global Reg Vars.
! * variable addressability on the IA-64: Function Attributes.
! * variable addressability on the M32R/D: Variable Attributes.
! * variable alignment: Alignment.
! * variable attributes: Variable Attributes.
! * variable number of arguments: Variadic Macros.
! * variable-length array scope: Variable Length.
! * variable-length arrays: Variable Length.
! * variables in specified registers: Explicit Reg Vars.
! * variables, local, in macros: Typeof.
! * variadic macros: Variadic Macros.
! * VAX calling convention: Interoperation.
! * VAX options: VAX Options.
! * vfprintf: Other Builtins.
! * vfscanf: Other Builtins.
! * visibility attribute: Function Attributes.
! * VLAs: Variable Length.
! * void pointers, arithmetic: Pointer Arith.
! * void, size of pointer to: Pointer Arith.
! * volatile access: Volatiles.
! * volatile applied to function: Function Attributes.
! * volatile read: Volatiles.
! * volatile write: Volatiles.
! * vprintf: Other Builtins.
! * vscanf: Other Builtins.
! * vsnprintf: Other Builtins.
! * vsprintf: Other Builtins.
! * vsscanf: Other Builtins.
! * vtable: Vague Linkage.
! * warn_unused_result attribute: Function Attributes.
* warning for comparison of signed and unsigned values: Warning Options.
! * warning for overloaded virtual fn: C++ Dialect Options.
* warning for reordering of member initializers: C++ Dialect Options.
! * warning for unknown pragmas: Warning Options.
! * warning messages: Warning Options.
! * warnings from system headers: Warning Options.
! * warnings vs errors: Warnings and Errors.
! * weak attribute: Function Attributes.
! * whitespace: Incompatibilities.
! * X in constraint: Simple Constraints.
! * X3.159-1989: Standards.
* x86-64 Options: i386 and x86-64 Options.
! * Xstormy16 Options: Xstormy16 Options.
! * Xtensa Options: Xtensa Options.
! * y0: Other Builtins.
! * y0f: Other Builtins.
! * y0l: Other Builtins.
! * y1: Other Builtins.
! * y1f: Other Builtins.
! * y1l: Other Builtins.
! * yn: Other Builtins.
! * ynf: Other Builtins.
! * ynl: Other Builtins.
! * zero-length arrays: Zero Length.
! * zero-size structures: Empty Structures.
Tag Table:
! Node: Top1175
! Node: G++ and GCC3725
! Node: Standards5758
! Node: Invoking GCC12917
! Node: Option Summary16624
! Node: Overall Options41085
! Node: Invoking G++48207
! Node: C Dialect Options49822
! Node: C++ Dialect Options60501
! Node: Objective-C Dialect Options76726
! Node: Language Independent Options85791
! Node: Warning Options87576
! Node: Debugging Options126009
! Node: Optimize Options146991
! Node: Preprocessor Options200283
! Ref: Wtrigraphs204299
! Ref: dashMF209056
! Ref: fdollars-in-identifiers216886
! Node: Assembler Options224746
! Node: Link Options225441
! Ref: Link Options-Footnote-1233808
! Node: Directory Options234142
! Node: Spec Files239128
! Node: Target Options258482
! Node: Submodel Options259779
! Node: M680x0 Options261478
! Node: M68hc1x Options268514
! Node: VAX Options270064
! Node: SPARC Options270598
! Node: ARM Options282413
! Node: MN10300 Options294859
! Node: M32R/D Options295904
! Node: RS/6000 and PowerPC Options299491
! Node: Darwin Options323819
! Node: MIPS Options325903
! Node: i386 and x86-64 Options337121
! Node: HPPA Options354838
! Node: Intel 960 Options362719
! Node: DEC Alpha Options365659
! Node: DEC Alpha/VMS Options377126
! Node: H8/300 Options377501
! Node: SH Options378551
! Node: System V Options380906
! Node: TMS320C3x/C4x Options381722
! Node: V850 Options387231
! Node: ARC Options390360
! Node: NS32K Options391559
! Node: AVR Options396081
! Node: MCore Options397880
! Node: IA-64 Options398883
! Node: D30V Options402925
! Node: S/390 and zSeries Options404166
! Node: CRIS Options407491
! Node: MMIX Options411707
! Node: PDP-11 Options414173
! Node: Xstormy16 Options415996
! Node: FRV Options416270
! Node: Xtensa Options420214
! Node: Code Gen Options424035
! Node: Environment Variables439662
! Node: Precompiled Headers447325
! Node: Running Protoize452548
! Node: C Implementation458876
! Node: Translation implementation459808
! Node: Environment implementation460243
! Node: Identifiers implementation460534
! Node: Characters implementation461147
! Node: Integers implementation463004
! Node: Floating point implementation463959
! Node: Arrays and pointers implementation465808
! Ref: Arrays and pointers implementation-Footnote-1467109
! Node: Hints implementation467233
! Node: Structures unions enumerations and bit-fields implementation468672
! Node: Qualifiers implementation469481
! Node: Preprocessing directives implementation469792
! Node: Library functions implementation471591
! Node: Architecture implementation471914
! Node: Locale-specific behavior implementation472479
! Node: C Extensions472775
! Node: Statement Exprs476874
! Node: Local Labels480354
! Node: Labels as Values483325
! Ref: Labels as Values-Footnote-1485372
! Node: Nested Functions485555
! Node: Constructing Calls489429
! Node: Typeof491755
! Node: Lvalues494909
! Node: Conditionals497402
! Node: Long Long498287
! Node: Complex499780
! Node: Hex Floats502339
! Node: Zero Length503365
! Node: Empty Structures506648
! Node: Variable Length507055
! Node: Variadic Macros509813
! Node: Escaped Newlines512186
! Node: Subscripting513016
! Node: Pointer Arith513740
! Node: Initializers514299
! Node: Compound Literals514786
! Node: Designated Inits516939
! Node: Case Ranges520590
! Node: Cast to Union521264
! Node: Mixed Declarations522351
! Node: Function Attributes522848
! Node: Attribute Syntax554005
! Node: Function Prototypes564604
! Node: C++ Comments566391
! Node: Dollar Signs566901
! Node: Character Escapes567357
! Node: Alignment567642
! Node: Variable Attributes568950
! Node: Type Attributes581936
! Node: Inline594687
! Node: Extended Asm599383
! Node: Constraints618385
! Node: Simple Constraints619226
! Node: Multi-Alternative625731
! Node: Modifiers627435
! Node: Machine Constraints630109
! Node: Asm Labels652295
! Node: Explicit Reg Vars653967
! Node: Global Reg Vars655419
! Node: Local Reg Vars659956
! Node: Alternate Keywords661744
! Node: Incomplete Enums663163
! Node: Function Names663911
! Node: Return Address666107
! Node: Vector Extensions668891
! Node: Other Builtins672494
! Node: Target Builtins692529
! Node: Alpha Built-in Functions693084
! Node: ARM Built-in Functions696063
! Node: X86 Built-in Functions702757
! Node: PowerPC AltiVec Built-in Functions713143
! Node: Pragmas815429
! Node: ARM Pragmas815925
! Node: RS/6000 and PowerPC Pragmas816530
! Node: Darwin Pragmas817258
! Node: Solaris Pragmas818312
! Node: Tru64 Pragmas818873
! Node: Unnamed Fields819612
! Node: Thread-Local820696
! Node: C99 Thread-Local Edits822771
! Node: C++98 Thread-Local Edits824770
! Node: C++ Extensions828202
! Node: Min and Max829891
! Node: Volatiles831267
! Node: Restricted Pointers834625
! Node: Vague Linkage836212
! Node: C++ Interface839860
! Ref: C++ Interface-Footnote-1844145
! Node: Template Instantiation844282
! Node: Bound member functions851297
! Node: C++ Attributes852838
! Node: Strong Using854470
! Node: Offsetof855715
! Node: Java Exceptions856322
! Node: Deprecated Features857707
! Node: Backwards Compatibility859701
! Node: Objective-C861047
! Node: Executing code before main861625
! Node: What you can and what you cannot do in +load864249
! Node: Type encoding866405
! Node: Garbage Collection869641
! Node: Constant string objects872293
! Node: compatibility_alias874794
! Node: Compatibility875665
! Node: Gcov882229
! Node: Gcov Intro882696
! Node: Invoking Gcov885405
! Node: Gcov and Optimization896741
! Node: Gcov Data Files899387
! Node: Trouble900494
! Node: Actual Bugs902084
! Node: Cross-Compiler Problems902992
! Node: Interoperation904500
! Node: External Bugs914626
! Node: Incompatibilities916060
! Node: Fixed Headers924388
! Node: Standard Libraries926693
! Node: Disappointments928056
! Node: C++ Misunderstandings932548
! Node: Static Definitions933358
! Node: Name lookup934398
! Ref: Name lookup-Footnote-1939182
! Node: Temporaries939369
! Node: Copy Assignment941337
! Node: Protoize Caveats943151
! Node: Non-bugs947104
! Node: Warnings and Errors957286
! Node: Bugs959039
! Node: Bug Criteria959598
! Node: Bug Reporting961799
! Node: Service962182
! Node: Contributing962996
! Node: Funding963731
! Node: GNU Project966221
! Node: Copying966868
! Node: GNU Free Documentation License986046
! Node: Contributors1008447
! Node: Option Index1035974
! Node: Keyword Index1113216
End Tag Table
--- 26333,27599 ----
Keyword Index
*************
+ [index ]
* Menu:
! * ! in constraint: Multi-Alternative. (line 33)
! * # in constraint: Modifiers. (line 54)
! * #pragma: Pragmas. (line 6)
! * #pragma implementation: C++ Interface. (line 39)
! * #pragma implementation, implied: C++ Interface. (line 46)
! * #pragma interface: C++ Interface. (line 20)
! * #pragma, reason for not using: Function Attributes. (line 656)
! * $: Dollar Signs. (line 6)
! * % in constraint: Modifiers. (line 45)
! * %include: Spec Files. (line 27)
! * %include_noerr: Spec Files. (line 31)
! * %rename: Spec Files. (line 35)
! * & in constraint: Modifiers. (line 25)
! * ': Incompatibilities. (line 118)
! * * in constraint: Modifiers. (line 59)
! * + in constraint: Modifiers. (line 12)
! * -lgcc, use with -nodefaultlibs: Link Options. (line 81)
! * -lgcc, use with -nostdlib: Link Options. (line 81)
! * -nodefaultlibs and unresolved references: Link Options. (line 81)
! * -nostdlib and unresolved references: Link Options. (line 81)
* .sdata/.sdata2 references (PowerPC): RS/6000 and PowerPC Options.
! (line 513)
! * //: C++ Comments. (line 6)
! * 0 in constraint: Simple Constraints. (line 115)
! * < in constraint: Simple Constraints. (line 46)
! * in constraint: Simple Constraints. (line 50)
! * >?: Min and Max. (line 14)
! * ? in constraint: Multi-Alternative. (line 27)
! * ?: extensions <1>: Conditionals. (line 6)
! * ?: extensions: Lvalues. (line 6)
! * ?: side effect: Conditionals. (line 20)
! * _ in variables in macros: Typeof. (line 42)
! * __builtin_apply: Constructing Calls. (line 31)
! * __builtin_apply_args: Constructing Calls. (line 20)
! * __builtin_choose_expr: Other Builtins. (line 141)
! * __builtin_clz: Other Builtins. (line 353)
! * __builtin_clzl: Other Builtins. (line 371)
! * __builtin_clzll: Other Builtins. (line 391)
! * __builtin_constant_p: Other Builtins. (line 181)
! * __builtin_ctz: Other Builtins. (line 357)
! * __builtin_ctzl: Other Builtins. (line 375)
! * __builtin_ctzll: Other Builtins. (line 395)
! * __builtin_expect: Other Builtins. (line 227)
! * __builtin_ffs: Other Builtins. (line 349)
! * __builtin_ffsl: Other Builtins. (line 367)
! * __builtin_ffsll: Other Builtins. (line 387)
! * __builtin_frame_address: Return Address. (line 34)
! * __builtin_huge_val: Other Builtins. (line 291)
! * __builtin_huge_valf: Other Builtins. (line 296)
! * __builtin_huge_vall: Other Builtins. (line 299)
! * __builtin_inf: Other Builtins. (line 303)
! * __builtin_inff: Other Builtins. (line 309)
! * __builtin_infl: Other Builtins. (line 312)
! * __builtin_isgreater: Other Builtins. (line 6)
! * __builtin_isgreaterequal: Other Builtins. (line 6)
! * __builtin_isless: Other Builtins. (line 6)
! * __builtin_islessequal: Other Builtins. (line 6)
! * __builtin_islessgreater: Other Builtins. (line 6)
! * __builtin_isunordered: Other Builtins. (line 6)
! * __builtin_nan: Other Builtins. (line 316)
! * __builtin_nanf: Other Builtins. (line 331)
! * __builtin_nanl: Other Builtins. (line 334)
! * __builtin_nans: Other Builtins. (line 338)
! * __builtin_nansf: Other Builtins. (line 342)
! * __builtin_nansl: Other Builtins. (line 345)
! * __builtin_parity: Other Builtins. (line 364)
! * __builtin_parityl: Other Builtins. (line 383)
! * __builtin_parityll: Other Builtins. (line 403)
! * __builtin_popcount: Other Builtins. (line 361)
! * __builtin_popcountl: Other Builtins. (line 379)
! * __builtin_popcountll: Other Builtins. (line 399)
! * __builtin_prefetch: Other Builtins. (line 252)
! * __builtin_return: Constructing Calls. (line 48)
! * __builtin_return_address: Return Address. (line 11)
! * __builtin_types_compatible_p: Other Builtins. (line 95)
! * __complex__ keyword: Complex. (line 6)
! * __declspec(dllexport): Function Attributes. (line 627)
! * __declspec(dllimport): Function Attributes. (line 591)
! * __extension__: Alternate Keywords. (line 29)
! * __func__ identifier: Function Names. (line 6)
! * __FUNCTION__ identifier: Function Names. (line 6)
! * __imag__ keyword: Complex. (line 27)
! * __PRETTY_FUNCTION__ identifier: Function Names. (line 6)
! * __real__ keyword: Complex. (line 27)
! * __STDC_HOSTED__: Standards. (line 6)
! * __thread: Thread-Local. (line 6)
! * _Complex keyword: Complex. (line 6)
! * _exit: Other Builtins. (line 6)
! * _Exit: Other Builtins. (line 6)
! * ABI: Compatibility. (line 6)
! * abort: Other Builtins. (line 6)
! * abs: Other Builtins. (line 6)
! * accessing volatiles: Volatiles. (line 6)
! * acos: Other Builtins. (line 6)
! * acosf: Other Builtins. (line 6)
! * acosh: Other Builtins. (line 6)
! * acoshf: Other Builtins. (line 6)
! * acoshl: Other Builtins. (line 6)
! * acosl: Other Builtins. (line 6)
! * Ada: G++ and GCC. (line 6)
! * address constraints: Simple Constraints. (line 142)
! * address of a label: Labels as Values. (line 6)
! * address_operand: Simple Constraints. (line 146)
! * alias attribute: Function Attributes. (line 343)
! * aliasing of parameters: Code Gen Options. (line 311)
! * aligned attribute <1>: Type Attributes. (line 30)
! * aligned attribute: Variable Attributes. (line 23)
! * alignment: Alignment. (line 6)
! * alloca: Other Builtins. (line 6)
! * alloca vs variable-length arrays: Variable Length. (line 27)
! * alternate keywords: Alternate Keywords. (line 6)
! * always_inline function attribute: Function Attributes. (line 76)
* AMD x86-64 Options: i386 and x86-64 Options.
! (line 6)
! * AMD1: Standards. (line 6)
! * ANSI C: Standards. (line 6)
! * ANSI C standard: Standards. (line 6)
! * ANSI C89: Standards. (line 6)
! * ANSI support: C Dialect Options. (line 9)
! * ANSI X3.159-1989: Standards. (line 6)
! * apostrophes: Incompatibilities. (line 118)
! * application binary interface: Compatibility. (line 6)
! * ARC Options: ARC Options. (line 6)
* ARM [Annotated C++ Reference Manual]: Backwards Compatibility.
! (line 6)
! * ARM options: ARM Options. (line 6)
! * arrays of length zero: Zero Length. (line 6)
! * arrays of variable length: Variable Length. (line 6)
! * arrays, non-lvalue: Subscripting. (line 6)
! * asin: Other Builtins. (line 6)
! * asinf: Other Builtins. (line 6)
! * asinh: Other Builtins. (line 6)
! * asinhf: Other Builtins. (line 6)
! * asinhl: Other Builtins. (line 6)
! * asinl: Other Builtins. (line 6)
! * asm constraints: Constraints. (line 6)
! * asm expressions: Extended Asm. (line 6)
! * assembler instructions: Extended Asm. (line 6)
! * assembler names for identifiers: Asm Labels. (line 6)
! * assembly code, invalid: Bug Criteria. (line 12)
! * atan: Other Builtins. (line 6)
! * atan2: Other Builtins. (line 6)
! * atan2f: Other Builtins. (line 6)
! * atan2l: Other Builtins. (line 6)
! * atanf: Other Builtins. (line 6)
! * atanh: Other Builtins. (line 6)
! * atanhf: Other Builtins. (line 6)
! * atanhl: Other Builtins. (line 6)
! * atanl: Other Builtins. (line 6)
! * attribute of types: Type Attributes. (line 6)
! * attribute of variables: Variable Attributes. (line 6)
! * attribute syntax: Attribute Syntax. (line 6)
! * autoincrement/decrement addressing: Simple Constraints. (line 28)
! * automatic inline for C++ member fns: Inline. (line 46)
! * AVR Options: AVR Options. (line 6)
* Backwards Compatibility: Backwards Compatibility.
! (line 6)
! * base class members: Name lookup. (line 6)
! * bcmp: Other Builtins. (line 6)
! * binary compatibility: Compatibility. (line 6)
* bound pointer to member function: Bound member functions.
! (line 6)
! * bug criteria: Bug Criteria. (line 6)
! * bugs: Bugs. (line 6)
! * bugs, known: Trouble. (line 6)
! * built-in functions <1>: Other Builtins. (line 6)
! * built-in functions: C Dialect Options. (line 127)
! * bzero: Other Builtins. (line 6)
! * C compilation options: Invoking GCC. (line 17)
! * C intermediate output, nonexistent: G++ and GCC. (line 35)
! * C language extensions: C Extensions. (line 6)
! * C language, traditional: C Dialect Options. (line 189)
! * C standard: Standards. (line 6)
! * C standards: Standards. (line 6)
! * c++: Invoking G++. (line 13)
! * C++: G++ and GCC. (line 30)
! * C++ comments: C++ Comments. (line 6)
! * C++ compilation options: Invoking GCC. (line 23)
! * C++ interface and implementation headers: C++ Interface. (line 6)
! * C++ language extensions: C++ Extensions. (line 6)
! * C++ member fns, automatically inline: Inline. (line 46)
* C++ misunderstandings: C++ Misunderstandings.
! (line 6)
! * C++ options, command line: C++ Dialect Options. (line 6)
! * C++ pragmas, effect on inlining: C++ Interface. (line 66)
! * C++ source file suffixes: Invoking G++. (line 6)
* C++ static data, declaring and defining: Static Definitions.
! (line 6)
! * C89: Standards. (line 6)
! * C90: Standards. (line 6)
! * C94: Standards. (line 6)
! * C95: Standards. (line 6)
! * C99: Standards. (line 6)
! * C9X: Standards. (line 6)
* C_INCLUDE_PATH: Environment Variables.
! (line 124)
! * cabs: Other Builtins. (line 6)
! * cabsf: Other Builtins. (line 6)
! * cabsl: Other Builtins. (line 6)
! * cacos: Other Builtins. (line 6)
! * cacosf: Other Builtins. (line 6)
! * cacosh: Other Builtins. (line 6)
! * cacoshf: Other Builtins. (line 6)
! * cacoshl: Other Builtins. (line 6)
! * cacosl: Other Builtins. (line 6)
* calling functions through the function vector on the H8/300 processors: Function Attributes.
! (line 452)
! * calloc: Other Builtins. (line 6)
! * carg: Other Builtins. (line 6)
! * cargf: Other Builtins. (line 6)
! * cargl: Other Builtins. (line 6)
! * case labels in initializers: Designated Inits. (line 6)
! * case ranges: Case Ranges. (line 6)
! * casin: Other Builtins. (line 6)
! * casinf: Other Builtins. (line 6)
! * casinh: Other Builtins. (line 6)
! * casinhf: Other Builtins. (line 6)
! * casinhl: Other Builtins. (line 6)
! * casinl: Other Builtins. (line 6)
! * cast to a union: Cast to Union. (line 6)
! * casts as lvalues: Lvalues. (line 6)
! * catan: Other Builtins. (line 6)
! * catanf: Other Builtins. (line 6)
! * catanh: Other Builtins. (line 6)
! * catanhf: Other Builtins. (line 6)
! * catanhl: Other Builtins. (line 6)
! * catanl: Other Builtins. (line 6)
! * cbrt: Other Builtins. (line 6)
! * cbrtf: Other Builtins. (line 6)
! * cbrtl: Other Builtins. (line 6)
! * ccos: Other Builtins. (line 6)
! * ccosf: Other Builtins. (line 6)
! * ccosh: Other Builtins. (line 6)
! * ccoshf: Other Builtins. (line 6)
! * ccoshl: Other Builtins. (line 6)
! * ccosl: Other Builtins. (line 6)
! * ceil: Other Builtins. (line 6)
! * ceilf: Other Builtins. (line 6)
! * ceill: Other Builtins. (line 6)
! * cexp: Other Builtins. (line 6)
! * cexpf: Other Builtins. (line 6)
! * cexpl: Other Builtins. (line 6)
! * cimag: Other Builtins. (line 6)
! * cimagf: Other Builtins. (line 6)
! * cimagl: Other Builtins. (line 6)
! * cleanup attribute: Variable Attributes. (line 76)
! * COBOL: G++ and GCC. (line 23)
! * code generation conventions: Code Gen Options. (line 6)
! * code, mixed with declarations: Mixed Declarations. (line 6)
! * command options: Invoking GCC. (line 6)
! * comments, C++ style: C++ Comments. (line 6)
! * common attribute: Variable Attributes. (line 92)
* comparison of signed and unsigned values, warning: Warning Options.
! (line 717)
! * compiler bugs, reporting: Bug Reporting. (line 6)
! * compiler compared to C++ preprocessor: G++ and GCC. (line 35)
! * compiler options, C++: C++ Dialect Options. (line 6)
* compiler options, Objective-C: Objective-C Dialect Options.
! (line 6)
! * compiler version, specifying: Target Options. (line 6)
* COMPILER_PATH: Environment Variables.
! (line 85)
! * complex conjugation: Complex. (line 34)
! * complex numbers: Complex. (line 6)
! * compound expressions as lvalues: Lvalues. (line 6)
! * compound literals: Compound Literals. (line 6)
! * computed gotos: Labels as Values. (line 6)
! * conditional expressions as lvalues: Lvalues. (line 6)
! * conditional expressions, extensions: Conditionals. (line 6)
! * conflicting types: Disappointments. (line 21)
! * conj: Other Builtins. (line 6)
! * conjf: Other Builtins. (line 6)
! * conjl: Other Builtins. (line 6)
! * const applied to function: Function Attributes. (line 6)
! * const function attribute: Function Attributes. (line 101)
! * constants in constraints: Simple Constraints. (line 58)
! * constraint modifier characters: Modifiers. (line 6)
! * constraint, matching: Simple Constraints. (line 127)
! * constraints, asm: Constraints. (line 6)
! * constraints, machine specific: Machine Constraints. (line 6)
! * constructing calls: Constructing Calls. (line 6)
! * constructor expressions: Compound Literals. (line 6)
! * constructor function attribute: Function Attributes. (line 268)
! * contributors: Contributors. (line 6)
! * copysign: Other Builtins. (line 6)
! * copysignf: Other Builtins. (line 6)
! * copysignl: Other Builtins. (line 6)
! * core dump: Bug Criteria. (line 9)
! * cos: Other Builtins. (line 6)
! * cosf: Other Builtins. (line 6)
! * cosh: Other Builtins. (line 6)
! * coshf: Other Builtins. (line 6)
! * coshl: Other Builtins. (line 6)
! * cosl: Other Builtins. (line 6)
* CPATH: Environment Variables.
+ (line 123)
* CPLUS_INCLUDE_PATH: Environment Variables.
! (line 125)
! * cpow: Other Builtins. (line 6)
! * cpowf: Other Builtins. (line 6)
! * cpowl: Other Builtins. (line 6)
! * cproj: Other Builtins. (line 6)
! * cprojf: Other Builtins. (line 6)
! * cprojl: Other Builtins. (line 6)
! * creal: Other Builtins. (line 6)
! * crealf: Other Builtins. (line 6)
! * creall: Other Builtins. (line 6)
! * CRIS Options: CRIS Options. (line 6)
! * cross compiling: Target Options. (line 6)
! * csin: Other Builtins. (line 6)
! * csinf: Other Builtins. (line 6)
! * csinh: Other Builtins. (line 6)
! * csinhf: Other Builtins. (line 6)
! * csinhl: Other Builtins. (line 6)
! * csinl: Other Builtins. (line 6)
! * csqrt: Other Builtins. (line 6)
! * csqrtf: Other Builtins. (line 6)
! * csqrtl: Other Builtins. (line 6)
! * ctan: Other Builtins. (line 6)
! * ctanf: Other Builtins. (line 6)
! * ctanh: Other Builtins. (line 6)
! * ctanhf: Other Builtins. (line 6)
! * ctanhl: Other Builtins. (line 6)
! * ctanl: Other Builtins. (line 6)
! * D30V Options: D30V Options. (line 6)
! * Darwin options: Darwin Options. (line 6)
! * DBX: Interoperation. (line 28)
! * dcgettext: Other Builtins. (line 6)
! * deallocating variable length arrays: Variable Length. (line 23)
! * debugging information options: Debugging Options. (line 6)
! * declaration scope: Incompatibilities. (line 82)
! * declarations inside expressions: Statement Exprs. (line 6)
! * declarations, mixed with code: Mixed Declarations. (line 6)
! * declaring attributes of functions: Function Attributes. (line 6)
! * declaring static data in C++: Static Definitions. (line 6)
! * defining static data in C++: Static Definitions. (line 6)
* dependencies for make as output: Environment Variables.
+ (line 151)
* dependencies, make: Preprocessor Options.
+ (line 174)
* DEPENDENCIES_OUTPUT: Environment Variables.
! (line 150)
! * dependent name lookup: Name lookup. (line 6)
! * deprecated attribute: Variable Attributes. (line 100)
! * deprecated attribute.: Function Attributes. (line 289)
! * designated initializers: Designated Inits. (line 6)
! * designator lists: Designated Inits. (line 94)
! * designators: Designated Inits. (line 61)
! * destructor function attribute: Function Attributes. (line 268)
! * dgettext: Other Builtins. (line 6)
* diagnostic messages: Language Independent Options.
! (line 6)
! * dialect options: C Dialect Options. (line 6)
! * digits in constraint: Simple Constraints. (line 115)
! * directory options: Directory Options. (line 6)
! * dollar signs in identifier names: Dollar Signs. (line 6)
! * double-word arithmetic: Long Long. (line 6)
! * downward funargs: Nested Functions. (line 6)
! * drem: Other Builtins. (line 6)
! * dremf: Other Builtins. (line 6)
! * dreml: Other Builtins. (line 6)
! * E in constraint: Simple Constraints. (line 77)
! * earlyclobber operand: Modifiers. (line 25)
* eight bit data on the H8/300, H8/300H, and H8S: Function Attributes.
! (line 506)
! * empty structures: Empty Structures. (line 6)
* environment variables: Environment Variables.
! (line 6)
! * erf: Other Builtins. (line 6)
! * erfc: Other Builtins. (line 6)
! * erfcf: Other Builtins. (line 6)
! * erfcl: Other Builtins. (line 6)
! * erff: Other Builtins. (line 6)
! * erfl: Other Builtins. (line 6)
! * error messages: Warnings and Errors. (line 6)
! * escaped newlines: Escaped Newlines. (line 6)
! * exclamation point: Multi-Alternative. (line 33)
! * exit: Other Builtins. (line 6)
! * exp: Other Builtins. (line 6)
! * exp10: Other Builtins. (line 6)
! * exp10f: Other Builtins. (line 6)
! * exp10l: Other Builtins. (line 6)
! * exp2: Other Builtins. (line 6)
! * exp2f: Other Builtins. (line 6)
! * exp2l: Other Builtins. (line 6)
! * expf: Other Builtins. (line 6)
! * expl: Other Builtins. (line 6)
! * explicit register variables: Explicit Reg Vars. (line 6)
! * expm1: Other Builtins. (line 6)
! * expm1f: Other Builtins. (line 6)
! * expm1l: Other Builtins. (line 6)
! * expressions containing statements: Statement Exprs. (line 6)
! * expressions, compound, as lvalues: Lvalues. (line 6)
! * expressions, conditional, as lvalues: Lvalues. (line 6)
! * expressions, constructor: Compound Literals. (line 6)
! * extended asm: Extended Asm. (line 6)
! * extensible constraints: Simple Constraints. (line 151)
! * extensions, ?: <1>: Conditionals. (line 6)
! * extensions, ?:: Lvalues. (line 6)
! * extensions, C language: C Extensions. (line 6)
! * extensions, C++ language: C++ Extensions. (line 6)
! * external declaration scope: Incompatibilities. (line 82)
! * F in constraint: Simple Constraints. (line 82)
! * fabs: Other Builtins. (line 6)
! * fabsf: Other Builtins. (line 6)
! * fabsl: Other Builtins. (line 6)
! * fatal signal: Bug Criteria. (line 9)
! * fdim: Other Builtins. (line 6)
! * fdimf: Other Builtins. (line 6)
! * fdiml: Other Builtins. (line 6)
* FDL, GNU Free Documentation License: GNU Free Documentation License.
! (line 6)
! * ffs: Other Builtins. (line 6)
! * file name suffix: Overall Options. (line 14)
! * file names: Link Options. (line 10)
! * flexible array members: Zero Length. (line 6)
! * float as function value type: Incompatibilities. (line 143)
! * floating point precision <1>: Disappointments. (line 70)
! * floating point precision: Optimize Options. (line 757)
! * floor: Other Builtins. (line 6)
! * floorf: Other Builtins. (line 6)
! * floorl: Other Builtins. (line 6)
! * fma: Other Builtins. (line 6)
! * fmaf: Other Builtins. (line 6)
! * fmal: Other Builtins. (line 6)
! * fmax: Other Builtins. (line 6)
! * fmaxf: Other Builtins. (line 6)
! * fmaxl: Other Builtins. (line 6)
! * fmin: Other Builtins. (line 6)
! * fminf: Other Builtins. (line 6)
! * fminl: Other Builtins. (line 6)
! * fmod: Other Builtins. (line 6)
! * fmodf: Other Builtins. (line 6)
! * fmodl: Other Builtins. (line 6)
! * format function attribute: Function Attributes. (line 137)
! * format_arg function attribute: Function Attributes. (line 185)
! * Fortran: G++ and GCC. (line 6)
! * forwarding calls: Constructing Calls. (line 6)
! * fprintf: Other Builtins. (line 6)
! * fprintf_unlocked: Other Builtins. (line 6)
! * fputs: Other Builtins. (line 6)
! * fputs_unlocked: Other Builtins. (line 6)
! * freestanding environment: Standards. (line 6)
! * freestanding implementation: Standards. (line 6)
! * frexp: Other Builtins. (line 6)
! * frexpf: Other Builtins. (line 6)
! * frexpl: Other Builtins. (line 6)
! * FRV Options: FRV Options. (line 6)
! * fscanf: Other Builtins. (line 6)
! * fscanf, and constant strings: Incompatibilities. (line 17)
! * function addressability on the M32R/D: Function Attributes. (line 541)
! * function attributes: Function Attributes. (line 6)
! * function pointers, arithmetic: Pointer Arith. (line 6)
! * function prototype declarations: Function Prototypes. (line 6)
* function without a prologue/epilogue code: Function Attributes.
! (line 535)
! * function, size of pointer to: Pointer Arith. (line 6)
* functions called via pointer on the RS/6000 and PowerPC: Function Attributes.
! (line 431)
! * functions in arbitrary sections: Function Attributes. (line 6)
* functions that are passed arguments in registers on the 386: Function Attributes.
! (line 6)
! * functions that behave like malloc: Function Attributes. (line 6)
* functions that do not pop the argument stack on the 386: Function Attributes.
+ (line 6)
* functions that do pop the argument stack on the 386: Function Attributes.
! (line 425)
! * functions that have no side effects: Function Attributes. (line 6)
! * functions that never return: Function Attributes. (line 6)
* functions that pop the argument stack on the 386: Function Attributes.
+ (line 6)
* functions which do not handle memory bank switching on 68HC11/68HC12: Function Attributes.
+ (line 585)
* functions which handle memory bank switching: Function Attributes.
+ (line 569)
* functions with non-null pointer arguments: Function Attributes.
+ (line 6)
* functions with printf, scanf, strftime or strfmon style arguments: Function Attributes.
! (line 6)
! * g in constraint: Simple Constraints. (line 108)
! * G in constraint: Simple Constraints. (line 86)
! * g++: Invoking G++. (line 13)
! * G++: G++ and GCC. (line 30)
! * gamma: Other Builtins. (line 6)
! * gammaf: Other Builtins. (line 6)
! * gammal: Other Builtins. (line 6)
! * GCC: G++ and GCC. (line 6)
! * GCC command options: Invoking GCC. (line 6)
* GCC_EXEC_PREFIX: Environment Variables.
! (line 52)
! * gcc_struct: Type Attributes. (line 266)
! * gcc_struct attribute: Variable Attributes. (line 296)
! * generalized lvalues: Lvalues. (line 6)
! * gettext: Other Builtins. (line 6)
! * global offset table: Code Gen Options. (line 170)
! * global register after longjmp: Global Reg Vars. (line 66)
! * global register variables: Global Reg Vars. (line 6)
! * GNAT: G++ and GCC. (line 30)
! * GNU C Compiler: G++ and GCC. (line 6)
! * GNU Compiler Collection: G++ and GCC. (line 6)
! * goto with computed label: Labels as Values. (line 6)
! * gp-relative references (MIPS): MIPS Options. (line 177)
! * gprof: Debugging Options. (line 122)
! * grouping options: Invoking GCC. (line 26)
! * H in constraint: Simple Constraints. (line 86)
* hardware models and configurations, specifying: Submodel Options.
! (line 6)
! * hex floats: Hex Floats. (line 6)
! * hosted environment <1>: C Dialect Options. (line 155)
! * hosted environment: Standards. (line 6)
! * hosted implementation: Standards. (line 6)
! * HPPA Options: HPPA Options. (line 6)
! * hypot: Other Builtins. (line 6)
! * hypotf: Other Builtins. (line 6)
! * hypotl: Other Builtins. (line 6)
! * I in constraint: Simple Constraints. (line 69)
! * i in constraint: Simple Constraints. (line 58)
* i386 Options: i386 and x86-64 Options.
! (line 6)
! * IA-64 Options: IA-64 Options. (line 6)
* IBM RS/6000 and PowerPC Options: RS/6000 and PowerPC Options.
! (line 6)
! * identifier names, dollar signs in: Dollar Signs. (line 6)
! * identifiers, names in assembler code: Asm Labels. (line 6)
! * ilogb: Other Builtins. (line 6)
! * ilogbf: Other Builtins. (line 6)
! * ilogbl: Other Builtins. (line 6)
! * imaxabs: Other Builtins. (line 6)
* implementation-defined behavior, C language: C Implementation.
! (line 6)
! * implied #pragma implementation: C++ Interface. (line 46)
! * incompatibilities of GCC: Incompatibilities. (line 6)
! * increment operators: Bug Criteria. (line 17)
! * index: Other Builtins. (line 6)
! * indirect calls on ARM: Function Attributes. (line 442)
! * init_priority attribute: C++ Attributes. (line 9)
! * initializations in expressions: Compound Literals. (line 6)
! * initializers with labeled elements: Designated Inits. (line 6)
! * initializers, non-constant: Initializers. (line 6)
! * inline automatic for C++ member fns: Inline. (line 46)
! * inline functions: Inline. (line 6)
! * inline functions, omission of: Inline. (line 51)
! * inlining and C++ pragmas: C++ Interface. (line 66)
! * installation trouble: Trouble. (line 6)
! * integrating function code: Inline. (line 6)
* Intel 386 Options: i386 and x86-64 Options.
! (line 6)
! * interface and implementation headers, C++: C++ Interface. (line 6)
! * intermediate C version, nonexistent: G++ and GCC. (line 35)
! * interrupt handler functions: Function Attributes. (line 463)
* interrupt handler functions on the m68k, H8/300 and SH processors: Function Attributes.
! (line 485)
! * introduction: Top. (line 6)
! * invalid assembly code: Bug Criteria. (line 12)
! * invalid input: Bug Criteria. (line 42)
! * invoking g++: Invoking G++. (line 23)
! * ISO 9899: Standards. (line 6)
! * ISO C: Standards. (line 6)
! * ISO C standard: Standards. (line 6)
! * ISO C90: Standards. (line 6)
! * ISO C94: Standards. (line 6)
! * ISO C95: Standards. (line 6)
! * ISO C99: Standards. (line 6)
! * ISO C9X: Standards. (line 6)
! * ISO support: C Dialect Options. (line 9)
! * ISO/IEC 9899: Standards. (line 6)
! * j0: Other Builtins. (line 6)
! * j0f: Other Builtins. (line 6)
! * j0l: Other Builtins. (line 6)
! * j1: Other Builtins. (line 6)
! * j1f: Other Builtins. (line 6)
! * j1l: Other Builtins. (line 6)
! * Java: G++ and GCC. (line 6)
! * java_interface attribute: C++ Attributes. (line 29)
! * jn: Other Builtins. (line 6)
! * jnf: Other Builtins. (line 6)
! * jnl: Other Builtins. (line 6)
! * keywords, alternate: Alternate Keywords. (line 6)
! * known causes of trouble: Trouble. (line 6)
! * labeled elements in initializers: Designated Inits. (line 6)
! * labels as values: Labels as Values. (line 6)
! * labs: Other Builtins. (line 6)
* LANG: Environment Variables.
! (line 21)
! * language dialect options: C Dialect Options. (line 6)
* LC_ALL: Environment Variables.
+ (line 21)
* LC_CTYPE: Environment Variables.
+ (line 21)
* LC_MESSAGES: Environment Variables.
! (line 21)
! * ldexp: Other Builtins. (line 6)
! * ldexpf: Other Builtins. (line 6)
! * ldexpl: Other Builtins. (line 6)
! * length-zero arrays: Zero Length. (line 6)
! * lgamma: Other Builtins. (line 6)
! * lgammaf: Other Builtins. (line 6)
! * lgammal: Other Builtins. (line 6)
! * Libraries: Link Options. (line 24)
* LIBRARY_PATH: Environment Variables.
! (line 91)
! * link options: Link Options. (line 6)
! * LL integer suffix: Long Long. (line 6)
! * llabs: Other Builtins. (line 6)
! * llrint: Other Builtins. (line 6)
! * llrintf: Other Builtins. (line 6)
! * llrintl: Other Builtins. (line 6)
! * llround: Other Builtins. (line 6)
! * llroundf: Other Builtins. (line 6)
! * llroundl: Other Builtins. (line 6)
! * load address instruction: Simple Constraints. (line 142)
! * local labels: Local Labels. (line 6)
! * local variables in macros: Typeof. (line 42)
! * local variables, specifying registers: Local Reg Vars. (line 6)
* locale: Environment Variables.
+ (line 21)
* locale definition: Environment Variables.
! (line 100)
! * log: Other Builtins. (line 6)
! * log10: Other Builtins. (line 6)
! * log10f: Other Builtins. (line 6)
! * log10l: Other Builtins. (line 6)
! * log1p: Other Builtins. (line 6)
! * log1pf: Other Builtins. (line 6)
! * log1pl: Other Builtins. (line 6)
! * log2: Other Builtins. (line 6)
! * log2f: Other Builtins. (line 6)
! * log2l: Other Builtins. (line 6)
! * logb: Other Builtins. (line 6)
! * logbf: Other Builtins. (line 6)
! * logbl: Other Builtins. (line 6)
! * logf: Other Builtins. (line 6)
! * logl: Other Builtins. (line 6)
! * long long data types: Long Long. (line 6)
! * longjmp: Global Reg Vars. (line 66)
! * longjmp incompatibilities: Incompatibilities. (line 41)
! * longjmp warnings: Warning Options. (line 412)
! * lrint: Other Builtins. (line 6)
! * lrintf: Other Builtins. (line 6)
! * lrintl: Other Builtins. (line 6)
! * lround: Other Builtins. (line 6)
! * lroundf: Other Builtins. (line 6)
! * lroundl: Other Builtins. (line 6)
! * lvalues, generalized: Lvalues. (line 6)
! * m in constraint: Simple Constraints. (line 17)
! * M32R/D options: M32R/D Options. (line 6)
! * M680x0 options: M680x0 Options. (line 6)
! * M68hc1x options: M68hc1x Options. (line 6)
! * machine dependent options: Submodel Options. (line 6)
! * machine specific constraints: Machine Constraints. (line 6)
! * macro with variable arguments: Variadic Macros. (line 6)
! * macros containing asm: Extended Asm. (line 214)
! * macros, inline alternative: Inline. (line 6)
! * macros, local labels: Local Labels. (line 6)
! * macros, local variables in: Typeof. (line 42)
! * macros, statements in expressions: Statement Exprs. (line 6)
! * macros, types of arguments: Typeof. (line 6)
* make: Preprocessor Options.
! (line 174)
! * malloc: Other Builtins. (line 6)
! * malloc attribute: Function Attributes. (line 333)
! * matching constraint: Simple Constraints. (line 127)
! * maximum operator: Min and Max. (line 14)
! * MCore options: MCore Options. (line 6)
! * member fns, automatically inline: Inline. (line 46)
! * memcmp: Other Builtins. (line 6)
! * memcpy: Other Builtins. (line 6)
! * memory references in constraints: Simple Constraints. (line 17)
! * mempcpy: Other Builtins. (line 6)
! * memset: Other Builtins. (line 6)
! * Mercury: G++ and GCC. (line 23)
* message formatting: Language Independent Options.
! (line 6)
! * messages, warning: Warning Options. (line 6)
! * messages, warning and error: Warnings and Errors. (line 6)
! * middle-operands, omitted: Conditionals. (line 6)
! * minimum operator: Min and Max. (line 10)
! * MIPS options: MIPS Options. (line 6)
* misunderstandings in C++: C++ Misunderstandings.
! (line 6)
! * mixed declarations and code: Mixed Declarations. (line 6)
! * mktemp, and constant strings: Incompatibilities. (line 13)
! * MMIX Options: MMIX Options. (line 6)
! * MN10300 options: MN10300 Options. (line 6)
! * mode attribute: Variable Attributes. (line 118)
! * modf: Other Builtins. (line 6)
! * modff: Other Builtins. (line 6)
! * modfl: Other Builtins. (line 6)
! * modifiers in constraints: Modifiers. (line 6)
! * ms_struct: Type Attributes. (line 266)
! * ms_struct attribute: Variable Attributes. (line 296)
! * multiple alternative constraints: Multi-Alternative. (line 6)
! * multiprecision arithmetic: Long Long. (line 6)
! * n in constraint: Simple Constraints. (line 63)
! * names used in assembler code: Asm Labels. (line 6)
! * naming convention, implementation headers: C++ Interface. (line 46)
! * nearbyint: Other Builtins. (line 6)
! * nearbyintf: Other Builtins. (line 6)
! * nearbyintl: Other Builtins. (line 6)
! * nested functions: Nested Functions. (line 6)
! * newlines (escaped): Escaped Newlines. (line 6)
! * nextafter: Other Builtins. (line 6)
! * nextafterf: Other Builtins. (line 6)
! * nextafterl: Other Builtins. (line 6)
! * nexttoward: Other Builtins. (line 6)
! * nexttowardf: Other Builtins. (line 6)
! * nexttowardl: Other Builtins. (line 6)
* no_instrument_function function attribute: Function Attributes.
! (line 246)
! * nocommon attribute: Variable Attributes. (line 92)
! * noinline function attribute: Function Attributes. (line 72)
! * non-constant initializers: Initializers. (line 6)
! * non-static inline function: Inline. (line 63)
! * nonnull function attribute: Function Attributes. (line 223)
! * noreturn function attribute: Function Attributes. (line 30)
! * nothrow function attribute: Function Attributes. (line 128)
! * NS32K options: NS32K Options. (line 6)
! * o in constraint: Simple Constraints. (line 21)
* OBJC_INCLUDE_PATH: Environment Variables.
! (line 126)
! * Objective-C: G++ and GCC. (line 6)
* Objective-C options, command line: Objective-C Dialect Options.
! (line 6)
! * offsettable address: Simple Constraints. (line 21)
! * old-style function definitions: Function Prototypes. (line 6)
! * omitted middle-operands: Conditionals. (line 6)
! * open coding: Inline. (line 6)
! * operand constraints, asm: Constraints. (line 6)
! * optimize options: Optimize Options. (line 6)
* options to control diagnostics formatting: Language Independent Options.
! (line 6)
! * options to control warnings: Warning Options. (line 6)
! * options, C++: C++ Dialect Options. (line 6)
! * options, code generation: Code Gen Options. (line 6)
! * options, debugging: Debugging Options. (line 6)
! * options, dialect: C Dialect Options. (line 6)
! * options, directory search: Directory Options. (line 6)
! * options, GCC command: Invoking GCC. (line 6)
! * options, grouping: Invoking GCC. (line 26)
! * options, linking: Link Options. (line 6)
* options, Objective-C: Objective-C Dialect Options.
! (line 6)
! * options, optimization: Optimize Options. (line 6)
! * options, order: Invoking GCC. (line 30)
* options, preprocessor: Preprocessor Options.
! (line 6)
! * order of evaluation, side effects: Non-bugs. (line 180)
! * order of options: Invoking GCC. (line 30)
! * other register constraints: Simple Constraints. (line 151)
! * output file option: Overall Options. (line 153)
! * overloaded virtual fn, warning: C++ Dialect Options. (line 353)
! * p in constraint: Simple Constraints. (line 142)
! * packed attribute: Variable Attributes. (line 129)
! * parameter forward declaration: Variable Length. (line 60)
! * parameters, aliased: Code Gen Options. (line 311)
! * Pascal: G++ and GCC. (line 23)
! * PDP-11 Options: PDP-11 Options. (line 6)
! * PIC: Code Gen Options. (line 170)
* pmf: Bound member functions.
! (line 6)
! * pointer arguments: Function Attributes. (line 109)
* pointer to member function: Bound member functions.
! (line 6)
! * portions of temporary objects, pointers to: Temporaries. (line 6)
! * pow: Other Builtins. (line 6)
! * pow10: Other Builtins. (line 6)
! * pow10f: Other Builtins. (line 6)
! * pow10l: Other Builtins. (line 6)
! * powf: Other Builtins. (line 6)
! * powl: Other Builtins. (line 6)
! * pragma, extern_prefix: Tru64 Pragmas. (line 10)
! * pragma, long_calls: ARM Pragmas. (line 11)
! * pragma, long_calls_off: ARM Pragmas. (line 17)
* pragma, longcall: RS/6000 and PowerPC Pragmas.
! (line 14)
! * pragma, mark: Darwin Pragmas. (line 11)
! * pragma, no_long_calls: ARM Pragmas. (line 14)
! * pragma, options align: Darwin Pragmas. (line 14)
! * pragma, reason for not using: Function Attributes. (line 656)
! * pragma, redefine_extname: Solaris Pragmas. (line 10)
! * pragma, segment: Darwin Pragmas. (line 21)
! * pragma, unused: Darwin Pragmas. (line 24)
! * pragmas: Pragmas. (line 6)
! * pragmas in C++, effect on inlining: C++ Interface. (line 66)
! * pragmas, interface and implementation: C++ Interface. (line 6)
! * pragmas, warning of unknown: Warning Options. (line 427)
! * precompiled headers: Precompiled Headers. (line 6)
! * preprocessing numbers: Incompatibilities. (line 175)
! * preprocessing tokens: Incompatibilities. (line 175)
* preprocessor options: Preprocessor Options.
! (line 6)
! * printf: Other Builtins. (line 6)
! * printf_unlocked: Other Builtins. (line 6)
! * prof: Debugging Options. (line 116)
! * promotion of formal parameters: Function Prototypes. (line 6)
! * pure function attribute: Function Attributes. (line 81)
! * push address instruction: Simple Constraints. (line 142)
! * putchar: Other Builtins. (line 6)
! * puts: Other Builtins. (line 6)
! * qsort, and global register variables: Global Reg Vars. (line 42)
! * question mark: Multi-Alternative. (line 27)
! * r in constraint: Simple Constraints. (line 54)
! * ranges in case statements: Case Ranges. (line 6)
! * read-only strings: Incompatibilities. (line 9)
! * register variable after longjmp: Global Reg Vars. (line 66)
! * registers: Extended Asm. (line 6)
! * registers for local variables: Local Reg Vars. (line 6)
! * registers in constraints: Simple Constraints. (line 54)
! * registers, global allocation: Explicit Reg Vars. (line 6)
! * registers, global variables in: Global Reg Vars. (line 6)
! * regparm attribute: Function Attributes. (line 396)
! * relocation truncated to fit (MIPS): MIPS Options. (line 108)
! * remainder: Other Builtins. (line 6)
! * remainderf: Other Builtins. (line 6)
! * remainderl: Other Builtins. (line 6)
! * remquo: Other Builtins. (line 6)
! * remquof: Other Builtins. (line 6)
! * remquol: Other Builtins. (line 6)
! * reordering, warning: C++ Dialect Options. (line 281)
! * reporting bugs: Bugs. (line 6)
! * rest argument (in macro): Variadic Macros. (line 6)
! * restricted pointers: Restricted Pointers. (line 6)
! * restricted references: Restricted Pointers. (line 6)
! * restricted this pointer: Restricted Pointers. (line 6)
! * rindex: Other Builtins. (line 6)
! * rint: Other Builtins. (line 6)
! * rintf: Other Builtins. (line 6)
! * rintl: Other Builtins. (line 6)
! * round: Other Builtins. (line 6)
! * roundf: Other Builtins. (line 6)
! * roundl: Other Builtins. (line 6)
* RS/6000 and PowerPC Options: RS/6000 and PowerPC Options.
! (line 6)
! * RTTI: Vague Linkage. (line 43)
! * run-time options: Code Gen Options. (line 6)
! * s in constraint: Simple Constraints. (line 90)
* S/390 and zSeries Options: S/390 and zSeries Options.
+ (line 6)
* save all registers on the H8/300, H8/300H, and H8S: Function Attributes.
! (line 523)
! * scalb: Other Builtins. (line 6)
! * scalbf: Other Builtins. (line 6)
! * scalbl: Other Builtins. (line 6)
! * scalbln: Other Builtins. (line 6)
! * scalblnf: Other Builtins. (line 6)
! * scalbn: Other Builtins. (line 6)
! * scalbnf: Other Builtins. (line 6)
! * scanf, and constant strings: Incompatibilities. (line 17)
! * scanfnl: Other Builtins. (line 6)
! * scope of a variable length array: Variable Length. (line 23)
! * scope of declaration: Disappointments. (line 21)
! * scope of external declarations: Incompatibilities. (line 82)
! * search path: Directory Options. (line 6)
! * section function attribute: Function Attributes. (line 251)
! * section variable attribute: Variable Attributes. (line 144)
! * setjmp: Global Reg Vars. (line 66)
! * setjmp incompatibilities: Incompatibilities. (line 41)
! * shared strings: Incompatibilities. (line 9)
! * shared variable attribute: Variable Attributes. (line 189)
! * side effect in ?:: Conditionals. (line 20)
! * side effects, macro argument: Statement Exprs. (line 35)
! * side effects, order of evaluation: Non-bugs. (line 180)
* signal handler functions on the AVR processors: Function Attributes.
+ (line 528)
* signed and unsigned values, comparison warning: Warning Options.
! (line 717)
! * significand: Other Builtins. (line 6)
! * significandf: Other Builtins. (line 6)
! * significandl: Other Builtins. (line 6)
! * simple constraints: Simple Constraints. (line 6)
! * sin: Other Builtins. (line 6)
! * sincos: Other Builtins. (line 6)
! * sincosf: Other Builtins. (line 6)
! * sincosl: Other Builtins. (line 6)
! * sinf: Other Builtins. (line 6)
! * sinh: Other Builtins. (line 6)
! * sinhf: Other Builtins. (line 6)
! * sinhl: Other Builtins. (line 6)
! * sinl: Other Builtins. (line 6)
! * sizeof: Typeof. (line 6)
! * smaller data references: M32R/D Options. (line 57)
! * smaller data references (MIPS): MIPS Options. (line 177)
* smaller data references (PowerPC): RS/6000 and PowerPC Options.
! (line 513)
! * snprintf: Other Builtins. (line 6)
! * SPARC options: SPARC Options. (line 6)
! * Spec Files: Spec Files. (line 6)
! * specified registers: Explicit Reg Vars. (line 6)
* specifying compiler version and target machine: Target Options.
! (line 6)
! * specifying hardware config: Submodel Options. (line 6)
! * specifying machine version: Target Options. (line 6)
! * specifying registers for local variables: Local Reg Vars. (line 6)
! * speed of compilation: Precompiled Headers. (line 6)
! * sprintf: Other Builtins. (line 6)
! * sqrt: Other Builtins. (line 6)
! * sqrtf: Other Builtins. (line 6)
! * sqrtl: Other Builtins. (line 6)
! * sscanf: Other Builtins. (line 6)
! * sscanf, and constant strings: Incompatibilities. (line 17)
! * statements inside expressions: Statement Exprs. (line 6)
* static data in C++, declaring and defining: Static Definitions.
! (line 6)
! * stpcpy: Other Builtins. (line 6)
! * strcat: Other Builtins. (line 6)
! * strchr: Other Builtins. (line 6)
! * strcmp: Other Builtins. (line 6)
! * strcpy: Other Builtins. (line 6)
! * strcspn: Other Builtins. (line 6)
! * strdup: Other Builtins. (line 6)
! * strfmon: Other Builtins. (line 6)
! * strftime: Other Builtins. (line 6)
! * string constants: Incompatibilities. (line 9)
! * strlen: Other Builtins. (line 6)
! * strncat: Other Builtins. (line 6)
! * strncmp: Other Builtins. (line 6)
! * strncpy: Other Builtins. (line 6)
! * strpbrk: Other Builtins. (line 6)
! * strrchr: Other Builtins. (line 6)
! * strspn: Other Builtins. (line 6)
! * strstr: Other Builtins. (line 6)
! * struct: Unnamed Fields. (line 6)
! * structures: Incompatibilities. (line 148)
! * structures, constructor expression: Compound Literals. (line 6)
! * submodel options: Submodel Options. (line 6)
! * subscripting: Subscripting. (line 6)
! * subscripting and function values: Subscripting. (line 6)
! * suffixes for C++ source: Invoking G++. (line 6)
* SUNPRO_DEPENDENCIES: Environment Variables.
! (line 166)
! * suppressing warnings: Warning Options. (line 6)
* surprises in C++: C++ Misunderstandings.
! (line 6)
! * syntax checking: Warning Options. (line 21)
! * system headers, warnings from: Warning Options. (line 548)
! * tan: Other Builtins. (line 6)
! * tanf: Other Builtins. (line 6)
! * tanh: Other Builtins. (line 6)
! * tanhf: Other Builtins. (line 6)
! * tanhl: Other Builtins. (line 6)
! * tanl: Other Builtins. (line 6)
! * target machine, specifying: Target Options. (line 6)
! * target options: Target Options. (line 6)
! * TC1: Standards. (line 6)
! * TC2: Standards. (line 6)
! * Technical Corrigenda: Standards. (line 6)
! * Technical Corrigendum 1: Standards. (line 6)
! * Technical Corrigendum 2: Standards. (line 6)
* template instantiation: Template Instantiation.
! (line 6)
! * temporaries, lifetime of: Temporaries. (line 6)
! * tgamma: Other Builtins. (line 6)
! * tgammaf: Other Builtins. (line 6)
! * tgammal: Other Builtins. (line 6)
! * Thread-Local Storage: Thread-Local. (line 6)
! * thunks: Nested Functions. (line 6)
* tiny data section on the H8/300H and H8S: Function Attributes.
! (line 516)
! * TLS: Thread-Local. (line 6)
! * tls_model attribute: Variable Attributes. (line 213)
* TMPDIR: Environment Variables.
+ (line 45)
* TMS320C3x/C4x Options: TMS320C3x/C4x Options.
! (line 6)
! * traditional C language: C Dialect Options. (line 189)
! * treelang <1>: Standards. (line 124)
! * treelang: G++ and GCC. (line 6)
! * trunc: Other Builtins. (line 6)
! * truncf: Other Builtins. (line 6)
! * truncl: Other Builtins. (line 6)
! * two-stage name lookup: Name lookup. (line 6)
! * type alignment: Alignment. (line 6)
! * type attributes: Type Attributes. (line 6)
! * type_info: Vague Linkage. (line 43)
! * typedef names as function parameters: Incompatibilities. (line 99)
! * typeof: Typeof. (line 6)
! * ULL integer suffix: Long Long. (line 6)
! * Ultrix calling convention: Interoperation. (line 197)
! * undefined behavior: Bug Criteria. (line 17)
! * undefined function value: Bug Criteria. (line 17)
! * underscores in variables in macros: Typeof. (line 42)
! * union: Unnamed Fields. (line 6)
! * union, casting to a: Cast to Union. (line 6)
! * unions: Incompatibilities. (line 148)
! * unknown pragmas, warning: Warning Options. (line 427)
! * unresolved references and -nodefaultlibs: Link Options. (line 81)
! * unresolved references and -nostdlib: Link Options. (line 81)
! * unused attribute.: Function Attributes. (line 278)
! * used attribute.: Function Attributes. (line 283)
! * V in constraint: Simple Constraints. (line 41)
! * V850 Options: V850 Options. (line 6)
! * vague linkage: Vague Linkage. (line 6)
! * value after longjmp: Global Reg Vars. (line 66)
! * variable addressability on the IA-64: Function Attributes. (line 541)
! * variable addressability on the M32R/D: Variable Attributes. (line 277)
! * variable alignment: Alignment. (line 6)
! * variable attributes: Variable Attributes. (line 6)
! * variable number of arguments: Variadic Macros. (line 6)
! * variable-length array scope: Variable Length. (line 23)
! * variable-length arrays: Variable Length. (line 6)
! * variables in specified registers: Explicit Reg Vars. (line 6)
! * variables, local, in macros: Typeof. (line 42)
! * variadic macros: Variadic Macros. (line 6)
! * VAX calling convention: Interoperation. (line 197)
! * VAX options: VAX Options. (line 6)
! * vfprintf: Other Builtins. (line 6)
! * vfscanf: Other Builtins. (line 6)
! * visibility attribute: Function Attributes. (line 355)
! * VLAs: Variable Length. (line 6)
! * void pointers, arithmetic: Pointer Arith. (line 6)
! * void, size of pointer to: Pointer Arith. (line 6)
! * volatile access: Volatiles. (line 6)
! * volatile applied to function: Function Attributes. (line 6)
! * volatile read: Volatiles. (line 6)
! * volatile write: Volatiles. (line 6)
! * vprintf: Other Builtins. (line 6)
! * vscanf: Other Builtins. (line 6)
! * vsnprintf: Other Builtins. (line 6)
! * vsprintf: Other Builtins. (line 6)
! * vsscanf: Other Builtins. (line 6)
! * vtable: Vague Linkage. (line 28)
! * warn_unused_result attribute: Function Attributes. (line 308)
* warning for comparison of signed and unsigned values: Warning Options.
! (line 717)
! * warning for overloaded virtual fn: C++ Dialect Options. (line 353)
* warning for reordering of member initializers: C++ Dialect Options.
! (line 281)
! * warning for unknown pragmas: Warning Options. (line 427)
! * warning messages: Warning Options. (line 6)
! * warnings from system headers: Warning Options. (line 548)
! * warnings vs errors: Warnings and Errors. (line 6)
! * weak attribute: Function Attributes. (line 325)
! * whitespace: Incompatibilities. (line 114)
! * X in constraint: Simple Constraints. (line 112)
! * X3.159-1989: Standards. (line 6)
* x86-64 Options: i386 and x86-64 Options.
! (line 6)
! * Xstormy16 Options: Xstormy16 Options. (line 6)
! * Xtensa Options: Xtensa Options. (line 6)
! * y0: Other Builtins. (line 6)
! * y0f: Other Builtins. (line 6)
! * y0l: Other Builtins. (line 6)
! * y1: Other Builtins. (line 6)
! * y1f: Other Builtins. (line 6)
! * y1l: Other Builtins. (line 6)
! * yn: Other Builtins. (line 6)
! * ynf: Other Builtins. (line 6)
! * ynl: Other Builtins. (line 6)
! * zero-length arrays: Zero Length. (line 6)
! * zero-size structures: Empty Structures. (line 6)
Tag Table:
! Node: Top2031
! Node: G++ and GCC3713
! Node: Standards5749
! Node: Invoking GCC12911
! Node: Option Summary16621
! Node: Overall Options40715
! Node: Invoking G++47844
! Node: C Dialect Options49466
! Node: C++ Dialect Options60152
! Node: Objective-C Dialect Options76319
! Node: Language Independent Options85392
! Node: Warning Options87185
! Node: Debugging Options125625
! Node: Optimize Options146614
! Node: Preprocessor Options199900
! Ref: Wtrigraphs203925
! Ref: dashMF208682
! Ref: fdollars-in-identifiers216502
! Node: Assembler Options224362
! Node: Link Options225067
! Ref: Link Options-Footnote-1233442
! Node: Directory Options233776
! Node: Spec Files238771
! Node: Target Options258132
! Node: Submodel Options259438
! Node: M680x0 Options261146
! Node: M68hc1x Options268196
! Node: VAX Options269760
! Node: SPARC Options270307
! Node: ARM Options282135
! Node: MN10300 Options294595
! Node: M32R/D Options295653
! Node: RS/6000 and PowerPC Options299254
! Node: Darwin Options323596
! Node: MIPS Options325693
! Node: i386 and x86-64 Options336927
! Node: HPPA Options354659
! Node: Intel 960 Options362769
! Node: DEC Alpha Options365725
! Node: DEC Alpha/VMS Options377208
! Node: H8/300 Options377598
! Node: SH Options378663
! Node: System V Options381033
! Node: TMS320C3x/C4x Options381864
! Node: V850 Options387389
! Node: ARC Options390534
! Node: NS32K Options391749
! Node: AVR Options396287
! Node: MCore Options398101
! Node: IA-64 Options399119
! Node: D30V Options403172
! Node: S/390 and zSeries Options404428
! Node: CRIS Options407768
! Node: MMIX Options411999
! Node: PDP-11 Options414480
! Node: Xstormy16 Options416318
! Node: FRV Options416607
! Node: Xtensa Options420568
! Node: Code Gen Options424404
! Node: Environment Variables440040
! Node: Precompiled Headers447712
! Node: Running Protoize452944
! Node: C Implementation459281
! Node: Translation implementation460216
! Node: Environment implementation460659
! Node: Identifiers implementation460957
! Node: Characters implementation461578
! Node: Integers implementation463443
! Node: Floating point implementation464406
! Node: Arrays and pointers implementation466263
! Ref: Arrays and pointers implementation-Footnote-1467572
! Node: Hints implementation467696
! Node: Structures unions enumerations and bit-fields implementation469143
! Node: Qualifiers implementation469960
! Node: Preprocessing directives implementation470281
! Node: Library functions implementation472090
! Node: Architecture implementation472422
! Node: Locale-specific behavior implementation472997
! Node: C Extensions473302
! Node: Statement Exprs477404
! Node: Local Labels480881
! Node: Labels as Values483859
! Ref: Labels as Values-Footnote-1485913
! Node: Nested Functions486096
! Node: Constructing Calls489962
! Node: Typeof492298
! Node: Lvalues495459
! Node: Conditionals497959
! Node: Long Long498851
! Node: Complex500352
! Node: Hex Floats502920
! Node: Zero Length503955
! Node: Empty Structures507232
! Node: Variable Length507648
! Node: Variadic Macros510415
! Node: Escaped Newlines512797
! Node: Subscripting513636
! Node: Pointer Arith514359
! Node: Initializers514927
! Node: Compound Literals515423
! Node: Designated Inits517585
! Node: Case Ranges521240
! Node: Cast to Union521923
! Node: Mixed Declarations523019
! Node: Function Attributes523525
! Node: Attribute Syntax554664
! Node: Function Prototypes565272
! Node: C++ Comments567053
! Node: Dollar Signs567572
! Node: Character Escapes568037
! Node: Alignment568331
! Node: Variable Attributes569648
! Node: Type Attributes582630
! Node: Inline595345
! Node: Extended Asm600049
! Node: Constraints619086
! Node: Simple Constraints619936
! Node: Multi-Alternative626455
! Node: Modifiers628172
! Node: Machine Constraints630860
! Node: Asm Labels653067
! Node: Explicit Reg Vars654743
! Node: Global Reg Vars656204
! Node: Local Reg Vars660754
! Node: Alternate Keywords662555
! Node: Incomplete Enums663983
! Node: Function Names664740
! Node: Return Address666930
! Node: Vector Extensions669725
! Node: Other Builtins673327
! Node: Target Builtins693413
! Node: Alpha Built-in Functions693977
! Node: ARM Built-in Functions696969
! Node: X86 Built-in Functions703671
! Node: PowerPC AltiVec Built-in Functions714070
! Node: Pragmas815244
! Node: ARM Pragmas815749
! Node: RS/6000 and PowerPC Pragmas816367
! Node: Darwin Pragmas817108
! Node: Solaris Pragmas818175
! Node: Tru64 Pragmas818749
! Node: Unnamed Fields819501
! Node: Thread-Local820594
! Node: C99 Thread-Local Edits822678
! Node: C++98 Thread-Local Edits824690
! Node: C++ Extensions828135
! Node: Min and Max829827
! Node: Volatiles831210
! Node: Restricted Pointers834576
! Node: Vague Linkage836170
! Node: C++ Interface839826
! Ref: C++ Interface-Footnote-1844118
! Node: Template Instantiation844255
! Node: Bound member functions851267
! Node: C++ Attributes852810
! Node: Strong Using854450
! Node: Offsetof855692
! Node: Java Exceptions856308
! Node: Deprecated Features857702
! Node: Backwards Compatibility859705
! Node: Objective-C861060
! Node: Executing code before main861641
! Node: What you can and what you cannot do in +load864247
! Node: Type encoding866414
! Node: Garbage Collection869657
! Node: Constant string objects872281
! Node: compatibility_alias874789
! Node: Compatibility875667
! Node: Gcov882234
! Node: Gcov Intro882704
! Node: Invoking Gcov885420
! Node: Gcov and Optimization896765
! Node: Gcov Data Files899418
! Node: Trouble900532
! Node: Actual Bugs902127
! Node: Cross-Compiler Problems903045
! Node: Interoperation904562
! Node: External Bugs914647
! Node: Incompatibilities916090
! Node: Fixed Headers924397
! Node: Standard Libraries926711
! Node: Disappointments928083
! Node: C++ Misunderstandings932564
! Node: Static Definitions933383
! Node: Name lookup934436
! Ref: Name lookup-Footnote-1939213
! Node: Temporaries939400
! Node: Copy Assignment941376
! Node: Protoize Caveats943183
! Node: Non-bugs947147
! Node: Warnings and Errors957330
! Node: Bugs959094
! Node: Bug Criteria959658
! Node: Bug Reporting961868
! Node: Service962260
! Node: Contributing963079
! Node: Funding963819
! Node: GNU Project966308
! Node: Copying966954
! Node: GNU Free Documentation License986104
! Node: Contributors1008500
! Node: Option Index1036026
! Node: Keyword Index1152167
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/gccinstall.info gcc-3.4.5/gcc/doc/gccinstall.info
*** gcc-3.4.4/gcc/doc/gccinstall.info 2005-05-19 10:02:14.000000000 +0000
--- gcc-3.4.5/gcc/doc/gccinstall.info 2005-12-01 03:56:57.000000000 +0000
***************
*** 1,7 ****
! This is doc/gccinstall.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/doc/install.texi.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 1,7 ----
! This is doc/gccinstall.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/doc/install.texi.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** is included in the section entitled "GNU
*** 20,26 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 20,27 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
!
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** is included in the section entitled "GNU
*** 39,44 ****
--- 40,46 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* gccinstall: (gccinstall). Installing the GNU Compiler Collection.
*************** File: gccinstall.info, Node: Top, Up:
*** 64,71 ****
File: gccinstall.info, Node: Installing GCC, Next: Binaries, Up: Top
! Installing GCC
! **************
The latest version of this document is always available at
http://gcc.gnu.org/install/.
--- 66,73 ----
File: gccinstall.info, Node: Installing GCC, Next: Binaries, Up: Top
! 1 Installing GCC
! ****************
The latest version of this document is always available at
http://gcc.gnu.org/install/.
*************** as well, no more binaries exist that use
*** 106,113 ****
File: gccinstall.info, Node: Prerequisites, Next: Downloading the source, Up: Installing GCC
! Prerequisites
! *************
GCC requires that various tools and packages be available for use in
the build procedure. Modifying GCC sources requires additional tools
--- 108,115 ----
File: gccinstall.info, Node: Prerequisites, Next: Downloading the source, Up: Installing GCC
! 2 Prerequisites
! ***************
GCC requires that various tools and packages be available for use in
the build procedure. Modifying GCC sources requires additional tools
*************** GNU tar version 1.12 (or later)
*** 166,171 ****
--- 168,174 ----
systems' `tar' programs will also work, only try GNU `tar' if you
have problems.
+
Tools/packages necessary for modifying GCC
==========================================
*************** patch version 2.5.4 (or later)
*** 264,274 ****
Necessary when applying patches, created with `diff', to one's own
sources.
File: gccinstall.info, Node: Downloading the source, Next: Configuration, Prev: Prerequisites, Up: Installing GCC
! Downloading GCC
! ***************
GCC is distributed via CVS and FTP tarballs compressed with `gzip' or
`bzip2'. It is possible to download a full distribution or specific
--- 267,278 ----
Necessary when applying patches, created with `diff', to one's own
sources.
+
File: gccinstall.info, Node: Downloading the source, Next: Configuration, Prev: Prerequisites, Up: Installing GCC
! 3 Downloading GCC
! *****************
GCC is distributed via CVS and FTP tarballs compressed with `gzip' or
`bzip2'. It is possible to download a full distribution or specific
*************** containing the GCC sources.
*** 304,311 ****
File: gccinstall.info, Node: Configuration, Next: Building, Prev: Downloading the source, Up: Installing GCC
! Installing GCC: Configuration
! *****************************
Like most GNU software, GCC must be configured before it can be
built. This document describes the recommended configuration procedure
--- 308,315 ----
File: gccinstall.info, Node: Configuration, Next: Building, Prev: Downloading the source, Up: Installing GCC
! 4 Installing GCC: Configuration
! *******************************
Like most GNU software, GCC must be configured before it can be
built. This document describes the recommended configuration procedure
*************** Target specification
*** 373,380 ****
Options specification
=====================
! Use OPTIONS to override several configure time options for GCC. A
! list of supported OPTIONS follows; `configure --help' may list other
options, but those not listed below may not work and should not
normally be used.
--- 377,384 ----
Options specification
=====================
! Use OPTIONS to override several configure time options for GCC. A list
! of supported OPTIONS follows; `configure --help' may list other
options, but those not listed below may not work and should not
normally be used.
*************** option.
*** 438,443 ****
--- 442,448 ----
Specify the installation directory for G++ header files. The
default is `PREFIX/include/c++/VERSION'.
+
`--program-prefix=PREFIX'
GCC supports some transformations of the names of its programs when
installing them. This option prepends PREFIX to the names of
*************** option.
*** 697,702 ****
--- 702,708 ----
aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos,
biendian, sysv, aix.
+
`--enable-threads'
Specify that the target supports threads. This affects the
Objective-C compiler and runtime library, and exception handling
*************** option.
*** 909,917 ****
categories of checks available are `misc', `tree', `gc', `rtl',
`rtlflag', `fold', `gcac' and `valgrind'. The check `valgrind'
requires the external `valgrind' simulator, available from
! `http://valgrind.kde.org/'. The default when LIST is not
! specified is `misc,tree,gc,rtlflag'; the checks `rtl', `gcac' and
! `valgrind' are very expensive.
`--enable-coverage'
`--enable-coverage=LEVEL'
--- 915,923 ----
categories of checks available are `misc', `tree', `gc', `rtl',
`rtlflag', `fold', `gcac' and `valgrind'. The check `valgrind'
requires the external `valgrind' simulator, available from
! `http://valgrind.org/'. The default when LIST is not specified is
! `misc,tree,gc,rtlflag'; the checks `rtl', `gcac' and `valgrind'
! are very expensive.
`--enable-coverage'
`--enable-coverage=LEVEL'
*************** option.
*** 965,971 ****
Cross-Compiler-Specific Options
-------------------------------
! The following options only apply to building cross compilers.
`--with-sysroot'
`--with-sysroot=DIR'
Tells GCC to consider DIR as the root of a tree that contains a
--- 971,977 ----
Cross-Compiler-Specific Options
-------------------------------
! The following options only apply to building cross compilers.
`--with-sysroot'
`--with-sysroot=DIR'
Tells GCC to consider DIR as the root of a tree that contains a
*************** Cross-Compiler-Specific Options
*** 1012,1018 ****
Java-Specific Options
---------------------
! The following option applies to the build of the Java front end.
`--disable-libgcj'
Specify that the run-time libraries used by GCJ should not be
--- 1018,1024 ----
Java-Specific Options
---------------------
! The following option applies to the build of the Java front end.
`--disable-libgcj'
Specify that the run-time libraries used by GCJ should not be
*************** Java-Specific Options
*** 1026,1031 ****
--- 1032,1038 ----
`configure.in' so that `libgcj' is enabled by default on this
platform, you may use `--enable-libgcj' to override the default.
+
The following options apply to building `libgcj'.
General Options
*************** AWT-Specific Options
*** 1137,1147 ****
`--disable-libarttest'
Do not try to compile and run a test libart program.
File: gccinstall.info, Node: Building, Next: Testing, Prev: Configuration, Up: Installing GCC
! Building
! ********
Now that GCC is configured, you are ready to build the compiler and
runtime libraries.
--- 1144,1155 ----
`--disable-libarttest'
Do not try to compile and run a test libart program.
+
File: gccinstall.info, Node: Building, Next: Testing, Prev: Configuration, Up: Installing GCC
! 5 Building
! **********
Now that GCC is configured, you are ready to build the compiler and
runtime libraries.
*************** documentation, you need version 4.2 or l
*** 1185,1195 ****
want Info documentation to be regenerated. Releases contain Info
documentation pre-built for the unmodified documentation in the release.
! Building a native compiler
! ==========================
! For a native build issue the command `make bootstrap'. This will
! build the entire GCC system, which includes the following steps:
* Build host tools necessary to build the compiler such as texinfo,
bison, gperf.
--- 1193,1203 ----
want Info documentation to be regenerated. Releases contain Info
documentation pre-built for the unmodified documentation in the release.
! 5.1 Building a native compiler
! ==============================
! For a native build issue the command `make bootstrap'. This will build
! the entire GCC system, which includes the following steps:
* Build host tools necessary to build the compiler such as texinfo,
bison, gperf.
*************** a few systems, meaningful comparison of
*** 1246,1255 ****
always appear "different". If you encounter this problem, you will
need to disable comparison in the `Makefile'.)
! Building a cross compiler
! =========================
! We recommend reading the crossgcc FAQ for information about building
cross compilers.
When building a cross compiler, it is not generally possible to do a
--- 1254,1263 ----
always appear "different". If you encounter this problem, you will
need to disable comparison in the `Makefile'.)
! 5.2 Building a cross compiler
! =============================
! We recommend reading the crossgcc FAQ for information about building
cross compilers.
When building a cross compiler, it is not generally possible to do a
*************** executable. There may be several altern
*** 1317,1337 ****
with profiling or other compilation options. Check your target's
definition of `STARTFILE_SPEC' to find out what start files it uses.
! Building in parallel
! ====================
! You can use `make bootstrap MAKE="make -j 2" -j 2', or just `make -j
! 2 bootstrap' for GNU Make 3.79 and above, instead of `make bootstrap'
! to build GCC in parallel. You can also specify a bigger number, and in
most cases using a value greater than the number of processors in your
machine will result in fewer and shorter I/O latency hits, thus
improving overall throughput; this is especially true for slow drives
and network filesystems.
! Building the Ada compiler
! =========================
! In order to build GNAT, the Ada compiler, you need a working GNAT
compiler (GNAT version 3.14 or later, or GCC version 3.1 or later),
including GNAT tools such as `gnatmake' and `gnatlink', since the Ada
front end is written in Ada (with some GNAT-specific extensions), and
--- 1325,1345 ----
with profiling or other compilation options. Check your target's
definition of `STARTFILE_SPEC' to find out what start files it uses.
! 5.3 Building in parallel
! ========================
! You can use `make bootstrap MAKE="make -j 2" -j 2', or just `make -j 2
! bootstrap' for GNU Make 3.79 and above, instead of `make bootstrap' to
! build GCC in parallel. You can also specify a bigger number, and in
most cases using a value greater than the number of processors in your
machine will result in fewer and shorter I/O latency hits, thus
improving overall throughput; this is especially true for slow drives
and network filesystems.
! 5.4 Building the Ada compiler
! =============================
! In order to build GNAT, the Ada compiler, you need a working GNAT
compiler (GNAT version 3.14 or later, or GCC version 3.1 or later),
including GNAT tools such as `gnatmake' and `gnatlink', since the Ada
front end is written in Ada (with some GNAT-specific extensions), and
*************** following commands (assuming `make' is G
*** 1364,1377 ****
Currently, when compiling the Ada front end, you cannot use the
parallel build feature described in the previous section.
! Building with profile feedback
! ==============================
! It is possible to use profile feedback to optimize the compiler
! itself. This should result in a faster compiler binary. Experiments
! done on x86 using gcc 3.3 showed approximately 7 percent speedup on
! compiling C programs. To bootstrap compiler with profile feedback, use
! `make profiledbootstrap'.
When `make profiledbootstrap' is run, it will first build a `stage1'
compiler. This compiler is used to build a `stageprofile' compiler
--- 1372,1385 ----
Currently, when compiling the Ada front end, you cannot use the
parallel build feature described in the previous section.
! 5.5 Building with profile feedback
! ==================================
! It is possible to use profile feedback to optimize the compiler itself.
! This should result in a faster compiler binary. Experiments done on
! x86 using gcc 3.3 showed approximately 7 percent speedup on compiling C
! programs. To bootstrap compiler with profile feedback, use `make
! profiledbootstrap'.
When `make profiledbootstrap' is run, it will first build a `stage1'
compiler. This compiler is used to build a `stageprofile' compiler
*************** occur.
*** 1389,1396 ****
File: gccinstall.info, Node: Testing, Next: Final install, Prev: Building, Up: Installing GCC
! Installing GCC: Testing
! ***********************
Before you install GCC, we encourage you to run the testsuites and to
compare your results with results from a similar configuration that have
--- 1397,1404 ----
File: gccinstall.info, Node: Testing, Next: Final install, Prev: Building, Up: Installing GCC
! 6 Installing GCC: Testing
! *************************
Before you install GCC, we encourage you to run the testsuites and to
compare your results with results from a similar configuration that have
*************** emit some harmless messages resembling `
*** 1431,1440 ****
global config file.' or `WARNING: Couldn't find tool init file' that
can be ignored.
! How can you run the testsuite on selected tests?
! ================================================
! In order to run sets of tests selectively, there are targets `make
check-gcc' and `make check-g++' in the `gcc' subdirectory of the object
directory. You can also just run `make check' in a subdirectory of the
object directory.
--- 1439,1448 ----
global config file.' or `WARNING: Couldn't find tool init file' that
can be ignored.
! 6.1 How can you run the testsuite on selected tests?
! ====================================================
! In order to run sets of tests selectively, there are targets `make
check-gcc' and `make check-g++' in the `gcc' subdirectory of the object
directory. You can also just run `make check' in a subdirectory of the
object directory.
*************** source, the most important ones being `c
*** 1455,1464 ****
files, pipe the output of `make check' into a file and look at the
`Running ... .exp' lines.
! Passing options and running multiple testsuites
! ===============================================
! You can pass multiple options to the testsuite using the
`--target_board' option of DejaGNU, either passed as part of
`RUNTESTFLAGS', or directly to `runtest' if you prefer to work outside
the makefiles. For example,
--- 1463,1472 ----
files, pipe the output of `make check' into a file and look at the
`Running ... .exp' lines.
! 6.2 Passing options and running multiple testsuites
! ===================================================
! You can pass multiple options to the testsuite using the
`--target_board' option of DejaGNU, either passed as part of
`RUNTESTFLAGS', or directly to `runtest' if you prefer to work outside
the makefiles. For example,
*************** all ten combinations as described above.
*** 1514,1523 ****
only supported in the `gcc' subdirectory. (To see how this works, try
typing `echo' before the example given here.)
! Additional testing for Java Class Libraries
! ===========================================
! The Java runtime tests can be executed via `make check' in the
`TARGET/libjava/testsuite' directory in the build tree.
The Mauve Project provides a suite of tests for the Java Class
--- 1522,1531 ----
only supported in the `gcc' subdirectory. (To see how this works, try
typing `echo' before the example given here.)
! 6.3 Additional testing for Java Class Libraries
! ===============================================
! The Java runtime tests can be executed via `make check' in the
`TARGET/libjava/testsuite' directory in the build tree.
The Mauve Project provides a suite of tests for the Java Class
*************** of that tree when invoking `make', as in
*** 1530,1539 ****
suite can be run as part of libgcj testing by placing the Jacks tree
within the libjava testsuite at `libjava/testsuite/libjava.jacks/jacks'.
! How to interpret test results
! =============================
! The result of running the testsuite are various `*.sum' and `*.log'
files in the testsuite subdirectories. The `*.log' files contain a
detailed log of the compiler invocations and the corresponding results,
the `*.sum' files summarize the results. These summaries contain
--- 1538,1547 ----
suite can be run as part of libgcj testing by placing the Jacks tree
within the libjava testsuite at `libjava/testsuite/libjava.jacks/jacks'.
! 6.4 How to interpret test results
! =================================
! The result of running the testsuite are various `*.sum' and `*.log'
files in the testsuite subdirectories. The `*.log' files contain a
detailed log of the compiler invocations and the corresponding results,
the `*.sum' files summarize the results. These summaries contain
*************** current time the testing harness does no
*** 1558,1567 ****
over whether or not a test is expected to fail. This problem should be
fixed in future releases.
! Submitting test results
! =======================
! If you want to report the results to the GCC project, use the
`contrib/test_summary' shell script. Start it in the OBJDIR with
SRCDIR/contrib/test_summary -p your_commentary.txt \
--- 1566,1575 ----
over whether or not a test is expected to fail. This problem should be
fixed in future releases.
! 6.5 Submitting test results
! ===========================
! If you want to report the results to the GCC project, use the
`contrib/test_summary' shell script. Start it in the OBJDIR with
SRCDIR/contrib/test_summary -p your_commentary.txt \
*************** automatically processed.
*** 1577,1584 ****
File: gccinstall.info, Node: Final install, Prev: Testing, Up: Installing GCC
! Installing GCC: Final installation
! **********************************
Now that GCC has been built (and optionally tested), you can install
it with
--- 1585,1592 ----
File: gccinstall.info, Node: Final install, Prev: Testing, Up: Installing GCC
! 7 Installing GCC: Final installation
! ************************************
Now that GCC has been built (and optionally tested), you can install
it with
*************** following information:
*** 1662,1668 ****
message.
We'd also like to know if the *Note host/target specific
! installation notes: Specific didn't include your host/target
information or if that information is incomplete or out of date. Send
a note to detailing how the information should be
changed.
--- 1670,1676 ----
message.
We'd also like to know if the *Note host/target specific
! installation notes: Specific. didn't include your host/target
information or if that information is incomplete or out of date. Send
a note to detailing how the information should be
changed.
*************** such manuals may not be for the most rec
*** 1680,1687 ****
File: gccinstall.info, Node: Binaries, Next: Specific, Prev: Installing GCC, Up: Top
! Installing GCC: Binaries
! ************************
We are often asked about pre-compiled versions of GCC. While we
cannot provide these for all platforms, below you'll find links to
--- 1688,1695 ----
File: gccinstall.info, Node: Binaries, Next: Specific, Prev: Installing GCC, Up: Top
! 8 Installing GCC: Binaries
! **************************
We are often asked about pre-compiled versions of GCC. While we
cannot provide these for all platforms, below you'll find links to
*************** makers.
*** 1712,1719 ****
* SCO OpenServer/Unixware.
- * Sinix/Reliant Unix--Siemens.
-
* Solaris 2 (SPARC, Intel)--Sunfreeware.
* SGI--SGI Freeware.
--- 1720,1725 ----
*************** updated version of that disk is in the w
*** 1739,1746 ****
File: gccinstall.info, Node: Specific, Next: Old, Prev: Binaries, Up: Top
! Host/target specific installation notes for GCC
! ***********************************************
Please read this document carefully _before_ installing the GNU
Compiler Collection on your machine.
--- 1745,1752 ----
File: gccinstall.info, Node: Specific, Next: Old, Prev: Binaries, Up: Top
! 9 Host/target specific installation notes for GCC
! *************************************************
Please read this document carefully _before_ installing the GNU
Compiler Collection on your machine.
*************** Compiler Collection on your machine.
*** 1748,1754 ****
alpha*-*-*
==========
! 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
section, please read all other sections that match your target.
--- 1754,1760 ----
alpha*-*-*
==========
! 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
section, please read all other sections that match your target.
*************** of which is incorrect linking of shared
*** 1760,1767 ****
alpha*-dec-osf*
===============
! Systems using processors that implement the DEC Alpha architecture
! and are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
As of GCC 3.2, versions before `alpha*-dec-osf4' are no longer
--- 1766,1773 ----
alpha*-dec-osf*
===============
! Systems using processors that implement the DEC Alpha architecture and
! are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
As of GCC 3.2, versions before `alpha*-dec-osf4' are no longer
*************** provide a fix shortly.
*** 1835,1841 ****
alphaev5-cray-unicosmk*
=======================
! Cray T3E systems running Unicos/Mk.
This port is incomplete and has many known bugs. We hope to improve
the support for this target soon. Currently, only the C front end is
--- 1841,1847 ----
alphaev5-cray-unicosmk*
=======================
! Cray T3E systems running Unicos/Mk.
This port is incomplete and has many known bugs. We hope to improve
the support for this target soon. Currently, only the C front end is
*************** failure.
*** 1859,1865 ****
arc-*-elf
=========
! Argonaut ARC processor. This configuration is intended for embedded
systems.
arm-*-elf
--- 1865,1871 ----
arc-*-elf
=========
! Argonaut ARC processor. This configuration is intended for embedded
systems.
arm-*-elf
*************** arm-*-elf
*** 1868,1874 ****
xscale-*-*
==========
! ARM-family processors. Subtargets that use the ELF object format
require GNU binutils 2.13 or newer. Such subtargets include:
`arm-*-freebsd', `arm-*-netbsdelf', `arm-*-*linux', `arm-*-rtems' and
`arm-*-kaos'.
--- 1874,1880 ----
xscale-*-*
==========
! ARM-family processors. Subtargets that use the ELF object format
require GNU binutils 2.13 or newer. Such subtargets include:
`arm-*-freebsd', `arm-*-netbsdelf', `arm-*-*linux', `arm-*-rtems' and
`arm-*-kaos'.
*************** require GNU binutils 2.13 or newer. Suc
*** 1876,1895 ****
arm-*-coff
==========
! ARM-family processors. Note that there are two different varieties
! of PE format subtarget supported: `arm-wince-pe' and `arm-pe' as well
! as a standard COFF target `arm-*-coff'.
arm-*-aout
==========
! ARM-family processors. These targets support the AOUT file format:
`arm-*-aout', `arm-*-netbsd'.
avr
===
! ATMEL AVR-family micro controllers. These are used in embedded
applications. There are no standard Unix configurations. *Note AVR
Options: (gcc)AVR Options, for the list of supported MCU types.
--- 1882,1901 ----
arm-*-coff
==========
! ARM-family processors. Note that there are two different varieties of
! PE format subtarget supported: `arm-wince-pe' and `arm-pe' as well as a
! standard COFF target `arm-*-coff'.
arm-*-aout
==========
! ARM-family processors. These targets support the AOUT file format:
`arm-*-aout', `arm-*-netbsd'.
avr
===
! ATMEL AVR-family micro controllers. These are used in embedded
applications. There are no standard Unix configurations. *Note AVR
Options: (gcc)AVR Options, for the list of supported MCU types.
*************** Options: (gcc)AVR Options, for the list
*** 1898,1904 ****
Further installation notes and other useful information about AVR
tools can also be obtained from:
! * http://www.openavr.org
* http://home.overta.ru/users/denisc/
--- 1904,1910 ----
Further installation notes and other useful information about AVR
tools can also be obtained from:
! * http://www.nongnu.org/avr/
* http://home.overta.ru/users/denisc/
*************** tools can also be obtained from:
*** 1914,1922 ****
c4x
===
! Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital
! Signal Processors. These are used in embedded applications. There are
! no standard Unix configurations. *Note TMS320C3x/C4x Options:
(gcc)TMS320C3x/C4x Options, for the list of supported MCU types.
GCC can be configured as a cross compiler for both the C3x and C4x
--- 1920,1928 ----
c4x
===
! Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal
! Processors. These are used in embedded applications. There are no
! standard Unix configurations. *Note TMS320C3x/C4x Options:
(gcc)TMS320C3x/C4x Options, for the list of supported MCU types.
GCC can be configured as a cross compiler for both the C3x and C4x
*************** tools can also be obtained from:
*** 1931,1937 ****
CRIS
====
! CRIS is the CPU architecture in Axis Communications ETRAX
system-on-a-chip series. These are used in embedded applications.
*Note CRIS Options: (gcc)CRIS Options, for a list of CRIS-specific
--- 1937,1943 ----
CRIS
====
! CRIS is the CPU architecture in Axis Communications ETRAX
system-on-a-chip series. These are used in embedded applications.
*Note CRIS Options: (gcc)CRIS Options, for a list of CRIS-specific
*************** information about this platform is avail
*** 1961,1967 ****
DOS
===
! Please have a look at the binaries page.
You cannot install GCC by itself on MSDOS; it will not compile under
any MSDOS compiler except itself. You need to get the complete
--- 1967,1973 ----
DOS
===
! Please have a look at the binaries page.
You cannot install GCC by itself on MSDOS; it will not compile under
any MSDOS compiler except itself. You need to get the complete
*************** and includes all the necessary compilati
*** 1971,1982 ****
dsp16xx
=======
! A port to the AT&T DSP1610 family of processors.
*-*-freebsd*
============
! The version of binutils installed in `/usr/bin' probably works with
this release of GCC. However, on FreeBSD 4, bootstrapping against the
latest FSF binutils is known to improve overall testsuite results; and,
on FreeBSD/alpha, using binutils 2.14 or later is required to build
--- 1977,1988 ----
dsp16xx
=======
! A port to the AT&T DSP1610 family of processors.
*-*-freebsd*
============
! The version of binutils installed in `/usr/bin' probably works with
this release of GCC. However, on FreeBSD 4, bootstrapping against the
latest FSF binutils is known to improve overall testsuite results; and,
on FreeBSD/alpha, using binutils 2.14 or later is required to build
*************** least, both boehm-gc and libffi.
*** 2022,2028 ****
h8300-hms
=========
! Renesas H8/300 series of processors.
Please have a look at the binaries page.
--- 2028,2034 ----
h8300-hms
=========
! Renesas H8/300 series of processors.
Please have a look at the binaries page.
*************** are no longer a multiple of 2 bytes.
*** 2034,2040 ****
hppa*-hp-hpux*
==============
! Support for HP-UX version 9 and older was discontinued in GCC 3.4.
We _highly_ recommend using gas/binutils 2.8 or newer on all hppa
platforms; you may encounter a variety of problems when using the HP
--- 2040,2046 ----
hppa*-hp-hpux*
==============
! Support for HP-UX version 9 and older was discontinued in GCC 3.4.
We _highly_ recommend using gas/binutils 2.8 or newer on all hppa
platforms; you may encounter a variety of problems when using the HP
*************** default scheduling model is desired.
*** 2066,2072 ****
hppa*-hp-hpux10
===============
! For hpux10.20, we _highly_ recommend you pick up the latest sed patch
`PHCO_19798' from HP. HP has two sites which provide patches free of
charge:
--- 2072,2078 ----
hppa*-hp-hpux10
===============
! For hpux10.20, we _highly_ recommend you pick up the latest sed patch
`PHCO_19798' from HP. HP has two sites which provide patches free of
charge:
*************** failure from `make bootstrap'.
*** 2084,2091 ****
hppa*-hp-hpux11
===============
! GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and
! cannot be used to compile GCC 3.0 and up.
Refer to binaries for information about obtaining precompiled GCC
binaries for HP-UX. Precompiled binaries must be obtained to build the
--- 2090,2097 ----
hppa*-hp-hpux11
===============
! GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot
! be used to compile GCC 3.0 and up.
Refer to binaries for information about obtaining precompiled GCC
binaries for HP-UX. Precompiled binaries must be obtained to build the
*************** supported.
*** 2212,2238 ****
i370-*-*
========
! This port is very preliminary and has many known bugs. We hope to
! have a higher-quality port for this machine soon.
*-*-linux-gnu
=============
! Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present
in glibc 2.2.5 and later. More information is available in the
libstdc++-v3 documentation.
i?86-*-linux*aout
=================
! Use this configuration to generate `a.out' binaries on Linux-based
! GNU systems. This configuration is being superseded.
i?86-*-linux*
=============
! As of GCC 3.3, binutils 2.13.1 or later is required for this
! platform. See bug 10877 for more information.
If you receive Signal 11 errors when building on GNU/Linux, then it
is possible you have a hardware problem. Further information on this
--- 2218,2244 ----
i370-*-*
========
! This port is very preliminary and has many known bugs. We hope to have
! a higher-quality port for this machine soon.
*-*-linux-gnu
=============
! Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present
in glibc 2.2.5 and later. More information is available in the
libstdc++-v3 documentation.
i?86-*-linux*aout
=================
! Use this configuration to generate `a.out' binaries on Linux-based GNU
! systems. This configuration is being superseded.
i?86-*-linux*
=============
! As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
! See bug 10877 for more information.
If you receive Signal 11 errors when building on GNU/Linux, then it
is possible you have a hardware problem. Further information on this
*************** and adding a line:
*** 2251,2258 ****
i?86-*-sco3.2v5*
================
! Use this for the SCO OpenServer Release 5 family of operating
! systems.
Unlike earlier versions of GCC, the ability to generate COFF with
this target is no longer provided.
--- 2257,2263 ----
i?86-*-sco3.2v5*
================
! Use this for the SCO OpenServer Release 5 family of operating systems.
Unlike earlier versions of GCC, the ability to generate COFF with
this target is no longer provided.
*************** of GCC, version 2.95.3. It is useful fo
*** 2292,2299 ****
i?86-*-udk
==========
! This target emulates the SCO Universal Development Kit and requires
! that package be installed. (If it is installed, you will have a
`/udk/usr/ccs/bin/cc' file present.) It's very much like the
`i?86-*-unixware7*' target but is meant to be used when hosting on a
system where UDK isn't the default compiler such as OpenServer 5 or
--- 2297,2304 ----
i?86-*-udk
==========
! This target emulates the SCO Universal Development Kit and requires that
! package be installed. (If it is installed, you will have a
`/udk/usr/ccs/bin/cc' file present.) It's very much like the
`i?86-*-unixware7*' target but is meant to be used when hosting on a
system where UDK isn't the default compiler such as OpenServer 5 or
*************** tools you may have installed.
*** 2322,2328 ****
ia64-*-linux
============
! IA-64 processor (also known as IPF, or Itanium Processor Family)
running GNU/Linux.
If you are using the installed system libunwind library with
--- 2327,2333 ----
ia64-*-linux
============
! IA-64 processor (also known as IPF, or Itanium Processor Family)
running GNU/Linux.
If you are using the installed system libunwind library with
*************** more major ABI changes are expected.
*** 2340,2348 ****
ia64-*-hpux*
============
! Building GCC on this target requires the GNU Assembler. The bundled
! HP assembler will not work. To prevent GCC from using the wrong
! assembler, the option `--with-gnu-as' may be necessary.
The GCC libunwind library has not been ported to HPUX. This means
that for GCC versions 3.2.3 and earlier, `--enable-libunwind-exceptions'
--- 2345,2353 ----
ia64-*-hpux*
============
! Building GCC on this target requires the GNU Assembler. The bundled HP
! assembler will not work. To prevent GCC from using the wrong assembler,
! the option `--with-gnu-as' may be necessary.
The GCC libunwind library has not been ported to HPUX. This means
that for GCC versions 3.2.3 and earlier, `--enable-libunwind-exceptions'
*************** the system libunwind library will always
*** 2353,2359 ****
*-ibm-aix*
==========
! Support for AIX version 3 and older was discontinued in GCC 3.4.
AIX Make frequently has problems with GCC makefiles. GNU Make
3.79.1 or newer is recommended to build on this platform.
--- 2358,2364 ----
*-ibm-aix*
==========
! Support for AIX version 3 and older was discontinued in GCC 3.4.
AIX Make frequently has problems with GCC makefiles. GNU Make
3.79.1 or newer is recommended to build on this platform.
*************** using the configure option `--with-cpu-C
*** 2466,2472 ****
ip2k-*-elf
==========
! Ubicom IP2022 micro controller. This configuration is intended for
embedded systems. There are no standard Unix configurations.
Use `configure --target=ip2k-elf --enable-languages=c' to configure
--- 2471,2477 ----
ip2k-*-elf
==========
! Ubicom IP2022 micro controller. This configuration is intended for
embedded systems. There are no standard Unix configurations.
Use `configure --target=ip2k-elf --enable-languages=c' to configure
*************** GCC.
*** 2475,2507 ****
iq2000-*-elf
============
! Vitesse IQ2000 processors. These are used in embedded applications.
There are no standard Unix configurations.
m32r-*-elf
==========
! Renesas M32R processor. This configuration is intended for embedded
systems.
m6811-elf
=========
! Motorola 68HC11 family micro controllers. These are used in embedded
applications. There are no standard Unix configurations.
m6812-elf
=========
! Motorola 68HC12 family micro controllers. These are used in embedded
applications. There are no standard Unix configurations.
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 bug
! manifests itself during the first stage of compilation, while building
`libgcc2.a':
_floatdisf
--- 2480,2512 ----
iq2000-*-elf
============
! Vitesse IQ2000 processors. These are used in embedded applications.
There are no standard Unix configurations.
m32r-*-elf
==========
! Renesas M32R processor. This configuration is intended for embedded
systems.
m6811-elf
=========
! Motorola 68HC11 family micro controllers. These are used in embedded
applications. There are no standard Unix configurations.
m6812-elf
=========
! Motorola 68HC12 family micro controllers. These are used in embedded
applications. There are no standard Unix configurations.
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 bug manifests
! itself during the first stage of compilation, while building
`libgcc2.a':
_floatdisf
*************** script to look like:
*** 2543,2549 ****
mips-*-*
========
! If on a MIPS system you get an error message saying "does not have gp
sections for all it's [sic] sectons [sic]", don't worry about it. This
happens whenever you use GAS with the MIPS linker, but there is not
really anything wrong, and it is okay to use the output file. You can
--- 2548,2554 ----
mips-*-*
========
! If on a MIPS system you get an error message saying "does not have gp
sections for all it's [sic] sectons [sic]", don't worry about it. This
happens whenever you use GAS with the MIPS linker, but there is not
really anything wrong, and it is okay to use the output file. You can
*************** linker.
*** 2568,2576 ****
mips-sgi-irix5
==============
! In order to compile GCC on an SGI running IRIX 5, the
! `compiler_dev.hdr' subsystem must be installed from the IDO CD-ROM
! supplied by SGI. It is also available for download from
`ftp://ftp.sgi.com/sgi/IRIX5.3/iris-development-option-5.3.tardist'.
If you use the MIPS C compiler to bootstrap, it may be necessary to
--- 2573,2581 ----
mips-sgi-irix5
==============
! In order to compile GCC on an SGI running IRIX 5, the `compiler_dev.hdr'
! subsystem must be installed from the IDO CD-ROM supplied by SGI. It is
! also available for download from
`ftp://ftp.sgi.com/sgi/IRIX5.3/iris-development-option-5.3.tardist'.
If you use the MIPS C compiler to bootstrap, it may be necessary to
*************** This problem can be avoided by running t
*** 2594,2602 ****
mips-sgi-irix6
==============
! If you are using SGI's MIPSpro `cc' as your bootstrap compiler, you
! must ensure that the N32 ABI is in use. To test this, compile a simple
! C file with `cc' and then run `file' on the resulting object file. The
output should look like:
test.o: ELF N32 MSB ...
--- 2599,2607 ----
mips-sgi-irix6
==============
! If you are using SGI's MIPSpro `cc' as your bootstrap compiler, you must
! ensure that the N32 ABI is in use. To test this, compile a simple C
! file with `cc' and then run `file' on the resulting object file. The
output should look like:
test.o: ELF N32 MSB ...
*************** on IRIX platforms.
*** 2660,2672 ****
powerpc-*-*
===========
! You can specify a default version for the `-mcpu=CPU_TYPE' switch by
using the configure option `--with-cpu-CPU_TYPE'.
powerpc-*-darwin*
=================
! PowerPC running Darwin (Mac OS X kernel).
Pre-installed versions of Mac OS X may not include any developer
tools, meaning that you will not be able to build GCC from source. Tool
--- 2665,2677 ----
powerpc-*-*
===========
! You can specify a default version for the `-mcpu=CPU_TYPE' switch by
using the configure option `--with-cpu-CPU_TYPE'.
powerpc-*-darwin*
=================
! PowerPC running Darwin (Mac OS X kernel).
Pre-installed versions of Mac OS X may not include any developer
tools, meaning that you will not be able to build GCC from source. Tool
*************** are generally specific to Mac programmin
*** 2689,2757 ****
powerpc-*-elf, powerpc-*-sysv4
==============================
! PowerPC system in big endian mode, running System V.4.
powerpc*-*-linux-gnu*
=====================
! You will need binutils 2.15 or newer for a working GCC.
powerpc-*-netbsd*
=================
! PowerPC system in big endian mode running NetBSD. To build the
documentation you will need Texinfo version 4.2 (NetBSD 1.5.1 included
Texinfo version 3.12).
powerpc-*-eabisim
=================
! Embedded PowerPC system in big endian mode for use in running under
! the PSIM simulator.
powerpc-*-eabi
==============
! Embedded PowerPC system in big endian mode.
powerpcle-*-elf, powerpcle-*-sysv4
==================================
! PowerPC system in little endian mode, running System V.4.
powerpcle-*-eabisim
===================
! Embedded PowerPC system in little endian mode for use in running
! under the PSIM simulator.
powerpcle-*-eabi
================
! Embedded PowerPC system in little endian mode.
s390-*-linux*
=============
! S/390 system running GNU/Linux for S/390.
s390x-*-linux*
==============
! zSeries system (64-bit) running GNU/Linux for zSeries.
s390x-ibm-tpf*
==============
! zSeries system (64-bit) running TPF. This platform is supported as
cross-compilation target only.
*-*-solaris2*
=============
! Sun does not ship a C compiler with Solaris 2. To bootstrap and
! install GCC you first have to install a pre-built compiler, see the
! binaries page for details.
The Solaris 2 `/bin/sh' will often fail to configure `libstdc++-v3',
`boehm-gc' or `libjava'. We therefore recommend to use the following
--- 2694,2762 ----
powerpc-*-elf, powerpc-*-sysv4
==============================
! PowerPC system in big endian mode, running System V.4.
powerpc*-*-linux-gnu*
=====================
! You will need binutils 2.15 or newer for a working GCC.
powerpc-*-netbsd*
=================
! PowerPC system in big endian mode running NetBSD. To build the
documentation you will need Texinfo version 4.2 (NetBSD 1.5.1 included
Texinfo version 3.12).
powerpc-*-eabisim
=================
! Embedded PowerPC system in big endian mode for use in running under the
! PSIM simulator.
powerpc-*-eabi
==============
! Embedded PowerPC system in big endian mode.
powerpcle-*-elf, powerpcle-*-sysv4
==================================
! PowerPC system in little endian mode, running System V.4.
powerpcle-*-eabisim
===================
! Embedded PowerPC system in little endian mode for use in running under
! the PSIM simulator.
powerpcle-*-eabi
================
! Embedded PowerPC system in little endian mode.
s390-*-linux*
=============
! S/390 system running GNU/Linux for S/390.
s390x-*-linux*
==============
! zSeries system (64-bit) running GNU/Linux for zSeries.
s390x-ibm-tpf*
==============
! zSeries system (64-bit) running TPF. This platform is supported as
cross-compilation target only.
*-*-solaris2*
=============
! Sun does not ship a C compiler with Solaris 2. To bootstrap and install
! GCC you first have to install a pre-built compiler, see the binaries
! page for details.
The Solaris 2 `/bin/sh' will often fail to configure `libstdc++-v3',
`boehm-gc' or `libjava'. We therefore recommend to use the following
*************** SPARC, 117172-11 or newer for Intel) tha
*** 2825,2831 ****
sparc-sun-solaris2*
===================
! When GCC is configured to use binutils 2.11.2 or later the binaries
produced are smaller than the ones produced using Sun's native tools;
this difference is quite significant for binaries containing debugging
information.
--- 2830,2836 ----
sparc-sun-solaris2*
===================
! When GCC is configured to use binutils 2.11.2 or later the binaries
produced are smaller than the ones produced using Sun's native tools;
this difference is quite significant for binaries containing debugging
information.
*************** by the Sun compiler. This is Sun bug 49
*** 2866,2876 ****
patch 112760-07.
GCC 3.4 changed the default debugging format from STABS to DWARF-2
! for 32-bit code on Solaris 7 and later. If you are using the Sun
! assembler, this change apparently runs afoul of Sun bug 4910101, for
! which (as of 2004-05-23) there is no fix. A symptom of the problem is
! that you cannot compile C++ programs like `groff' 1.19.1 without
! getting messages similar to the following:
ld: warning: relocation error: R_SPARC_UA32: ...
external symbolic relocation against non-allocatable section
--- 2871,2882 ----
patch 112760-07.
GCC 3.4 changed the default debugging format from STABS to DWARF-2
! for 32-bit code on Solaris 7 and later. If you use the Sun assembler,
! this change apparently runs afoul of Sun bug 4910101 (which is
! referenced as a x86-only problem by Sun, probably because they do not
! use DWARF-2). A symptom of the problem is that you cannot compile C++
! programs like `groff' 1.19.1 without getting messages similar to the
! following:
ld: warning: relocation error: R_SPARC_UA32: ...
external symbolic relocation against non-allocatable section
*************** plain `-g'.
*** 2882,2892 ****
sparc-sun-solaris2.7
====================
! Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug
! in the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8
! and later, including all EGCS releases. Sun formerly recommended
! 107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
! recommend it only for people who use Sun's compilers.
Here are some workarounds to this problem:
* Do not install Sun patch 107058-01 until after Sun releases a
--- 2888,2898 ----
sparc-sun-solaris2.7
====================
! Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in
! the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 and
! later, including all EGCS releases. Sun formerly recommended 107058-01
! for all Solaris 7 users, but around 1999-09-01 it started to recommend
! it only for people who use Sun's compilers.
Here are some workarounds to this problem:
* Do not install Sun patch 107058-01 until after Sun releases a
*************** shared version of libgcc. A typical erro
*** 2924,2938 ****
sparc-*-linux*
==============
! GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
! or newer on this platform. All earlier binutils and glibc releases
mishandled unaligned relocations on `sparc-*-*' targets.
sparc64-*-solaris2*
===================
! The following compiler flags must be specified in the configure step
! in order to bootstrap this target with the Sun compiler:
% CC="cc -xildoff -xarch=v9" SRCDIR/configure [OPTIONS] [TARGET]
--- 2930,2944 ----
sparc-*-linux*
==============
! GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 or
! newer on this platform. All earlier binutils and glibc releases
mishandled unaligned relocations on `sparc-*-*' targets.
sparc64-*-solaris2*
===================
! The following compiler flags must be specified in the configure step in
! order to bootstrap this target with the Sun compiler:
% CC="cc -xildoff -xarch=v9" SRCDIR/configure [OPTIONS] [TARGET]
*************** specifies the SPARC-V9 architecture to t
*** 2942,2953 ****
sparcv9-*-solaris2*
===================
! This is a synonym for sparc64-*-solaris2*.
*-*-sysv*
=========
! On System V release 3, you may get this error message while linking:
ld fatal: failed to write symbol name SOMETHING
in strings table for file WHATEVER
--- 2948,2959 ----
sparcv9-*-solaris2*
===================
! This is a synonym for sparc64-*-solaris2*.
*-*-sysv*
=========
! On System V release 3, you may get this error message while linking:
ld fatal: failed to write symbol name SOMETHING
in strings table for file WHATEVER
*************** which have bugs.
*** 2974,2986 ****
vax-dec-ultrix
==============
! Don't try compiling with VAX C (`vcc'). It produces incorrect code
! in some cases (for example, when `alloca' is used).
*-*-vxworks*
============
! Support for VxWorks is in flux. At present GCC supports _only_ the
very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
We welcome patches for other architectures supported by VxWorks 5.5.
Support for VxWorks AE would also be welcome; we believe this is merely
--- 2980,2992 ----
vax-dec-ultrix
==============
! Don't try compiling with VAX C (`vcc'). It produces incorrect code in
! some cases (for example, when `alloca' is used).
*-*-vxworks*
============
! Support for VxWorks is in flux. At present GCC supports _only_ the
very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
We welcome patches for other architectures supported by VxWorks 5.5.
Support for VxWorks AE would also be welcome; we believe this is merely
*************** VxWorks will incorporate this module.)
*** 3011,3027 ****
x86_64-*-*, amd64-*-*
=====================
! GCC supports the x86-64 architecture implemented by the AMD64
! processor (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD
! and NetBSD. On GNU/Linux the default is a bi-arch compiler which is
! able to generate both 64-bit x86-64 and 32-bit x86 code (via the `-m32'
! switch).
xtensa-*-elf
============
! This target is intended for embedded Xtensa systems using the
! `newlib' C library. It uses ELF but does not support shared objects.
Designed-defined instructions specified via the Tensilica Instruction
Extension (TIE) language are only supported through inline assembly.
--- 3017,3032 ----
x86_64-*-*, amd64-*-*
=====================
! GCC supports the x86-64 architecture implemented by the AMD64 processor
! (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
! On GNU/Linux the default is a bi-arch compiler which is able to generate
! both 64-bit x86-64 and 32-bit x86 code (via the `-m32' switch).
xtensa-*-elf
============
! This target is intended for embedded Xtensa systems using the `newlib'
! C library. It uses ELF but does not support shared objects.
Designed-defined instructions specified via the Tensilica Instruction
Extension (TIE) language are only supported through inline assembly.
*************** replace the default header file.
*** 3035,3041 ****
xtensa-*-linux*
===============
! This target is for Xtensa systems running GNU/Linux. It supports ELF
shared objects and the GNU C library (glibc). It also generates
position-independent code (PIC) regardless of whether the `-fpic' or
`-fPIC' options are used. In other respects, this target is the same
--- 3040,3046 ----
xtensa-*-linux*
===============
! This target is for Xtensa systems running GNU/Linux. It supports ELF
shared objects and the GNU C library (glibc). It also generates
position-independent code (PIC) regardless of whether the `-fpic' or
`-fPIC' options are used. In other respects, this target is the same
*************** as the `xtensa-*-elf' target.
*** 3044,3050 ****
Microsoft Windows (32-bit)
==========================
! A port of GCC 2.95.2 and 3.x is included with the Cygwin environment.
Current (as of early 2001) snapshots of GCC will build under Cygwin
without modification.
--- 3049,3055 ----
Microsoft Windows (32-bit)
==========================
! A port of GCC 2.95.2 and 3.x is included with the Cygwin environment.
Current (as of early 2001) snapshots of GCC will build under Cygwin
without modification.
*************** are no plans to make it do so.
*** 3055,3074 ****
OS/2
====
! GCC does not currently support OS/2. However, Andrew Zabolotny has
! been working on a generic OS/2 port with pgcc. The current code can be
! found at http://www.goof.com/pcg/os2/.
!
! An older copy of GCC 2.8.1 is included with the EMX tools available
! at ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/.
Older systems
=============
! GCC contains support files for many older (1980s and early 1990s)
! Unix variants. For the most part, support for these systems has not
! been deliberately removed, but it has not been maintained for several
! years and may suffer from bitrot.
Starting with GCC 3.1, each release has a list of "obsoleted"
systems. Support for these systems is still present in that release,
--- 3060,3076 ----
OS/2
====
! GCC does not currently support OS/2. However, Andrew Zabolotny has been
! working on a generic OS/2 port with pgcc. The current code can be found
! at http://www.goof.com/pcg/os2/.
Older systems
=============
! GCC contains support files for many older (1980s and early 1990s) Unix
! variants. For the most part, support for these systems has not been
! deliberately removed, but it has not been maintained for several years
! and may suffer from bitrot.
Starting with GCC 3.1, each release has a list of "obsoleted"
systems. Support for these systems is still present in that release,
*************** the GCC texinfo manual.
*** 3107,3121 ****
all ELF targets (SVR4, Solaris 2, etc.)
=======================================
! C++ support is significantly better on ELF targets if you use the
! GNU linker; duplicate copies of inlines, vtables and template
instantiations will be discarded automatically.
File: gccinstall.info, Node: Old, Next: GNU Free Documentation License, Prev: Specific, Up: Top
! Old installation documentation
! ******************************
Note most of this information is out of date and superseded by the
previous chapters of this manual. It is provided for historical
--- 3109,3123 ----
all ELF targets (SVR4, Solaris 2, etc.)
=======================================
! C++ support is significantly better on ELF targets if you use the GNU
! linker; duplicate copies of inlines, vtables and template
instantiations will be discarded automatically.
File: gccinstall.info, Node: Old, Next: GNU Free Documentation License, Prev: Specific, Up: Top
! 10 Old installation documentation
! *********************************
Note most of this information is out of date and superseded by the
previous chapters of this manual. It is provided for historical
*************** main manual.
*** 3188,3195 ****
File: gccinstall.info, Node: Configurations, Up: Old
! Configurations Supported by GCC
! ===============================
Here are the possible CPU types:
--- 3190,3197 ----
File: gccinstall.info, Node: Configurations, Up: Old
! 10.1 Configurations Supported by GCC
! ====================================
Here are the possible CPU types:
*************** GNU Free Documentation License
*** 3275,3283 ****
******************************
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
--- 3277,3286 ----
******************************
Version 1.2, November 2002
+
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 3671,3677 ****
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
--- 3674,3680 ----
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
*************** File: gccinstall.info, Node: Concept In
*** 3705,3815 ****
Concept Index
*************
* Menu:
! * Binaries: Binaries.
! * Configuration: Configuration.
! * configurations supported by GCC: Configurations.
* Downloading GCC: Downloading the source.
* Downloading the Source: Downloading the source.
* FDL, GNU Free Documentation License: GNU Free Documentation License.
! * Host specific installation: Specific.
! * Installing GCC: Binaries: Binaries.
! * Installing GCC: Building: Building.
! * Installing GCC: Configuration: Configuration.
! * Installing GCC: Testing: Testing.
! * Prerequisites: Prerequisites.
! * Specific: Specific.
! * Specific installation notes: Specific.
! * Target specific installation: Specific.
! * Target specific installation notes: Specific.
! * Testing: Testing.
! * Testsuite: Testing.
Tag Table:
! Node: Top1904
! Node: Installing GCC2462
! Node: Prerequisites3973
! Node: Downloading the source10037
! Node: Configuration11659
! Ref: with-gnu-as24718
! Ref: with-as25990
! Ref: with-gnu-ld26995
! Node: Building48037
! Node: Testing58985
! Node: Final install66842
! Node: Binaries71543
! Node: Specific73354
! Ref: alpha-x-x73637
! Ref: alpha-dec-osf74129
! Ref: alphaev5-cray-unicosmk77709
! Ref: arc-x-elf78659
! Ref: arm-x-elf78762
! Ref: xscale-x-x78783
! Ref: arm-x-coff79022
! Ref: arm-x-aout79227
! Ref: avr79352
! Ref: c4x80035
! Ref: cris80636
! Ref: dos81621
! Ref: dsp16xx81947
! Ref: x-x-freebsd82017
! Ref: h8300-hms84403
Ref: hppa-hp-hpux84758
! Ref: hppa-hp-hpux1086084
! Ref: hppa-hp-hpux1186743
! Ref: i370-x-x93607
! Ref: x-x-linux-gnu93747
! Ref: ix86-x-linuxaout93942
! Ref: ix86-x-linux94104
! Ref: ix86-x-sco32v594849
! Ref: ix86-x-udk97021
! Ref: ia64-x-linux98388
! Ref: ia64-x-hpux99161
! Ref: x-ibm-aix99715
! Ref: ip2k-x-elf105388
! Ref: iq2000-x-elf105622
! Ref: m32r-x-elf105765
! Ref: m6811-elf105870
! Ref: m6812-elf106023
! Ref: m68k-hp-hpux106176
! Ref: mips-x-x107918
! Ref: mips-sgi-irix5109063
! Ref: mips-sgi-irix6110035
! Ref: powerpc-x-x112859
! Ref: powerpc-x-darwin113007
! Ref: powerpc-x-elf113960
! Ref: powerpc-x-linux-gnu114082
! Ref: powerpc-x-netbsd114187
! Ref: powerpc-x-eabisim114386
! Ref: powerpc-x-eabi114515
! Ref: powerpcle-x-elf114594
! Ref: powerpcle-x-eabisim114727
! Ref: powerpcle-x-eabi114863
! Ref: s390-x-linux114949
! Ref: s390x-x-linux115024
! Ref: s390x-ibm-tpf115114
! Ref: x-x-solaris2115248
! Ref: sparc-sun-solaris2118834
! Ref: sparc-sun-solaris27121522
! Ref: sparc-x-linux123595
! Ref: sparc64-x-solaris2123823
! Ref: sparcv9-x-solaris2124202
! Ref: x-x-sysv124290
! Ref: vax-dec-ultrix125254
! Ref: x-x-vxworks125409
! Ref: x86-64-x-x126934
! Ref: xtensa-x-elf127266
! Ref: xtensa-x-linux127938
! Ref: windows128279
! Ref: os2128606
! Ref: older128932
! Ref: elf131060
! Node: Old131321
! Node: Configurations134452
! Node: GNU Free Documentation License138424
! Node: Concept Index160837
End Tag Table
--- 3708,3822 ----
Concept Index
*************
+ [index ]
* Menu:
! * Binaries: Binaries. (line 6)
! * Configuration: Configuration. (line 6)
! * configurations supported by GCC: Configurations. (line 6)
* Downloading GCC: Downloading the source.
+ (line 6)
* Downloading the Source: Downloading the source.
+ (line 6)
* FDL, GNU Free Documentation License: GNU Free Documentation License.
! (line 6)
! * Host specific installation: Specific. (line 6)
! * Installing GCC: Binaries: Binaries. (line 6)
! * Installing GCC: Building: Building. (line 6)
! * Installing GCC: Configuration: Configuration. (line 6)
! * Installing GCC: Testing: Testing. (line 6)
! * Prerequisites: Prerequisites. (line 6)
! * Specific: Specific. (line 6)
! * Specific installation notes: Specific. (line 6)
! * Target specific installation: Specific. (line 6)
! * Target specific installation notes: Specific. (line 6)
! * Testing: Testing. (line 6)
! * Testsuite: Testing. (line 6)
Tag Table:
! Node: Top1897
! Node: Installing GCC2455
! Node: Prerequisites3970
! Node: Downloading the source10040
! Node: Configuration11666
! Ref: with-gnu-as24727
! Ref: with-as25999
! Ref: with-gnu-ld27004
! Node: Building48039
! Node: Testing59015
! Node: Final install66901
! Node: Binaries71608
! Node: Specific73388
! Ref: alpha-x-x73675
! Ref: alpha-dec-osf74164
! Ref: alphaev5-cray-unicosmk77741
! Ref: arc-x-elf78688
! Ref: arm-x-elf78788
! Ref: xscale-x-x78809
! Ref: arm-x-coff79045
! Ref: arm-x-aout79247
! Ref: avr79369
! Ref: c4x80053
! Ref: cris80651
! Ref: dos81633
! Ref: dsp16xx81956
! Ref: x-x-freebsd82023
! Ref: h8300-hms84406
Ref: hppa-hp-hpux84758
! Ref: hppa-hp-hpux1086081
! Ref: hppa-hp-hpux1186737
! Ref: i370-x-x93598
! Ref: x-x-linux-gnu93735
! Ref: ix86-x-linuxaout93927
! Ref: ix86-x-linux94086
! Ref: ix86-x-sco32v594827
! Ref: ix86-x-udk96996
! Ref: ia64-x-linux98360
! Ref: ia64-x-hpux99130
! Ref: x-ibm-aix99681
! Ref: ip2k-x-elf105351
! Ref: iq2000-x-elf105582
! Ref: m32r-x-elf105722
! Ref: m6811-elf105824
! Ref: m6812-elf105974
! Ref: m68k-hp-hpux106124
! Ref: mips-x-x107863
! Ref: mips-sgi-irix5109005
! Ref: mips-sgi-irix6109974
! Ref: powerpc-x-x112795
! Ref: powerpc-x-darwin112940
! Ref: powerpc-x-elf113890
! Ref: powerpc-x-linux-gnu114009
! Ref: powerpc-x-netbsd114111
! Ref: powerpc-x-eabisim114307
! Ref: powerpc-x-eabi114433
! Ref: powerpcle-x-elf114509
! Ref: powerpcle-x-eabisim114639
! Ref: powerpcle-x-eabi114772
! Ref: s390-x-linux114855
! Ref: s390x-x-linux114927
! Ref: s390x-ibm-tpf115014
! Ref: x-x-solaris2115145
! Ref: sparc-sun-solaris2118728
! Ref: sparc-sun-solaris27121454
! Ref: sparc-x-linux123524
! Ref: sparc64-x-solaris2123749
! Ref: sparcv9-x-solaris2124125
! Ref: x-x-sysv124210
! Ref: vax-dec-ultrix125171
! Ref: x-x-vxworks125323
! Ref: x86-64-x-x126845
! Ref: xtensa-x-elf127173
! Ref: xtensa-x-linux127842
! Ref: windows128180
! Ref: os2128504
! Ref: older128695
! Ref: elf130820
! Node: Old131078
! Node: Configurations134215
! Node: GNU Free Documentation License138197
! Node: Concept Index160603
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/gccint.info gcc-3.4.5/gcc/doc/gccint.info
*** gcc-3.4.4/gcc/doc/gccint.info 2005-05-19 10:02:14.000000000 +0000
--- gcc-3.4.5/gcc/doc/gccint.info 2005-12-01 03:56:57.000000000 +0000
***************
*** 1,7 ****
! This is doc/gccint.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/doc/gccint.texi.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 1,7 ----
! This is doc/gccint.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/doc/gccint.texi.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled "GNU Fr
*** 21,33 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* gccint: (gccint). Internals of the GNU Compiler Collection.
END-INFO-DIR-ENTRY
This file documents the internals of the GNU compilers.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
--- 21,34 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* gccint: (gccint). Internals of the GNU Compiler Collection.
END-INFO-DIR-ENTRY
This file documents the internals of the GNU compilers.
! Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled "GNU Fr
*** 47,60 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
File: gccint.info, Node: Top, Next: Contributing, Up: (DIR)
Introduction
************
! This manual documents the internals of the GNU compilers, including
! how to port them to new targets and some information about how to write
front ends for new languages. It corresponds to GCC version 3.4.4.
The use of the GNU compilers is documented in a separate manual. *Note
Introduction: (gcc)Top.
--- 48,62 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+
File: gccint.info, Node: Top, Next: Contributing, Up: (DIR)
Introduction
************
! This manual documents the internals of the GNU compilers, including how
! to port them to new targets and some information about how to write
front ends for new languages. It corresponds to GCC version 3.4.4.
The use of the GNU compilers is documented in a separate manual. *Note
Introduction: (gcc)Top.
*************** GCC.
*** 105,115 ****
File: gccint.info, Node: Contributing, Next: Portability, Prev: Top, Up: Top
! Contributing to GCC Development
! *******************************
! If you would like to help pretest GCC releases to assure they work
! well, current development sources are available by CVS (see
`http://gcc.gnu.org/cvs.html'). Source and binary snapshots are also
available for FTP; see `http://gcc.gnu.org/snapshots.html'.
--- 107,117 ----
File: gccint.info, Node: Contributing, Next: Portability, Prev: Top, Up: Top
! 1 Contributing to GCC Development
! *********************************
! If you would like to help pretest GCC releases to assure they work well,
! current development sources are available by CVS (see
`http://gcc.gnu.org/cvs.html'). Source and binary snapshots are also
available for FTP; see `http://gcc.gnu.org/snapshots.html'.
*************** duplication of effort. Suggested projec
*** 126,136 ****
File: gccint.info, Node: Portability, Next: Interface, Prev: Contributing, Up: Top
! GCC and Portability
! *******************
! GCC itself aims to be portable to any machine where `int' is at least
! a 32-bit type. It aims to target machines with a flat (non-segmented)
byte addressed data address space (the code address space can be
separate). Target ABIs may have 8, 16, 32 or 64-bit `int' type. `char'
can be wider than 8 bits.
--- 128,138 ----
File: gccint.info, Node: Portability, Next: Interface, Prev: Contributing, Up: Top
! 2 GCC and Portability
! *********************
! GCC itself aims to be portable to any machine where `int' is at least a
! 32-bit type. It aims to target machines with a flat (non-segmented)
byte addressed data address space (the code address space can be
separate). Target ABIs may have 8, 16, 32 or 64-bit `int' type. `char'
can be wider than 8 bits.
*************** affect only the target machines that nee
*** 161,171 ****
File: gccint.info, Node: Interface, Next: Libgcc, Prev: Portability, Up: Top
! Interfacing to GCC Output
! *************************
! GCC is normally configured to use the same function calling
! convention normally in use on the target system. This is done with the
machine-description macros described (*note Target Macros::).
However, returning of structure and union values is done differently
--- 163,173 ----
File: gccint.info, Node: Interface, Next: Libgcc, Prev: Portability, Up: Top
! 3 Interfacing to GCC Output
! ***************************
! GCC is normally configured to use the same function calling convention
! normally in use on the target system. This is done with the
machine-description macros described (*note Target Macros::).
However, returning of structure and union values is done differently
*************** cannot go in a register:
*** 232,244 ****
File: gccint.info, Node: Libgcc, Next: Languages, Prev: Interface, Up: Top
! The GCC low-level runtime library
! *********************************
! GCC provides a low-level runtime library, `libgcc.a' or
! `libgcc_s.so.1' on some platforms. GCC generates calls to routines in
! this library automatically, whenever it needs to perform some operation
! that is too complicated to emit inline code for.
Most of the routines in `libgcc' handle arithmetic operations that
the target processor cannot perform directly. This includes integer
--- 234,246 ----
File: gccint.info, Node: Libgcc, Next: Languages, Prev: Interface, Up: Top
! 4 The GCC low-level runtime library
! ***********************************
! GCC provides a low-level runtime library, `libgcc.a' or `libgcc_s.so.1'
! on some platforms. GCC generates calls to routines in this library
! automatically, whenever it needs to perform some operation that is too
! complicated to emit inline code for.
Most of the routines in `libgcc' handle arithmetic operations that
the target processor cannot perform directly. This includes integer
*************** Similarly, the integer types `int' and `
*** 273,443 ****
File: gccint.info, Node: Integer library routines, Next: Soft float library routines, Up: Libgcc
! Routines for integer arithmetic
! ===============================
! The integer arithmetic routines are used on platforms that don't
! provide hardware support for arithmetic operations on some modes.
! Arithmetic functions
! --------------------
! - Runtime Function: int __ashlsi3 (int A, int B)
! - Runtime Function: long __ashldi3 (long A, int B)
! - Runtime Function: long long __ashlti3 (long long A, int B)
These functions return the result of shifting A left by B bits.
! - Runtime Function: int __ashrsi3 (int A, int B)
! - Runtime Function: long __ashrdi3 (long A, int B)
! - Runtime Function: long long __ashrti3 (long long A, int B)
These functions return the result of arithmetically shifting A
right by B bits.
! - Runtime Function: int __divsi3 (int A, int B)
! - Runtime Function: long __divdi3 (long A, long B)
! - Runtime Function: long long __divti3 (long long A, long long B)
These functions return the quotient of the signed division of A and
B.
! - Runtime Function: int __lshrsi3 (int A, int B)
! - Runtime Function: long __lshrdi3 (long A, int B)
! - Runtime Function: long long __lshrti3 (long long A, int B)
These functions return the result of logically shifting A right by
B bits.
! - Runtime Function: int __modsi3 (int A, int B)
! - Runtime Function: long __moddi3 (long A, long B)
! - Runtime Function: long long __modti3 (long long A, long long B)
These functions return the remainder of the signed division of A
and B.
! - Runtime Function: int __mulsi3 (int A, int B)
! - Runtime Function: long __muldi3 (long A, long B)
! - Runtime Function: long long __multi3 (long long A, long long B)
These functions return the product of A and B.
! - Runtime Function: long __negdi2 (long A)
! - Runtime Function: long long __negti2 (long long A)
These functions return the negation of A.
! - Runtime Function: unsigned int __udivsi3 (unsigned int A, unsigned
int B)
! - Runtime Function: unsigned long __udivdi3 (unsigned long A, unsigned
! long B)
! - Runtime Function: unsigned long long __udivti3 (unsigned long long
A, unsigned long long B)
These functions return the quotient of the unsigned division of A
and B.
! - Runtime Function: unsigned long __udivmoddi3 (unsigned long A,
unsigned long B, unsigned long *C)
! - Runtime Function: unsigned long long __udivti3 (unsigned long long
A, unsigned long long B, unsigned long long *C)
These functions calculate both the quotient and remainder of the
unsigned division of A and B. The return value is the quotient,
and the remainder is placed in variable pointed to by C.
! - Runtime Function: unsigned int __umodsi3 (unsigned int A, unsigned
int B)
! - Runtime Function: unsigned long __umoddi3 (unsigned long A, unsigned
! long B)
! - Runtime Function: unsigned long long __umodti3 (unsigned long long
A, unsigned long long B)
These functions return the remainder of the unsigned division of A
and B.
! Comparison functions
! --------------------
! The following functions implement integral comparisons. These
! functions implement a low-level compare, upon which the higher level
! comparison operators (such as less than and greater than or equal to)
! can be constructed. The returned values lie in the range zero to two,
! to allow the high-level operators to be implemented by testing the
! returned result using either signed or unsigned comparison.
! - Runtime Function: int __cmpdi2 (long A, long B)
! - Runtime Function: int __cmpti2 (long long A, long long B)
These functions perform a signed comparison of A and B. If A is
less than B, they return 0; if A is greater than B, they return 2;
and if A and B are equal they return 1.
! - Runtime Function: int __ucmpdi2 (unsigned long A, unsigned long B)
! - Runtime Function: int __ucmpti2 (unsigned long long A, unsigned long
! long B)
These functions perform an unsigned comparison of A and B. If A
is less than B, they return 0; if A is greater than B, they return
2; and if A and B are equal they return 1.
! Trapping arithmetic functions
! -----------------------------
! The following functions implement trapping arithmetic. These
! functions call the libc function `abort' upon signed arithmetic
! overflow.
! - Runtime Function: int __absvsi2 (int A)
! - Runtime Function: long __absvdi2 (long A)
These functions return the absolute value of A.
! - Runtime Function: int __addvsi3 (int A, int B)
! - Runtime Function: long __addvdi3 (long A, long B)
These functions return the sum of A and B; that is `A + B'.
! - Runtime Function: int __mulvsi3 (int A, int B)
! - Runtime Function: long __mulvdi3 (long A, long B)
The functions return the product of A and B; that is `A * B'.
! - Runtime Function: int __negvsi2 (int A)
! - Runtime Function: long __negvdi2 (long A)
These functions return the negation of A; that is `-A'.
! - Runtime Function: int __subvsi3 (int A, int B)
! - Runtime Function: long __subvdi3 (long A, long B)
These functions return the difference between B and A; that is `A
- B'.
! Bit operations
! --------------
! - Runtime Function: int __clzsi2 (int A)
! - Runtime Function: int __clzdi2 (long A)
! - Runtime Function: int __clzti2 (long long A)
These functions return the number of leading 0-bits in A, starting
at the most significant bit position. If A is zero, the result is
undefined.
! - Runtime Function: int __ctzsi2 (int A)
! - Runtime Function: int __ctzdi2 (long A)
! - Runtime Function: int __ctzti2 (long long A)
These functions return the number of trailing 0-bits in A, starting
at the least significant bit position. If A is zero, the result is
undefined.
! - Runtime Function: int __ffsdi2 (long A)
! - Runtime Function: int __ffsti2 (long long A)
These functions return the index of the least significant 1-bit in
A, or the value zero if A is zero. The least significant bit is
index one.
! - Runtime Function: int __paritysi2 (int A)
! - Runtime Function: int __paritydi2 (long A)
! - Runtime Function: int __parityti2 (long long A)
These functions return the value zero if the number of bits set in
A is even, and the value one otherwise.
! - Runtime Function: int __popcountsi2 (int A)
! - Runtime Function: int __popcountdi2 (long A)
! - Runtime Function: int __popcountti2 (long long A)
These functions return the number of bits set in A.
File: gccint.info, Node: Soft float library routines, Next: Exception handling routines, Prev: Integer library routines, Up: Libgcc
! Routines for floating point emulation
! =====================================
! The software floating point library is used on machines which do not
have hardware support for floating point. It is also used whenever
`-msoft-float' is used to disable generation of floating point
instructions. (Not all targets support this switch.)
--- 275,444 ----
File: gccint.info, Node: Integer library routines, Next: Soft float library routines, Up: Libgcc
! 4.1 Routines for integer arithmetic
! ===================================
! The integer arithmetic routines are used on platforms that don't provide
! hardware support for arithmetic operations on some modes.
! 4.1.1 Arithmetic functions
! --------------------------
! -- Runtime Function: int __ashlsi3 (int A, int B)
! -- Runtime Function: long __ashldi3 (long A, int B)
! -- Runtime Function: long long __ashlti3 (long long A, int B)
These functions return the result of shifting A left by B bits.
! -- Runtime Function: int __ashrsi3 (int A, int B)
! -- Runtime Function: long __ashrdi3 (long A, int B)
! -- Runtime Function: long long __ashrti3 (long long A, int B)
These functions return the result of arithmetically shifting A
right by B bits.
! -- Runtime Function: int __divsi3 (int A, int B)
! -- Runtime Function: long __divdi3 (long A, long B)
! -- Runtime Function: long long __divti3 (long long A, long long B)
These functions return the quotient of the signed division of A and
B.
! -- Runtime Function: int __lshrsi3 (int A, int B)
! -- Runtime Function: long __lshrdi3 (long A, int B)
! -- Runtime Function: long long __lshrti3 (long long A, int B)
These functions return the result of logically shifting A right by
B bits.
! -- Runtime Function: int __modsi3 (int A, int B)
! -- Runtime Function: long __moddi3 (long A, long B)
! -- Runtime Function: long long __modti3 (long long A, long long B)
These functions return the remainder of the signed division of A
and B.
! -- Runtime Function: int __mulsi3 (int A, int B)
! -- Runtime Function: long __muldi3 (long A, long B)
! -- Runtime Function: long long __multi3 (long long A, long long B)
These functions return the product of A and B.
! -- Runtime Function: long __negdi2 (long A)
! -- Runtime Function: long long __negti2 (long long A)
These functions return the negation of A.
! -- Runtime Function: unsigned int __udivsi3 (unsigned int A, unsigned
int B)
! -- Runtime Function: unsigned long __udivdi3 (unsigned long A,
! unsigned long B)
! -- Runtime Function: unsigned long long __udivti3 (unsigned long long
A, unsigned long long B)
These functions return the quotient of the unsigned division of A
and B.
! -- Runtime Function: unsigned long __udivmoddi3 (unsigned long A,
unsigned long B, unsigned long *C)
! -- Runtime Function: unsigned long long __udivti3 (unsigned long long
A, unsigned long long B, unsigned long long *C)
These functions calculate both the quotient and remainder of the
unsigned division of A and B. The return value is the quotient,
and the remainder is placed in variable pointed to by C.
! -- Runtime Function: unsigned int __umodsi3 (unsigned int A, unsigned
int B)
! -- Runtime Function: unsigned long __umoddi3 (unsigned long A,
! unsigned long B)
! -- Runtime Function: unsigned long long __umodti3 (unsigned long long
A, unsigned long long B)
These functions return the remainder of the unsigned division of A
and B.
! 4.1.2 Comparison functions
! --------------------------
! The following functions implement integral comparisons. These functions
! implement a low-level compare, upon which the higher level comparison
! operators (such as less than and greater than or equal to) can be
! constructed. The returned values lie in the range zero to two, to allow
! the high-level operators to be implemented by testing the returned
! result using either signed or unsigned comparison.
! -- Runtime Function: int __cmpdi2 (long A, long B)
! -- Runtime Function: int __cmpti2 (long long A, long long B)
These functions perform a signed comparison of A and B. If A is
less than B, they return 0; if A is greater than B, they return 2;
and if A and B are equal they return 1.
! -- Runtime Function: int __ucmpdi2 (unsigned long A, unsigned long B)
! -- Runtime Function: int __ucmpti2 (unsigned long long A, unsigned
! long long B)
These functions perform an unsigned comparison of A and B. If A
is less than B, they return 0; if A is greater than B, they return
2; and if A and B are equal they return 1.
! 4.1.3 Trapping arithmetic functions
! -----------------------------------
! The following functions implement trapping arithmetic. These functions
! call the libc function `abort' upon signed arithmetic overflow.
! -- Runtime Function: int __absvsi2 (int A)
! -- Runtime Function: long __absvdi2 (long A)
These functions return the absolute value of A.
! -- Runtime Function: int __addvsi3 (int A, int B)
! -- Runtime Function: long __addvdi3 (long A, long B)
These functions return the sum of A and B; that is `A + B'.
! -- Runtime Function: int __mulvsi3 (int A, int B)
! -- Runtime Function: long __mulvdi3 (long A, long B)
The functions return the product of A and B; that is `A * B'.
! -- Runtime Function: int __negvsi2 (int A)
! -- Runtime Function: long __negvdi2 (long A)
These functions return the negation of A; that is `-A'.
! -- Runtime Function: int __subvsi3 (int A, int B)
! -- Runtime Function: long __subvdi3 (long A, long B)
These functions return the difference between B and A; that is `A
- B'.
! 4.1.4 Bit operations
! --------------------
! -- Runtime Function: int __clzsi2 (int A)
! -- Runtime Function: int __clzdi2 (long A)
! -- Runtime Function: int __clzti2 (long long A)
These functions return the number of leading 0-bits in A, starting
at the most significant bit position. If A is zero, the result is
undefined.
! -- Runtime Function: int __ctzsi2 (int A)
! -- Runtime Function: int __ctzdi2 (long A)
! -- Runtime Function: int __ctzti2 (long long A)
These functions return the number of trailing 0-bits in A, starting
at the least significant bit position. If A is zero, the result is
undefined.
! -- Runtime Function: int __ffsdi2 (long A)
! -- Runtime Function: int __ffsti2 (long long A)
These functions return the index of the least significant 1-bit in
A, or the value zero if A is zero. The least significant bit is
index one.
! -- Runtime Function: int __paritysi2 (int A)
! -- Runtime Function: int __paritydi2 (long A)
! -- Runtime Function: int __parityti2 (long long A)
These functions return the value zero if the number of bits set in
A is even, and the value one otherwise.
! -- Runtime Function: int __popcountsi2 (int A)
! -- Runtime Function: int __popcountdi2 (long A)
! -- Runtime Function: int __popcountti2 (long long A)
These functions return the number of bits set in A.
File: gccint.info, Node: Soft float library routines, Next: Exception handling routines, Prev: Integer library routines, Up: Libgcc
! 4.2 Routines for floating point emulation
! =========================================
! The software floating point library is used on machines which do not
have hardware support for floating point. It is also used whenever
`-msoft-float' is used to disable generation of floating point
instructions. (Not all targets support this switch.)
*************** Library Calls::). In this section, the
*** 449,583 ****
Presently the library does not support `XFmode', which is used for
`long double' on some architectures.
! Arithmetic functions
! --------------------
! - Runtime Function: float __addsf3 (float A, float B)
! - Runtime Function: double __adddf3 (double A, double B)
! - Runtime Function: long double __addtf3 (long double A, long double B)
! - Runtime Function: long double __addxf3 (long double A, long double B)
These functions return the sum of A and B.
! - Runtime Function: float __subsf3 (float A, float B)
! - Runtime Function: double __subdf3 (double A, double B)
! - Runtime Function: long double __subtf3 (long double A, long double B)
! - Runtime Function: long double __subxf3 (long double A, long double B)
These functions return the difference between B and A; that is,
A - B.
! - Runtime Function: float __mulsf3 (float A, float B)
! - Runtime Function: double __muldf3 (double A, double B)
! - Runtime Function: long double __multf3 (long double A, long double B)
! - Runtime Function: long double __mulxf3 (long double A, long double B)
These functions return the product of A and B.
! - Runtime Function: float __divsf3 (float A, float B)
! - Runtime Function: double __divdf3 (double A, double B)
! - Runtime Function: long double __divtf3 (long double A, long double B)
! - Runtime Function: long double __divxf3 (long double A, long double B)
These functions return the quotient of A and B; that is, A / B.
! - Runtime Function: float __negsf2 (float A)
! - Runtime Function: double __negdf2 (double A)
! - Runtime Function: long double __negtf2 (long double A)
! - Runtime Function: long double __negxf2 (long double A)
These functions return the negation of A. They simply flip the
sign bit, so they can produce negative zero and negative NaN.
! Conversion functions
! --------------------
! - Runtime Function: double __extendsfdf2 (float A)
! - Runtime Function: long double __extendsftf2 (float A)
! - Runtime Function: long double __extendsfxf2 (float A)
! - Runtime Function: long double __extenddftf2 (double A)
! - Runtime Function: long double __extenddfxf2 (double A)
These functions extend A to the wider mode of their return type.
! - Runtime Function: double __truncxfdf2 (long double A)
! - Runtime Function: double __trunctfdf2 (long double A)
! - Runtime Function: float __truncxfsf2 (long double A)
! - Runtime Function: float __trunctfsf2 (long double A)
! - Runtime Function: float __truncdfsf2 (double A)
These functions truncate A to the narrower mode of their return
type, rounding toward zero.
! - Runtime Function: int __fixsfsi (float A)
! - Runtime Function: int __fixdfsi (double A)
! - Runtime Function: int __fixtfsi (long double A)
! - Runtime Function: int __fixxfsi (long double A)
These functions convert A to a signed integer, rounding toward
zero.
! - Runtime Function: long __fixsfdi (float A)
! - Runtime Function: long __fixdfdi (double A)
! - Runtime Function: long __fixtfdi (long double A)
! - Runtime Function: long __fixxfdi (long double A)
These functions convert A to a signed long, rounding toward zero.
! - Runtime Function: long long __fixsfti (float A)
! - Runtime Function: long long __fixdfti (double A)
! - Runtime Function: long long __fixtfti (long double A)
! - Runtime Function: long long __fixxfti (long double A)
These functions convert A to a signed long long, rounding toward
zero.
! - Runtime Function: unsigned int __fixunssfsi (float A)
! - Runtime Function: unsigned int __fixunsdfsi (double A)
! - Runtime Function: unsigned int __fixunstfsi (long double A)
! - Runtime Function: unsigned int __fixunsxfsi (long double A)
These functions convert A to an unsigned integer, rounding toward
zero. Negative values all become zero.
! - Runtime Function: unsigned long __fixunssfdi (float A)
! - Runtime Function: unsigned long __fixunsdfdi (double A)
! - Runtime Function: unsigned long __fixunstfdi (long double A)
! - Runtime Function: unsigned long __fixunsxfdi (long double A)
These functions convert A to an unsigned long, rounding toward
zero. Negative values all become zero.
! - Runtime Function: unsigned long long __fixunssfti (float A)
! - Runtime Function: unsigned long long __fixunsdfti (double A)
! - Runtime Function: unsigned long long __fixunstfti (long double A)
! - Runtime Function: unsigned long long __fixunsxfti (long double A)
These functions convert A to an unsigned long long, rounding
toward zero. Negative values all become zero.
! - Runtime Function: float __floatsisf (int I)
! - Runtime Function: double __floatsidf (int I)
! - Runtime Function: long double __floatsitf (int I)
! - Runtime Function: long double __floatsixf (int I)
These functions convert I, a signed integer, to floating point.
! - Runtime Function: float __floatdisf (long I)
! - Runtime Function: double __floatdidf (long I)
! - Runtime Function: long double __floatditf (long I)
! - Runtime Function: long double __floatdixf (long I)
These functions convert I, a signed long, to floating point.
! - Runtime Function: float __floattisf (long long I)
! - Runtime Function: double __floattidf (long long I)
! - Runtime Function: long double __floattitf (long long I)
! - Runtime Function: long double __floattixf (long long I)
These functions convert I, a signed long long, to floating point.
! Comparison functions
! --------------------
! There are two sets of basic comparison functions.
! - Runtime Function: int __cmpsf2 (float A, float B)
! - Runtime Function: int __cmpdf2 (double A, double B)
! - Runtime Function: int __cmptf2 (long double A, long double B)
These functions calculate a <=> b. That is, if A is less than B,
they return -1; if A is greater than B, they return 1; and if A
and B are equal they return 0. If either argument is NaN they
return 1, but you should not rely on this; if NaN is a
possibility, use one of the higher-level comparison functions.
! - Runtime Function: int __unordsf2 (float A, float B)
! - Runtime Function: int __unorddf2 (double A, double B)
! - Runtime Function: int __unordtf2 (long double A, long double B)
These functions return a nonzero value if either argument is NaN,
otherwise 0.
--- 450,592 ----
Presently the library does not support `XFmode', which is used for
`long double' on some architectures.
! 4.2.1 Arithmetic functions
! --------------------------
! -- Runtime Function: float __addsf3 (float A, float B)
! -- Runtime Function: double __adddf3 (double A, double B)
! -- Runtime Function: long double __addtf3 (long double A, long double
! B)
! -- Runtime Function: long double __addxf3 (long double A, long double
! B)
These functions return the sum of A and B.
! -- Runtime Function: float __subsf3 (float A, float B)
! -- Runtime Function: double __subdf3 (double A, double B)
! -- Runtime Function: long double __subtf3 (long double A, long double
! B)
! -- Runtime Function: long double __subxf3 (long double A, long double
! B)
These functions return the difference between B and A; that is,
A - B.
! -- Runtime Function: float __mulsf3 (float A, float B)
! -- Runtime Function: double __muldf3 (double A, double B)
! -- Runtime Function: long double __multf3 (long double A, long double
! B)
! -- Runtime Function: long double __mulxf3 (long double A, long double
! B)
These functions return the product of A and B.
! -- Runtime Function: float __divsf3 (float A, float B)
! -- Runtime Function: double __divdf3 (double A, double B)
! -- Runtime Function: long double __divtf3 (long double A, long double
! B)
! -- Runtime Function: long double __divxf3 (long double A, long double
! B)
These functions return the quotient of A and B; that is, A / B.
! -- Runtime Function: float __negsf2 (float A)
! -- Runtime Function: double __negdf2 (double A)
! -- Runtime Function: long double __negtf2 (long double A)
! -- Runtime Function: long double __negxf2 (long double A)
These functions return the negation of A. They simply flip the
sign bit, so they can produce negative zero and negative NaN.
! 4.2.2 Conversion functions
! --------------------------
! -- Runtime Function: double __extendsfdf2 (float A)
! -- Runtime Function: long double __extendsftf2 (float A)
! -- Runtime Function: long double __extendsfxf2 (float A)
! -- Runtime Function: long double __extenddftf2 (double A)
! -- Runtime Function: long double __extenddfxf2 (double A)
These functions extend A to the wider mode of their return type.
! -- Runtime Function: double __truncxfdf2 (long double A)
! -- Runtime Function: double __trunctfdf2 (long double A)
! -- Runtime Function: float __truncxfsf2 (long double A)
! -- Runtime Function: float __trunctfsf2 (long double A)
! -- Runtime Function: float __truncdfsf2 (double A)
These functions truncate A to the narrower mode of their return
type, rounding toward zero.
! -- Runtime Function: int __fixsfsi (float A)
! -- Runtime Function: int __fixdfsi (double A)
! -- Runtime Function: int __fixtfsi (long double A)
! -- Runtime Function: int __fixxfsi (long double A)
These functions convert A to a signed integer, rounding toward
zero.
! -- Runtime Function: long __fixsfdi (float A)
! -- Runtime Function: long __fixdfdi (double A)
! -- Runtime Function: long __fixtfdi (long double A)
! -- Runtime Function: long __fixxfdi (long double A)
These functions convert A to a signed long, rounding toward zero.
! -- Runtime Function: long long __fixsfti (float A)
! -- Runtime Function: long long __fixdfti (double A)
! -- Runtime Function: long long __fixtfti (long double A)
! -- Runtime Function: long long __fixxfti (long double A)
These functions convert A to a signed long long, rounding toward
zero.
! -- Runtime Function: unsigned int __fixunssfsi (float A)
! -- Runtime Function: unsigned int __fixunsdfsi (double A)
! -- Runtime Function: unsigned int __fixunstfsi (long double A)
! -- Runtime Function: unsigned int __fixunsxfsi (long double A)
These functions convert A to an unsigned integer, rounding toward
zero. Negative values all become zero.
! -- Runtime Function: unsigned long __fixunssfdi (float A)
! -- Runtime Function: unsigned long __fixunsdfdi (double A)
! -- Runtime Function: unsigned long __fixunstfdi (long double A)
! -- Runtime Function: unsigned long __fixunsxfdi (long double A)
These functions convert A to an unsigned long, rounding toward
zero. Negative values all become zero.
! -- Runtime Function: unsigned long long __fixunssfti (float A)
! -- Runtime Function: unsigned long long __fixunsdfti (double A)
! -- Runtime Function: unsigned long long __fixunstfti (long double A)
! -- Runtime Function: unsigned long long __fixunsxfti (long double A)
These functions convert A to an unsigned long long, rounding
toward zero. Negative values all become zero.
! -- Runtime Function: float __floatsisf (int I)
! -- Runtime Function: double __floatsidf (int I)
! -- Runtime Function: long double __floatsitf (int I)
! -- Runtime Function: long double __floatsixf (int I)
These functions convert I, a signed integer, to floating point.
! -- Runtime Function: float __floatdisf (long I)
! -- Runtime Function: double __floatdidf (long I)
! -- Runtime Function: long double __floatditf (long I)
! -- Runtime Function: long double __floatdixf (long I)
These functions convert I, a signed long, to floating point.
! -- Runtime Function: float __floattisf (long long I)
! -- Runtime Function: double __floattidf (long long I)
! -- Runtime Function: long double __floattitf (long long I)
! -- Runtime Function: long double __floattixf (long long I)
These functions convert I, a signed long long, to floating point.
! 4.2.3 Comparison functions
! --------------------------
! There are two sets of basic comparison functions.
! -- Runtime Function: int __cmpsf2 (float A, float B)
! -- Runtime Function: int __cmpdf2 (double A, double B)
! -- Runtime Function: int __cmptf2 (long double A, long double B)
These functions calculate a <=> b. That is, if A is less than B,
they return -1; if A is greater than B, they return 1; and if A
and B are equal they return 0. If either argument is NaN they
return 1, but you should not rely on this; if NaN is a
possibility, use one of the higher-level comparison functions.
! -- Runtime Function: int __unordsf2 (float A, float B)
! -- Runtime Function: int __unorddf2 (double A, double B)
! -- Runtime Function: int __unordtf2 (long double A, long double B)
These functions return a nonzero value if either argument is NaN,
otherwise 0.
*************** Thus, the meaning of the return value is
*** 596,644 ****
not rely on this implementation; only the semantics documented below
are guaranteed.
! - Runtime Function: int __eqsf2 (float A, float B)
! - Runtime Function: int __eqdf2 (double A, double B)
! - Runtime Function: int __eqtf2 (long double A, long double B)
These functions return zero if neither argument is NaN, and A and
B are equal.
! - Runtime Function: int __nesf2 (float A, float B)
! - Runtime Function: int __nedf2 (double A, double B)
! - Runtime Function: int __netf2 (long double A, long double B)
These functions return a nonzero value if either argument is NaN,
or if A and B are unequal.
! - Runtime Function: int __gesf2 (float A, float B)
! - Runtime Function: int __gedf2 (double A, double B)
! - Runtime Function: int __getf2 (long double A, long double B)
These functions return a value greater than or equal to zero if
neither argument is NaN, and A is greater than or equal to B.
! - Runtime Function: int __ltsf2 (float A, float B)
! - Runtime Function: int __ltdf2 (double A, double B)
! - Runtime Function: int __lttf2 (long double A, long double B)
These functions return a value less than zero if neither argument
is NaN, and A is strictly less than B.
! - Runtime Function: int __lesf2 (float A, float B)
! - Runtime Function: int __ledf2 (double A, double B)
! - Runtime Function: int __letf2 (long double A, long double B)
These functions return a value less than or equal to zero if
neither argument is NaN, and A is less than or equal to B.
! - Runtime Function: int __gtsf2 (float A, float B)
! - Runtime Function: int __gtdf2 (double A, double B)
! - Runtime Function: int __gttf2 (long double A, long double B)
These functions return a value greater than zero if neither
argument is NaN, and A is strictly greater than B.
File: gccint.info, Node: Exception handling routines, Next: Miscellaneous routines, Prev: Soft float library routines, Up: Libgcc
! Language-independent routines for exception handling
! ====================================================
! document me!
_Unwind_DeleteException
_Unwind_Find_FDE
--- 605,653 ----
not rely on this implementation; only the semantics documented below
are guaranteed.
! -- Runtime Function: int __eqsf2 (float A, float B)
! -- Runtime Function: int __eqdf2 (double A, double B)
! -- Runtime Function: int __eqtf2 (long double A, long double B)
These functions return zero if neither argument is NaN, and A and
B are equal.
! -- Runtime Function: int __nesf2 (float A, float B)
! -- Runtime Function: int __nedf2 (double A, double B)
! -- Runtime Function: int __netf2 (long double A, long double B)
These functions return a nonzero value if either argument is NaN,
or if A and B are unequal.
! -- Runtime Function: int __gesf2 (float A, float B)
! -- Runtime Function: int __gedf2 (double A, double B)
! -- Runtime Function: int __getf2 (long double A, long double B)
These functions return a value greater than or equal to zero if
neither argument is NaN, and A is greater than or equal to B.
! -- Runtime Function: int __ltsf2 (float A, float B)
! -- Runtime Function: int __ltdf2 (double A, double B)
! -- Runtime Function: int __lttf2 (long double A, long double B)
These functions return a value less than zero if neither argument
is NaN, and A is strictly less than B.
! -- Runtime Function: int __lesf2 (float A, float B)
! -- Runtime Function: int __ledf2 (double A, double B)
! -- Runtime Function: int __letf2 (long double A, long double B)
These functions return a value less than or equal to zero if
neither argument is NaN, and A is less than or equal to B.
! -- Runtime Function: int __gtsf2 (float A, float B)
! -- Runtime Function: int __gtdf2 (double A, double B)
! -- Runtime Function: int __gttf2 (long double A, long double B)
These functions return a value greater than zero if neither
argument is NaN, and A is strictly greater than B.
File: gccint.info, Node: Exception handling routines, Next: Miscellaneous routines, Prev: Soft float library routines, Up: Libgcc
! 4.3 Language-independent routines for exception handling
! ========================================================
! document me!
_Unwind_DeleteException
_Unwind_Find_FDE
*************** Language-independent routines for except
*** 672,694 ****
File: gccint.info, Node: Miscellaneous routines, Prev: Exception handling routines, Up: Libgcc
! Miscellaneous runtime library routines
! ======================================
! Cache control functions
! -----------------------
! - Runtime Function: void __clear_cache (char *BEG, char *END)
This function clears the instruction cache between BEG and END.
File: gccint.info, Node: Languages, Next: Source Tree, Prev: Libgcc, Up: Top
! Language Front Ends in GCC
! **************************
! The interface to front ends for languages in GCC, and in particular
! the `tree' structure (*note Trees::), was initially designed for C, and
many aspects of it are still somewhat biased towards C and C-like
languages. It is, however, reasonably well suited to other procedural
languages, and front ends for many such languages have been written for
--- 681,703 ----
File: gccint.info, Node: Miscellaneous routines, Prev: Exception handling routines, Up: Libgcc
! 4.4 Miscellaneous runtime library routines
! ==========================================
! 4.4.1 Cache control functions
! -----------------------------
! -- Runtime Function: void __clear_cache (char *BEG, char *END)
This function clears the instruction cache between BEG and END.
File: gccint.info, Node: Languages, Next: Source Tree, Prev: Libgcc, Up: Top
! 5 Language Front Ends in GCC
! ****************************
! The interface to front ends for languages in GCC, and in particular the
! `tree' structure (*note Trees::), was initially designed for C, and
many aspects of it are still somewhat biased towards C and C-like
languages. It is, however, reasonably well suited to other procedural
languages, and front ends for many such languages have been written for
*************** example, as part of a research project)
*** 719,728 ****
File: gccint.info, Node: Source Tree, Next: Passes, Prev: Languages, Up: Top
! Source Tree Structure and Build System
! **************************************
! This chapter describes the structure of the GCC source tree, and how
GCC is built. The user documentation for building and installing GCC
is in a separate manual (`http://gcc.gnu.org/install/'), with which it
is presumed that you are familiar.
--- 728,737 ----
File: gccint.info, Node: Source Tree, Next: Passes, Prev: Languages, Up: Top
! 6 Source Tree Structure and Build System
! ****************************************
! This chapter describes the structure of the GCC source tree, and how
GCC is built. The user documentation for building and installing GCC
is in a separate manual (`http://gcc.gnu.org/install/'), with which it
is presumed that you are familiar.
*************** is presumed that you are familiar.
*** 737,750 ****
File: gccint.info, Node: Configure Terms, Next: Top Level, Up: Source Tree
! Configure Terms and History
! ===========================
! The configure and build process has a long and colorful history, and
! can be confusing to anyone who doesn't know why things are the way they
! are. While there are other documents which describe the configuration
! process in detail, here are a few things that everyone working on GCC
! should know.
There are three system names that the build knows about: the machine
you are building on ("build"), the machine that you are building for
--- 746,759 ----
File: gccint.info, Node: Configure Terms, Next: Top Level, Up: Source Tree
! 6.1 Configure Terms and History
! ===============================
! The configure and build process has a long and colorful history, and can
! be confusing to anyone who doesn't know why things are the way they are.
! While there are other documents which describe the configuration process
! in detail, here are a few things that everyone working on GCC should
! know.
There are three system names that the build knows about: the machine
you are building on ("build"), the machine that you are building for
*************** by all programs which are generated in t
*** 794,803 ****
File: gccint.info, Node: Top Level, Next: gcc Directory, Prev: Configure Terms, Up: Source Tree
! Top Level Source Directory
! ==========================
! The top level source directory in a GCC distribution contains several
files and directories that are shared with other software distributions
such as that of GNU Binutils. It also contains several subdirectories
that contain parts of GCC and its runtime libraries:
--- 803,812 ----
File: gccint.info, Node: Top Level, Next: gcc Directory, Prev: Configure Terms, Up: Source Tree
! 6.2 Top Level Source Directory
! ==============================
! The top level source directory in a GCC distribution contains several
files and directories that are shared with other software distributions
such as that of GNU Binutils. It also contains several subdirectories
that contain parts of GCC and its runtime libraries:
*************** for details.
*** 861,871 ****
File: gccint.info, Node: gcc Directory, Next: Testsuites, Prev: Top Level, Up: Source Tree
! The `gcc' Subdirectory
! ======================
! The `gcc' directory contains many files that are part of the C
! sources of GCC, other files used as part of the configuration and build
process, and subdirectories including documentation and a testsuite.
The files that are sources of GCC are documented in a separate chapter.
*Note Passes and Files of the Compiler: Passes.
--- 870,880 ----
File: gccint.info, Node: gcc Directory, Next: Testsuites, Prev: Top Level, Up: Source Tree
! 6.3 The `gcc' Subdirectory
! ==========================
! The `gcc' directory contains many files that are part of the C sources
! of GCC, other files used as part of the configuration and build
process, and subdirectories including documentation and a testsuite.
The files that are sources of GCC are documented in a separate chapter.
*Note Passes and Files of the Compiler: Passes.
*************** The files that are sources of GCC are do
*** 885,894 ****
File: gccint.info, Node: Subdirectories, Next: Configuration, Up: gcc Directory
! Subdirectories of `gcc'
! -----------------------
! The `gcc' directory contains the following subdirectories:
`LANGUAGE'
Subdirectories for various languages. Directories containing a
--- 894,903 ----
File: gccint.info, Node: Subdirectories, Next: Configuration, Up: gcc Directory
! 6.3.1 Subdirectories of `gcc'
! -----------------------------
! The `gcc' directory contains the following subdirectories:
`LANGUAGE'
Subdirectories for various languages. Directories containing a
*************** Subdirectories of `gcc'
*** 943,952 ****
File: gccint.info, Node: Configuration, Next: Build, Prev: Subdirectories, Up: gcc Directory
! Configuration in the `gcc' Directory
! ------------------------------------
! The `gcc' directory is configured with an Autoconf-generated script
`configure'. The `configure' script is generated from `configure.ac'
and `aclocal.m4'. From the files `configure.ac' and `acconfig.h',
Autoheader generates the file `config.in'. The file `cstamp-h.in' is
--- 952,961 ----
File: gccint.info, Node: Configuration, Next: Build, Prev: Subdirectories, Up: gcc Directory
! 6.3.2 Configuration in the `gcc' Directory
! ------------------------------------------
! The `gcc' directory is configured with an Autoconf-generated script
`configure'. The `configure' script is generated from `configure.ac'
and `aclocal.m4'. From the files `configure.ac' and `acconfig.h',
Autoheader generates the file `config.in'. The file `cstamp-h.in' is
*************** used as a timestamp.
*** 962,971 ****
File: gccint.info, Node: Config Fragments, Next: System Config, Up: Configuration
! Scripts Used by `configure'
! ...........................
! `configure' uses some other scripts to help in its work:
* The standard GNU `config.sub' and `config.guess' files, kept in
the top level directory, are used. FIXME: when is the
--- 971,980 ----
File: gccint.info, Node: Config Fragments, Next: System Config, Up: Configuration
! 6.3.2.1 Scripts Used by `configure'
! ...................................
! `configure' uses some other scripts to help in its work:
* The standard GNU `config.sub' and `config.guess' files, kept in
the top level directory, are used. FIXME: when is the
*************** Scripts Used by `configure'
*** 993,1005 ****
File: gccint.info, Node: System Config, Next: Configuration Files, Prev: Config Fragments, Up: Configuration
! The `config.build'; `config.host'; and `config.gcc' Files
! .........................................................
! The `config.build' file contains specific rules for particular
! systems which GCC is built on. This should be used as rarely as
! possible, as the behavior of the build system can always be detected by
! autoconf.
The `config.host' file contains specific rules for particular systems
which GCC will run on. This is rarely needed.
--- 1002,1013 ----
File: gccint.info, Node: System Config, Next: Configuration Files, Prev: Config Fragments, Up: Configuration
! 6.3.2.2 The `config.build'; `config.host'; and `config.gcc' Files
! .................................................................
! The `config.build' file contains specific rules for particular systems
! which GCC is built on. This should be used as rarely as possible, as
! the behavior of the build system can always be detected by autoconf.
The `config.host' file contains specific rules for particular systems
which GCC will run on. This is rarely needed.
*************** should be set to control build, host and
*** 1016,1028 ****
File: gccint.info, Node: Configuration Files, Prev: System Config, Up: Configuration
! Files Created by `configure'
! ............................
! Here we spell out what files will be set up by `configure' in the
! `gcc' directory. Some other files are created as temporary files in
! the configuration process, and are not used in the subsequent build;
! these are not documented.
* `Makefile' is constructed from `Makefile.in', together with the
host and target fragments (*note Makefile Fragments: Fragments.)
--- 1024,1036 ----
File: gccint.info, Node: Configuration Files, Prev: System Config, Up: Configuration
! 6.3.2.3 Files Created by `configure'
! ....................................
! Here we spell out what files will be set up by `configure' in the `gcc'
! directory. Some other files are created as temporary files in the
! configuration process, and are not used in the subsequent build; these
! are not documented.
* `Makefile' is constructed from `Makefile.in', together with the
host and target fragments (*note Makefile Fragments: Fragments.)
*************** determined by `config.gcc'. They also c
*** 1081,1090 ****
File: gccint.info, Node: Build, Next: Makefile, Prev: Configuration, Up: gcc Directory
! Build System in the `gcc' Directory
! -----------------------------------
! FIXME: describe the build system, including what is built in what
stages. Also list the various source files that are used in the build
process but aren't source files of GCC itself and so aren't documented
below (*note Passes::).
--- 1089,1098 ----
File: gccint.info, Node: Build, Next: Makefile, Prev: Configuration, Up: gcc Directory
! 6.3.3 Build System in the `gcc' Directory
! -----------------------------------------
! FIXME: describe the build system, including what is built in what
stages. Also list the various source files that are used in the build
process but aren't source files of GCC itself and so aren't documented
below (*note Passes::).
*************** below (*note Passes::).
*** 1092,1099 ****
File: gccint.info, Node: Makefile, Next: Library Files, Prev: Build, Up: gcc Directory
! Makefile Targets
! ----------------
`all'
This is the default target. Depending on what your
--- 1100,1107 ----
File: gccint.info, Node: Makefile, Next: Library Files, Prev: Build, Up: gcc Directory
! 6.3.4 Makefile Targets
! ----------------------
`all'
This is the default target. Depending on what your
*************** Makefile Targets
*** 1212,1236 ****
directory, which then recurses into the `gcc' subdirectory
multiple times.
File: gccint.info, Node: Library Files, Next: Headers, Prev: Makefile, Up: gcc Directory
! Library Source Files and Headers under the `gcc' Directory
! ----------------------------------------------------------
! FIXME: list here, with explanation, all the C source files and
! headers under the `gcc' directory that aren't built into the GCC
! executable but rather are part of runtime libraries and object files,
! such as `crtstuff.c' and `unwind-dw2.c'. *Note Headers Installed by
! GCC: Headers, for more information about the `ginclude' directory.
File: gccint.info, Node: Headers, Next: Documentation, Prev: Library Files, Up: gcc Directory
! Headers Installed by GCC
! ------------------------
! In general, GCC expects the system C library to provide most of the
headers to be used with it. However, GCC will fix those headers if
necessary to make them work with GCC, and will install some headers
required of freestanding implementations. These headers are installed
--- 1220,1245 ----
directory, which then recurses into the `gcc' subdirectory
multiple times.
+
File: gccint.info, Node: Library Files, Next: Headers, Prev: Makefile, Up: gcc Directory
! 6.3.5 Library Source Files and Headers under the `gcc' Directory
! ----------------------------------------------------------------
! FIXME: list here, with explanation, all the C source files and headers
! under the `gcc' directory that aren't built into the GCC executable but
! rather are part of runtime libraries and object files, such as
! `crtstuff.c' and `unwind-dw2.c'. *Note Headers Installed by GCC:
! Headers, for more information about the `ginclude' directory.
File: gccint.info, Node: Headers, Next: Documentation, Prev: Library Files, Up: gcc Directory
! 6.3.6 Headers Installed by GCC
! ------------------------------
! In general, GCC expects the system C library to provide most of the
headers to be used with it. However, GCC will fix those headers if
necessary to make them work with GCC, and will install some headers
required of freestanding implementations. These headers are installed
*************** it does not need fixing to work with GCC
*** 1267,1282 ****
File: gccint.info, Node: Documentation, Next: Front End, Prev: Headers, Up: gcc Directory
! Building Documentation
! ----------------------
! The main GCC documentation is in the form of manuals in Texinfo
! format. These are installed in Info format, and DVI versions may be
! generated by `make dvi'. In addition, some man pages are generated
! from the Texinfo manuals, there are some other text files with
! miscellaneous documentation, and runtime libraries have their own
! documentation outside the `gcc' directory. FIXME: document the
! documentation for runtime libraries somewhere.
* Menu:
--- 1276,1291 ----
File: gccint.info, Node: Documentation, Next: Front End, Prev: Headers, Up: gcc Directory
! 6.3.7 Building Documentation
! ----------------------------
! The main GCC documentation is in the form of manuals in Texinfo format.
! These are installed in Info format, and DVI versions may be generated
! by `make dvi'. In addition, some man pages are generated from the
! Texinfo manuals, there are some other text files with miscellaneous
! documentation, and runtime libraries have their own documentation
! outside the `gcc' directory. FIXME: document the documentation for
! runtime libraries somewhere.
* Menu:
*************** documentation for runtime libraries some
*** 1287,1296 ****
File: gccint.info, Node: Texinfo Manuals, Next: Man Page Generation, Up: Documentation
! Texinfo Manuals
! ...............
! The manuals for GCC as a whole, and the C and C++ front ends, are in
files `doc/*.texi'. Other front ends have their own manuals in files
`LANGUAGE/*.texi'. Common files `doc/include/*.texi' are provided
which may be included in multiple manuals; the following files are in
--- 1296,1305 ----
File: gccint.info, Node: Texinfo Manuals, Next: Man Page Generation, Up: Documentation
! 6.3.7.1 Texinfo Manuals
! .......................
! The manuals for GCC as a whole, and the C and C++ front ends, are in
files `doc/*.texi'. Other front ends have their own manuals in files
`LANGUAGE/*.texi'. Common files `doc/include/*.texi' are provided
which may be included in multiple manuals; the following files are in
*************** GCC web site. The HTML version is gener
*** 1340,1350 ****
File: gccint.info, Node: Man Page Generation, Next: Miscellaneous Docs, Prev: Texinfo Manuals, Up: Documentation
! Man Page Generation
! ...................
! Because of user demand, in addition to full Texinfo manuals, man
! pages are provided which contain extracts from those manuals. These man
pages are generated from the Texinfo manuals using
`contrib/texi2pod.pl' and `pod2man'. (The man page for `g++',
`cp/g++.1', just contains a `.so' reference to `gcc.1', but all the
--- 1349,1359 ----
File: gccint.info, Node: Man Page Generation, Next: Miscellaneous Docs, Prev: Texinfo Manuals, Up: Documentation
! 6.3.7.2 Man Page Generation
! ...........................
! Because of user demand, in addition to full Texinfo manuals, man pages
! are provided which contain extracts from those manuals. These man
pages are generated from the Texinfo manuals using
`contrib/texi2pod.pl' and `pod2man'. (The man page for `g++',
`cp/g++.1', just contains a `.so' reference to `gcc.1', but all the
*************** in more detail.
*** 1383,1393 ****
File: gccint.info, Node: Miscellaneous Docs, Prev: Man Page Generation, Up: Documentation
! Miscellaneous Documentation
! ...........................
! In addition to the formal documentation that is installed by GCC,
! there are several other text files with miscellaneous documentation:
`ABOUT-GCC-NLS'
Notes on GCC's Native Language Support. FIXME: this should be
--- 1392,1402 ----
File: gccint.info, Node: Miscellaneous Docs, Prev: Man Page Generation, Up: Documentation
! 6.3.7.3 Miscellaneous Documentation
! ...................................
! In addition to the formal documentation that is installed by GCC, there
! are several other text files with miscellaneous documentation:
`ABOUT-GCC-NLS'
Notes on GCC's Native Language Support. FIXME: this should be
*************** there are several other text files with
*** 1429,1438 ****
File: gccint.info, Node: Front End, Next: Back End, Prev: Documentation, Up: gcc Directory
! Anatomy of a Language Front End
! -------------------------------
! A front end for a language in GCC has the following parts:
* A directory `LANGUAGE' under `gcc' containing source files for
that front end. *Note The Front End `LANGUAGE' Directory: Front
--- 1438,1447 ----
File: gccint.info, Node: Front End, Next: Back End, Prev: Documentation, Up: gcc Directory
! 6.3.8 Anatomy of a Language Front End
! -------------------------------------
! A front end for a language in GCC has the following parts:
* A directory `LANGUAGE' under `gcc' containing source files for
that front end. *Note The Front End `LANGUAGE' Directory: Front
*************** following are also necessary:
*** 1523,1532 ****
File: gccint.info, Node: Front End Directory, Next: Front End Config, Up: Front End
! The Front End `LANGUAGE' Directory
! ..................................
! A front end `LANGUAGE' directory contains the source files of that
front end (but not of any runtime libraries, which should be outside
the `gcc' directory). This includes documentation, and possibly some
subsidiary programs build alongside the front end. Certain files are
--- 1532,1541 ----
File: gccint.info, Node: Front End Directory, Next: Front End Config, Up: Front End
! 6.3.8.1 The Front End `LANGUAGE' Directory
! ..........................................
! A front end `LANGUAGE' directory contains the source files of that
front end (but not of any runtime libraries, which should be outside
the `gcc' directory). This includes documentation, and possibly some
subsidiary programs build alongside the front end. Certain files are
*************** special and other parts of the compiler
*** 1658,1667 ****
File: gccint.info, Node: Front End Config, Prev: Front End Directory, Up: Front End
! The Front End `config-lang.in' File
! ...................................
! Each language subdirectory contains a `config-lang.in' file. In
addition the main directory contains `c-config-lang.in', which contains
limited information for the C language. This file is a shell script
that may define some variables describing the language:
--- 1667,1676 ----
File: gccint.info, Node: Front End Config, Prev: Front End Directory, Up: Front End
! 6.3.8.2 The Front End `config-lang.in' File
! ...........................................
! Each language subdirectory contains a `config-lang.in' file. In
addition the main directory contains `c-config-lang.in', which contains
limited information for the C language. This file is a shell script
that may define some variables describing the language:
*************** that may define some variables describin
*** 1721,1733 ****
routines for this language. This excludes the files that are
common to all front ends. *Note Type Information::.
File: gccint.info, Node: Back End, Prev: Front End, Up: gcc Directory
! Anatomy of a Target Back End
! ----------------------------
! A back end for a target architecture in GCC has the following parts:
* A directory `MACHINE' under `gcc/config', containing a machine
description `MACHINE.md' file (*note Machine Descriptions: Machine
--- 1730,1743 ----
routines for this language. This excludes the files that are
common to all front ends. *Note Type Information::.
+
File: gccint.info, Node: Back End, Prev: Front End, Up: gcc Directory
! 6.3.9 Anatomy of a Target Back End
! ----------------------------------
! A back end for a target architecture in GCC has the following parts:
* A directory `MACHINE' under `gcc/config', containing a machine
description `MACHINE.md' file (*note Machine Descriptions: Machine
*************** following are also necessary:
*** 1800,1809 ****
File: gccint.info, Node: Testsuites, Prev: gcc Directory, Up: Source Tree
! Testsuites
! ==========
! GCC contains several testsuites to help maintain compiler quality.
Most of the runtime libraries and language front ends in GCC have
testsuites. Currently only the C language testsuites are documented
here; FIXME: document the others.
--- 1810,1819 ----
File: gccint.info, Node: Testsuites, Prev: gcc Directory, Up: Source Tree
! 6.4 Testsuites
! ==============
! GCC contains several testsuites to help maintain compiler quality.
Most of the runtime libraries and language front ends in GCC have
testsuites. Currently only the C language testsuites are documented
here; FIXME: document the others.
*************** here; FIXME: document the others.
*** 1821,1833 ****
File: gccint.info, Node: Test Idioms, Next: Ada Tests, Up: Testsuites
! Idioms Used in Testsuite Code
! -----------------------------
! In general C testcases have a trailing `-N.c', starting with `-1.c',
! in case other testcases with similar names are added later. If the
! test is a test of some well-defined feature, it should have a name
! referring to that feature such as `FEATURE-1.c'. If it does not test a
well-defined feature but just happens to exercise a bug somewhere in
the compiler, and a bug report has been filed for this bug in the GCC
bug database, `prBUG-NUMBER-1.c' is the appropriate form of name.
--- 1831,1843 ----
File: gccint.info, Node: Test Idioms, Next: Ada Tests, Up: Testsuites
! 6.4.1 Idioms Used in Testsuite Code
! -----------------------------------
! In general C testcases have a trailing `-N.c', starting with `-1.c', in
! case other testcases with similar names are added later. If the test
! is a test of some well-defined feature, it should have a name referring
! to that feature such as `FEATURE-1.c'. If it does not test a
well-defined feature but just happens to exercise a bug somewhere in
the compiler, and a bug report has been filed for this bug in the GCC
bug database, `prBUG-NUMBER-1.c' is the appropriate form of name.
*************** unfortunately, the mechanisms for this d
*** 1899,1908 ****
File: gccint.info, Node: Ada Tests, Next: C Tests, Prev: Test Idioms, Up: Testsuites
! Ada Language Testsuites
! -----------------------
! The Ada testsuite includes executable tests from the ACATS 2.5
testsuite, publicly available at
`http://www.adaic.org/compilers/acats/2.5'
--- 1909,1918 ----
File: gccint.info, Node: Ada Tests, Next: C Tests, Prev: Test Idioms, Up: Testsuites
! 6.4.2 Ada Language Testsuites
! -----------------------------
! The Ada testsuite includes executable tests from the ACATS 2.5
testsuite, publicly available at
`http://www.adaic.org/compilers/acats/2.5'
*************** doing a `make install'.
*** 1934,1943 ****
File: gccint.info, Node: C Tests, Next: libgcj Tests, Prev: Ada Tests, Up: Testsuites
! C Language Testsuites
! ---------------------
! GCC contains the following C language testsuites, in the
`gcc/testsuite' directory:
`gcc.dg'
--- 1944,1953 ----
File: gccint.info, Node: C Tests, Next: libgcj Tests, Prev: Ada Tests, Up: Testsuites
! 6.4.3 C Language Testsuites
! ---------------------------
! GCC contains the following C language testsuites, in the
`gcc/testsuite' directory:
`gcc.dg'
*************** C Language Testsuites
*** 2041,2056 ****
Test i386-specific support for data prefetch using
`i386-prefetch.exp'.
FIXME: merge in `testsuite/README.gcc' and discuss the format of
test cases and magic comments more.
File: gccint.info, Node: libgcj Tests, Next: gcov Testing, Prev: C Tests, Up: Testsuites
! The Java library testsuites.
! ----------------------------
! Runtime tests are executed via `make check' in the
`TARGET/libjava/testsuite' directory in the build tree. Additional
runtime tests can be checked into this testsuite.
--- 2051,2067 ----
Test i386-specific support for data prefetch using
`i386-prefetch.exp'.
+
FIXME: merge in `testsuite/README.gcc' and discuss the format of
test cases and magic comments more.
File: gccint.info, Node: libgcj Tests, Next: gcov Testing, Prev: C Tests, Up: Testsuites
! 6.4.4 The Java library testsuites.
! ----------------------------------
! Runtime tests are executed via `make check' in the
`TARGET/libjava/testsuite' directory in the build tree. Additional
runtime tests can be checked into this testsuite.
*************** libjava testsuite sources at `libjava/te
*** 2077,2090 ****
File: gccint.info, Node: gcov Testing, Next: profopt Testing, Prev: libgcj Tests, Up: Testsuites
! Support for testing `gcov'
! --------------------------
! Language-independent support for testing `gcov', and for checking
! that branch profiling produces expected values, is provided by the
! expect file `gcov.exp'. `gcov' tests also rely on procedures in
! `gcc.dg.exp' to compile and run the test program. A typical `gcov'
! test contains the following DejaGNU commands within comments:
{ dg-options "-fprofile-arcs -ftest-coverage" }
{ dg-do run { target native } }
--- 2088,2101 ----
File: gccint.info, Node: gcov Testing, Next: profopt Testing, Prev: libgcj Tests, Up: Testsuites
! 6.4.5 Support for testing `gcov'
! --------------------------------
! Language-independent support for testing `gcov', and for checking that
! branch profiling produces expected values, is provided by the expect
! file `gcov.exp'. `gcov' tests also rely on procedures in `gcc.dg.exp'
! to compile and run the test program. A typical `gcov' test contains
! the following DejaGNU commands within comments:
{ dg-options "-fprofile-arcs -ftest-coverage" }
{ dg-do run { target native } }
*************** lines that report them.
*** 2140,2149 ****
File: gccint.info, Node: profopt Testing, Next: compat Testing, Prev: gcov Testing, Up: Testsuites
! Support for testing profile-directed optimizations
! --------------------------------------------------
! The file `profopt.exp' provides language-independent support for
checking correct execution of a test built with profile-directed
optimization. This testing requires that a test program be built and
executed twice. The first time it is compiled to generate profile
--- 2151,2160 ----
File: gccint.info, Node: profopt Testing, Next: compat Testing, Prev: gcov Testing, Up: Testsuites
! 6.4.6 Support for testing profile-directed optimizations
! --------------------------------------------------------
! The file `profopt.exp' provides language-independent support for
checking correct execution of a test built with profile-directed
optimization. This testing requires that a test program be built and
executed twice. The first time it is compiled to generate profile
*************** about a specific optimization:
*** 2180,2191 ****
File: gccint.info, Node: compat Testing, Prev: profopt Testing, Up: Testsuites
! Support for testing binary compatibility
! ----------------------------------------
! The file `compat.exp' provides language-independent support for
! binary compatibility testing. It supports testing interoperability of
! two compilers that follow the same ABI, or of multiple sets of compiler
options that should not affect binary compatibility. It is intended to
be used for testsuites that complement ABI testsuites.
--- 2191,2202 ----
File: gccint.info, Node: compat Testing, Prev: profopt Testing, Up: Testsuites
! 6.4.7 Support for testing binary compatibility
! ----------------------------------------------
! The file `compat.exp' provides language-independent support for binary
! compatibility testing. It supports testing interoperability of two
! compilers that follow the same ABI, or of multiple sets of compiler
options that should not affect binary compatibility. It is intended to
be used for testsuites that complement ABI testsuites.
*************** compiler under test but is present in th
*** 2255,2264 ****
File: gccint.info, Node: Passes, Next: Trees, Prev: Source Tree, Up: Top
! Passes and Files of the Compiler
! ********************************
! The overall control structure of the compiler is in `toplev.c'. This
file is responsible for initialization, decoding arguments, opening and
closing files, and sequencing the passes. Routines for emitting
diagnostic messages are defined in `diagnostic.c'. The files
--- 2266,2275 ----
File: gccint.info, Node: Passes, Next: Trees, Prev: Source Tree, Up: Top
! 7 Passes and Files of the Compiler
! **********************************
! The overall control structure of the compiler is in `toplev.c'. This
file is responsible for initialization, decoding arguments, opening and
closing files, and sequencing the passes. Routines for emitting
diagnostic messages are defined in `diagnostic.c'. The files
*************** requested with `-d' options.
*** 2730,2739 ****
File: gccint.info, Node: Trees, Next: RTL, Prev: Passes, Up: Top
! Trees: The intermediate representation used by the C and C++ front ends
! ***********************************************************************
! This chapter documents the internal representation used by GCC to
represent C and C++ source programs. When presented with a C or C++
source program, GCC parses the program, performs semantic analysis
(including the generation of error messages), and then produces the
--- 2741,2750 ----
File: gccint.info, Node: Trees, Next: RTL, Prev: Passes, Up: Top
! 8 Trees: The intermediate representation used by the C and C++ front ends
! *************************************************************************
! This chapter documents the internal representation used by GCC to
represent C and C++ source programs. When presented with a C or C++
source program, GCC parses the program, performs semantic analysis
(including the generation of error messages), and then produces the
*************** submit your patches for inclusion in GCC
*** 2781,2799 ****
File: gccint.info, Node: Deficiencies, Next: Tree overview, Up: Trees
! Deficiencies
! ============
! There are many places in which this document is incomplet and
! incorrekt. It is, as of yet, only _preliminary_ documentation.
File: gccint.info, Node: Tree overview, Next: Types, Prev: Deficiencies, Up: Trees
! Overview
! ========
! The central data structure used by the internal representation is the
`tree'. These nodes, while all of the C type `tree', are of many
varieties. A `tree' is a pointer type, but the object to which it
points may be of a variety of types. From this point forward, we will
--- 2792,2810 ----
File: gccint.info, Node: Deficiencies, Next: Tree overview, Up: Trees
! 8.1 Deficiencies
! ================
! There are many places in which this document is incomplet and incorrekt.
! It is, as of yet, only _preliminary_ documentation.
File: gccint.info, Node: Tree overview, Next: Types, Prev: Deficiencies, Up: Trees
! 8.2 Overview
! ============
! The central data structure used by the internal representation is the
`tree'. These nodes, while all of the C type `tree', are of many
varieties. A `tree' is a pointer type, but the object to which it
points may be of a variety of types. From this point forward, we will
*************** being of any particular type. You may,
*** 2817,2834 ****
the type can be compared to `0', so that statements like
if (TEST_P (t) && !TEST_P (y))
x = 1;
!
! and
int i = (TEST_P (t) != 0);
!
! are legal. Macros that return `int' values now may be changed to
return `tree' values, or other pointers in the future. Even those that
continue to return `int' may return multiple nonzero codes where
previously they returned only zero and one. Therefore, you should not
write code like
if (TEST_P (t) == 1)
!
! as this code is not guaranteed to work correctly in the future.
You should not take the address of values returned by the macros or
functions described here. In particular, no guarantee is given that the
--- 2828,2842 ----
the type can be compared to `0', so that statements like
if (TEST_P (t) && !TEST_P (y))
x = 1;
! and
int i = (TEST_P (t) != 0);
! are legal. Macros that return `int' values now may be changed to
return `tree' values, or other pointers in the future. Even those that
continue to return `int' may return multiple nonzero codes where
previously they returned only zero and one. Therefore, you should not
write code like
if (TEST_P (t) == 1)
! as this code is not guaranteed to work correctly in the future.
You should not take the address of values returned by the macros or
functions described here. In particular, no guarantee is given that the
*************** the documentation. Please report these
*** 2877,2894 ****
File: gccint.info, Node: Macros and Functions, Next: Identifiers, Up: Tree overview
! Trees
! -----
! This section is not here yet.
File: gccint.info, Node: Identifiers, Next: Containers, Prev: Macros and Functions, Up: Tree overview
! Identifiers
! -----------
! An `IDENTIFIER_NODE' represents a slightly more general concept that
the standard C or C++ concept of identifier. In particular, an
`IDENTIFIER_NODE' may contain a `$', or other extraordinary characters.
--- 2885,2902 ----
File: gccint.info, Node: Macros and Functions, Next: Identifiers, Up: Tree overview
! 8.2.1 Trees
! -----------
! This section is not here yet.
File: gccint.info, Node: Identifiers, Next: Containers, Prev: Macros and Functions, Up: Tree overview
! 8.2.2 Identifiers
! -----------------
! An `IDENTIFIER_NODE' represents a slightly more general concept that
the standard C or C++ concept of identifier. In particular, an
`IDENTIFIER_NODE' may contain a `$', or other extraordinary characters.
*************** same identifier. Therefore, you may use
*** 2919,2931 ****
the `IDENTIFIER_NODE' holds the type to which the conversion
operator converts.
File: gccint.info, Node: Containers, Prev: Identifiers, Up: Tree overview
! Containers
! ----------
! Two common container data structures can be represented directly with
tree nodes. A `TREE_LIST' is a singly linked list containing two trees
per node. These are the `TREE_PURPOSE' and `TREE_VALUE' of each node.
(Often, the `TREE_PURPOSE' contains some kind of tag, or additional
--- 2927,2940 ----
the `IDENTIFIER_NODE' holds the type to which the conversion
operator converts.
+
File: gccint.info, Node: Containers, Prev: Identifiers, Up: Tree overview
! 8.2.3 Containers
! ----------------
! Two common container data structures can be represented directly with
tree nodes. A `TREE_LIST' is a singly linked list containing two trees
per node. These are the `TREE_PURPOSE' and `TREE_VALUE' of each node.
(Often, the `TREE_PURPOSE' contains some kind of tag, or additional
*************** The elements are indexed from zero.
*** 2946,2957 ****
File: gccint.info, Node: Types, Next: Scopes, Prev: Tree overview, Up: Trees
! Types
! =====
! All types have corresponding tree nodes. However, you should not
! assume that there is exactly one tree node corresponding to each type.
! There are often several nodes each of which correspond to the same type.
For the most part, different kinds of types have different tree
codes. (For example, pointer types use a `POINTER_TYPE' code while
--- 2955,2966 ----
File: gccint.info, Node: Types, Next: Scopes, Prev: Tree overview, Up: Trees
! 8.3 Types
! =========
! All types have corresponding tree nodes. However, you should not assume
! that there is exactly one tree node corresponding to each type. There
! are often several nodes each of which correspond to the same type.
For the most part, different kinds of types have different tree
codes. (For example, pointer types use a `POINTER_TYPE' code while
*************** These include:
*** 3223,3239 ****
`char_type_node.'
A node for `char'.
!
! It may sometimes be useful to compare one of these variables with a type
! in hand, using `same_type_p'.
File: gccint.info, Node: Scopes, Next: Functions, Prev: Types, Up: Trees
! Scopes
! ======
! The root of the entire intermediate representation is the variable
`global_namespace'. This is the namespace specified with `::' in C++
source code. All other namespaces, types, variables, functions, and so
forth can be found starting with this namespace.
--- 3232,3247 ----
`char_type_node.'
A node for `char'.
! It may sometimes be useful to compare one of these variables with a
! type in hand, using `same_type_p'.
File: gccint.info, Node: Scopes, Next: Functions, Prev: Types, Up: Trees
! 8.4 Scopes
! ==========
! The root of the entire intermediate representation is the variable
`global_namespace'. This is the namespace specified with `::' in C++
source code. All other namespaces, types, variables, functions, and so
forth can be found starting with this namespace.
*************** types defined with the `class', `struct'
*** 3251,3260 ****
File: gccint.info, Node: Namespaces, Next: Classes, Up: Scopes
! Namespaces
! ----------
! A namespace is represented by a `NAMESPACE_DECL' node.
However, except for the fact that it is distinguished as the root of
the representation, the global namespace is no different from any other
--- 3259,3268 ----
File: gccint.info, Node: Namespaces, Next: Classes, Up: Scopes
! 8.4.1 Namespaces
! ----------------
! A namespace is represented by a `NAMESPACE_DECL' node.
However, except for the fact that it is distinguished as the root of
the representation, the global namespace is no different from any other
*************** rather than the global namespace in part
*** 3314,3326 ****
This function cannot be used with namespaces that have
`DECL_NAMESPACE_ALIAS' set.
File: gccint.info, Node: Classes, Prev: Namespaces, Up: Scopes
! Classes
! -------
! A class type is represented by either a `RECORD_TYPE' or a
`UNION_TYPE'. A class declared with the `union' tag is represented by
a `UNION_TYPE', while classes declared with either the `struct' or the
`class' tag are represented by `RECORD_TYPE's. You can use the
--- 3322,3335 ----
This function cannot be used with namespaces that have
`DECL_NAMESPACE_ALIAS' set.
+
File: gccint.info, Node: Classes, Prev: Namespaces, Up: Scopes
! 8.4.2 Classes
! -------------
! A class type is represented by either a `RECORD_TYPE' or a
`UNION_TYPE'. A class declared with the `union' tag is represented by
a `UNION_TYPE', while classes declared with either the `struct' or the
`class' tag are represented by `RECORD_TYPE's. You can use the
*************** class-type.
*** 3418,3431 ****
This predicate holds for a class-type for which `operator->' is
overloaded.
File: gccint.info, Node: Declarations, Next: Attributes, Prev: Functions, Up: Trees
! Declarations
! ============
! This section covers the various kinds of declarations that appear in
! the internal representation, except for declarations of functions
(represented by `FUNCTION_DECL' nodes), which are described in *Note
Functions::.
--- 3427,3441 ----
This predicate holds for a class-type for which `operator->' is
overloaded.
+
File: gccint.info, Node: Declarations, Next: Attributes, Prev: Functions, Up: Trees
! 8.5 Declarations
! ================
! This section covers the various kinds of declarations that appear in the
! internal representation, except for declarations of functions
(represented by `FUNCTION_DECL' nodes), which are described in *Note
Functions::.
*************** Functions::.
*** 3454,3460 ****
implicitly generated for a class type. Recall that in C++ code
like:
struct S {};
-
is roughly equivalent to C code like:
struct S {};
typedef struct S S;
--- 3464,3469 ----
*************** Functions::.
*** 3472,3477 ****
--- 3481,3487 ----
This predicate holds if the entity was declared inside a function
body.
+
The various kinds of declarations include:
`LABEL_DECL'
These nodes are used to represent labels in function bodies. For
*************** Functions::.
*** 3565,3577 ****
`USING_DECL'
Back ends can safely ignore these nodes.
File: gccint.info, Node: Functions, Next: Declarations, Prev: Scopes, Up: Trees
! Functions
! =========
! A function is represented by a `FUNCTION_DECL' node. A set of
overloaded functions is sometimes represented by a `OVERLOAD' node.
An `OVERLOAD' node is not a declaration, so none of the `DECL_'
--- 3575,3588 ----
`USING_DECL'
Back ends can safely ignore these nodes.
+
File: gccint.info, Node: Functions, Next: Declarations, Prev: Scopes, Up: Trees
! 8.6 Functions
! =============
! A function is represented by a `FUNCTION_DECL' node. A set of
overloaded functions is sometimes represented by a `OVERLOAD' node.
An `OVERLOAD' node is not a declaration, so none of the `DECL_'
*************** the virtual declaration occurred.
*** 3595,3602 ****
`DECL_FRIEND_CONTEXT' macro can be used to determine the class in which
it was defined. For example, in
class C { friend void f() {} };
!
! the `DECL_CONTEXT' for `f' will be the `global_namespace', but the
`DECL_FRIEND_CONTEXT' will be the `RECORD_TYPE' for `C'.
In C, the `DECL_CONTEXT' for a function maybe another function.
--- 3606,3612 ----
`DECL_FRIEND_CONTEXT' macro can be used to determine the class in which
it was defined. For example, in
class C { friend void f() {} };
! the `DECL_CONTEXT' for `f' will be the `global_namespace', but the
`DECL_FRIEND_CONTEXT' will be the `RECORD_TYPE' for `C'.
In C, the `DECL_CONTEXT' for a function maybe another function.
*************** take appropriate action.
*** 3619,3628 ****
File: gccint.info, Node: Function Basics, Next: Function Bodies, Up: Functions
! Function Basics
! ---------------
! The following macros and functions can be used on a `FUNCTION_DECL':
`DECL_MAIN_P'
This predicate holds for a function that is the program entry point
`::code'.
--- 3629,3638 ----
File: gccint.info, Node: Function Basics, Next: Function Bodies, Up: Functions
! 8.6.1 Function Basics
! ---------------------
! The following macros and functions can be used on a `FUNCTION_DECL':
`DECL_MAIN_P'
This predicate holds for a function that is the program entry point
`::code'.
*************** Function Basics
*** 3797,3809 ****
This predicate holds if the function an overloaded `operator
delete[]'.
File: gccint.info, Node: Function Bodies, Prev: Function Basics, Up: Functions
! Function Bodies
! ---------------
! A function that has a definition in the current translation unit will
have a non-`NULL' `DECL_INITIAL'. However, back ends should not make
use of the particular value given by `DECL_INITIAL'.
--- 3807,3820 ----
This predicate holds if the function an overloaded `operator
delete[]'.
+
File: gccint.info, Node: Function Bodies, Prev: Function Basics, Up: Functions
! 8.6.2 Function Bodies
! ---------------------
! A function that has a definition in the current translation unit will
have a non-`NULL' `DECL_INITIAL'. However, back ends should not make
use of the particular value given by `DECL_INITIAL'.
*************** function. This node will usually be a `
*** 3812,3824 ****
outermost block of the function, but it may also be a `TRY_BLOCK', a
`RETURN_INIT', or any other valid statement.
! Statements
! ..........
! There are tree nodes corresponding to all of the source-level
! statement constructs. These are enumerated here, together with a list
! of the various macros that can be used to obtain information about
! them. There are a few macros that can be used with all statements:
`STMT_LINENO'
This macro returns the line number for the statement. If the
--- 3823,3835 ----
outermost block of the function, but it may also be a `TRY_BLOCK', a
`RETURN_INIT', or any other valid statement.
! 8.6.2.1 Statements
! ..................
! There are tree nodes corresponding to all of the source-level statement
! constructs. These are enumerated here, together with a list of the
! various macros that can be used to obtain information about them. There
! are a few macros that can be used with all statements:
`STMT_LINENO'
This macro returns the line number for the statement. If the
*************** them. There are a few macros that can b
*** 3841,3846 ****
--- 3852,3858 ----
statements should be destroyed when the innermost enclosing
statement with `STMT_IS_FULL_EXPR_P' set is exited.
+
Here is the list of the various statement nodes, and the macros used
to access them. This documentation describes the use of these nodes in
non-template functions (including instantiations of template functions).
*************** statement tree by looping over substatem
*** 3865,3874 ****
process_stmt (THEN_CLAUSE (stmt));
/* More processing here. */
break;
!
...
}
!
stmt = TREE_CHAIN (stmt);
}
}
--- 3877,3886 ----
process_stmt (THEN_CLAUSE (stmt));
/* More processing here. */
break;
!
...
}
!
stmt = TREE_CHAIN (stmt);
}
}
*************** several statements chained together.
*** 4103,4115 ****
The `WHILE_BODY' is the body of the loop.
File: gccint.info, Node: Attributes, Next: Expression trees, Prev: Declarations, Up: Trees
! Attributes in trees
! ===================
! Attributes, as specified using the `__attribute__' keyword, are
represented internally as a `TREE_LIST'. The `TREE_PURPOSE' is the
name of the attribute, as an `IDENTIFIER_NODE'. The `TREE_VALUE' is a
`TREE_LIST' of the arguments of the attribute, if any, or `NULL_TREE'
--- 4115,4128 ----
The `WHILE_BODY' is the body of the loop.
+
File: gccint.info, Node: Attributes, Next: Expression trees, Prev: Declarations, Up: Trees
! 8.7 Attributes in trees
! =======================
! Attributes, as specified using the `__attribute__' keyword, are
represented internally as a `TREE_LIST'. The `TREE_PURPOSE' is the
name of the attribute, as an `IDENTIFIER_NODE'. The `TREE_VALUE' is a
`TREE_LIST' of the arguments of the attribute, if any, or `NULL_TREE'
*************** attributes may be accessed with the foll
*** 4124,4149 ****
are stored in this way, and many also cause other changes to the
declaration or type or to other internal compiler data structures.
! - Tree Macro: tree DECL_ATTRIBUTES (tree DECL)
This macro returns the attributes on the declaration DECL.
! - Tree Macro: tree TYPE_ATTRIBUTES (tree TYPE)
This macro returns the attributes on the type TYPE.
File: gccint.info, Node: Expression trees, Prev: Attributes, Up: Trees
! Expressions
! ===========
! The internal representation for expressions is for the most part
! quite straightforward. However, there are a few facts that one must
! bear in mind. In particular, the expression "tree" is actually a
! directed acyclic graph. (For example there may be many references to
! the integer constant zero throughout the source program; many of these
! will be represented by the same expression node.) You should not rely
! on certain kinds of node being shared, nor should rely on certain kinds
! of nodes being unshared.
The following macros can be used with all expression nodes:
--- 4137,4162 ----
are stored in this way, and many also cause other changes to the
declaration or type or to other internal compiler data structures.
! -- Tree Macro: tree DECL_ATTRIBUTES (tree DECL)
This macro returns the attributes on the declaration DECL.
! -- Tree Macro: tree TYPE_ATTRIBUTES (tree TYPE)
This macro returns the attributes on the type TYPE.
File: gccint.info, Node: Expression trees, Prev: Attributes, Up: Trees
! 8.8 Expressions
! ===============
! The internal representation for expressions is for the most part quite
! straightforward. However, there are a few facts that one must bear in
! mind. In particular, the expression "tree" is actually a directed
! acyclic graph. (For example there may be many references to the integer
! constant zero throughout the source program; many of these will be
! represented by the same expression node.) You should not rely on
! certain kinds of node being shared, nor should rely on certain kinds of
! nodes being unshared.
The following macros can be used with all expression nodes:
*************** noted otherwise, the operands to an expr
*** 4166,4173 ****
binary plus expression `expr', use:
TREE_OPERAND (expr, 0)
!
! As this example indicates, the operands are zero-indexed.
The table below begins with constants, moves on to unary expressions,
then proceeds to binary expressions, and concludes with various other
--- 4179,4185 ----
binary plus expression `expr', use:
TREE_OPERAND (expr, 0)
! As this example indicates, the operands are zero-indexed.
The table below begins with constants, moves on to unary expressions,
then proceeds to binary expressions, and concludes with various other
*************** kinds of expressions:
*** 4181,4187 ****
given by
((TREE_INT_CST_HIGH (e) << HOST_BITS_PER_WIDE_INT)
+ TREE_INST_CST_LOW (e))
-
HOST_BITS_PER_WIDE_INT is at least thirty-two on all platforms.
Both `TREE_INT_CST_HIGH' and `TREE_INT_CST_LOW' return a
`HOST_WIDE_INT'. The value of an `INTEGER_CST' is interpreted as
--- 4193,4198 ----
*************** kinds of expressions:
*** 4253,4259 ****
struct B { int i; };
struct D : public B {};
int D::*dp = &D::i;
-
The `PTRMEM_CST_CLASS' for `&D::i' is `D', even though the
`DECL_CONTEXT' for the `PTRMEM_CST_MEMBER' is `B', since `B::i' is
a member of `B', not `D'.
--- 4264,4269 ----
*************** kinds of expressions:
*** 4683,4695 ****
(ap, type)'. Its `TREE_TYPE' yields the tree representation for
`type' and its sole argument yields the representation for `ap'.
File: gccint.info, Node: RTL, Next: Machine Desc, Prev: Trees, Up: Top
! RTL Representation
! ******************
! Most of the work of the compiler is done on an intermediate
representation called register transfer language. In this language,
the instructions to be output are described, pretty much one by one, in
an algebraic form that describes what the instruction does.
--- 4693,4706 ----
(ap, type)'. Its `TREE_TYPE' yields the tree representation for
`type' and its sole argument yields the representation for `ap'.
+
File: gccint.info, Node: RTL, Next: Machine Desc, Prev: Trees, Up: Top
! 9 RTL Representation
! ********************
! Most of the work of the compiler is done on an intermediate
representation called register transfer language. In this language,
the instructions to be output are described, pretty much one by one, in
an algebraic form that describes what the instruction does.
*************** the internal form.
*** 4727,4736 ****
File: gccint.info, Node: RTL Objects, Next: RTL Classes, Up: RTL
! RTL Object Types
! ================
! RTL uses five kinds of objects: expressions, integers, wide integers,
strings and vectors. Expressions are the most important ones. An RTL
expression ("RTX", for short) is a C structure, but it is usually
referred to with a pointer; a type that is given the typedef name `rtx'.
--- 4738,4747 ----
File: gccint.info, Node: RTL Objects, Next: RTL Classes, Up: RTL
! 9.1 RTL Object Types
! ====================
! RTL uses five kinds of objects: expressions, integers, wide integers,
strings and vectors. Expressions are the most important ones. An RTL
expression ("RTX", for short) is a C structure, but it is usually
referred to with a pointer; a type that is given the typedef name `rtx'.
*************** normally wanted. The written form of th
*** 4803,4814 ****
File: gccint.info, Node: RTL Classes, Next: Accessors, Prev: RTL Objects, Up: RTL
! RTL Classes and Formats
! =======================
! The various expression codes are divided into several "classes",
! which are represented by single characters. You can determine the class
! of an RTX code with the macro `GET_RTX_CLASS (CODE)'. Currently,
`rtx.def' defines these classes:
`o'
--- 4814,4825 ----
File: gccint.info, Node: RTL Classes, Next: Accessors, Prev: RTL Objects, Up: RTL
! 9.2 RTL Classes and Formats
! ===========================
! The various expression codes are divided into several "classes", which
! are represented by single characters. You can determine the class of
! an RTX code with the macro `GET_RTX_CLASS (CODE)'. Currently,
`rtx.def' defines these classes:
`o'
*************** it is safe to assume that all comparison
*** 4953,4964 ****
File: gccint.info, Node: Accessors, Next: Special Accessors, Prev: RTL Classes, Up: RTL
! Access to Operands
! ==================
! Operands of expressions are accessed using the macros `XEXP',
! `XINT', `XWINT' and `XSTR'. Each of these macros takes two arguments:
! an expression-pointer (RTX) and an operand number (counting from zero).
Thus,
XEXP (X, 2)
--- 4964,4975 ----
File: gccint.info, Node: Accessors, Next: Special Accessors, Prev: RTL Classes, Up: RTL
! 9.3 Access to Operands
! ======================
! Operands of expressions are accessed using the macros `XEXP', `XINT',
! `XWINT' and `XSTR'. Each of these macros takes two arguments: an
! expression-pointer (RTX) and an operand number (counting from zero).
Thus,
XEXP (X, 2)
*************** elements as well as to access them.
*** 5012,5021 ****
File: gccint.info, Node: Special Accessors, Next: Flags, Prev: Accessors, Up: RTL
! Access to Special Operands
! ==========================
! Some RTL nodes have special annotations associated with them.
`MEM'
--- 5023,5032 ----
File: gccint.info, Node: Special Accessors, Next: Flags, Prev: Accessors, Up: RTL
! 9.4 Access to Special Operands
! ==============================
! Some RTL nodes have special annotations associated with them.
`MEM'
*************** Access to Special Operands
*** 5109,5118 ****
File: gccint.info, Node: Flags, Next: Machine Modes, Prev: Special Accessors, Up: RTL
! Flags in an RTL Expression
! ==========================
! RTL expressions contain several flags (one-bit bit-fields) that are
used in certain types of expression. Most often they are accessed with
the following macros, which expand into lvalues.
--- 5120,5129 ----
File: gccint.info, Node: Flags, Next: Machine Modes, Prev: Special Accessors, Up: RTL
! 9.5 Flags in an RTL Expression
! ==============================
! RTL expressions contain several flags (one-bit bit-fields) that are
used in certain types of expression. Most often they are accessed with
the following macros, which expand into lvalues.
*************** the following macros, which expand into
*** 5479,5493 ****
File: gccint.info, Node: Machine Modes, Next: Constants, Prev: Flags, Up: RTL
! Machine Modes
! =============
! A machine mode describes a size of data object and the
! representation used for it. In the C code, machine modes are
! represented by an enumeration type, `enum machine_mode', defined in
! `machmode.def'. Each RTL expression has room for a machine mode and so
! do certain kinds of tree expressions (declarations and types, to be
! precise).
In debugging dumps and machine descriptions, the machine mode of an
RTL expression is written after the expression code with a colon to
--- 5490,5503 ----
File: gccint.info, Node: Machine Modes, Next: Constants, Prev: Flags, Up: RTL
! 9.6 Machine Modes
! =================
! A machine mode describes a size of data object and the representation
! used for it. In the C code, machine modes are represented by an
! enumeration type, `enum machine_mode', defined in `machmode.def'. Each
! RTL expression has room for a machine mode and so do certain kinds of
! tree expressions (declarations and types, to be precise).
In debugging dumps and machine descriptions, the machine mode of an
RTL expression is written after the expression code with a colon to
*************** and `SImode', respectively.
*** 5708,5718 ****
File: gccint.info, Node: Constants, Next: Regs and Memory, Prev: Machine Modes, Up: RTL
! Constant Expression Types
! =========================
! The simplest RTL expressions are those that represent constant
! values.
`(const_int I)'
This type of expression represents the integer value I. I is
--- 5718,5727 ----
File: gccint.info, Node: Constants, Next: Regs and Memory, Prev: Machine Modes, Up: RTL
! 9.7 Constant Expression Types
! =============================
! The simplest RTL expressions are those that represent constant values.
`(const_int I)'
This type of expression represents the integer value I. I is
*************** values.
*** 5833,5842 ****
File: gccint.info, Node: Regs and Memory, Next: Arithmetic, Prev: Constants, Up: RTL
! Registers and Memory
! ====================
! Here are the RTL expression types for describing access to machine
registers and to main memory.
`(reg:M N)'
--- 5842,5851 ----
File: gccint.info, Node: Regs and Memory, Next: Arithmetic, Prev: Constants, Up: RTL
! 9.8 Registers and Memory
! ========================
! Here are the RTL expression types for describing access to machine
registers and to main memory.
`(reg:M N)'
*************** registers and to main memory.
*** 6100,6112 ****
File: gccint.info, Node: Arithmetic, Next: Comparisons, Prev: Regs and Memory, Up: RTL
! RTL Expressions for Arithmetic
! ==============================
! Unless otherwise specified, all the operands of arithmetic
! expressions must be valid for mode M. An operand is valid for mode M
! if it has mode M, or if it is a `const_int' or `const_double' and M is
! a mode of class `MODE_INT'.
For commutative binary operations, constants should be placed in the
second operand.
--- 6109,6121 ----
File: gccint.info, Node: Arithmetic, Next: Comparisons, Prev: Regs and Memory, Up: RTL
! 9.9 RTL Expressions for Arithmetic
! ==================================
! Unless otherwise specified, all the operands of arithmetic expressions
! must be valid for mode M. An operand is valid for mode M if it has
! mode M, or if it is a `const_int' or `const_double' and M is a mode of
! class `MODE_INT'.
For commutative binary operations, constants should be placed in the
second operand.
*************** second operand.
*** 6302,6320 ****
File: gccint.info, Node: Comparisons, Next: Bit-Fields, Prev: Arithmetic, Up: RTL
! Comparison Operations
! =====================
! Comparison operators test a relation on two operands and are
! considered to represent a machine-dependent nonzero value described by,
! but not necessarily equal to, `STORE_FLAG_VALUE' (*note Misc::) if the
! relation holds, or zero if it does not, for comparison operators whose
! results have a `MODE_INT' mode, and `FLOAT_STORE_FLAG_VALUE' (*note
! Misc::) if the relation holds, or zero if it does not, for comparison
! operators that return floating-point values. The mode of the
! comparison operation is independent of the mode of the data being
! compared. If the comparison operation is being tested (e.g., the first
! operand of an `if_then_else'), the mode must be `VOIDmode'.
There are two ways that comparison operations may be used. The
comparison operators may be used to compare the condition codes `(cc0)'
--- 6311,6329 ----
File: gccint.info, Node: Comparisons, Next: Bit-Fields, Prev: Arithmetic, Up: RTL
! 9.10 Comparison Operations
! ==========================
! Comparison operators test a relation on two operands and are considered
! to represent a machine-dependent nonzero value described by, but not
! necessarily equal to, `STORE_FLAG_VALUE' (*note Misc::) if the relation
! holds, or zero if it does not, for comparison operators whose results
! have a `MODE_INT' mode, and `FLOAT_STORE_FLAG_VALUE' (*note Misc::) if
! the relation holds, or zero if it does not, for comparison operators
! that return floating-point values. The mode of the comparison
! operation is independent of the mode of the data being compared. If
! the comparison operation is being tested (e.g., the first operand of an
! `if_then_else'), the mode must be `VOIDmode'.
There are two ways that comparison operations may be used. The
comparison operators may be used to compare the condition codes `(cc0)'
*************** the operands.
*** 6398,6407 ****
File: gccint.info, Node: Bit-Fields, Next: Vector Operations, Prev: Comparisons, Up: RTL
! Bit-Fields
! ==========
! Special expression codes exist to represent bit-field instructions.
These types of expressions are lvalues in RTL; they may appear on the
left side of an assignment, indicating insertion of a value into the
specified bit-field.
--- 6407,6416 ----
File: gccint.info, Node: Bit-Fields, Next: Vector Operations, Prev: Comparisons, Up: RTL
! 9.11 Bit-Fields
! ===============
! Special expression codes exist to represent bit-field instructions.
These types of expressions are lvalues in RTL; they may appear on the
left side of an assignment, indicating insertion of a value into the
specified bit-field.
*************** specified bit-field.
*** 6433,6442 ****
File: gccint.info, Node: Vector Operations, Next: Conversions, Prev: Bit-Fields, Up: RTL
! Vector Operations
! =================
! All normal RTL expressions can be used with vector modes; they are
interpreted as operating on each part of the vector independently.
Additionally, there are a few new expressions to describe specific
vector operations.
--- 6442,6451 ----
File: gccint.info, Node: Vector Operations, Next: Conversions, Prev: Bit-Fields, Up: RTL
! 9.12 Vector Operations
! ======================
! All normal RTL expressions can be used with vector modes; they are
interpreted as operating on each part of the vector independently.
Additionally, there are a few new expressions to describe specific
vector operations.
*************** vector operations.
*** 6467,6484 ****
output parts must be an integer multiple of the number of input
parts.
File: gccint.info, Node: Conversions, Next: RTL Declarations, Prev: Vector Operations, Up: RTL
! Conversions
! ===========
! All conversions between machine modes must be represented by
! explicit conversion operations. For example, an expression which is
! the sum of a byte and a full word cannot be written as `(plus:SI
! (reg:QI 34) (reg:SI 80))' because the `plus' operation requires two
! operands of the same machine mode. Therefore, the byte-sized operand
! is enclosed in a conversion operation, as in
(plus:SI (sign_extend:SI (reg:QI 34)) (reg:SI 80))
--- 6476,6494 ----
output parts must be an integer multiple of the number of input
parts.
+
File: gccint.info, Node: Conversions, Next: RTL Declarations, Prev: Vector Operations, Up: RTL
! 9.13 Conversions
! ================
! All conversions between machine modes must be represented by explicit
! conversion operations. For example, an expression which is the sum of
! a byte and a full word cannot be written as `(plus:SI (reg:QI 34)
! (reg:SI 80))' because the `plus' operation requires two operands of the
! same machine mode. Therefore, the byte-sized operand is enclosed in a
! conversion operation, as in
(plus:SI (sign_extend:SI (reg:QI 34)) (reg:SI 80))
*************** must either be done at compile-time or X
*** 6554,6564 ****
File: gccint.info, Node: RTL Declarations, Next: Side Effects, Prev: Conversions, Up: RTL
! Declarations
! ============
! Declaration expression codes do not represent arithmetic operations
! but rather state assertions about their operands.
`(strict_low_part (subreg:M (reg:N R) 0))'
This expression code is used in only one context: as the
--- 6564,6574 ----
File: gccint.info, Node: RTL Declarations, Next: Side Effects, Prev: Conversions, Up: RTL
! 9.14 Declarations
! =================
! Declaration expression codes do not represent arithmetic operations but
! rather state assertions about their operands.
`(strict_low_part (subreg:M (reg:N R) 0))'
This expression code is used in only one context: as the
*************** but rather state assertions about their
*** 6575,6584 ****
File: gccint.info, Node: Side Effects, Next: Incdec, Prev: RTL Declarations, Up: RTL
! Side Effect Expressions
! =======================
! The expression codes described so far represent values, not actions.
But machine instructions never produce values; they are meaningful only
for their side effects on the state of the machine. Special expression
codes are used to represent side effects.
--- 6585,6594 ----
File: gccint.info, Node: Side Effects, Next: Incdec, Prev: RTL Declarations, Up: RTL
! 9.15 Side Effect Expressions
! ============================
! The expression codes described so far represent values, not actions.
But machine instructions never produce values; they are meaningful only
for their side effects on the state of the machine. Special expression
codes are used to represent side effects.
*************** effects as such:
*** 6893,6902 ****
File: gccint.info, Node: Incdec, Next: Assembler, Prev: Side Effects, Up: RTL
! Embedded Side-Effects on Addresses
! ==================================
! Six special side-effect expression codes appear as memory addresses.
`(pre_dec:M X)'
Represents the side effect of decrementing X by a standard amount
--- 6903,6912 ----
File: gccint.info, Node: Incdec, Next: Assembler, Prev: Side Effects, Up: RTL
! 9.16 Embedded Side-Effects on Addresses
! =======================================
! Six special side-effect expression codes appear as memory addresses.
`(pre_dec:M X)'
Represents the side effect of decrementing X by a standard amount
*************** Embedded Side-Effects on Addresses
*** 6930,6937 ****
pointers on the machine in use.
The expression Y must be one of three forms:
! `(plus:M X Z)', `(minus:M X Z)', or `(plus:M X I)', where Z
! is an index register and I is a constant.
Here is an example of its use:
--- 6940,6947 ----
pointers on the machine in use.
The expression Y must be one of three forms:
! `(plus:M X Z)', `(minus:M X Z)', or `(plus:M X I)',
! where Z is an index register and I is a constant.
Here is an example of its use:
*************** in the machine description.
*** 6970,6979 ****
File: gccint.info, Node: Assembler, Next: Insns, Prev: Incdec, Up: RTL
! Assembler Instructions as Expressions
! =====================================
! The RTX code `asm_operands' represents a value produced by a
user-specified assembler instruction. It is used to represent an `asm'
statement with arguments. An `asm' statement with a single output
operand, like this:
--- 6980,6989 ----
File: gccint.info, Node: Assembler, Next: Insns, Prev: Incdec, Up: RTL
! 9.17 Assembler Instructions as Expressions
! ==========================================
! The RTX code `asm_operands' represents a value produced by a
user-specified assembler instruction. It is used to represent an `asm'
statement with arguments. An `asm' statement with a single output
operand, like this:
*************** number, which is 0, 1, ... for successiv
*** 7005,7014 ****
File: gccint.info, Node: Insns, Next: Calls, Prev: Assembler, Up: RTL
! Insns
! =====
! The RTL representation of the code for a function is a doubly-linked
chain of objects called "insns". Insns are expressions with special
codes that are used for no other purpose. Some insns are actual
instructions; others represent dispatch tables for `switch' statements;
--- 7015,7024 ----
File: gccint.info, Node: Insns, Next: Calls, Prev: Assembler, Up: RTL
! 9.18 Insns
! ==========
! The RTL representation of the code for a function is a doubly-linked
chain of objects called "insns". Insns are expressions with special
codes that are used for no other purpose. Some insns are actual
instructions; others represent dispatch tables for `switch' statements;
*************** an expression.
*** 7541,7550 ****
File: gccint.info, Node: Calls, Next: Sharing, Prev: Insns, Up: RTL
! RTL Representation of Function-Call Insns
! =========================================
! Insns that call subroutines have the RTL expression code `call_insn'.
These insns must satisfy special rules, and their bodies must use a
special RTL expression code, `call'.
--- 7551,7560 ----
File: gccint.info, Node: Calls, Next: Sharing, Prev: Insns, Up: RTL
! 9.19 RTL Representation of Function-Call Insns
! ==============================================
! Insns that call subroutines have the RTL expression code `call_insn'.
These insns must satisfy special rules, and their bodies must use a
special RTL expression code, `call'.
*************** indicate which registers.
*** 7600,7613 ****
File: gccint.info, Node: Sharing, Next: Reading RTL, Prev: Calls, Up: RTL
! Structure Sharing Assumptions
! =============================
! The compiler assumes that certain kinds of RTL expressions are
! unique; there do not exist two distinct objects representing the same
! value. In other cases, it makes an opposite assumption: that no RTL
! expression object of a certain kind appears in more than one place in
! the containing structure.
These assumptions refer to a single function; except for the RTL
objects that describe global variables and external functions, and a
--- 7610,7623 ----
File: gccint.info, Node: Sharing, Next: Reading RTL, Prev: Calls, Up: RTL
! 9.20 Structure Sharing Assumptions
! ==================================
! The compiler assumes that certain kinds of RTL expressions are unique;
! there do not exist two distinct objects representing the same value.
! In other cases, it makes an opposite assumption: that no RTL expression
! object of a certain kind appears in more than one place in the
! containing structure.
These assumptions refer to a single function; except for the RTL
objects that describe global variables and external functions, and a
*************** are common to two functions.
*** 7669,7678 ****
File: gccint.info, Node: Reading RTL, Prev: Sharing, Up: RTL
! Reading RTL
! ===========
! To read an RTL object from a file, call `read_rtx'. It takes one
argument, a stdio stream, and returns a single RTL object. This routine
is defined in `read-rtl.c'. It is not available in the compiler
itself, only the various programs that generate the compiler back end
--- 7679,7688 ----
File: gccint.info, Node: Reading RTL, Prev: Sharing, Up: RTL
! 9.21 Reading RTL
! ================
! To read an RTL object from a file, call `read_rtx'. It takes one
argument, a stdio stream, and returns a single RTL object. This routine
is defined in `read-rtl.c'. It is not available in the compiler
itself, only the various programs that generate the compiler back end
*************** incomplete.
*** 7694,7703 ****
File: gccint.info, Node: Machine Desc, Next: Target Macros, Prev: RTL, Up: Top
! Machine Descriptions
! ********************
! A machine description has two parts: a file of instruction patterns
(`.md' file) and a C header file of macro definitions.
The `.md' file for a target machine contains a pattern for each
--- 7704,7713 ----
File: gccint.info, Node: Machine Desc, Next: Target Macros, Prev: RTL, Up: Top
! 10 Machine Descriptions
! ***********************
! A machine description has two parts: a file of instruction patterns
(`.md' file) and a C header file of macro definitions.
The `.md' file for a target machine contains a pattern for each
*************** comment, unless the semicolon is inside
*** 7739,7748 ****
File: gccint.info, Node: Overview, Next: Patterns, Up: Machine Desc
! Overview of How the Machine Description is Used
! ===============================================
! There are three main conversions that happen in the compiler:
1. The front end reads the source code and builds a parse tree.
--- 7749,7758 ----
File: gccint.info, Node: Overview, Next: Patterns, Up: Machine Desc
! 10.1 Overview of How the Machine Description is Used
! ====================================================
! There are three main conversions that happen in the compiler:
1. The front end reads the source code and builds a parse tree.
*************** like it's unnamed, since the names are i
*** 7783,7792 ****
File: gccint.info, Node: Patterns, Next: Example, Prev: Overview, Up: Machine Desc
! Everything about Instruction Patterns
! =====================================
! Each instruction pattern contains an incomplete RTL expression, with
pieces to be filled in later, operand constraints that restrict how the
pieces can be filled in, and an output pattern or C code to generate
the assembler output, all wrapped up in a `define_insn' expression.
--- 7793,7802 ----
File: gccint.info, Node: Patterns, Next: Example, Prev: Overview, Up: Machine Desc
! 10.2 Everything about Instruction Patterns
! ==========================================
! Each instruction pattern contains an incomplete RTL expression, with
pieces to be filled in later, operand constraints that restrict how the
pieces can be filled in, and an output pattern or C code to generate
the assembler output, all wrapped up in a `define_insn' expression.
*************** operands:
*** 7855,7864 ****
File: gccint.info, Node: Example, Next: RTL Template, Prev: Patterns, Up: Machine Desc
! Example of `define_insn'
! ========================
! Here is an actual example of an instruction pattern, for the
68000/68020.
(define_insn "tstsi"
--- 7865,7874 ----
File: gccint.info, Node: Example, Next: RTL Template, Prev: Patterns, Up: Machine Desc
! 10.3 Example of `define_insn'
! =============================
! Here is an actual example of an instruction pattern, for the
68000/68020.
(define_insn "tstsi"
*************** type of CPU for which code is being gene
*** 7900,7909 ****
File: gccint.info, Node: RTL Template, Next: Output Template, Prev: Example, Up: Machine Desc
! RTL Template
! ============
! The RTL template is used to define which insns match the particular
pattern and how to find their operands. For named patterns, the RTL
template also says how to construct an insn from specified operands.
--- 7910,7919 ----
File: gccint.info, Node: RTL Template, Next: Output Template, Prev: Example, Up: Machine Desc
! 10.4 RTL Template
! =================
! The RTL template is used to define which insns match the particular
pattern and how to find their operands. For named patterns, the RTL
template also says how to construct an insn from specified operands.
*************** substitution of the operands.
*** 8158,8170 ****
predicate function, and that function is solely responsible for
deciding whether the expression to be matched "has" that mode.
File: gccint.info, Node: Output Template, Next: Output Statement, Prev: RTL Template, Up: Machine Desc
! Output Templates and Operand Substitution
! =========================================
! The "output template" is a string which specifies how to output the
assembler code for an instruction pattern. Most of the template is a
fixed string which is output literally. The character `%' is used to
specify where to substitute an operand; it can also be used to identify
--- 8168,8181 ----
predicate function, and that function is solely responsible for
deciding whether the expression to be matched "has" that mode.
+
File: gccint.info, Node: Output Template, Next: Output Statement, Prev: RTL Template, Up: Machine Desc
! 10.5 Output Templates and Operand Substitution
! ==============================================
! The "output template" is a string which specifies how to output the
assembler code for an instruction pattern. Most of the template is a
fixed string which is output literally. The character `%' is used to
specify where to substitute an operand; it can also be used to identify
*************** Instruction Output::.
*** 8242,8251 ****
File: gccint.info, Node: Output Statement, Next: Constraints, Prev: Output Template, Up: Machine Desc
! C Statements for Assembler Output
! =================================
! Often a single fixed template string cannot produce correct and
efficient assembler code for all the cases that are recognized by a
single instruction pattern. For example, the opcodes may depend on the
kinds of operands; or some unfortunate combinations of operands may
--- 8253,8262 ----
File: gccint.info, Node: Output Statement, Next: Constraints, Prev: Output Template, Up: Machine Desc
! 10.6 C Statements for Assembler Output
! ======================================
! Often a single fixed template string cannot produce correct and
efficient assembler code for all the cases that are recognized by a
single instruction pattern. For example, the opcodes may depend on the
kinds of operands; or some unfortunate combinations of operands may
*************** follows, having the output control strin
*** 8333,8348 ****
File: gccint.info, Node: Constraints, Next: Standard Names, Prev: Output Statement, Up: Machine Desc
! Operand Constraints
! ===================
! Each `match_operand' in an instruction pattern can specify a
! constraint for the type of operands allowed. Constraints can say
! whether an operand may be in a register, and which kinds of register;
! whether the operand can be a memory reference, and which kinds of
! address; whether the operand may be an immediate constant, and which
! possible values it may have. Constraints can also require two operands
! to match.
* Menu:
--- 8344,8358 ----
File: gccint.info, Node: Constraints, Next: Standard Names, Prev: Output Statement, Up: Machine Desc
! 10.7 Operand Constraints
! ========================
! Each `match_operand' in an instruction pattern can specify a constraint
! for the type of operands allowed. Constraints can say whether an
! operand may be in a register, and which kinds of register; whether the
! operand can be a memory reference, and which kinds of address; whether
! the operand may be an immediate constant, and which possible values it
! may have. Constraints can also require two operands to match.
* Menu:
*************** to match.
*** 8355,8364 ****
File: gccint.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
! Simple Constraints
! ------------------
! The simplest kind of constraint is a string full of letters, each of
which describes one kind of operand that is permitted. Here are the
letters that are allowed:
--- 8365,8374 ----
File: gccint.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
! 10.7.1 Simple Constraints
! -------------------------
! The simplest kind of constraint is a string full of letters, each of
which describes one kind of operand that is permitted. Here are the
letters that are allowed:
*************** the constraint true. The results might
*** 8569,8575 ****
(insn N2 PREV N
(set (reg:SI 3) (reg:SI 6))
...)
!
(insn N N2 NEXT
(set (reg:SI 3)
(plus:SI (reg:SI 3) (reg:SI 109)))
--- 8579,8585 ----
(insn N2 PREV N
(set (reg:SI 3) (reg:SI 6))
...)
!
(insn N N2 NEXT
(set (reg:SI 3)
(plus:SI (reg:SI 3) (reg:SI 109)))
*************** is required for the operand of the `sign
*** 8636,8649 ****
File: gccint.info, Node: Multi-Alternative, Next: Class Preferences, Prev: Simple Constraints, Up: Constraints
! Multiple Alternative Constraints
! --------------------------------
! Sometimes a single instruction has multiple alternative sets of
! possible operands. For example, on the 68000, a logical-or instruction
! can combine register or an immediate value into memory, or it can
! combine any kind of operand into a register; but it cannot combine one
! memory location into another.
These constraints are represented as multiple alternatives. An
alternative can be described by a series of letters for each operand.
--- 8646,8659 ----
File: gccint.info, Node: Multi-Alternative, Next: Class Preferences, Prev: Simple Constraints, Up: Constraints
! 10.7.2 Multiple Alternative Constraints
! ---------------------------------------
! Sometimes a single instruction has multiple alternative sets of possible
! operands. For example, on the 68000, a logical-or instruction can
! combine register or an immediate value into memory, or it can combine
! any kind of operand into a register; but it cannot combine one memory
! location into another.
These constraints are represented as multiple alternatives. An
alternative can be described by a series of letters for each operand.
*************** Statement::.
*** 8696,8713 ****
File: gccint.info, Node: Class Preferences, Next: Modifiers, Prev: Multi-Alternative, Up: Constraints
! Register Class Preferences
! --------------------------
! The operand constraints have another function: they enable the
! compiler to decide which kind of hardware register a pseudo register is
! best allocated to. The compiler examines the constraints that apply to
! the insns that use the pseudo register, looking for the
! machine-dependent letters such as `d' and `a' that specify classes of
! registers. The pseudo register is put in whichever class gets the most
! "votes". The constraint letters `g' and `r' also vote: they vote in
! favor of a general register. The machine description says which
! registers are considered general.
Of course, on some machines all registers are equivalent, and no
register classes are defined. Then none of this complexity is relevant.
--- 8706,8723 ----
File: gccint.info, Node: Class Preferences, Next: Modifiers, Prev: Multi-Alternative, Up: Constraints
! 10.7.3 Register Class Preferences
! ---------------------------------
! The operand constraints have another function: they enable the compiler
! to decide which kind of hardware register a pseudo register is best
! allocated to. The compiler examines the constraints that apply to the
! insns that use the pseudo register, looking for the machine-dependent
! letters such as `d' and `a' that specify classes of registers. The
! pseudo register is put in whichever class gets the most "votes". The
! constraint letters `g' and `r' also vote: they vote in favor of a
! general register. The machine description says which registers are
! considered general.
Of course, on some machines all registers are equivalent, and no
register classes are defined. Then none of this complexity is relevant.
*************** register classes are defined. Then none
*** 8715,8724 ****
File: gccint.info, Node: Modifiers, Next: Machine Constraints, Prev: Class Preferences, Up: Constraints
! Constraint Modifier Characters
! ------------------------------
! Here are constraint modifier characters.
`='
Means that this operand is write-only for this instruction: the
--- 8725,8734 ----
File: gccint.info, Node: Modifiers, Next: Machine Constraints, Prev: Class Preferences, Up: Constraints
! 10.7.4 Constraint Modifier Characters
! -------------------------------------
! Here are constraint modifier characters.
`='
Means that this operand is write-only for this instruction: the
*************** Constraint Modifier Characters
*** 8804,8815 ****
File: gccint.info, Node: Machine Constraints, Prev: Modifiers, Up: Constraints
! Constraints for Particular Machines
! -----------------------------------
! Whenever possible, you should use the general-purpose constraint
! letters in `asm' arguments, since they will convey meaning more readily
! to people reading your code. Failing that, use the constraint letters
that usually have very similar meanings across architectures. The most
commonly used constraints are `m' and `r' (for memory and
general-purpose registers respectively; *note Simple Constraints::), and
--- 8814,8825 ----
File: gccint.info, Node: Machine Constraints, Prev: Modifiers, Up: Constraints
! 10.7.5 Constraints for Particular Machines
! ------------------------------------------
! Whenever possible, you should use the general-purpose constraint letters
! in `asm' arguments, since they will convey meaning more readily to
! people reading your code. Failing that, use the constraint letters
that usually have very similar meanings across architectures. The most
commonly used constraints are `m' and `r' (for memory and
general-purpose registers respectively; *note Simple Constraints::), and
*************** _FRV--`frv.h'_
*** 9301,9306 ****
--- 9311,9317 ----
12-bit signed integer constant that is greater than
zero--i.e. in the range of 1 to 2047.
+
_IP2K--`ip2k.h'_
`a'
*************** _Motorola 68HC11 & 68HC12 families--`m68
*** 9518,9523 ****
--- 9529,9535 ----
`P'
Constants in the range -8 to 2
+
_SPARC--`sparc.h'_
`f'
*************** _SPARC--`sparc.h'_
*** 9597,9602 ****
--- 9609,9615 ----
`W'
Memory address for `e' constraint registers.
+
_TMS320C3x/C4x--`c4x.h'_
`a'
*************** _TMS320C3x/C4x--`c4x.h'_
*** 9679,9684 ****
--- 9692,9698 ----
`U'
Symbolic address
+
_S/390 and zSeries--`s390.h'_
`a'
*************** _S/390 and zSeries--`s390.h'_
*** 9723,9731 ****
mode of the containing operand
`0,F:'
! value of the other parts (F - all bits set) The
! constraint matches if the specified part of a constant has a
! value different from it's other parts.
`Q'
Memory reference without index register and with short
--- 9737,9745 ----
mode of the containing operand
`0,F:'
! value of the other parts (F - all bits set)
! The constraint matches if the specified part of a constant
! has a value different from it's other parts.
`Q'
Memory reference without index register and with short
*************** _S/390 and zSeries--`s390.h'_
*** 9750,9755 ****
--- 9764,9770 ----
`Y'
Shift count operand.
+
_Xstormy16--`stormy16.h'_
`a'
*************** _Xstormy16--`stormy16.h'_
*** 9819,9824 ****
--- 9834,9840 ----
`Z'
The constant 0.
+
_Xtensa--`xtensa.h'_
`a'
*************** _Xtensa--`xtensa.h'_
*** 9842,9855 ****
`L'
Unsigned constant valid for BccUI instructions
File: gccint.info, Node: Standard Names, Next: Pattern Ordering, Prev: Constraints, Up: Machine Desc
! Standard Pattern Names For Generation
! =====================================
! Here is a table of the instruction names that are meaningful in the
! RTL generation pass of the compiler. Giving one of these names to an
instruction pattern tells the RTL generation pass that it can use the
pattern to accomplish a certain task.
--- 9858,9873 ----
`L'
Unsigned constant valid for BccUI instructions
+
+
File: gccint.info, Node: Standard Names, Next: Pattern Ordering, Prev: Constraints, Up: Machine Desc
! 10.8 Standard Pattern Names For Generation
! ==========================================
! Here is a table of the instruction names that are meaningful in the RTL
! generation pass of the compiler. Giving one of these names to an
instruction pattern tells the RTL generation pass that it can use the
pattern to accomplish a certain task.
*************** pattern to accomplish a certain task.
*** 10013,10019 ****
`divM3', `udivM3', `modM3', `umodM3'
`sminM3', `smaxM3', `uminM3', `umaxM3'
`andM3', `iorM3', `xorM3'
! Similar, for other arithmetic operations.
`minM3', `maxM3'
Floating point min and max operations. If both operands are zeros,
--- 10031,10037 ----
`divM3', `udivM3', `modM3', `umodM3'
`sminM3', `smaxM3', `uminM3', `umaxM3'
`andM3', `iorM3', `xorM3'
! Similar, for other arithmetic operations.
`minM3', `maxM3'
Floating point min and max operations. If both operands are zeros,
*************** pattern to accomplish a certain task.
*** 10891,10907 ****
Targets that do not support write prefetches or locality hints can
ignore the values of operands 1 and 2.
File: gccint.info, Node: Pattern Ordering, Next: Dependent Patterns, Prev: Standard Names, Up: Machine Desc
! When the Order of Patterns Matters
! ==================================
! Sometimes an insn can match more than one instruction pattern. Then
! the pattern that appears first in the machine description is the one
! used. Therefore, more specific patterns (patterns that will match
! fewer things) and faster instructions (those that will produce better
! code when they do match) should usually go first in the description.
In some cases the effect of ordering the patterns can be used to hide
a pattern when it is not valid. For example, the 68000 has an
--- 10909,10926 ----
Targets that do not support write prefetches or locality hints can
ignore the values of operands 1 and 2.
+
File: gccint.info, Node: Pattern Ordering, Next: Dependent Patterns, Prev: Standard Names, Up: Machine Desc
! 10.9 When the Order of Patterns Matters
! =======================================
! Sometimes an insn can match more than one instruction pattern. Then the
! pattern that appears first in the machine description is the one used.
! Therefore, more specific patterns (patterns that will match fewer
! things) and faster instructions (those that will produce better code
! when they do match) should usually go first in the description.
In some cases the effect of ordering the patterns can be used to hide
a pattern when it is not valid. For example, the 68000 has an
*************** value.
*** 10918,10927 ****
File: gccint.info, Node: Dependent Patterns, Next: Jump Patterns, Prev: Pattern Ordering, Up: Machine Desc
! Interdependence of Patterns
! ===========================
! Every machine description must have a named pattern for each of the
conditional branch names `bCOND'. The recognition template must always
have the form
--- 10937,10946 ----
File: gccint.info, Node: Dependent Patterns, Next: Jump Patterns, Prev: Pattern Ordering, Up: Machine Desc
! 10.10 Interdependence of Patterns
! =================================
! Every machine description must have a named pattern for each of the
conditional branch names `bCOND'. The recognition template must always
have the form
*************** patterns are
*** 10962,10968 ****
(set (match_operand:SI 0 ...)
(extend:SI (match_operand:HI 1 ...)))
!
(set (match_operand:SI 0 ...)
(extend:SI (match_operand:QI 1 ...)))
--- 10981,10987 ----
(set (match_operand:SI 0 ...)
(extend:SI (match_operand:HI 1 ...)))
!
(set (match_operand:SI 0 ...)
(extend:SI (match_operand:QI 1 ...)))
*************** generating the appropriate machine instr
*** 10989,10998 ****
File: gccint.info, Node: Jump Patterns, Next: Looping Patterns, Prev: Dependent Patterns, Up: Machine Desc
! Defining Jump Instruction Patterns
! ==================================
! For most machines, GCC assumes that the machine has a condition code.
A comparison insn sets the condition code, recording the results of both
signed and unsigned comparison of the given operands. A separate branch
insn tests the condition code and branches or not according its value.
--- 11008,11017 ----
File: gccint.info, Node: Jump Patterns, Next: Looping Patterns, Prev: Dependent Patterns, Up: Machine Desc
! 10.11 Defining Jump Instruction Patterns
! ========================================
! For most machines, GCC assumes that the machine has a condition code.
A comparison insn sets the condition code, recording the results of both
signed and unsigned comparison of the given operands. A separate branch
insn tests the condition code and branches or not according its value.
*************** comparisons whose argument is a `plus'.
*** 11100,11109 ****
File: gccint.info, Node: Looping Patterns, Next: Insn Canonicalizations, Prev: Jump Patterns, Up: Machine Desc
! Defining Looping Instruction Patterns
! =====================================
! Some machines have special jump instructions that can be utilized to
make loops more efficient. A common example is the 68000 `dbra'
instruction which performs a decrement of a register and a branch if the
result was greater than zero. Other machines, in particular digital
--- 11119,11128 ----
File: gccint.info, Node: Looping Patterns, Next: Insn Canonicalizations, Prev: Jump Patterns, Up: Machine Desc
! 10.12 Defining Looping Instruction Patterns
! ===========================================
! Some machines have special jump instructions that can be utilized to
make loops more efficient. A common example is the 68000 `dbra'
instruction which performs a decrement of a register and a branch if the
result was greater than zero. Other machines, in particular digital
*************** redundant and removed by the flow pass.
*** 11196,11210 ****
File: gccint.info, Node: Insn Canonicalizations, Next: Expander Definitions, Prev: Looping Patterns, Up: Machine Desc
! Canonicalization of Instructions
! ================================
! There are often cases where multiple RTL expressions could represent
! an operation performed by a single machine instruction. This situation
! is most commonly encountered with logical, branch, and
! multiply-accumulate instructions. In such cases, the compiler attempts
! to convert these multiple RTL expressions into a single canonical form
! to reduce the number of insn patterns required.
In addition to algebraic simplifications, following canonicalizations
are performed:
--- 11215,11229 ----
File: gccint.info, Node: Insn Canonicalizations, Next: Expander Definitions, Prev: Looping Patterns, Up: Machine Desc
! 10.13 Canonicalization of Instructions
! ======================================
! There are often cases where multiple RTL expressions could represent an
! operation performed by a single machine instruction. This situation is
! most commonly encountered with logical, branch, and multiply-accumulate
! instructions. In such cases, the compiler attempts to convert these
! multiple RTL expressions into a single canonical form to reduce the
! number of insn patterns required.
In addition to algebraic simplifications, following canonicalizations
are performed:
*************** are performed:
*** 11288,11299 ****
File: gccint.info, Node: Expander Definitions, Next: Insn Splitting, Prev: Insn Canonicalizations, Up: Machine Desc
! Defining RTL Sequences for Code Generation
! ==========================================
! 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
`define_expand' to specify how to generate the sequence of RTL.
A `define_expand' is an RTL expression that looks almost like a
--- 11307,11318 ----
File: gccint.info, Node: Expander Definitions, Next: Insn Splitting, Prev: Insn Canonicalizations, Up: Machine Desc
! 10.14 Defining RTL Sequences for Code Generation
! ================================================
! 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
`define_expand' to specify how to generate the sequence of RTL.
A `define_expand' is an RTL expression that looks almost like a
*************** then the register used in the `and'.
*** 11458,11464 ****
"operands[2]
= force_reg (SImode, GEN_INT (65535)); ")
! *Note:* If the `define_expand' is used to serve a standard binary or
unary arithmetic operation or a bit-field operation, then the last insn
it generates must not be a `code_label', `barrier' or `note'. It must
be an `insn', `jump_insn' or `call_insn'. If you don't need a real insn
--- 11477,11483 ----
"operands[2]
= force_reg (SImode, GEN_INT (65535)); ")
! *Note_* If the `define_expand' is used to serve a standard binary or
unary arithmetic operation or a bit-field operation, then the last insn
it generates must not be a `code_label', `barrier' or `note'. It must
be an `insn', `jump_insn' or `call_insn'. If you don't need a real insn
*************** in the compiler.
*** 11469,11478 ****
File: gccint.info, Node: Insn Splitting, Next: Including Patterns, Prev: Expander Definitions, Up: Machine Desc
! Defining How to Split Instructions
! ==================================
! There are two cases where you should specify how to split a pattern
into multiple insns. On machines that have instructions requiring
delay slots (*note Delay Slots::) or that have instructions whose
output is not available for multiple cycles (*note Processor pipeline
--- 11488,11497 ----
File: gccint.info, Node: Insn Splitting, Next: Including Patterns, Prev: Expander Definitions, Up: Machine Desc
! 10.15 Defining How to Split Instructions
! ========================================
! There are two cases where you should specify how to split a pattern
into multiple insns. On machines that have instructions requiring
delay slots (*note Delay Slots::) or that have instructions whose
output is not available for multiple cycles (*note Processor pipeline
*************** produce insns that match).
*** 11574,11583 ****
{
int low = INTVAL (operands[2]) & 0xffff;
int high = (unsigned) INTVAL (operands[2]) >> 16;
!
if (low & 0x8000)
high++, low |= 0xffff0000;
!
operands[3] = GEN_INT (high << 16);
operands[4] = GEN_INT (low);
}")
--- 11593,11602 ----
{
int low = INTVAL (operands[2]) & 0xffff;
int high = (unsigned) INTVAL (operands[2]) >> 16;
!
if (low & 0x8000)
high++, low |= 0xffff0000;
!
operands[3] = GEN_INT (high << 16);
operands[4] = GEN_INT (low);
}")
*************** generates an equality comparison of a re
*** 11605,11615 ****
/* Get the constant we are comparing against, C, and see what it
looks like sign-extended to 16 bits. Then see what constant
could be XOR'ed with C to get the sign-extended value. */
!
int c = INTVAL (operands[2]);
int sextc = (c << 16) >> 16;
int xorv = c ^ sextc;
!
operands[4] = GEN_INT (xorv);
operands[5] = GEN_INT (sextc);
}")
--- 11624,11634 ----
/* Get the constant we are comparing against, C, and see what it
looks like sign-extended to 16 bits. Then see what constant
could be XOR'ed with C to get the sign-extended value. */
!
int c = INTVAL (operands[2]);
int sextc = (c << 16) >> 16;
int xorv = c ^ sextc;
!
operands[4] = GEN_INT (xorv);
operands[5] = GEN_INT (sextc);
}")
*************** prevent having to ensure the two pattern
*** 11683,11692 ****
File: gccint.info, Node: Including Patterns, Next: Peephole Definitions, Prev: Insn Splitting, Up: Machine Desc
! Including Patterns in Machine Descriptions.
! ===========================================
! The `include' pattern tells the compiler tools where to look for
patterns that are in files other than in the file `.md'. This is used
only at build time and there is no preprocessing allowed.
--- 11702,11711 ----
File: gccint.info, Node: Including Patterns, Next: Peephole Definitions, Prev: Insn Splitting, Up: Machine Desc
! 10.16 Including Patterns in Machine Descriptions.
! =================================================
! The `include' pattern tells the compiler tools where to look for
patterns that are in files other than in the file `.md'. This is used
only at build time and there is no preprocessing allowed.
*************** subsections and placed into subdirectori
*** 11721,11730 ****
(include "/u2/BOGUS/filestuff")
is permitted but is not encouraged.
! RTL Generation Tool Options for Directory Search
! ------------------------------------------------
! The `-IDIR' option specifies directories to search for machine
descriptions. For example:
--- 11740,11749 ----
(include "/u2/BOGUS/filestuff")
is permitted but is not encouraged.
! 10.16.1 RTL Generation Tool Options for Directory Search
! --------------------------------------------------------
! The `-IDIR' option specifies directories to search for machine
descriptions. For example:
*************** after.
*** 11741,11750 ****
File: gccint.info, Node: Peephole Definitions, Next: Insn Attributes, Prev: Including Patterns, Up: Machine Desc
! Machine-Specific Peephole Optimizers
! ====================================
! In addition to instruction patterns the `md' file may contain
definitions of machine-specific peephole optimizations.
The combiner does not notice certain peephole optimizations when the
--- 11760,11769 ----
File: gccint.info, Node: Peephole Definitions, Next: Insn Attributes, Prev: Including Patterns, Up: Machine Desc
! 10.17 Machine-Specific Peephole Optimizers
! ==========================================
! In addition to instruction patterns the `md' file may contain
definitions of machine-specific peephole optimizations.
The combiner does not notice certain peephole optimizations when the
*************** scheduling.
*** 11772,11781 ****
File: gccint.info, Node: define_peephole, Next: define_peephole2, Up: Peephole Definitions
! RTL to Text Peephole Optimizers
! -------------------------------
! A definition looks like this:
(define_peephole
[INSN-PATTERN-1
--- 11791,11800 ----
File: gccint.info, Node: define_peephole, Next: define_peephole2, Up: Peephole Definitions
! 10.17.1 RTL to Text Peephole Optimizers
! ---------------------------------------
! A definition looks like this:
(define_peephole
[INSN-PATTERN-1
*************** then the way to mention this insn in a p
*** 11927,11939 ****
File: gccint.info, Node: define_peephole2, Prev: define_peephole, Up: Peephole Definitions
! RTL to RTL Peephole Optimizers
! ------------------------------
! The `define_peephole2' definition tells the compiler how to
! substitute one sequence of instructions for another sequence, what
! additional scratch registers may be needed and what their lifetimes
! must be.
(define_peephole2
[INSN-PATTERN-1
--- 11946,11957 ----
File: gccint.info, Node: define_peephole2, Prev: define_peephole, Up: Peephole Definitions
! 10.17.2 RTL to RTL Peephole Optimizers
! --------------------------------------
! The `define_peephole2' definition tells the compiler how to substitute
! one sequence of instructions for another sequence, what additional
! scratch registers may be needed and what their lifetimes must be.
(define_peephole2
[INSN-PATTERN-1
*************** beginning of the sequence is killed by t
*** 12004,12013 ****
File: gccint.info, Node: Insn Attributes, Next: Conditional Execution, Prev: Peephole Definitions, Up: Machine Desc
! Instruction Attributes
! ======================
! In addition to describing the instruction supported by the target
machine, the `md' file also defines a group of "attributes" and a set of
values for each. Every generated insn is assigned a value for each
attribute. One possible attribute would be the effect that the insn
--- 12022,12031 ----
File: gccint.info, Node: Insn Attributes, Next: Conditional Execution, Prev: Peephole Definitions, Up: Machine Desc
! 10.18 Instruction Attributes
! ============================
! In addition to describing the instruction supported by the target
machine, the `md' file also defines a group of "attributes" and a set of
values for each. Every generated insn is assigned a value for each
attribute. One possible attribute would be the effect that the insn
*************** by `NOTICE_UPDATE_CC' to track the condi
*** 12028,12038 ****
File: gccint.info, Node: Defining Attributes, Next: Expressions, Up: Insn Attributes
! Defining Attributes and their Values
! ------------------------------------
! The `define_attr' expression is used to define each attribute
! required by the target machine. It looks like:
(define_attr NAME LIST-OF-VALUES DEFAULT)
--- 12046,12056 ----
File: gccint.info, Node: Defining Attributes, Next: Expressions, Up: Insn Attributes
! 10.18.1 Defining Attributes and their Values
! --------------------------------------------
! The `define_attr' expression is used to define each attribute required
! by the target machine. It looks like:
(define_attr NAME LIST-OF-VALUES DEFAULT)
*************** defined and the function to obtain the a
*** 12080,12092 ****
File: gccint.info, Node: Expressions, Next: Tagging Insns, Prev: Defining Attributes, Up: Insn Attributes
! Attribute Expressions
! ---------------------
! RTL expressions used to define attributes use the codes described
! above plus a few specific to attribute definitions, to be discussed
! below. Attribute value expressions must have one of the following
! forms:
`(const_int I)'
The integer I specifies the value of a numeric attribute. I must
--- 12098,12109 ----
File: gccint.info, Node: Expressions, Next: Tagging Insns, Prev: Defining Attributes, Up: Insn Attributes
! 10.18.2 Attribute Expressions
! -----------------------------
! RTL expressions used to define attributes use the codes described above
! plus a few specific to attribute definitions, to be discussed below.
! Attribute value expressions must have one of the following forms:
`(const_int I)'
The integer I specifies the value of a numeric attribute. I must
*************** forms:
*** 12240,12258 ****
File: gccint.info, Node: Tagging Insns, Next: Attr Example, Prev: Expressions, Up: Insn Attributes
! Assigning Attribute Values to Insns
! -----------------------------------
! The value assigned to an attribute of an insn is primarily
! determined by which pattern is matched by that insn (or which
! `define_peephole' generated it). Every `define_insn' and
! `define_peephole' can have an optional last argument to specify the
! values of attributes for matching insns. The value of any attribute
! not specified in a particular insn is set to the default value for that
! attribute, as specified in its `define_attr'. Extensive use of default
! values for attributes permits the specification of the values for only
! one or two attributes in the definition of most insn patterns, as seen
! in the example in the next section.
The optional last argument of `define_insn' and `define_peephole' is
a vector of expressions, each of which defines the value for a single
--- 12257,12275 ----
File: gccint.info, Node: Tagging Insns, Next: Attr Example, Prev: Expressions, Up: Insn Attributes
! 10.18.3 Assigning Attribute Values to Insns
! -------------------------------------------
! The value assigned to an attribute of an insn is primarily determined by
! which pattern is matched by that insn (or which `define_peephole'
! generated it). Every `define_insn' and `define_peephole' can have an
! optional last argument to specify the values of attributes for matching
! insns. The value of any attribute not specified in a particular insn
! is set to the default value for that attribute, as specified in its
! `define_attr'. Extensive use of default values for attributes permits
! the specification of the values for only one or two attributes in the
! definition of most insn patterns, as seen in the example in the next
! section.
The optional last argument of `define_insn' and `define_peephole' is
a vector of expressions, each of which defines the value for a single
*************** each case, NAME is a string specifying t
*** 12300,12310 ****
attribute value specification:
(set_attr "type" "load,store,arith")
!
(set_attr_alternative "type"
[(const_string "load") (const_string "store")
(const_string "arith")])
!
(set (attr "type")
(cond [(eq_attr "alternative" "1") (const_string "load")
(eq_attr "alternative" "2") (const_string "store")]
--- 12317,12327 ----
attribute value specification:
(set_attr "type" "load,store,arith")
!
(set_attr_alternative "type"
[(const_string "load") (const_string "store")
(const_string "arith")])
!
(set (attr "type")
(cond [(eq_attr "alternative" "1") (const_string "load")
(eq_attr "alternative" "2") (const_string "store")]
*************** single machine instruction.
*** 12335,12344 ****
File: gccint.info, Node: Attr Example, Next: Insn Lengths, Prev: Tagging Insns, Up: Insn Attributes
! Example of Attribute Specifications
! -----------------------------------
! The judicious use of defaulting is important in the efficient use of
insn attributes. Typically, insns are divided into "types" and an
attribute, customarily called `type', is used to represent this value.
This attribute is normally used only to define the default value for
--- 12352,12361 ----
File: gccint.info, Node: Attr Example, Next: Insn Lengths, Prev: Tagging Insns, Up: Insn Attributes
! 10.18.4 Example of Attribute Specifications
! -------------------------------------------
! The judicious use of defaulting is important in the efficient use of
insn attributes. Typically, insns are divided into "types" and an
attribute, customarily called `type', is used to represent this value.
This attribute is normally used only to define the default value for
*************** condition code has been modified.
*** 12359,12365 ****
Here is part of a sample `md' file for such a machine:
(define_attr "type" "load,store,arith,fp,branch" (const_string "arith"))
!
(define_attr "cc" "clobber,unchanged,set,change0"
(cond [(eq_attr "type" "load")
(const_string "change0")
--- 12376,12382 ----
Here is part of a sample `md' file for such a machine:
(define_attr "type" "load,store,arith,fp,branch" (const_string "arith"))
!
(define_attr "cc" "clobber,unchanged,set,change0"
(cond [(eq_attr "type" "load")
(const_string "change0")
*************** condition code has been modified.
*** 12370,12376 ****
(const_string "set")
(const_string "clobber"))]
(const_string "clobber")))
!
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=r,r,m")
(match_operand:SI 1 "general_operand" "r,m,r"))]
--- 12387,12393 ----
(const_string "set")
(const_string "clobber"))]
(const_string "clobber")))
!
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=r,r,m")
(match_operand:SI 1 "general_operand" "r,m,r"))]
*************** corresponding to the full-word result.
*** 12389,12404 ****
File: gccint.info, Node: Insn Lengths, Next: Constant Attributes, Prev: Attr Example, Up: Insn Attributes
! Computing the Length of an Insn
! -------------------------------
! For many machines, multiple types of branch instructions are
! provided, each for different length branch displacements. In most
! cases, the assembler will choose the correct instruction to use.
! However, when the assembler cannot do so, GCC can when a special
! attribute, the `length' attribute, is defined. This attribute must be
! defined to have numeric values by specifying a null string in its
! `define_attr'.
In the case of the `length' attribute, two additional forms of
arithmetic terms are allowed in test expressions:
--- 12406,12420 ----
File: gccint.info, Node: Insn Lengths, Next: Constant Attributes, Prev: Attr Example, Up: Insn Attributes
! 10.18.5 Computing the Length of an Insn
! ---------------------------------------
! For many machines, multiple types of branch instructions are provided,
! each for different length branch displacements. In most cases, the
! assembler will choose the correct instruction to use. However, when
! the assembler cannot do so, GCC can when a special attribute, the
! `length' attribute, is defined. This attribute must be defined to have
! numeric values by specifying a null string in its `define_attr'.
In the case of the `length' attribute, two additional forms of
arithmetic terms are allowed in test expressions:
*************** specified as follows:
*** 12464,12483 ****
File: gccint.info, Node: Constant Attributes, Next: Delay Slots, Prev: Insn Lengths, Up: Insn Attributes
! Constant Attributes
! -------------------
! A special form of `define_attr', where the expression for the
! default value is a `const' expression, indicates an attribute that is
! constant for a given run of the compiler. Constant attributes may be
! used to specify which variety of processor is used. For example,
(define_attr "cpu" "m88100,m88110,m88000"
(const
(cond [(symbol_ref "TARGET_88100") (const_string "m88100")
(symbol_ref "TARGET_88110") (const_string "m88110")]
(const_string "m88000"))))
!
(define_attr "memory" "fast,slow"
(const
(if_then_else (symbol_ref "TARGET_FAST_MEM")
--- 12480,12499 ----
File: gccint.info, Node: Constant Attributes, Next: Delay Slots, Prev: Insn Lengths, Up: Insn Attributes
! 10.18.6 Constant Attributes
! ---------------------------
! A special form of `define_attr', where the expression for the default
! value is a `const' expression, indicates an attribute that is constant
! for a given run of the compiler. Constant attributes may be used to
! specify which variety of processor is used. For example,
(define_attr "cpu" "m88100,m88110,m88000"
(const
(cond [(symbol_ref "TARGET_88100") (const_string "m88100")
(symbol_ref "TARGET_88110") (const_string "m88110")]
(const_string "m88000"))))
!
(define_attr "memory" "fast,slow"
(const
(if_then_else (symbol_ref "TARGET_FAST_MEM")
*************** involving insn attributes.
*** 12493,12503 ****
File: gccint.info, Node: Delay Slots, Next: Processor pipeline description, Prev: Constant Attributes, Up: Insn Attributes
! Delay Slot Scheduling
! ---------------------
! The insn attribute mechanism can be used to specify the requirements
! for delay slots, if any, on a target machine. An instruction is said to
require a "delay slot" if some instructions that are physically after
the instruction are executed as if they were located before it.
Classic examples are branch and call instructions, which often execute
--- 12509,12519 ----
File: gccint.info, Node: Delay Slots, Next: Processor pipeline description, Prev: Constant Attributes, Up: Insn Attributes
! 10.18.7 Delay Slot Scheduling
! -----------------------------
! The insn attribute mechanism can be used to specify the requirements for
! delay slots, if any, on a target machine. An instruction is said to
require a "delay slot" if some instructions that are physically after
the instruction are executed as if they were located before it.
Classic examples are branch and call instructions, which often execute
*************** annulled if the branch is true, we might
*** 12554,12560 ****
[(eq_attr "type" "!branch,call")
(eq_attr "type" "!branch,call")
(nil)])
!
(define_delay (eq_attr "type" "call")
[(eq_attr "type" "!branch,call") (nil) (nil)
(eq_attr "type" "!branch,call") (nil) (nil)])
--- 12570,12576 ----
[(eq_attr "type" "!branch,call")
(eq_attr "type" "!branch,call")
(nil)])
!
(define_delay (eq_attr "type" "call")
[(eq_attr "type" "!branch,call") (nil) (nil)
(eq_attr "type" "!branch,call") (nil) (nil)])
*************** annulled if the branch is true, we might
*** 12562,12578 ****
File: gccint.info, Node: Processor pipeline description, Prev: Delay Slots, Up: Insn Attributes
! Specifying processor pipeline description
! -----------------------------------------
! To achieve better performance, most modern processors
! (super-pipelined, superscalar RISC, and VLIW processors) have many
! "functional units" on which several instructions can be executed
! simultaneously. An instruction starts execution if its issue
! conditions are satisfied. If not, the instruction is stalled until its
! conditions are satisfied. Such "interlock (pipeline) delay" causes
! interruption of the fetching of successor instructions (or demands nop
! instructions, e.g. for some MIPS processors).
There are two major kinds of interlock delays in modern processors.
The first one is a data dependence delay determining "instruction
--- 12578,12594 ----
File: gccint.info, Node: Processor pipeline description, Prev: Delay Slots, Up: Insn Attributes
! 10.18.8 Specifying processor pipeline description
! -------------------------------------------------
! To achieve better performance, most modern processors (super-pipelined,
! superscalar RISC, and VLIW processors) have many "functional units" on
! which several instructions can be executed simultaneously. An
! instruction starts execution if its issue conditions are satisfied. If
! not, the instruction is stalled until its conditions are satisfied.
! Such "interlock (pipeline) delay" causes interruption of the fetching
! of successor instructions (or demands nop instructions, e.g. for some
! MIPS processors).
There are two major kinds of interlock delays in modern processors.
The first one is a data dependence delay determining "instruction
*************** one.
*** 12635,12644 ****
File: gccint.info, Node: Old pipeline description, Next: Automaton pipeline description, Up: Processor pipeline description
! Specifying Function Units
! .........................
! On most RISC machines, there are instructions whose results are not
available for a specific number of cycles. Common cases are
instructions that load data from memory. On many machines, a pipeline
stall will result if the data is referenced too soon after the load
--- 12651,12660 ----
File: gccint.info, Node: Old pipeline description, Next: Automaton pipeline description, Up: Processor pipeline description
! 10.18.8.1 Specifying Function Units
! ...................................
! On most RISC machines, there are instructions whose results are not
available for a specific number of cycles. Common cases are
instructions that load data from memory. On many machines, a pipeline
stall will result if the data is referenced too soon after the load
*************** specified:
*** 12738,12744 ****
(define_function_unit
"fp" 1 0 (eq_attr "type" "dp_fp") 4 4 [(eq_attr "type" "sp_fp")])
! *Note:* The scheduler attempts to avoid function unit conflicts and
uses all the specifications in the `define_function_unit' expression.
It has recently been discovered that these specifications may not allow
modeling of some of the newer "superscalar" processors that have insns
--- 12754,12760 ----
(define_function_unit
"fp" 1 0 (eq_attr "type" "dp_fp") 4 4 [(eq_attr "type" "sp_fp")])
! *Note_* The scheduler attempts to avoid function unit conflicts and
uses all the specifications in the `define_function_unit' expression.
It has recently been discovered that these specifications may not allow
modeling of some of the newer "superscalar" processors that have insns
*************** representation would be welcomed.
*** 12751,12760 ****
File: gccint.info, Node: Automaton pipeline description, Next: Comparison of the two descriptions, Prev: Old pipeline description, Up: Processor pipeline description
! Describing instruction pipeline characteristics
! ...............................................
! This section describes constructions of the automaton based processor
pipeline description. The order of constructions within the machine
description file is not important.
--- 12767,12776 ----
File: gccint.info, Node: Automaton pipeline description, Next: Comparison of the two descriptions, Prev: Old pipeline description, Up: Processor pipeline description
! 10.18.8.2 Describing instruction pipeline characteristics
! .........................................................
! This section describes constructions of the automaton based processor
pipeline description. The order of constructions within the machine
description file is not important.
*************** expression according to the following sy
*** 12852,12867 ****
regexp = regexp "," oneof
| oneof
!
oneof = oneof "|" allof
| allof
!
allof = allof "+" repeat
| repeat
!
repeat = element "*" number
| element
!
element = cpu_function_unit_name
| reservation_name
| result_name
--- 12868,12883 ----
regexp = regexp "," oneof
| oneof
!
oneof = oneof "|" allof
| allof
!
allof = allof "+" repeat
| repeat
!
repeat = element "*" number
| element
!
element = cpu_function_unit_name
| reservation_name
| result_name
*************** used by an integer insn, an additional d
*** 13061,13079 ****
To describe all of this we could specify
(define_cpu_unit "div")
!
(define_insn_reservation "simple" 2 (eq_attr "type" "int")
"(i0_pipeline | i1_pipeline), (port0 | port1)")
!
(define_insn_reservation "mult" 4 (eq_attr "type" "mult")
"i1_pipeline, nothing*2, (port0 | port1)")
!
(define_insn_reservation "div" 8 (eq_attr "type" "div")
"i1_pipeline, div*7, div + (port0 | port1)")
!
(define_insn_reservation "float" 3 (eq_attr "type" "float")
"f_pipeline, nothing, (port0 | port1))
!
(define_bypass 4 "float" "simple,mult,div")
To simplify the description we could describe the following
--- 13077,13095 ----
To describe all of this we could specify
(define_cpu_unit "div")
!
(define_insn_reservation "simple" 2 (eq_attr "type" "int")
"(i0_pipeline | i1_pipeline), (port0 | port1)")
!
(define_insn_reservation "mult" 4 (eq_attr "type" "mult")
"i1_pipeline, nothing*2, (port0 | port1)")
!
(define_insn_reservation "div" 8 (eq_attr "type" "div")
"i1_pipeline, div*7, div + (port0 | port1)")
!
(define_insn_reservation "float" 3 (eq_attr "type" "float")
"f_pipeline, nothing, (port0 | port1))
!
(define_bypass 4 "float" "simple,mult,div")
To simplify the description we could describe the following
*************** construction
*** 13090,13099 ****
File: gccint.info, Node: Comparison of the two descriptions, Prev: Automaton pipeline description, Up: Processor pipeline description
! Drawbacks of the old pipeline description
! .........................................
! The old instruction level parallelism description and the pipeline
hazards recognizer based on it have the following drawbacks in
comparison with the DFA-based ones:
--- 13106,13115 ----
File: gccint.info, Node: Comparison of the two descriptions, Prev: Automaton pipeline description, Up: Processor pipeline description
! 10.18.8.3 Drawbacks of the old pipeline description
! ...................................................
! The old instruction level parallelism description and the pipeline
hazards recognizer based on it have the following drawbacks in
comparison with the DFA-based ones:
*************** comparison with the DFA-based ones:
*** 13132,13141 ****
File: gccint.info, Node: Conditional Execution, Next: Constant Definitions, Prev: Insn Attributes, Up: Machine Desc
! Conditional Execution
! =====================
! A number of architectures provide for some form of conditional
execution, or predication. The hallmark of this feature is the ability
to nullify most of the instructions in the instruction set. When the
instruction set is large and not entirely symmetric, it can be quite
--- 13148,13157 ----
File: gccint.info, Node: Conditional Execution, Next: Constant Definitions, Prev: Insn Attributes, Up: Machine Desc
! 10.19 Conditional Execution
! ===========================
! A number of architectures provide for some form of conditional
execution, or predication. The hallmark of this feature is the ability
to nullify most of the instructions in the instruction set. When the
instruction set is large and not entirely symmetric, it can be quite
*************** version of the instruction. For example
*** 13180,13186 ****
(match_operand:SI 2 "register_operand" "r")))]
"TEST1"
"add %2,%1,%0")
!
(define_cond_exec
[(ne (match_operand:CC 0 "register_operand" "c")
(const_int 0))]
--- 13196,13202 ----
(match_operand:SI 2 "register_operand" "r")))]
"TEST1"
"add %2,%1,%0")
!
(define_cond_exec
[(ne (match_operand:CC 0 "register_operand" "c")
(const_int 0))]
*************** generates a new pattern
*** 13201,13211 ****
File: gccint.info, Node: Constant Definitions, Prev: Conditional Execution, Up: Machine Desc
! Constant Definitions
! ====================
! Using literal constants inside instruction patterns reduces
! legibility and can be a maintenance problem.
To overcome this problem, you may use the `define_constants'
expression. It contains a vector of name-value pairs. From that point
--- 13217,13227 ----
File: gccint.info, Node: Constant Definitions, Prev: Conditional Execution, Up: Machine Desc
! 10.20 Constant Definitions
! ==========================
! Using literal constants inside instruction patterns reduces legibility
! and can be a maintenance problem.
To overcome this problem, you may use the `define_constants'
expression. It contains a vector of name-value pairs. From that point
*************** value.
*** 13234,13240 ****
(R_CR 179)
(R_Q 180)
])
!
(define_insn ""
[(match_parallel 0 "load_multiple_operation"
[(set (match_operand:SI 1 "gpc_reg_operand" "=r")
--- 13250,13256 ----
(R_CR 179)
(R_Q 180)
])
!
(define_insn ""
[(match_parallel 0 "load_multiple_operation"
[(set (match_operand:SI 1 "gpc_reg_operand" "=r")
*************** in the insn-codes.h header file as #defi
*** 13250,13263 ****
File: gccint.info, Node: Target Macros, Next: Host Config, Prev: Machine Desc, Up: Top
! Target Description Macros and Functions
! ***************************************
! In addition to the file `MACHINE.md', a machine description includes
! a C header file conventionally given the name `MACHINE.h' and a C
! source file named `MACHINE.c'. The header file defines numerous macros
! that convey the information about the target machine that does not fit
! into the scheme of the `.md' file. The file `tm.h' should be a link to
`MACHINE.h'. The header file `config.h' includes `tm.h' and most
compiler source files include `config.h'. The source file defines a
variable `targetm', which is a structure containing pointers to
--- 13266,13279 ----
File: gccint.info, Node: Target Macros, Next: Host Config, Prev: Machine Desc, Up: Top
! 11 Target Description Macros and Functions
! ******************************************
! In addition to the file `MACHINE.md', a machine description includes a
! C header file conventionally given the name `MACHINE.h' and a C source
! file named `MACHINE.c'. The header file defines numerous macros that
! convey the information about the target machine that does not fit into
! the scheme of the `.md' file. The file `tm.h' should be a link to
`MACHINE.h'. The header file `config.h' includes `tm.h' and most
compiler source files include `config.h'. The source file defines a
variable `targetm', which is a structure containing pointers to
*************** file.
*** 13299,13308 ****
File: gccint.info, Node: Target Structure, Next: Driver, Up: Target Macros
! The Global `targetm' Variable
! =============================
! - Variable: struct gcc_target targetm
The target `.c' file must define the global `targetm' variable
which contains pointers to functions and data relating to the
target machine. The variable is declared in `target.h';
--- 13315,13324 ----
File: gccint.info, Node: Target Structure, Next: Driver, Up: Target Macros
! 11.1 The Global `targetm' Variable
! ==================================
! -- Variable: struct gcc_target targetm
The target `.c' file must define the global `targetm' variable
which contains pointers to functions and data relating to the
target machine. The variable is declared in `target.h';
*************** The Global `targetm' Variable
*** 13313,13340 ****
inappropriate. For example:
#include "target.h"
#include "target-def.h"
!
/* Initialize the GCC target structure. */
!
#undef TARGET_COMP_TYPE_ATTRIBUTES
#define TARGET_COMP_TYPE_ATTRIBUTES MACHINE_comp_type_attributes
!
struct gcc_target targetm = TARGET_INITIALIZER;
! Where a macro should be defined in the `.c' file in this manner to
! form part of the `targetm' structure, it is documented below as a
! "Target Hook" with a prototype. Many macros will change in future from
! being defined in the `.h' file to being part of the `targetm' structure.
File: gccint.info, Node: Driver, Next: Run-time Target, Prev: Target Structure, Up: Target Macros
! Controlling the Compilation Driver, `gcc'
! =========================================
! You can control the compilation driver.
! - Macro: SWITCH_TAKES_ARG (CHAR)
A C expression which determines whether the option `-CHAR' takes
arguments. The value should be the number of arguments that
option takes-zero, for many options.
--- 13329,13356 ----
inappropriate. For example:
#include "target.h"
#include "target-def.h"
!
/* Initialize the GCC target structure. */
!
#undef TARGET_COMP_TYPE_ATTRIBUTES
#define TARGET_COMP_TYPE_ATTRIBUTES MACHINE_comp_type_attributes
!
struct gcc_target targetm = TARGET_INITIALIZER;
! Where a macro should be defined in the `.c' file in this manner to form
! part of the `targetm' structure, it is documented below as a "Target
! Hook" with a prototype. Many macros will change in future from being
! defined in the `.h' file to being part of the `targetm' structure.
File: gccint.info, Node: Driver, Next: Run-time Target, Prev: Target Structure, Up: Target Macros
! 11.2 Controlling the Compilation Driver, `gcc'
! ==============================================
! You can control the compilation driver.
! -- Macro: SWITCH_TAKES_ARG (CHAR)
A C expression which determines whether the option `-CHAR' takes
arguments. The value should be the number of arguments that
option takes-zero, for many options.
*************** Controlling the Compilation Driver, `gcc
*** 13345,13351 ****
take arguments. Any redefinition should call
`DEFAULT_SWITCH_TAKES_ARG' and then check for additional options.
! - Macro: WORD_SWITCH_TAKES_ARG (NAME)
A C expression which determines whether the option `-NAME' takes
arguments. The value should be the number of arguments that
option takes-zero, for many options. This macro rather than
--- 13361,13367 ----
take arguments. Any redefinition should call
`DEFAULT_SWITCH_TAKES_ARG' and then check for additional options.
! -- Macro: WORD_SWITCH_TAKES_ARG (NAME)
A C expression which determines whether the option `-NAME' takes
arguments. The value should be the number of arguments that
option takes-zero, for many options. This macro rather than
*************** Controlling the Compilation Driver, `gcc
*** 13358,13364 ****
redefinition should call `DEFAULT_WORD_SWITCH_TAKES_ARG' and then
check for additional options.
! - Macro: SWITCH_CURTAILS_COMPILATION (CHAR)
A C expression which determines whether the option `-CHAR' stops
compilation before the generation of an executable. The value is
boolean, nonzero if the option does stop an executable from being
--- 13374,13380 ----
redefinition should call `DEFAULT_WORD_SWITCH_TAKES_ARG' and then
check for additional options.
! -- Macro: SWITCH_CURTAILS_COMPILATION (CHAR)
A C expression which determines whether the option `-CHAR' stops
compilation before the generation of an executable. The value is
boolean, nonzero if the option does stop an executable from being
*************** Controlling the Compilation Driver, `gcc
*** 13372,13384 ****
redefinition should call `DEFAULT_SWITCH_CURTAILS_COMPILATION' and
then check for additional options.
! - Macro: SWITCHES_NEED_SPACES
A string-valued C expression which enumerates the options for which
the linker needs a space between the option and its argument.
If this macro is not defined, the default value is `""'.
! - Macro: TARGET_OPTION_TRANSLATE_TABLE
If defined, a list of pairs of strings, the first of which is a
potential command line target to the `gcc' driver program, and the
second of which is a space-separated (tabs and other whitespace
--- 13388,13400 ----
redefinition should call `DEFAULT_SWITCH_CURTAILS_COMPILATION' and
then check for additional options.
! -- Macro: SWITCHES_NEED_SPACES
A string-valued C expression which enumerates the options for which
the linker needs a space between the option and its argument.
If this macro is not defined, the default value is `""'.
! -- Macro: TARGET_OPTION_TRANSLATE_TABLE
If defined, a list of pairs of strings, the first of which is a
potential command line target to the `gcc' driver program, and the
second of which is a space-separated (tabs and other whitespace
*************** Controlling the Compilation Driver, `gcc
*** 13396,13402 ****
{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" }, \
{ "-compat", "-EB -malign=4 -mspoo" }
! - Macro: DRIVER_SELF_SPECS
A list of specs for the driver itself. It should be a suitable
initializer for an array of strings, with no surrounding braces.
--- 13412,13418 ----
{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" }, \
{ "-compat", "-EB -malign=4 -mspoo" }
! -- Macro: DRIVER_SELF_SPECS
A list of specs for the driver itself. It should be a suitable
initializer for an array of strings, with no surrounding braces.
*************** Controlling the Compilation Driver, `gcc
*** 13413,13419 ****
Do not define this macro if it does not need to do anything.
! - Macro: OPTION_DEFAULT_SPECS
A list of specs used to support configure-time default options
(i.e. `--with' options) in the driver. It should be a suitable
initializer for an array of structures, each containing two
--- 13429,13435 ----
Do not define this macro if it does not need to do anything.
! -- Macro: OPTION_DEFAULT_SPECS
A list of specs used to support configure-time default options
(i.e. `--with' options) in the driver. It should be a suitable
initializer for an array of structures, each containing two
*************** Controlling the Compilation Driver, `gcc
*** 13431,13449 ****
Do not define this macro if it does not need to do anything.
! - Macro: 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.
Do not define this macro if it does not need to do anything.
! - Macro: CPLUSPLUS_CPP_SPEC
This macro is just like `CPP_SPEC', but is used for C++, rather
than C. If you do not define this macro, then the value of
`CPP_SPEC' (if any) will be used instead.
! - Macro: CC1_SPEC
A C string constant that tells the GCC driver program options to
pass to `cc1', `cc1plus', `f771', and the other language front
ends. It can also specify how to translate options you give to
--- 13447,13465 ----
Do not define this macro if it does not need to do anything.
! -- Macro: 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.
Do not define this macro if it does not need to do anything.
! -- Macro: CPLUSPLUS_CPP_SPEC
This macro is just like `CPP_SPEC', but is used for C++, rather
than C. If you do not define this macro, then the value of
`CPP_SPEC' (if any) will be used instead.
! -- Macro: CC1_SPEC
A C string constant that tells the GCC driver program options to
pass to `cc1', `cc1plus', `f771', and the other language front
ends. It can also specify how to translate options you give to
*************** Controlling the Compilation Driver, `gcc
*** 13451,13457 ****
Do not define this macro if it does not need to do anything.
! - Macro: CC1PLUS_SPEC
A C string constant that tells the GCC driver program options to
pass to `cc1plus'. It can also specify how to translate options
you give to GCC into options for GCC to pass to the `cc1plus'.
--- 13467,13473 ----
Do not define this macro if it does not need to do anything.
! -- Macro: CC1PLUS_SPEC
A C string constant that tells the GCC driver program options to
pass to `cc1plus'. It can also specify how to translate options
you give to GCC into options for GCC to pass to the `cc1plus'.
*************** Controlling the Compilation Driver, `gcc
*** 13461,13467 ****
so there is no need to duplicate the contents of CC1_SPEC in
CC1PLUS_SPEC.
! - Macro: ASM_SPEC
A C string constant that tells the GCC driver program options to
pass to the assembler. It can also specify how to translate
options you give to GCC into options for GCC to pass to the
--- 13477,13483 ----
so there is no need to duplicate the contents of CC1_SPEC in
CC1PLUS_SPEC.
! -- Macro: ASM_SPEC
A C string constant that tells the GCC driver program options to
pass to the assembler. It can also specify how to translate
options you give to GCC into options for GCC to pass to the
*************** Controlling the Compilation Driver, `gcc
*** 13469,13482 ****
Do not define this macro if it does not need to do anything.
! - Macro: ASM_FINAL_SPEC
A C string constant that tells the GCC driver program how to run
any programs which cleanup after the normal assembler. Normally,
this is not needed. See the file `mips.h' for an example of this.
Do not define this macro if it does not need to do anything.
! - Macro: AS_NEEDS_DASH_FOR_PIPED_INPUT
Define this macro, with no value, if the driver should give the
assembler an argument consisting of a single dash, `-', to
instruct it to read from its standard input (which will be a pipe
--- 13485,13498 ----
Do not define this macro if it does not need to do anything.
! -- Macro: ASM_FINAL_SPEC
A C string constant that tells the GCC driver program how to run
any programs which cleanup after the normal assembler. Normally,
this is not needed. See the file `mips.h' for an example of this.
Do not define this macro if it does not need to do anything.
! -- Macro: AS_NEEDS_DASH_FOR_PIPED_INPUT
Define this macro, with no value, if the driver should give the
assembler an argument consisting of a single dash, `-', to
instruct it to read from its standard input (which will be a pipe
*************** Controlling the Compilation Driver, `gcc
*** 13488,13501 ****
assembler cannot read standard input at all, use a `%{pipe:%e}'
construct; see `mips.h' for instance.
! - Macro: LINK_SPEC
A C string constant that tells the GCC driver program options to
pass to the linker. It can also specify how to translate options
you give to GCC into options for GCC to pass to the linker.
Do not define this macro if it does not need to do anything.
! - Macro: LIB_SPEC
Another C string constant used much like `LINK_SPEC'. The
difference between the two is that `LIB_SPEC' is used at the end
of the command given to the linker.
--- 13504,13517 ----
assembler cannot read standard input at all, use a `%{pipe:%e}'
construct; see `mips.h' for instance.
! -- Macro: LINK_SPEC
A C string constant that tells the GCC driver program options to
pass to the linker. It can also specify how to translate options
you give to GCC into options for GCC to pass to the linker.
Do not define this macro if it does not need to do anything.
! -- Macro: LIB_SPEC
Another C string constant used much like `LINK_SPEC'. The
difference between the two is that `LIB_SPEC' is used at the end
of the command given to the linker.
*************** Controlling the Compilation Driver, `gcc
*** 13503,13509 ****
If this macro is not defined, a default is provided that loads the
standard C library from the usual place. See `gcc.c'.
! - Macro: LIBGCC_SPEC
Another C string constant that tells the GCC driver program how
and when to place a reference to `libgcc.a' into the linker
command line. This constant is placed both before and after the
--- 13519,13525 ----
If this macro is not defined, a default is provided that loads the
standard C library from the usual place. See `gcc.c'.
! -- Macro: LIBGCC_SPEC
Another C string constant that tells the GCC driver program how
and when to place a reference to `libgcc.a' into the linker
command line. This constant is placed both before and after the
*************** Controlling the Compilation Driver, `gcc
*** 13518,13536 ****
depending on the values of the command line flags `-static',
`-shared', `-static-libgcc', and `-shared-libgcc'.
! - Macro: USE_LD_AS_NEEDED
A macro that controls the modifications to `LIBGCC_SPEC'. If
nonzero, a spec will be generated that uses -as-needed and the
shared libgcc in place of the static exception handler library,
when linking without any of `-static', `-static-libgcc', or
`-shared-libgcc'.
! - Macro: LINK_EH_SPEC
If defined, this C string constant is added to `LINK_SPEC'. When
`USE_LD_AS_NEEDED' is zero or undefined, it also affects the
modifications to `LIBGCC_SPEC'.
! - Macro: STARTFILE_SPEC
Another C string constant used much like `LINK_SPEC'. The
difference between the two is that `STARTFILE_SPEC' is used at the
very beginning of the command given to the linker.
--- 13534,13552 ----
depending on the values of the command line flags `-static',
`-shared', `-static-libgcc', and `-shared-libgcc'.
! -- Macro: USE_LD_AS_NEEDED
A macro that controls the modifications to `LIBGCC_SPEC'. If
nonzero, a spec will be generated that uses -as-needed and the
shared libgcc in place of the static exception handler library,
when linking without any of `-static', `-static-libgcc', or
`-shared-libgcc'.
! -- Macro: LINK_EH_SPEC
If defined, this C string constant is added to `LINK_SPEC'. When
`USE_LD_AS_NEEDED' is zero or undefined, it also affects the
modifications to `LIBGCC_SPEC'.
! -- Macro: STARTFILE_SPEC
Another C string constant used much like `LINK_SPEC'. The
difference between the two is that `STARTFILE_SPEC' is used at the
very beginning of the command given to the linker.
*************** Controlling the Compilation Driver, `gcc
*** 13538,13551 ****
If this macro is not defined, a default is provided that loads the
standard C startup file from the usual place. See `gcc.c'.
! - Macro: ENDFILE_SPEC
Another C string constant used much like `LINK_SPEC'. The
difference between the two is that `ENDFILE_SPEC' is used at the
very end of the command given to the linker.
Do not define this macro if it does not need to do anything.
! - Macro: THREAD_MODEL_SPEC
GCC `-v' will print the thread model GCC was configured to use.
However, this doesn't work on platforms that are multilibbed on
thread models, such as AIX 4.3. On such platforms, define
--- 13554,13567 ----
If this macro is not defined, a default is provided that loads the
standard C startup file from the usual place. See `gcc.c'.
! -- Macro: ENDFILE_SPEC
Another C string constant used much like `LINK_SPEC'. The
difference between the two is that `ENDFILE_SPEC' is used at the
very end of the command given to the linker.
Do not define this macro if it does not need to do anything.
! -- Macro: THREAD_MODEL_SPEC
GCC `-v' will print the thread model GCC was configured to use.
However, this doesn't work on platforms that are multilibbed on
thread models, such as AIX 4.3. On such platforms, define
*************** Controlling the Compilation Driver, `gcc
*** 13554,13571 ****
default value of this macro, will expand to the value of
`thread_file' set in `config.gcc'.
! - Macro: SYSROOT_SUFFIX_SPEC
Define this macro to add a suffix to the target sysroot when GCC is
configured with a sysroot. This will cause GCC to search for
usr/lib, et al, within sysroot+suffix.
! - Macro: SYSROOT_HEADERS_SUFFIX_SPEC
Define this macro to add a headers_suffix to the target sysroot
when GCC is configured with a sysroot. This will cause GCC to
pass the updated sysroot+headers_suffix to CPP, causing it to
search for usr/include, et al, within sysroot+headers_suffix.
! - Macro: EXTRA_SPECS
Define this macro to provide additional specifications to put in
the `specs' file that can be used in various specifications like
`CC1_SPEC'.
--- 13570,13587 ----
default value of this macro, will expand to the value of
`thread_file' set in `config.gcc'.
! -- Macro: SYSROOT_SUFFIX_SPEC
Define this macro to add a suffix to the target sysroot when GCC is
configured with a sysroot. This will cause GCC to search for
usr/lib, et al, within sysroot+suffix.
! -- Macro: SYSROOT_HEADERS_SUFFIX_SPEC
Define this macro to add a headers_suffix to the target sysroot
when GCC is configured with a sysroot. This will cause GCC to
pass the updated sysroot+headers_suffix to CPP, causing it to
search for usr/include, et al, within sysroot+headers_suffix.
! -- Macro: EXTRA_SPECS
Define this macro to provide additional specifications to put in
the `specs' file that can be used in various specifications like
`CC1_SPEC'.
*************** Controlling the Compilation Driver, `gcc
*** 13590,13596 ****
#define EXTRA_SPECS \
{ "cpp_sysv_default", CPP_SYSV_DEFAULT },
!
#define CPP_SYS_DEFAULT ""
The `config/rs6000/sysv.h' target file defines:
--- 13606,13612 ----
#define EXTRA_SPECS \
{ "cpp_sysv_default", CPP_SYSV_DEFAULT },
!
#define CPP_SYS_DEFAULT ""
The `config/rs6000/sysv.h' target file defines:
*************** Controlling the Compilation Driver, `gcc
*** 13600,13606 ****
%{mcall-sysv: -D_CALL_SYSV } \
%{!mcall-sysv: %(cpp_sysv_default) } \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}"
!
#undef CPP_SYSV_DEFAULT
#define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
--- 13616,13622 ----
%{mcall-sysv: -D_CALL_SYSV } \
%{!mcall-sysv: %(cpp_sysv_default) } \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}"
!
#undef CPP_SYSV_DEFAULT
#define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
*************** Controlling the Compilation Driver, `gcc
*** 13610,13634 ****
#undef CPP_SYSV_DEFAULT
#define CPP_SYSV_DEFAULT "-D_CALL_AIX"
! - Macro: LINK_LIBGCC_SPECIAL
Define this macro if the driver program should find the library
`libgcc.a' itself and should not pass `-L' options to the linker.
If you do not define this macro, the driver program will pass the
argument `-lgcc' to tell the linker to do the search and will pass
`-L' options to it.
! - Macro: LINK_LIBGCC_SPECIAL_1
Define this macro if the driver program should find the library
`libgcc.a'. If you do not define this macro, the driver program
will pass the argument `-lgcc' to tell the linker to do the search.
This macro is similar to `LINK_LIBGCC_SPECIAL', except that it does
not affect `-L' options.
! - Macro: LINK_GCC_C_SEQUENCE_SPEC
The sequence in which libgcc and libc are specified to the linker.
By default this is `%G %L %G'.
! - Macro: LINK_COMMAND_SPEC
A C string constant giving the complete command line need to
execute the linker. When you do this, you will need to update
your port each time a change is made to the link command line
--- 13626,13650 ----
#undef CPP_SYSV_DEFAULT
#define CPP_SYSV_DEFAULT "-D_CALL_AIX"
! -- Macro: LINK_LIBGCC_SPECIAL
Define this macro if the driver program should find the library
`libgcc.a' itself and should not pass `-L' options to the linker.
If you do not define this macro, the driver program will pass the
argument `-lgcc' to tell the linker to do the search and will pass
`-L' options to it.
! -- Macro: LINK_LIBGCC_SPECIAL_1
Define this macro if the driver program should find the library
`libgcc.a'. If you do not define this macro, the driver program
will pass the argument `-lgcc' to tell the linker to do the search.
This macro is similar to `LINK_LIBGCC_SPECIAL', except that it does
not affect `-L' options.
! -- Macro: LINK_GCC_C_SEQUENCE_SPEC
The sequence in which libgcc and libc are specified to the linker.
By default this is `%G %L %G'.
! -- Macro: LINK_COMMAND_SPEC
A C string constant giving the complete command line need to
execute the linker. When you do this, you will need to update
your port each time a change is made to the link command line
*************** Controlling the Compilation Driver, `gcc
*** 13638,13650 ****
Overriding this macro may be avoidable by overriding
`LINK_GCC_C_SEQUENCE_SPEC' instead.
! - Macro: LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
A nonzero value causes `collect2' to remove duplicate
`-LDIRECTORY' search directories from linking commands. Do not
give it a nonzero value if removing duplicate search directories
changes the linker's semantics.
! - Macro: MULTILIB_DEFAULTS
Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are
defaults for this target and thus do not need to be handled
--- 13654,13666 ----
Overriding this macro may be avoidable by overriding
`LINK_GCC_C_SEQUENCE_SPEC' instead.
! -- Macro: LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
A nonzero value causes `collect2' to remove duplicate
`-LDIRECTORY' search directories from linking commands. Do not
give it a nonzero value if removing duplicate search directories
changes the linker's semantics.
! -- Macro: MULTILIB_DEFAULTS
Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are
defaults for this target and thus do not need to be handled
*************** Controlling the Compilation Driver, `gcc
*** 13654,13697 ****
the target makefile fragment or if none of the options listed in
`MULTILIB_OPTIONS' are set by default. *Note Target Fragment::.
! - Macro: RELATIVE_PREFIX_NOT_LINKDIR
Define this macro to tell `gcc' that it should only translate a
`-B' prefix into a `-L' linker option if the prefix indicates an
absolute file name.
! - Macro: MD_EXEC_PREFIX
If defined, this macro is an additional prefix to try after
`STANDARD_EXEC_PREFIX'. `MD_EXEC_PREFIX' is not searched when the
`-b' option is used, or the compiler is built as a cross compiler.
If you define `MD_EXEC_PREFIX', then be sure to add it to the
list of directories used to find the assembler in `configure.in'.
! - Macro: STANDARD_STARTFILE_PREFIX
Define this macro as a C string constant if you wish to override
the standard choice of `libdir' as the default prefix to try when
searching for startup files such as `crt0.o'.
`STANDARD_STARTFILE_PREFIX' is not searched when the compiler is
built as a cross compiler.
! - Macro: MD_STARTFILE_PREFIX
If defined, this macro supplies an additional prefix to try after
the standard prefixes. `MD_EXEC_PREFIX' is not searched when the
`-b' option is used, or when the compiler is built as a cross
compiler.
! - Macro: MD_STARTFILE_PREFIX_1
If defined, this macro supplies yet another prefix to try after the
standard prefixes. It is not searched when the `-b' option is
used, or when the compiler is built as a cross compiler.
! - Macro: INIT_ENVIRONMENT
Define this macro as a C string constant if you wish to set
environment variables for programs called by the driver, such as
the assembler and loader. The driver passes the value of this
macro to `putenv' to initialize the necessary environment
variables.
! - Macro: LOCAL_INCLUDE_DIR
Define this macro as a C string constant if you wish to override
the standard choice of `/usr/local/include' as the default prefix
to try when searching for local header files. `LOCAL_INCLUDE_DIR'
--- 13670,13713 ----
the target makefile fragment or if none of the options listed in
`MULTILIB_OPTIONS' are set by default. *Note Target Fragment::.
! -- Macro: RELATIVE_PREFIX_NOT_LINKDIR
Define this macro to tell `gcc' that it should only translate a
`-B' prefix into a `-L' linker option if the prefix indicates an
absolute file name.
! -- Macro: MD_EXEC_PREFIX
If defined, this macro is an additional prefix to try after
`STANDARD_EXEC_PREFIX'. `MD_EXEC_PREFIX' is not searched when the
`-b' option is used, or the compiler is built as a cross compiler.
If you define `MD_EXEC_PREFIX', then be sure to add it to the
list of directories used to find the assembler in `configure.in'.
! -- Macro: STANDARD_STARTFILE_PREFIX
Define this macro as a C string constant if you wish to override
the standard choice of `libdir' as the default prefix to try when
searching for startup files such as `crt0.o'.
`STANDARD_STARTFILE_PREFIX' is not searched when the compiler is
built as a cross compiler.
! -- Macro: MD_STARTFILE_PREFIX
If defined, this macro supplies an additional prefix to try after
the standard prefixes. `MD_EXEC_PREFIX' is not searched when the
`-b' option is used, or when the compiler is built as a cross
compiler.
! -- Macro: MD_STARTFILE_PREFIX_1
If defined, this macro supplies yet another prefix to try after the
standard prefixes. It is not searched when the `-b' option is
used, or when the compiler is built as a cross compiler.
! -- Macro: INIT_ENVIRONMENT
Define this macro as a C string constant if you wish to set
environment variables for programs called by the driver, such as
the assembler and loader. The driver passes the value of this
macro to `putenv' to initialize the necessary environment
variables.
! -- Macro: LOCAL_INCLUDE_DIR
Define this macro as a C string constant if you wish to override
the standard choice of `/usr/local/include' as the default prefix
to try when searching for local header files. `LOCAL_INCLUDE_DIR'
*************** Controlling the Compilation Driver, `gcc
*** 13700,13706 ****
Cross compilers do not search either `/usr/local/include' or its
replacement.
! - Macro: MODIFY_TARGET_NAME
Define this macro if you wish to define command-line switches that
modify the default target name.
--- 13716,13722 ----
Cross compilers do not search either `/usr/local/include' or its
replacement.
! -- Macro: MODIFY_TARGET_NAME
Define this macro if you wish to define command-line switches that
modify the default target name.
*************** Controlling the Compilation Driver, `gcc
*** 13723,13729 ****
{ { "-32", DELETE, "64"}, \
{"-64", ADD, "64"}}
! - Macro: SYSTEM_INCLUDE_DIR
Define this macro as a C string constant if you wish to specify a
system-specific directory to search for header files before the
standard directory. `SYSTEM_INCLUDE_DIR' comes before
--- 13739,13745 ----
{ { "-32", DELETE, "64"}, \
{"-64", ADD, "64"}}
! -- Macro: SYSTEM_INCLUDE_DIR
Define this macro as a C string constant if you wish to specify a
system-specific directory to search for header files before the
standard directory. `SYSTEM_INCLUDE_DIR' comes before
*************** Controlling the Compilation Driver, `gcc
*** 13732,13738 ****
Cross compilers do not use this macro and do not search the
directory specified.
! - Macro: STANDARD_INCLUDE_DIR
Define this macro as a C string constant if you wish to override
the standard choice of `/usr/include' as the default prefix to try
when searching for header files.
--- 13748,13754 ----
Cross compilers do not use this macro and do not search the
directory specified.
! -- Macro: STANDARD_INCLUDE_DIR
Define this macro as a C string constant if you wish to override
the standard choice of `/usr/include' as the default prefix to try
when searching for header files.
*************** Controlling the Compilation Driver, `gcc
*** 13740,13751 ****
Cross compilers ignore this macro and do not search either
`/usr/include' or its replacement.
! - Macro: STANDARD_INCLUDE_COMPONENT
The "component" corresponding to `STANDARD_INCLUDE_DIR'. See
`INCLUDE_DEFAULTS', below, for the description of components. If
you do not define this macro, no component is used.
! - Macro: INCLUDE_DEFAULTS
Define this macro if you wish to override the entire default
search path for include files. For a native compiler, the default
search path usually consists of `GCC_INCLUDE_DIR',
--- 13756,13767 ----
Cross compilers ignore this macro and do not search either
`/usr/include' or its replacement.
! -- Macro: STANDARD_INCLUDE_COMPONENT
The "component" corresponding to `STANDARD_INCLUDE_DIR'. See
`INCLUDE_DEFAULTS', below, for the description of components. If
you do not define this macro, no component is used.
! -- Macro: INCLUDE_DEFAULTS
Define this macro if you wish to override the entire default
search path for include files. For a native compiler, the default
search path usually consists of `GCC_INCLUDE_DIR',
*************** Controlling the Compilation Driver, `gcc
*** 13821,13832 ****
File: gccint.info, Node: Run-time Target, Next: Per-Function Data, Prev: Driver, Up: Target Macros
! Run-time Target Specification
! =============================
! Here are run-time target specifications.
! - Macro: TARGET_CPU_CPP_BUILTINS ()
This function-like macro expands to a block of code that defines
built-in preprocessor macros and assertions for the target cpu,
using the functions `builtin_define', `builtin_define_std' and
--- 13837,13848 ----
File: gccint.info, Node: Run-time Target, Next: Per-Function Data, Prev: Driver, Up: Target Macros
! 11.3 Run-time Target Specification
! ==================================
! Here are run-time target specifications.
! -- Macro: TARGET_CPU_CPP_BUILTINS ()
This function-like macro expands to a block of code that defines
built-in preprocessor macros and assertions for the target cpu,
using the functions `builtin_define', `builtin_define_std' and
*************** Run-time Target Specification
*** 13859,13878 ****
`preprocessing_trad_p()' can be used to check for traditional
preprocessing.
! - Macro: TARGET_OS_CPP_BUILTINS ()
Similarly to `TARGET_CPU_CPP_BUILTINS' but this macro is optional
and is used for the target operating system instead.
! - Macro: TARGET_OBJFMT_CPP_BUILTINS ()
Similarly to `TARGET_CPU_CPP_BUILTINS' but this macro is optional
and is used for the target object format. `elfos.h' uses this
macro to define `__ELF__', so you probably do not need to define
it yourself.
! - Variable: extern int target_flags
This declaration should be present.
! - Macro: TARGET_FEATURENAME
This series of macros is to allow compiler command arguments to
enable or disable the use of optional features of the target
machine. For example, one machine description serves both the
--- 13875,13894 ----
`preprocessing_trad_p()' can be used to check for traditional
preprocessing.
! -- Macro: TARGET_OS_CPP_BUILTINS ()
Similarly to `TARGET_CPU_CPP_BUILTINS' but this macro is optional
and is used for the target operating system instead.
! -- Macro: TARGET_OBJFMT_CPP_BUILTINS ()
Similarly to `TARGET_CPU_CPP_BUILTINS' but this macro is optional
and is used for the target object format. `elfos.h' uses this
macro to define `__ELF__', so you probably do not need to define
it yourself.
! -- Variable: extern int target_flags
This declaration should be present.
! -- Macro: TARGET_FEATURENAME
This series of macros is to allow compiler command arguments to
enable or disable the use of optional features of the target
machine. For example, one machine description serves both the
*************** Run-time Target Specification
*** 13896,13902 ****
file, `m68k.md'. Another place they are used is in the
definitions of the other macros in the `MACHINE.h' file.
! - Macro: TARGET_SWITCHES
This macro defines names of command options to set and clear bits
in `target_flags'. Its definition is an initializer with a
subgrouping for each command option.
--- 13912,13918 ----
file, `m68k.md'. Another place they are used is in the
definitions of the other macros in the `MACHINE.h' file.
! -- Macro: TARGET_SWITCHES
This macro defines names of command options to set and clear bits
in `target_flags'. Its definition is an initializer with a
subgrouping for each command option.
*************** Run-time Target Specification
*** 13932,13938 ****
{ "", MASK_68020, "" }, \
}
! - Macro: TARGET_OPTIONS
This macro is similar to `TARGET_SWITCHES' but defines names of
command options that have values. Its definition is an
initializer with a subgrouping for each command option.
--- 13948,13954 ----
{ "", MASK_68020, "" }, \
}
! -- Macro: TARGET_OPTIONS
This macro is similar to `TARGET_SWITCHES' but defines names of
command options that have values. Its definition is an
initializer with a subgrouping for each command option.
*************** Run-time Target Specification
*** 13984,13990 ****
[chip.c]
char *chip_alu = ""; /* Specify default here. */
!
[chip.h]
extern char *chip_alu;
#define TARGET_OPTIONS \
--- 14000,14006 ----
[chip.c]
char *chip_alu = ""; /* Specify default here. */
!
[chip.h]
extern char *chip_alu;
#define TARGET_OPTIONS \
*************** Run-time Target Specification
*** 13995,14001 ****
#define TARGET_ALU1 (chip_alu[0] == '1')
#define TARGET_ALU2 (chip_alu[0] == '2')
! - Macro: TARGET_VERSION
This macro is a C statement to print on `stderr' a string
describing the particular machine description choice. Every
machine description should define `TARGET_VERSION'. For example:
--- 14011,14017 ----
#define TARGET_ALU1 (chip_alu[0] == '1')
#define TARGET_ALU2 (chip_alu[0] == '2')
! -- Macro: TARGET_VERSION
This macro is a C statement to print on `stderr' a string
describing the particular machine description choice. Every
machine description should define `TARGET_VERSION'. For example:
*************** Run-time Target Specification
*** 14008,14014 ****
fprintf (stderr, " (68k, MIT syntax)");
#endif
! - Macro: OVERRIDE_OPTIONS
Sometimes certain combinations of command options do not make
sense on a particular target machine. You can define a macro
`OVERRIDE_OPTIONS' to take account of this. This macro, if
--- 14024,14030 ----
fprintf (stderr, " (68k, MIT syntax)");
#endif
! -- Macro: OVERRIDE_OPTIONS
Sometimes certain combinations of command options do not make
sense on a particular target machine. You can define a macro
`OVERRIDE_OPTIONS' to take account of this. This macro, if
*************** Run-time Target Specification
*** 14018,14024 ****
Don't use this macro to turn on various extra optimizations for
`-O'. That is what `OPTIMIZATION_OPTIONS' is for.
! - Macro: OPTIMIZATION_OPTIONS (LEVEL, SIZE)
Some machines may desire to change what optimizations are
performed for various optimization levels. This macro, if
defined, is executed once just after the optimization level is
--- 14034,14040 ----
Don't use this macro to turn on various extra optimizations for
`-O'. That is what `OPTIMIZATION_OPTIONS' is for.
! -- Macro: OPTIMIZATION_OPTIONS (LEVEL, SIZE)
Some machines may desire to change what optimizations are
performed for various optimization levels. This macro, if
defined, is executed once just after the optimization level is
*************** Run-time Target Specification
*** 14039,14045 ****
*Do not examine `write_symbols' in this macro!* The debugging
options are not supposed to alter the generated code.
! - Macro: CAN_DEBUG_WITHOUT_FP
Define this macro if debugging can be performed even without a
frame pointer. If this macro is defined, GCC will turn on the
`-fomit-frame-pointer' option whenever `-O' is specified.
--- 14055,14061 ----
*Do not examine `write_symbols' in this macro!* The debugging
options are not supposed to alter the generated code.
! -- Macro: CAN_DEBUG_WITHOUT_FP
Define this macro if debugging can be performed even without a
frame pointer. If this macro is defined, GCC will turn on the
`-fomit-frame-pointer' option whenever `-O' is specified.
*************** Run-time Target Specification
*** 14047,14056 ****
File: gccint.info, Node: Per-Function Data, Next: Storage Layout, Prev: Run-time Target, Up: Target Macros
! Defining data structures for per-function information.
! ======================================================
! If the target needs to store information on a per-function basis, GCC
provides a macro and a couple of variables to allow this. Note, just
using statics to store the information is a bad idea, since GCC supports
nested functions, so you can be halfway through encoding one function
--- 14063,14072 ----
File: gccint.info, Node: Per-Function Data, Next: Storage Layout, Prev: Run-time Target, Up: Target Macros
! 11.4 Defining data structures for per-function information.
! ===========================================================
! If the target needs to store information on a per-function basis, GCC
provides a macro and a couple of variables to allow this. Note, just
using statics to store the information is a bad idea, since GCC supports
nested functions, so you can be halfway through encoding one function
*************** and restoring of the target specific inf
*** 14082,14094 ****
data area approach is no longer used, these pointers are no longer
supported.
! - Macro: INIT_EXPANDERS
Macro called to initialize any target specific information. This
macro is called once per function, before generation of any RTL
has begun. The intention of this macro is to allow the
initialization of the function pointer `init_machine_status'.
! - Variable: void (*)(struct function *) init_machine_status
If this function pointer is non-`NULL' it will be called once per
function, before function compilation starts, in order to allow the
target to perform any target specific initialization of the
--- 14098,14110 ----
data area approach is no longer used, these pointers are no longer
supported.
! -- Macro: INIT_EXPANDERS
Macro called to initialize any target specific information. This
macro is called once per function, before generation of any RTL
has begun. The intention of this macro is to allow the
initialization of the function pointer `init_machine_status'.
! -- Variable: void (*)(struct function *) init_machine_status
If this function pointer is non-`NULL' it will be called once per
function, before function compilation starts, in order to allow the
target to perform any target specific initialization of the
*************** supported.
*** 14102,14116 ****
File: gccint.info, Node: Storage Layout, Next: Type Layout, Prev: Per-Function Data, Up: Target Macros
! Storage Layout
! ==============
! Note that the definitions of the macros in this table which are
! sizes or alignments measured in bits do not need to be constant. They
! can be C expressions that refer to static variables, such as the
! `target_flags'. *Note Run-time Target::.
! - Macro: BITS_BIG_ENDIAN
Define this macro to have the value 1 if the most significant bit
in a byte has the lowest number; otherwise define it to have the
value zero. This means that bit-field instructions count from the
--- 14118,14132 ----
File: gccint.info, Node: Storage Layout, Next: Type Layout, Prev: Per-Function Data, Up: Target Macros
! 11.5 Storage Layout
! ===================
! Note that the definitions of the macros in this table which are sizes or
! alignments measured in bits do not need to be constant. They can be C
! expressions that refer to static variables, such as the `target_flags'.
! *Note Run-time Target::.
! -- Macro: BITS_BIG_ENDIAN
Define this macro to have the value 1 if the most significant bit
in a byte has the lowest number; otherwise define it to have the
value zero. This means that bit-field instructions count from the
*************** can be C expressions that refer to stati
*** 14122,14147 ****
This macro does not affect the way structure fields are packed into
bytes or words; that is controlled by `BYTES_BIG_ENDIAN'.
! - Macro: BYTES_BIG_ENDIAN
Define this macro to have the value 1 if the most significant byte
in a word has the lowest number. This macro need not be a
constant.
! - Macro: WORDS_BIG_ENDIAN
Define this macro to have the value 1 if, in a multiword object,
the most significant word has the lowest number. This applies to
both memory locations and registers; GCC fundamentally assumes
that the order of words in memory is the same as the order in
registers. This macro need not be a constant.
! - Macro: LIBGCC2_WORDS_BIG_ENDIAN
Define this macro if `WORDS_BIG_ENDIAN' is not constant. This
must be a constant value with the same meaning as
`WORDS_BIG_ENDIAN', which will be used only when compiling
`libgcc2.c'. Typically the value will be set based on
preprocessor defines.
! - Macro: FLOAT_WORDS_BIG_ENDIAN
Define this macro to have the value 1 if `DFmode', `XFmode' or
`TFmode' floating point numbers are stored in memory with the word
containing the sign bit at the lowest address; otherwise define it
--- 14138,14163 ----
This macro does not affect the way structure fields are packed into
bytes or words; that is controlled by `BYTES_BIG_ENDIAN'.
! -- Macro: BYTES_BIG_ENDIAN
Define this macro to have the value 1 if the most significant byte
in a word has the lowest number. This macro need not be a
constant.
! -- Macro: WORDS_BIG_ENDIAN
Define this macro to have the value 1 if, in a multiword object,
the most significant word has the lowest number. This applies to
both memory locations and registers; GCC fundamentally assumes
that the order of words in memory is the same as the order in
registers. This macro need not be a constant.
! -- Macro: LIBGCC2_WORDS_BIG_ENDIAN
Define this macro if `WORDS_BIG_ENDIAN' is not constant. This
must be a constant value with the same meaning as
`WORDS_BIG_ENDIAN', which will be used only when compiling
`libgcc2.c'. Typically the value will be set based on
preprocessor defines.
! -- Macro: FLOAT_WORDS_BIG_ENDIAN
Define this macro to have the value 1 if `DFmode', `XFmode' or
`TFmode' floating point numbers are stored in memory with the word
containing the sign bit at the lowest address; otherwise define it
*************** can be C expressions that refer to stati
*** 14150,14186 ****
You need not define this macro if the ordering is the same as for
multi-word integers.
! - Macro: BITS_PER_UNIT
Define this macro to be the number of bits in an addressable
storage unit (byte). If you do not define this macro the default
is 8.
! - Macro: BITS_PER_WORD
Number of bits in a word. If you do not define this macro, the
default is `BITS_PER_UNIT * UNITS_PER_WORD'.
! - Macro: MAX_BITS_PER_WORD
Maximum number of bits in a word. If this is undefined, the
default is `BITS_PER_WORD'. Otherwise, it is the constant value
that is the largest value that `BITS_PER_WORD' can have at
run-time.
! - Macro: UNITS_PER_WORD
Number of storage units in a word; normally 4.
! - Macro: MIN_UNITS_PER_WORD
Minimum number of units in a word. If this is undefined, the
default is `UNITS_PER_WORD'. Otherwise, it is the constant value
that is the smallest value that `UNITS_PER_WORD' can have at
run-time.
! - Macro: POINTER_SIZE
Width of a pointer, in bits. You must specify a value no wider
than the width of `Pmode'. If it is not equal to the width of
`Pmode', you must define `POINTERS_EXTEND_UNSIGNED'. If you do
not specify a value the default is `BITS_PER_WORD'.
! - Macro: POINTERS_EXTEND_UNSIGNED
A C expression whose value is greater than zero if pointers that
need to be extended from being `POINTER_SIZE' bits wide to `Pmode'
are to be zero-extended and zero if they are to be sign-extended.
--- 14166,14202 ----
You need not define this macro if the ordering is the same as for
multi-word integers.
! -- Macro: BITS_PER_UNIT
Define this macro to be the number of bits in an addressable
storage unit (byte). If you do not define this macro the default
is 8.
! -- Macro: BITS_PER_WORD
Number of bits in a word. If you do not define this macro, the
default is `BITS_PER_UNIT * UNITS_PER_WORD'.
! -- Macro: MAX_BITS_PER_WORD
Maximum number of bits in a word. If this is undefined, the
default is `BITS_PER_WORD'. Otherwise, it is the constant value
that is the largest value that `BITS_PER_WORD' can have at
run-time.
! -- Macro: UNITS_PER_WORD
Number of storage units in a word; normally 4.
! -- Macro: MIN_UNITS_PER_WORD
Minimum number of units in a word. If this is undefined, the
default is `UNITS_PER_WORD'. Otherwise, it is the constant value
that is the smallest value that `UNITS_PER_WORD' can have at
run-time.
! -- Macro: POINTER_SIZE
Width of a pointer, in bits. You must specify a value no wider
than the width of `Pmode'. If it is not equal to the width of
`Pmode', you must define `POINTERS_EXTEND_UNSIGNED'. If you do
not specify a value the default is `BITS_PER_WORD'.
! -- Macro: POINTERS_EXTEND_UNSIGNED
A C expression whose value is greater than zero if pointers that
need to be extended from being `POINTER_SIZE' bits wide to `Pmode'
are to be zero-extended and zero if they are to be sign-extended.
*************** can be C expressions that refer to stati
*** 14190,14196 ****
You need not define this macro if the `POINTER_SIZE' is equal to
the width of `Pmode'.
! - Macro: PROMOTE_MODE (M, UNSIGNEDP, TYPE)
A macro to update M and UNSIGNEDP when an object whose type is
TYPE and which has the specified mode and signedness is to be
stored in a register. This macro is only called when TYPE is a
--- 14206,14212 ----
You need not define this macro if the `POINTER_SIZE' is equal to
the width of `Pmode'.
! -- Macro: PROMOTE_MODE (M, UNSIGNEDP, TYPE)
A macro to update M and UNSIGNEDP when an object whose type is
TYPE and which has the specified mode and signedness is to be
stored in a register. This macro is only called when TYPE is a
*************** can be C expressions that refer to stati
*** 14213,14223 ****
Do not define this macro if it would never modify M.
! - Target Hook: bool TARGET_PROMOTE_FUNCTION_ARGS (tree FNTYPE)
This target hook should return `true' if the promotion described by
`PROMOTE_MODE' should also be done for outgoing function arguments.
! - Target Hook: bool TARGET_PROMOTE_FUNCTION_RETURN (tree FNTYPE)
This target hook should return `true' if the promotion described by
`PROMOTE_MODE' should also be done for the return value of
functions.
--- 14229,14239 ----
Do not define this macro if it would never modify M.
! -- Target Hook: bool TARGET_PROMOTE_FUNCTION_ARGS (tree FNTYPE)
This target hook should return `true' if the promotion described by
`PROMOTE_MODE' should also be done for outgoing function arguments.
! -- Target Hook: bool TARGET_PROMOTE_FUNCTION_RETURN (tree FNTYPE)
This target hook should return `true' if the promotion described by
`PROMOTE_MODE' should also be done for the return value of
functions.
*************** can be C expressions that refer to stati
*** 14225,14244 ****
If this target hook returns `true', `FUNCTION_VALUE' must perform
the same promotions done by `PROMOTE_MODE'.
! - Macro: PROMOTE_FOR_CALL_ONLY
Define this macro if the promotion described by `PROMOTE_MODE'
should _only_ be performed for outgoing function arguments or
function return values, as specified by
`TARGET_PROMOTE_FUNCTION_ARGS' and
`TARGET_PROMOTE_FUNCTION_RETURN', respectively.
! - Macro: PARM_BOUNDARY
Normal alignment required for function parameters on the stack, in
bits. All stack parameters receive at least this much alignment
regardless of data type. On most machines, this is the same as the
size of an integer.
! - Macro: STACK_BOUNDARY
Define this macro to the minimum alignment enforced by hardware
for the stack pointer on this machine. The definition is a C
expression for the desired alignment (measured in bits). This
--- 14241,14260 ----
If this target hook returns `true', `FUNCTION_VALUE' must perform
the same promotions done by `PROMOTE_MODE'.
! -- Macro: PROMOTE_FOR_CALL_ONLY
Define this macro if the promotion described by `PROMOTE_MODE'
should _only_ be performed for outgoing function arguments or
function return values, as specified by
`TARGET_PROMOTE_FUNCTION_ARGS' and
`TARGET_PROMOTE_FUNCTION_RETURN', respectively.
! -- Macro: PARM_BOUNDARY
Normal alignment required for function parameters on the stack, in
bits. All stack parameters receive at least this much alignment
regardless of data type. On most machines, this is the same as the
size of an integer.
! -- Macro: STACK_BOUNDARY
Define this macro to the minimum alignment enforced by hardware
for the stack pointer on this machine. The definition is a C
expression for the desired alignment (measured in bits). This
*************** can be C expressions that refer to stati
*** 14246,14259 ****
defined. On most machines, this should be the same as
`PARM_BOUNDARY'.
! - Macro: PREFERRED_STACK_BOUNDARY
Define this macro if you wish to preserve a certain alignment for
the stack pointer, greater than what the hardware enforces. The
definition is a C expression for the desired alignment (measured
in bits). This macro must evaluate to a value equal to or larger
than `STACK_BOUNDARY'.
! - Macro: FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
A C expression that evaluates true if `PREFERRED_STACK_BOUNDARY' is
not guaranteed by the runtime and we should emit code to align the
stack at the beginning of `main'.
--- 14262,14275 ----
defined. On most machines, this should be the same as
`PARM_BOUNDARY'.
! -- Macro: PREFERRED_STACK_BOUNDARY
Define this macro if you wish to preserve a certain alignment for
the stack pointer, greater than what the hardware enforces. The
definition is a C expression for the desired alignment (measured
in bits). This macro must evaluate to a value equal to or larger
than `STACK_BOUNDARY'.
! -- Macro: FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
A C expression that evaluates true if `PREFERRED_STACK_BOUNDARY' is
not guaranteed by the runtime and we should emit code to align the
stack at the beginning of `main'.
*************** can be C expressions that refer to stati
*** 14263,14290 ****
specifies a less strict alignment than `PREFERRED_STACK_BOUNDARY',
the stack may be momentarily unaligned while pushing arguments.
! - Macro: FUNCTION_BOUNDARY
Alignment required for a function entry point, in bits.
! - Macro: BIGGEST_ALIGNMENT
Biggest alignment that any data type can require on this machine,
in bits.
! - Macro: MINIMUM_ATOMIC_ALIGNMENT
If defined, the smallest alignment, in bits, that can be given to
an object that can be referenced in one operation, without
disturbing any nearby object. Normally, this is `BITS_PER_UNIT',
but may be larger on machines that don't have byte or half-word
store operations.
! - Macro: BIGGEST_FIELD_ALIGNMENT
Biggest alignment that any structure or union field can require on
this machine, in bits. If defined, this overrides
`BIGGEST_ALIGNMENT' for structure and union fields only, unless
the field alignment has been set by the `__attribute__ ((aligned
(N)))' construct.
! - Macro: ADJUST_FIELD_ALIGN (FIELD, COMPUTED)
An expression for the alignment of a structure field FIELD if the
alignment computed in the usual way (including applying of
`BIGGEST_ALIGNMENT' and `BIGGEST_FIELD_ALIGNMENT' to the
--- 14279,14306 ----
specifies a less strict alignment than `PREFERRED_STACK_BOUNDARY',
the stack may be momentarily unaligned while pushing arguments.
! -- Macro: FUNCTION_BOUNDARY
Alignment required for a function entry point, in bits.
! -- Macro: BIGGEST_ALIGNMENT
Biggest alignment that any data type can require on this machine,
in bits.
! -- Macro: MINIMUM_ATOMIC_ALIGNMENT
If defined, the smallest alignment, in bits, that can be given to
an object that can be referenced in one operation, without
disturbing any nearby object. Normally, this is `BITS_PER_UNIT',
but may be larger on machines that don't have byte or half-word
store operations.
! -- Macro: BIGGEST_FIELD_ALIGNMENT
Biggest alignment that any structure or union field can require on
this machine, in bits. If defined, this overrides
`BIGGEST_ALIGNMENT' for structure and union fields only, unless
the field alignment has been set by the `__attribute__ ((aligned
(N)))' construct.
! -- Macro: ADJUST_FIELD_ALIGN (FIELD, COMPUTED)
An expression for the alignment of a structure field FIELD if the
alignment computed in the usual way (including applying of
`BIGGEST_ALIGNMENT' and `BIGGEST_FIELD_ALIGNMENT' to the
*************** can be C expressions that refer to stati
*** 14292,14304 ****
alignment has not been set by the `__attribute__ ((aligned (N)))'
construct.
! - Macro: MAX_OFILE_ALIGNMENT
Biggest alignment supported by the object file format of this
machine. Use this macro to limit the alignment which can be
specified using the `__attribute__ ((aligned (N)))' construct. If
not defined, the default value is `BIGGEST_ALIGNMENT'.
! - Macro: DATA_ALIGNMENT (TYPE, BASIC-ALIGN)
If defined, a C expression to compute the alignment for a variable
in the static store. TYPE is the data type, and BASIC-ALIGN is
the alignment that the object would ordinarily have. The value of
--- 14308,14320 ----
alignment has not been set by the `__attribute__ ((aligned (N)))'
construct.
! -- Macro: MAX_OFILE_ALIGNMENT
Biggest alignment supported by the object file format of this
machine. Use this macro to limit the alignment which can be
specified using the `__attribute__ ((aligned (N)))' construct. If
not defined, the default value is `BIGGEST_ALIGNMENT'.
! -- Macro: DATA_ALIGNMENT (TYPE, BASIC-ALIGN)
If defined, a C expression to compute the alignment for a variable
in the static store. TYPE is the data type, and BASIC-ALIGN is
the alignment that the object would ordinarily have. The value of
*************** can be C expressions that refer to stati
*** 14311,14317 ****
character arrays to be word-aligned so that `strcpy' calls that
copy constants to character arrays can be done inline.
! - Macro: CONSTANT_ALIGNMENT (CONSTANT, BASIC-ALIGN)
If defined, a C expression to compute the alignment given to a
constant that is being placed in memory. CONSTANT is the constant
and BASIC-ALIGN is the alignment that the object would ordinarily
--- 14327,14333 ----
character arrays to be word-aligned so that `strcpy' calls that
copy constants to character arrays can be done inline.
! -- Macro: CONSTANT_ALIGNMENT (CONSTANT, BASIC-ALIGN)
If defined, a C expression to compute the alignment given to a
constant that is being placed in memory. CONSTANT is the constant
and BASIC-ALIGN is the alignment that the object would ordinarily
*************** can be C expressions that refer to stati
*** 14324,14330 ****
constants to be word aligned so that `strcpy' calls that copy
constants can be done inline.
! - Macro: LOCAL_ALIGNMENT (TYPE, BASIC-ALIGN)
If defined, a C expression to compute the alignment for a variable
in the local store. TYPE is the data type, and BASIC-ALIGN is the
alignment that the object would ordinarily have. The value of this
--- 14340,14346 ----
constants to be word aligned so that `strcpy' calls that copy
constants can be done inline.
! -- Macro: LOCAL_ALIGNMENT (TYPE, BASIC-ALIGN)
If defined, a C expression to compute the alignment for a variable
in the local store. TYPE is the data type, and BASIC-ALIGN is the
alignment that the object would ordinarily have. The value of this
*************** can be C expressions that refer to stati
*** 14335,14347 ****
One use of this macro is to increase alignment of medium-size data
to make it all fit in fewer cache lines.
! - Macro: EMPTY_FIELD_BOUNDARY
Alignment in bits to be given to a structure bit-field that
follows an empty field such as `int : 0;'.
If `PCC_BITFIELD_TYPE_MATTERS' is true, it overrides this macro.
! - Macro: STRUCTURE_SIZE_BOUNDARY
Number of bits which any structure or union's size must be a
multiple of. Each structure or union's size is rounded up to a
multiple of this.
--- 14351,14363 ----
One use of this macro is to increase alignment of medium-size data
to make it all fit in fewer cache lines.
! -- Macro: EMPTY_FIELD_BOUNDARY
Alignment in bits to be given to a structure bit-field that
follows an empty field such as `int : 0;'.
If `PCC_BITFIELD_TYPE_MATTERS' is true, it overrides this macro.
! -- Macro: STRUCTURE_SIZE_BOUNDARY
Number of bits which any structure or union's size must be a
multiple of. Each structure or union's size is rounded up to a
multiple of this.
*************** can be C expressions that refer to stati
*** 14349,14360 ****
If you do not define this macro, the default is the same as
`BITS_PER_UNIT'.
! - Macro: STRICT_ALIGNMENT
Define this macro to be the value 1 if instructions will fail to
work if given data not on the nominal alignment. If instructions
will merely go slower in that case, define this macro as 0.
! - Macro: PCC_BITFIELD_TYPE_MATTERS
Define this if you wish to imitate the way many other C compilers
handle alignment of bit-fields and the structures that contain
them.
--- 14365,14376 ----
If you do not define this macro, the default is the same as
`BITS_PER_UNIT'.
! -- Macro: STRICT_ALIGNMENT
Define this macro to be the value 1 if instructions will fail to
work if given data not on the nominal alignment. If instructions
will merely go slower in that case, define this macro as 0.
! -- Macro: PCC_BITFIELD_TYPE_MATTERS
Define this if you wish to imitate the way many other C compilers
handle alignment of bit-fields and the structures that contain
them.
*************** can be C expressions that refer to stati
*** 14402,14415 ****
char :0;
char y;
};
!
struct foo2
{
char x;
int :0;
char y;
};
!
main ()
{
printf ("Size of foo1 is %d\n",
--- 14418,14431 ----
char :0;
char y;
};
!
struct foo2
{
char x;
int :0;
char y;
};
!
main ()
{
printf ("Size of foo1 is %d\n",
*************** can be C expressions that refer to stati
*** 14422,14432 ****
If this prints 2 and 5, then the compiler's behavior is what you
would get from `PCC_BITFIELD_TYPE_MATTERS'.
! - Macro: BITFIELD_NBYTES_LIMITED
Like `PCC_BITFIELD_TYPE_MATTERS' except that its effect is limited
to aligning a bit-field within the structure.
! - Macro: MEMBER_TYPE_FORCES_BLK (FIELD, MODE)
Return 1 if a structure or array containing FIELD should be
accessed using `BLKMODE'.
--- 14438,14448 ----
If this prints 2 and 5, then the compiler's behavior is what you
would get from `PCC_BITFIELD_TYPE_MATTERS'.
! -- Macro: BITFIELD_NBYTES_LIMITED
Like `PCC_BITFIELD_TYPE_MATTERS' except that its effect is limited
to aligning a bit-field within the structure.
! -- Macro: MEMBER_TYPE_FORCES_BLK (FIELD, MODE)
Return 1 if a structure or array containing FIELD should be
accessed using `BLKMODE'.
*************** can be C expressions that refer to stati
*** 14439,14445 ****
of how to use this macro to prevent a structure having a floating
point field from being accessed in an integer mode.
! - Macro: ROUND_TYPE_ALIGN (TYPE, COMPUTED, SPECIFIED)
Define this macro as an expression for the alignment of a type
(given by TYPE as a tree node) if the alignment computed in the
usual way is COMPUTED and the alignment explicitly specified was
--- 14455,14461 ----
of how to use this macro to prevent a structure having a floating
point field from being accessed in an integer mode.
! -- Macro: ROUND_TYPE_ALIGN (TYPE, COMPUTED, SPECIFIED)
Define this macro as an expression for the alignment of a type
(given by TYPE as a tree node) if the alignment computed in the
usual way is COMPUTED and the alignment explicitly specified was
*************** can be C expressions that refer to stati
*** 14448,14466 ****
The default is to use SPECIFIED if it is larger; otherwise, use
the smaller of COMPUTED and `BIGGEST_ALIGNMENT'
! - Macro: MAX_FIXED_MODE_SIZE
An integer expression for the size in bits of the largest integer
machine mode that should actually be used. All integer machine
modes of this size or smaller can be used for structures and
unions with the appropriate sizes. If this macro is undefined,
`GET_MODE_BITSIZE (DImode)' is assumed.
! - Macro: VECTOR_MODE_SUPPORTED_P (MODE)
Define this macro to be nonzero if the port is prepared to handle
insns involving vector mode MODE. At the very least, it must have
move patterns for this mode.
! - Macro: STACK_SAVEAREA_MODE (SAVE_LEVEL)
If defined, an expression of type `enum machine_mode' that
specifies the mode of the save area operand of a
`save_stack_LEVEL' named pattern (*note Standard Names::).
--- 14464,14482 ----
The default is to use SPECIFIED if it is larger; otherwise, use
the smaller of COMPUTED and `BIGGEST_ALIGNMENT'
! -- Macro: MAX_FIXED_MODE_SIZE
An integer expression for the size in bits of the largest integer
machine mode that should actually be used. All integer machine
modes of this size or smaller can be used for structures and
unions with the appropriate sizes. If this macro is undefined,
`GET_MODE_BITSIZE (DImode)' is assumed.
! -- Macro: VECTOR_MODE_SUPPORTED_P (MODE)
Define this macro to be nonzero if the port is prepared to handle
insns involving vector mode MODE. At the very least, it must have
move patterns for this mode.
! -- Macro: STACK_SAVEAREA_MODE (SAVE_LEVEL)
If defined, an expression of type `enum machine_mode' that
specifies the mode of the save area operand of a
`save_stack_LEVEL' named pattern (*note Standard Names::).
*************** can be C expressions that refer to stati
*** 14472,14478 ****
would most commonly define this macro if the `save_stack_LEVEL'
patterns need to support both a 32- and a 64-bit mode.
! - Macro: STACK_SIZE_MODE
If defined, an expression of type `enum machine_mode' that
specifies the mode of the size increment operand of an
`allocate_stack' named pattern (*note Standard Names::).
--- 14488,14494 ----
would most commonly define this macro if the `save_stack_LEVEL'
patterns need to support both a 32- and a 64-bit mode.
! -- Macro: STACK_SIZE_MODE
If defined, an expression of type `enum machine_mode' that
specifies the mode of the size increment operand of an
`allocate_stack' named pattern (*note Standard Names::).
*************** can be C expressions that refer to stati
*** 14481,14487 ****
You would most commonly define this macro if the `allocate_stack'
pattern needs to support both a 32- and a 64-bit mode.
! - Macro: TARGET_FLOAT_FORMAT
A code distinguishing the floating point format of the target
machine. There are four defined values:
--- 14497,14503 ----
You would most commonly define this macro if the `allocate_stack'
pattern needs to support both a 32- and a 64-bit mode.
! -- Macro: TARGET_FLOAT_FORMAT
A code distinguishing the floating point format of the target
machine. There are four defined values:
*************** can be C expressions that refer to stati
*** 14508,14514 ****
The ordering of the component words of floating point values
stored in memory is controlled by `FLOAT_WORDS_BIG_ENDIAN'.
! - Macro: MODE_HAS_NANS (MODE)
When defined, this macro should be true if MODE has a NaN
representation. The compiler assumes that NaNs are not equal to
anything (including themselves) and that addition, subtraction,
--- 14524,14530 ----
The ordering of the component words of floating point values
stored in memory is controlled by `FLOAT_WORDS_BIG_ENDIAN'.
! -- Macro: MODE_HAS_NANS (MODE)
When defined, this macro should be true if MODE has a NaN
representation. The compiler assumes that NaNs are not equal to
anything (including themselves) and that addition, subtraction,
*************** can be C expressions that refer to stati
*** 14518,14530 ****
By default, this macro is true if MODE is a floating-point mode
and the target floating-point format is IEEE.
! - Macro: MODE_HAS_INFINITIES (MODE)
This macro should be true if MODE can represent infinity. At
present, the compiler uses this macro to decide whether `x - x' is
always defined. By default, the macro is true when MODE is a
floating-point mode and the target format is IEEE.
! - Macro: MODE_HAS_SIGNED_ZEROS (MODE)
True if MODE distinguishes between positive and negative zero.
The rules are expected to follow the IEEE standard:
--- 14534,14546 ----
By default, this macro is true if MODE is a floating-point mode
and the target floating-point format is IEEE.
! -- Macro: MODE_HAS_INFINITIES (MODE)
This macro should be true if MODE can represent infinity. At
present, the compiler uses this macro to decide whether `x - x' is
always defined. By default, the macro is true when MODE is a
floating-point mode and the target format is IEEE.
! -- Macro: MODE_HAS_SIGNED_ZEROS (MODE)
True if MODE distinguishes between positive and negative zero.
The rules are expected to follow the IEEE standard:
*************** can be C expressions that refer to stati
*** 14540,14546 ****
The default definition is true if MODE is a floating-point mode
and the target format is IEEE.
! - Macro: MODE_HAS_SIGN_DEPENDENT_ROUNDING (MODE)
If defined, this macro should be true for MODE if it has at least
one rounding mode in which `x' and `-x' can be rounded to numbers
of different magnitude. Two such modes are towards -infinity and
--- 14556,14562 ----
The default definition is true if MODE is a floating-point mode
and the target format is IEEE.
! -- Macro: MODE_HAS_SIGN_DEPENDENT_ROUNDING (MODE)
If defined, this macro should be true for MODE if it has at least
one rounding mode in which `x' and `-x' can be rounded to numbers
of different magnitude. Two such modes are towards -infinity and
*************** can be C expressions that refer to stati
*** 14549,14555 ****
The default definition of this macro is true if MODE is a
floating-point mode and the target format is IEEE.
! - Macro: ROUND_TOWARDS_ZERO
If defined, this macro should be true if the prevailing rounding
mode is towards zero. A true value has the following effects:
--- 14565,14571 ----
The default definition of this macro is true if MODE is a
floating-point mode and the target format is IEEE.
! -- Macro: ROUND_TOWARDS_ZERO
If defined, this macro should be true if the prevailing rounding
mode is towards zero. A true value has the following effects:
*************** can be C expressions that refer to stati
*** 14570,14576 ****
Not defining this macro is equivalent to returning zero.
! - Macro: LARGEST_EXPONENT_IS_NORMAL (SIZE)
This macro should return true if floats with SIZE bits do not have
a NaN or infinity representation, but use the largest exponent for
normal numbers instead.
--- 14586,14592 ----
Not defining this macro is equivalent to returning zero.
! -- Macro: LARGEST_EXPONENT_IS_NORMAL (SIZE)
This macro should return true if floats with SIZE bits do not have
a NaN or infinity representation, but use the largest exponent for
normal numbers instead.
*************** can be C expressions that refer to stati
*** 14582,14595 ****
The default definition of this macro returns false for all sizes.
! - Target Hook: bool TARGET_VECTOR_OPAQUE_P (tree TYPE)
This target hook should return `true' a vector is opaque. That
is, if no cast is needed when copying a vector value of type TYPE
into another vector lvalue of the same size. Vector opaque types
cannot be initialized. The default is that there are no such
types.
! - Target Hook: bool TARGET_MS_BITFIELD_LAYOUT_P (tree RECORD_TYPE)
This target hook returns `true' if bit-fields in the given
RECORD_TYPE are to be laid out following the rules of Microsoft
Visual C/C++, namely: (i) a bit-field won't share the same storage
--- 14598,14611 ----
The default definition of this macro returns false for all sizes.
! -- Target Hook: bool TARGET_VECTOR_OPAQUE_P (tree TYPE)
This target hook should return `true' a vector is opaque. That
is, if no cast is needed when copying a vector value of type TYPE
into another vector lvalue of the same size. Vector opaque types
cannot be initialized. The default is that there are no such
types.
! -- Target Hook: bool TARGET_MS_BITFIELD_LAYOUT_P (tree RECORD_TYPE)
This target hook returns `true' if bit-fields in the given
RECORD_TYPE are to be laid out following the rules of Microsoft
Visual C/C++, namely: (i) a bit-field won't share the same storage
*************** can be C expressions that refer to stati
*** 14616,14622 ****
precedence for that field, but the alignment of the rest of the
structure may affect its placement.
! - Target Hook: const char * TARGET_MANGLE_FUNDAMENTAL_TYPE (tree TYPE)
If your target defines any fundamental types, define this hook to
return the appropriate encoding for these types as part of a C++
mangled name. The TYPE argument is the tree structure
--- 14632,14638 ----
precedence for that field, but the alignment of the rest of the
structure may affect its placement.
! -- Target Hook: const char * TARGET_MANGLE_FUNDAMENTAL_TYPE (tree TYPE)
If your target defines any fundamental types, define this hook to
return the appropriate encoding for these types as part of a C++
mangled name. The TYPE argument is the tree structure
*************** can be C expressions that refer to stati
*** 14645,14744 ****
File: gccint.info, Node: Type Layout, Next: Escape Sequences, Prev: Storage Layout, Up: Target Macros
! Layout of Source Language Data Types
! ====================================
! These macros define the sizes and other characteristics of the
! standard basic data types used in programs being compiled. Unlike the
! macros in the previous section, these apply to specific features of C
! and related languages, rather than to fundamental aspects of storage
! layout.
! - Macro: INT_TYPE_SIZE
A C expression for the size in bits of the type `int' on the
target machine. If you don't define this, the default is one word.
! - Macro: SHORT_TYPE_SIZE
A C expression for the size in bits of the type `short' on the
target machine. If you don't define this, the default is half a
word. (If this would be less than one storage unit, it is rounded
up to one unit.)
! - Macro: LONG_TYPE_SIZE
A C expression for the size in bits of the type `long' on the
target machine. If you don't define this, the default is one word.
! - Macro: ADA_LONG_TYPE_SIZE
On some machines, the size used for the Ada equivalent of the type
`long' by a native Ada compiler differs from that used by C. In
that situation, define this macro to be a C expression to be used
for the size of that type. If you don't define this, the default
is the value of `LONG_TYPE_SIZE'.
! - Macro: MAX_LONG_TYPE_SIZE
Maximum number for the size in bits of the type `long' on the
target machine. If this is undefined, the default is
`LONG_TYPE_SIZE'. Otherwise, it is the constant value that is the
largest value that `LONG_TYPE_SIZE' can have at run-time. This is
used in `cpp'.
! - Macro: LONG_LONG_TYPE_SIZE
A C expression for the size in bits of the type `long long' on the
target machine. If you don't define this, the default is two
words. If you want to support GNU Ada on your machine, the value
of this macro must be at least 64.
! - Macro: CHAR_TYPE_SIZE
A C expression for the size in bits of the type `char' on the
target machine. If you don't define this, the default is
`BITS_PER_UNIT'.
! - Macro: BOOL_TYPE_SIZE
A C expression for the size in bits of the C++ type `bool' and C99
type `_Bool' on the target machine. If you don't define this, and
you probably shouldn't, the default is `CHAR_TYPE_SIZE'.
! - Macro: FLOAT_TYPE_SIZE
A C expression for the size in bits of the type `float' on the
target machine. If you don't define this, the default is one word.
! - Macro: DOUBLE_TYPE_SIZE
A C expression for the size in bits of the type `double' on the
target machine. If you don't define this, the default is two
words.
! - Macro: LONG_DOUBLE_TYPE_SIZE
A C expression for the size in bits of the type `long double' on
the target machine. If you don't define this, the default is two
words.
! - Macro: MAX_LONG_DOUBLE_TYPE_SIZE
Maximum number for the size in bits of the type `long double' on
the target machine. If this is undefined, the default is
`LONG_DOUBLE_TYPE_SIZE'. Otherwise, it is the constant value that
is the largest value that `LONG_DOUBLE_TYPE_SIZE' can have at
run-time. This is used in `cpp'.
! - Macro: TARGET_FLT_EVAL_METHOD
A C expression for the value for `FLT_EVAL_METHOD' in `float.h',
assuming, if applicable, that the floating-point control word is
in its default state. If you do not define this macro the value of
`FLT_EVAL_METHOD' will be zero.
! - Macro: WIDEST_HARDWARE_FP_SIZE
A C expression for the size in bits of the widest floating-point
format supported by the hardware. If you define this macro, you
must specify a value less than or equal to the value of
`LONG_DOUBLE_TYPE_SIZE'. If you do not define this macro, the
value of `LONG_DOUBLE_TYPE_SIZE' is the default.
! - Macro: DEFAULT_SIGNED_CHAR
An expression whose value is 1 or 0, according to whether the type
`char' should be signed or unsigned by default. The user can
always override this default with the options `-fsigned-char' and
`-funsigned-char'.
! - Macro: DEFAULT_SHORT_ENUMS
A C expression to determine whether to give an `enum' type only as
many bytes as it takes to represent the range of possible values
of that type. A nonzero value means to do that; a zero value
--- 14661,14759 ----
File: gccint.info, Node: Type Layout, Next: Escape Sequences, Prev: Storage Layout, Up: Target Macros
! 11.6 Layout of Source Language Data Types
! =========================================
! These macros define the sizes and other characteristics of the standard
! basic data types used in programs being compiled. Unlike the macros in
! the previous section, these apply to specific features of C and related
! languages, rather than to fundamental aspects of storage layout.
! -- Macro: INT_TYPE_SIZE
A C expression for the size in bits of the type `int' on the
target machine. If you don't define this, the default is one word.
! -- Macro: SHORT_TYPE_SIZE
A C expression for the size in bits of the type `short' on the
target machine. If you don't define this, the default is half a
word. (If this would be less than one storage unit, it is rounded
up to one unit.)
! -- Macro: LONG_TYPE_SIZE
A C expression for the size in bits of the type `long' on the
target machine. If you don't define this, the default is one word.
! -- Macro: ADA_LONG_TYPE_SIZE
On some machines, the size used for the Ada equivalent of the type
`long' by a native Ada compiler differs from that used by C. In
that situation, define this macro to be a C expression to be used
for the size of that type. If you don't define this, the default
is the value of `LONG_TYPE_SIZE'.
! -- Macro: MAX_LONG_TYPE_SIZE
Maximum number for the size in bits of the type `long' on the
target machine. If this is undefined, the default is
`LONG_TYPE_SIZE'. Otherwise, it is the constant value that is the
largest value that `LONG_TYPE_SIZE' can have at run-time. This is
used in `cpp'.
! -- Macro: LONG_LONG_TYPE_SIZE
A C expression for the size in bits of the type `long long' on the
target machine. If you don't define this, the default is two
words. If you want to support GNU Ada on your machine, the value
of this macro must be at least 64.
! -- Macro: CHAR_TYPE_SIZE
A C expression for the size in bits of the type `char' on the
target machine. If you don't define this, the default is
`BITS_PER_UNIT'.
! -- Macro: BOOL_TYPE_SIZE
A C expression for the size in bits of the C++ type `bool' and C99
type `_Bool' on the target machine. If you don't define this, and
you probably shouldn't, the default is `CHAR_TYPE_SIZE'.
! -- Macro: FLOAT_TYPE_SIZE
A C expression for the size in bits of the type `float' on the
target machine. If you don't define this, the default is one word.
! -- Macro: DOUBLE_TYPE_SIZE
A C expression for the size in bits of the type `double' on the
target machine. If you don't define this, the default is two
words.
! -- Macro: LONG_DOUBLE_TYPE_SIZE
A C expression for the size in bits of the type `long double' on
the target machine. If you don't define this, the default is two
words.
! -- Macro: MAX_LONG_DOUBLE_TYPE_SIZE
Maximum number for the size in bits of the type `long double' on
the target machine. If this is undefined, the default is
`LONG_DOUBLE_TYPE_SIZE'. Otherwise, it is the constant value that
is the largest value that `LONG_DOUBLE_TYPE_SIZE' can have at
run-time. This is used in `cpp'.
! -- Macro: TARGET_FLT_EVAL_METHOD
A C expression for the value for `FLT_EVAL_METHOD' in `float.h',
assuming, if applicable, that the floating-point control word is
in its default state. If you do not define this macro the value of
`FLT_EVAL_METHOD' will be zero.
! -- Macro: WIDEST_HARDWARE_FP_SIZE
A C expression for the size in bits of the widest floating-point
format supported by the hardware. If you define this macro, you
must specify a value less than or equal to the value of
`LONG_DOUBLE_TYPE_SIZE'. If you do not define this macro, the
value of `LONG_DOUBLE_TYPE_SIZE' is the default.
! -- Macro: DEFAULT_SIGNED_CHAR
An expression whose value is 1 or 0, according to whether the type
`char' should be signed or unsigned by default. The user can
always override this default with the options `-fsigned-char' and
`-funsigned-char'.
! -- Macro: DEFAULT_SHORT_ENUMS
A C expression to determine whether to give an `enum' type only as
many bytes as it takes to represent the range of possible values
of that type. A nonzero value means to do that; a zero value
*************** layout.
*** 14746,14752 ****
If you don't define the macro, the default is 0.
! - Macro: SIZE_TYPE
A C expression for a string describing the name of the data type
to use for size values. The typedef name `size_t' is defined
using the contents of the string.
--- 14761,14767 ----
If you don't define the macro, the default is 0.
! -- Macro: SIZE_TYPE
A C expression for a string describing the name of the data type
to use for size values. The typedef name `size_t' is defined
using the contents of the string.
*************** layout.
*** 14762,14768 ****
If you don't define this macro, the default is `"long unsigned
int"'.
! - Macro: PTRDIFF_TYPE
A C expression for a string describing the name of the data type
to use for the result of subtracting two pointers. The typedef
name `ptrdiff_t' is defined using the contents of the string. See
--- 14777,14783 ----
If you don't define this macro, the default is `"long unsigned
int"'.
! -- Macro: PTRDIFF_TYPE
A C expression for a string describing the name of the data type
to use for the result of subtracting two pointers. The typedef
name `ptrdiff_t' is defined using the contents of the string. See
*************** layout.
*** 14770,14776 ****
If you don't define this macro, the default is `"long int"'.
! - Macro: WCHAR_TYPE
A C expression for a string describing the name of the data type
to use for wide characters. The typedef name `wchar_t' is defined
using the contents of the string. See `SIZE_TYPE' above for more
--- 14785,14791 ----
If you don't define this macro, the default is `"long int"'.
! -- Macro: WCHAR_TYPE
A C expression for a string describing the name of the data type
to use for wide characters. The typedef name `wchar_t' is defined
using the contents of the string. See `SIZE_TYPE' above for more
*************** layout.
*** 14778,14796 ****
If you don't define this macro, the default is `"int"'.
! - Macro: WCHAR_TYPE_SIZE
A C expression for the size in bits of the data type for wide
characters. This is used in `cpp', which cannot make use of
`WCHAR_TYPE'.
! - Macro: MAX_WCHAR_TYPE_SIZE
Maximum number for the size in bits of the data type for wide
characters. If this is undefined, the default is
`WCHAR_TYPE_SIZE'. Otherwise, it is the constant value that is the
largest value that `WCHAR_TYPE_SIZE' can have at run-time. This is
used in `cpp'.
! - Macro: GCOV_TYPE_SIZE
A C expression for the size in bits of the type used for gcov
counters on the target machine. If you don't define this, the
default is one `LONG_TYPE_SIZE' in case it is greater or equal to
--- 14793,14811 ----
If you don't define this macro, the default is `"int"'.
! -- Macro: WCHAR_TYPE_SIZE
A C expression for the size in bits of the data type for wide
characters. This is used in `cpp', which cannot make use of
`WCHAR_TYPE'.
! -- Macro: MAX_WCHAR_TYPE_SIZE
Maximum number for the size in bits of the data type for wide
characters. If this is undefined, the default is
`WCHAR_TYPE_SIZE'. Otherwise, it is the constant value that is the
largest value that `WCHAR_TYPE_SIZE' can have at run-time. This is
used in `cpp'.
! -- Macro: GCOV_TYPE_SIZE
A C expression for the size in bits of the type used for gcov
counters on the target machine. If you don't define this, the
default is one `LONG_TYPE_SIZE' in case it is greater or equal to
*************** layout.
*** 14798,14804 ****
re-define the type to ensure atomicity for counters in
multithreaded programs.
! - Macro: WINT_TYPE
A C expression for a string describing the name of the data type to
use for wide characters passed to `printf' and returned from
`getwc'. The typedef name `wint_t' is defined using the contents
--- 14813,14819 ----
re-define the type to ensure atomicity for counters in
multithreaded programs.
! -- Macro: WINT_TYPE
A C expression for a string describing the name of the data type to
use for wide characters passed to `printf' and returned from
`getwc'. The typedef name `wint_t' is defined using the contents
*************** layout.
*** 14806,14812 ****
If you don't define this macro, the default is `"unsigned int"'.
! - Macro: INTMAX_TYPE
A C expression for a string describing the name of the data type
that can represent any value of any standard or extended signed
integer type. The typedef name `intmax_t' is defined using the
--- 14821,14827 ----
If you don't define this macro, the default is `"unsigned int"'.
! -- Macro: INTMAX_TYPE
A C expression for a string describing the name of the data type
that can represent any value of any standard or extended signed
integer type. The typedef name `intmax_t' is defined using the
*************** layout.
*** 14817,14823 ****
`"int"', `"long int"', or `"long long int"' that has as much
precision as `long long int'.
! - Macro: UINTMAX_TYPE
A C expression for a string describing the name of the data type
that can represent any value of any standard or extended unsigned
integer type. The typedef name `uintmax_t' is defined using the
--- 14832,14838 ----
`"int"', `"long int"', or `"long long int"' that has as much
precision as `long long int'.
! -- Macro: UINTMAX_TYPE
A C expression for a string describing the name of the data type
that can represent any value of any standard or extended unsigned
integer type. The typedef name `uintmax_t' is defined using the
*************** layout.
*** 14828,14834 ****
`"unsigned int"', `"long unsigned int"', or `"long long unsigned
int"' that has as much precision as `long long unsigned int'.
! - Macro: TARGET_PTRMEMFUNC_VBIT_LOCATION
The C++ compiler represents a pointer-to-member-function with a
struct that looks like:
--- 14843,14849 ----
`"unsigned int"', `"long unsigned int"', or `"long long unsigned
int"' that has as much precision as `long long unsigned int'.
! -- Macro: TARGET_PTRMEMFUNC_VBIT_LOCATION
The C++ compiler represents a pointer-to-member-function with a
struct that looks like:
*************** layout.
*** 14864,14870 ****
according to `FUNCTION_BOUNDARY', GCC will automatically define
this macro to `ptrmemfunc_vbit_in_pfn'.
! - Macro: TARGET_VTABLE_USES_DESCRIPTORS
Normally, the C++ compiler uses function pointers in vtables. This
macro allows the target to change to use "function descriptors"
instead. Function descriptors are found on targets for whom a
--- 14879,14885 ----
according to `FUNCTION_BOUNDARY', GCC will automatically define
this macro to `ptrmemfunc_vbit_in_pfn'.
! -- Macro: TARGET_VTABLE_USES_DESCRIPTORS
Normally, the C++ compiler uses function pointers in vtables. This
macro allows the target to change to use "function descriptors"
instead. Function descriptors are found on targets for whom a
*************** layout.
*** 14875,14887 ****
If vtables are used, the value of this macro should be the number
of words that the function descriptor occupies.
! - Macro: TARGET_VTABLE_ENTRY_ALIGN
By default, the vtable entries are void pointers, the so the
alignment is the same as pointer alignment. The value of this
macro specifies the alignment of the vtable entry in bits. It
should be defined only when special alignment is necessary. */
! - Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE
There are a few non-descriptor entries in the vtable at offsets
below zero. If these entries must be padded (say, to preserve the
alignment specified by `TARGET_VTABLE_ENTRY_ALIGN'), set this to
--- 14890,14902 ----
If vtables are used, the value of this macro should be the number
of words that the function descriptor occupies.
! -- Macro: TARGET_VTABLE_ENTRY_ALIGN
By default, the vtable entries are void pointers, the so the
alignment is the same as pointer alignment. The value of this
macro specifies the alignment of the vtable entry in bits. It
should be defined only when special alignment is necessary. */
! -- Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE
There are a few non-descriptor entries in the vtable at offsets
below zero. If these entries must be padded (say, to preserve the
alignment specified by `TARGET_VTABLE_ENTRY_ALIGN'), set this to
*************** layout.
*** 14890,14899 ****
File: gccint.info, Node: Escape Sequences, Next: Registers, Prev: Type Layout, Up: Target Macros
! Target Character Escape Sequences
! =================================
! By default, GCC assumes that the C character escape sequences take on
their ASCII values for the target. If this is not correct, you must
explicitly define all of the macros below. All of them must evaluate
to constants; they are used in `case' statements.
--- 14905,14914 ----
File: gccint.info, Node: Escape Sequences, Next: Registers, Prev: Type Layout, Up: Target Macros
! 11.7 Target Character Escape Sequences
! ======================================
! By default, GCC assumes that the C character escape sequences take on
their ASCII values for the target. If this is not correct, you must
explicitly define all of the macros below. All of them must evaluate
to constants; they are used in `case' statements.
*************** C standard.
*** 14914,14924 ****
File: gccint.info, Node: Registers, Next: Register Classes, Prev: Escape Sequences, Up: Target Macros
! Register Usage
! ==============
! This section explains how to describe what registers the target
! machine has, and how (in general) they can be used.
The description of which registers a specific instruction can use is
done with register classes; see *Note Register Classes::. For
--- 14929,14939 ----
File: gccint.info, Node: Registers, Next: Register Classes, Prev: Escape Sequences, Up: Target Macros
! 11.8 Register Usage
! ===================
! This section explains how to describe what registers the target machine
! has, and how (in general) they can be used.
The description of which registers a specific instruction can use is
done with register classes; see *Note Register Classes::. For
*************** Return::.
*** 14938,14955 ****
File: gccint.info, Node: Register Basics, Next: Allocation Order, Up: Registers
! Basic Characteristics of Registers
! ----------------------------------
! Registers have various characteristics.
! - Macro: FIRST_PSEUDO_REGISTER
Number of hardware registers known to the compiler. They receive
numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first
pseudo register's number really is assigned the number
`FIRST_PSEUDO_REGISTER'.
! - Macro: FIXED_REGISTERS
An initializer that says which registers are used for fixed
purposes all throughout the compiled code and are therefore not
available for general allocation. These would include the stack
--- 14953,14970 ----
File: gccint.info, Node: Register Basics, Next: Allocation Order, Up: Registers
! 11.8.1 Basic Characteristics of Registers
! -----------------------------------------
! Registers have various characteristics.
! -- Macro: FIRST_PSEUDO_REGISTER
Number of hardware registers known to the compiler. They receive
numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first
pseudo register's number really is assigned the number
`FIRST_PSEUDO_REGISTER'.
! -- Macro: FIXED_REGISTERS
An initializer that says which registers are used for fixed
purposes all throughout the compiled code and are therefore not
available for general allocation. These would include the stack
*************** Basic Characteristics of Registers
*** 14969,14975 ****
`CONDITIONAL_REGISTER_USAGE', or by the user with the command
options `-ffixed-REG', `-fcall-used-REG' and `-fcall-saved-REG'.
! - Macro: CALL_USED_REGISTERS
Like `FIXED_REGISTERS' but has 1 for each register that is
clobbered (in general) by function calls as well as for fixed
registers. This macro therefore identifies the registers that are
--- 14984,14990 ----
`CONDITIONAL_REGISTER_USAGE', or by the user with the command
options `-ffixed-REG', `-fcall-used-REG' and `-fcall-saved-REG'.
! -- Macro: CALL_USED_REGISTERS
Like `FIXED_REGISTERS' but has 1 for each register that is
clobbered (in general) by function calls as well as for fixed
registers. This macro therefore identifies the registers that are
*************** Basic Characteristics of Registers
*** 14980,15000 ****
automatically saves it on function entry and restores it on
function exit, if the register is used within the function.
! - Macro: CALL_REALLY_USED_REGISTERS
Like `CALL_USED_REGISTERS' except this macro doesn't require that
the entire set of `FIXED_REGISTERS' be included.
(`CALL_USED_REGISTERS' must be a superset of `FIXED_REGISTERS').
This macro is optional. If not specified, it defaults to the value
of `CALL_USED_REGISTERS'.
! - Macro: HARD_REGNO_CALL_PART_CLOBBERED (REGNO, MODE)
A C expression that is nonzero if it is not permissible to store a
value of mode MODE in hard register number REGNO across a call
without some part of it being clobbered. For most machines this
macro need not be defined. It is only required for machines that
do not preserve the entire contents of a register across a call.
! - Macro: CONDITIONAL_REGISTER_USAGE
Zero or more C statements that may conditionally modify five
variables `fixed_regs', `call_used_regs', `global_regs',
`reg_names', and `reg_class_contents', to take into account any
--- 14995,15015 ----
automatically saves it on function entry and restores it on
function exit, if the register is used within the function.
! -- Macro: CALL_REALLY_USED_REGISTERS
Like `CALL_USED_REGISTERS' except this macro doesn't require that
the entire set of `FIXED_REGISTERS' be included.
(`CALL_USED_REGISTERS' must be a superset of `FIXED_REGISTERS').
This macro is optional. If not specified, it defaults to the value
of `CALL_USED_REGISTERS'.
! -- Macro: HARD_REGNO_CALL_PART_CLOBBERED (REGNO, MODE)
A C expression that is nonzero if it is not permissible to store a
value of mode MODE in hard register number REGNO across a call
without some part of it being clobbered. For most machines this
macro need not be defined. It is only required for machines that
do not preserve the entire contents of a register across a call.
! -- Macro: CONDITIONAL_REGISTER_USAGE
Zero or more C statements that may conditionally modify five
variables `fixed_regs', `call_used_regs', `global_regs',
`reg_names', and `reg_class_contents', to take into account any
*************** Basic Characteristics of Registers
*** 15025,15071 ****
using these registers when the target switches are opposed to
them.)
! - Macro: NON_SAVING_SETJMP
If this macro is defined and has a nonzero value, it means that
`setjmp' and related functions fail to save the registers, or that
`longjmp' fails to restore them. To compensate, the compiler
avoids putting variables in registers in functions that use
`setjmp'.
! - Macro: INCOMING_REGNO (OUT)
Define this macro if the target machine has register windows.
This C expression returns the register number as seen by the
called function corresponding to the register number OUT as seen
by the calling function. Return OUT if register number OUT is not
an outbound register.
! - Macro: OUTGOING_REGNO (IN)
Define this macro if the target machine has register windows.
This C expression returns the register number as seen by the
calling function corresponding to the register number IN as seen
by the called function. Return IN if register number IN is not an
inbound register.
! - Macro: LOCAL_REGNO (REGNO)
Define this macro if the target machine has register windows.
This C expression returns true if the register is call-saved but
is in the register window. Unlike most call-saved registers, such
registers need not be explicitly restored on function exit or
during non-local gotos.
! - Macro: PC_REGNUM
If the program counter has a register number, define this as that
register number. Otherwise, do not define it.
File: gccint.info, Node: Allocation Order, Next: Values in Registers, Prev: Register Basics, Up: Registers
! Order of Allocation of Registers
! --------------------------------
! Registers are allocated in order.
! - Macro: REG_ALLOC_ORDER
If defined, an initializer for a vector of integers, containing the
numbers of hard registers in the order in which GCC should prefer
to use them (from most preferred to least).
--- 15040,15086 ----
using these registers when the target switches are opposed to
them.)
! -- Macro: NON_SAVING_SETJMP
If this macro is defined and has a nonzero value, it means that
`setjmp' and related functions fail to save the registers, or that
`longjmp' fails to restore them. To compensate, the compiler
avoids putting variables in registers in functions that use
`setjmp'.
! -- Macro: INCOMING_REGNO (OUT)
Define this macro if the target machine has register windows.
This C expression returns the register number as seen by the
called function corresponding to the register number OUT as seen
by the calling function. Return OUT if register number OUT is not
an outbound register.
! -- Macro: OUTGOING_REGNO (IN)
Define this macro if the target machine has register windows.
This C expression returns the register number as seen by the
calling function corresponding to the register number IN as seen
by the called function. Return IN if register number IN is not an
inbound register.
! -- Macro: LOCAL_REGNO (REGNO)
Define this macro if the target machine has register windows.
This C expression returns true if the register is call-saved but
is in the register window. Unlike most call-saved registers, such
registers need not be explicitly restored on function exit or
during non-local gotos.
! -- Macro: PC_REGNUM
If the program counter has a register number, define this as that
register number. Otherwise, do not define it.
File: gccint.info, Node: Allocation Order, Next: Values in Registers, Prev: Register Basics, Up: Registers
! 11.8.2 Order of Allocation of Registers
! ---------------------------------------
! Registers are allocated in order.
! -- Macro: REG_ALLOC_ORDER
If defined, an initializer for a vector of integers, containing the
numbers of hard registers in the order in which GCC should prefer
to use them (from most preferred to least).
*************** Order of Allocation of Registers
*** 15079,15085 ****
such machines, define `REG_ALLOC_ORDER' to be an initializer that
lists the highest numbered allocable register first.
! - Macro: ORDER_REGS_FOR_LOCAL_ALLOC
A C statement (sans semicolon) to choose the order in which to
allocate hard registers for pseudo-registers local to a basic
block.
--- 15094,15100 ----
such machines, define `REG_ALLOC_ORDER' to be an initializer that
lists the highest numbered allocable register first.
! -- Macro: ORDER_REGS_FOR_LOCAL_ALLOC
A C statement (sans semicolon) to choose the order in which to
allocate hard registers for pseudo-registers local to a basic
block.
*************** Order of Allocation of Registers
*** 15096,15109 ****
File: gccint.info, Node: Values in Registers, Next: Leaf Functions, Prev: Allocation Order, Up: Registers
! How Values Fit in Registers
! ---------------------------
! This section discusses the macros that describe which kinds of values
(specifically, which machine modes) each register can hold, and how many
consecutive registers are needed for a given mode.
! - Macro: HARD_REGNO_NREGS (REGNO, MODE)
A C expression for the number of consecutive hard registers,
starting at register number REGNO, required to hold a value of mode
MODE.
--- 15111,15124 ----
File: gccint.info, Node: Values in Registers, Next: Leaf Functions, Prev: Allocation Order, Up: Registers
! 11.8.3 How Values Fit in Registers
! ----------------------------------
! This section discusses the macros that describe which kinds of values
(specifically, which machine modes) each register can hold, and how many
consecutive registers are needed for a given mode.
! -- Macro: HARD_REGNO_NREGS (REGNO, MODE)
A C expression for the number of consecutive hard registers,
starting at register number REGNO, required to hold a value of mode
MODE.
*************** consecutive registers are needed for a g
*** 15115,15121 ****
((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \
/ UNITS_PER_WORD)
! - Macro: REGMODE_NATURAL_SIZE (MODE)
Define this macro if the natural size of registers that hold values
of mode MODE is not the word size. It is a C expression that
should give the natural size in bytes for the specified mode. It
--- 15130,15136 ----
((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \
/ UNITS_PER_WORD)
! -- Macro: REGMODE_NATURAL_SIZE (MODE)
Define this macro if the natural size of registers that hold values
of mode MODE is not the word size. It is a C expression that
should give the natural size in bytes for the specified mode. It
*************** consecutive registers are needed for a g
*** 15123,15129 ****
This happens for example on SPARC 64-bit where the natural size of
floating-point registers is still 32-bit.
! - Macro: HARD_REGNO_MODE_OK (REGNO, MODE)
A C expression that is nonzero if it is permissible to store a
value of mode MODE in hard register number REGNO (or in several
registers starting with that one). For a machine where all
--- 15138,15144 ----
This happens for example on SPARC 64-bit where the natural size of
floating-point registers is still 32-bit.
! -- Macro: HARD_REGNO_MODE_OK (REGNO, MODE)
A C expression that is nonzero if it is permissible to store a
value of mode MODE in hard register number REGNO (or in several
registers starting with that one). For a machine where all
*************** consecutive registers are needed for a g
*** 15184,15190 ****
`GENERAL_REGS', they will not be used unless some pattern's
constraint asks for one.
! - Macro: MODES_TIEABLE_P (MODE1, MODE2)
A C expression that is nonzero if a value of mode MODE1 is
accessible in mode MODE2 without copying.
--- 15199,15205 ----
`GENERAL_REGS', they will not be used unless some pattern's
constraint asks for one.
! -- Macro: MODES_TIEABLE_P (MODE1, MODE2)
A C expression that is nonzero if a value of mode MODE1 is
accessible in mode MODE2 without copying.
*************** consecutive registers are needed for a g
*** 15199,15205 ****
possible since doing so will allow GCC to perform better register
allocation.
! - Macro: AVOID_CCMODE_COPIES
Define this macro if the compiler should avoid copies to/from
`CCmode' registers. You should only define this macro if support
for copying to/from `CCmode' is incomplete.
--- 15214,15220 ----
possible since doing so will allow GCC to perform better register
allocation.
! -- Macro: AVOID_CCMODE_COPIES
Define this macro if the compiler should avoid copies to/from
`CCmode' registers. You should only define this macro if support
for copying to/from `CCmode' is incomplete.
*************** consecutive registers are needed for a g
*** 15207,15217 ****
File: gccint.info, Node: Leaf Functions, Next: Stack Registers, Prev: Values in Registers, Up: Registers
! Handling Leaf Functions
! -----------------------
! On some machines, a leaf function (i.e., one which makes no calls)
! can run more efficiently if it does not make its own register window.
Often this means it is required to receive its arguments in the
registers where they are passed by the caller, instead of the registers
where they would normally arrive.
--- 15222,15232 ----
File: gccint.info, Node: Leaf Functions, Next: Stack Registers, Prev: Values in Registers, Up: Registers
! 11.8.4 Handling Leaf Functions
! ------------------------------
! On some machines, a leaf function (i.e., one which makes no calls) can
! run more efficiently if it does not make its own register window.
Often this means it is required to receive its arguments in the
registers where they are passed by the caller, instead of the registers
where they would normally arrive.
*************** suitable for leaf function treatment. S
*** 15228,15234 ****
registers in order to output a leaf function. The following macros
accomplish this.
! - Macro: LEAF_REGISTERS
Name of a char vector, indexed by hard register number, which
contains 1 for a register that is allowable in a candidate for leaf
function treatment.
--- 15243,15249 ----
registers in order to output a leaf function. The following macros
accomplish this.
! -- Macro: LEAF_REGISTERS
Name of a char vector, indexed by hard register number, which
contains 1 for a register that is allowable in a candidate for leaf
function treatment.
*************** accomplish this.
*** 15242,15248 ****
Define this macro only if the target machine offers a way to
optimize the treatment of leaf functions.
! - Macro: LEAF_REG_REMAP (REGNO)
A C expression whose value is the register number to which REGNO
should be renumbered, when a function is treated as a leaf
function.
--- 15257,15263 ----
Define this macro only if the target machine offers a way to
optimize the treatment of leaf functions.
! -- Macro: LEAF_REG_REMAP (REGNO)
A C expression whose value is the register number to which REGNO
should be renumbered, when a function is treated as a leaf
function.
*************** only useful if `LEAF_REGISTERS' is defin
*** 15268,15277 ****
File: gccint.info, Node: Stack Registers, Prev: Leaf Functions, Up: Registers
! Registers That Form a Stack
! ---------------------------
! There are special features to handle computers where some of the
"registers" form a stack. Stack registers are normally written by
pushing onto the stack, and are numbered relative to the top of the
stack.
--- 15283,15292 ----
File: gccint.info, Node: Stack Registers, Prev: Leaf Functions, Up: Registers
! 11.8.5 Registers That Form a Stack
! ----------------------------------
! There are special features to handle computers where some of the
"registers" form a stack. Stack registers are normally written by
pushing onto the stack, and are numbered relative to the top of the
stack.
*************** registers, you will need to do substanti
*** 15284,15311 ****
write your machine description to cooperate with it, as well as
defining these macros.
! - Macro: STACK_REGS
Define this if the machine has any stack-like registers.
! - Macro: FIRST_STACK_REG
The number of the first stack-like register. This one is the top
of the stack.
! - Macro: LAST_STACK_REG
The number of the last stack-like register. This one is the
bottom of the stack.
File: gccint.info, Node: Register Classes, Next: Stack and Calling, Prev: Registers, Up: Target Macros
! Register Classes
! ================
! On many machines, the numbered registers are not all equivalent.
! For example, certain registers may not be allowed for indexed
! addressing; certain registers may not be allowed in some instructions.
! These machine restrictions are described to the compiler using
! "register classes".
You define a number of register classes, giving each one a name and
saying which of the registers belong to it. Then you can specify
--- 15299,15326 ----
write your machine description to cooperate with it, as well as
defining these macros.
! -- Macro: STACK_REGS
Define this if the machine has any stack-like registers.
! -- Macro: FIRST_STACK_REG
The number of the first stack-like register. This one is the top
of the stack.
! -- Macro: LAST_STACK_REG
The number of the last stack-like register. This one is the
bottom of the stack.
File: gccint.info, Node: Register Classes, Next: Stack and Calling, Prev: Registers, Up: Target Macros
! 11.9 Register Classes
! =====================
! On many machines, the numbered registers are not all equivalent. For
! example, certain registers may not be allowed for indexed addressing;
! certain registers may not be allowed in some instructions. These
! machine restrictions are described to the compiler using "register
! classes".
You define a number of register classes, giving each one a name and
saying which of the registers belong to it. Then you can specify
*************** registers from which single-byte values
*** 15359,15365 ****
is so that `PREFERRED_RELOAD_CLASS' can always have a possible value to
return.
! - Data type: enum reg_class
An enumerated type that must be defined with all the register
class names as enumerated values. `NO_REGS' must be first.
`ALL_REGS' must be the last register class, followed by one more
--- 15374,15380 ----
is so that `PREFERRED_RELOAD_CLASS' can always have a possible value to
return.
! -- Data type: enum reg_class
An enumerated type that must be defined with all the register
class names as enumerated values. `NO_REGS' must be first.
`ALL_REGS' must be the last register class, followed by one more
*************** return.
*** 15370,15386 ****
the class name to type `int'. The number serves as an index in
many of the tables described below.
! - Macro: N_REG_CLASSES
The number of distinct register classes, defined as follows:
#define N_REG_CLASSES (int) LIM_REG_CLASSES
! - Macro: REG_CLASS_NAMES
An initializer containing the names of the register classes as C
string constants. These names are used in writing some of the
debugging dumps.
! - Macro: REG_CLASS_CONTENTS
An initializer containing the contents of the register classes, as
integers which are bit masks. The Nth integer specifies the
contents of class N. The way the integer MASK is interpreted is
--- 15385,15401 ----
the class name to type `int'. The number serves as an index in
many of the tables described below.
! -- Macro: N_REG_CLASSES
The number of distinct register classes, defined as follows:
#define N_REG_CLASSES (int) LIM_REG_CLASSES
! -- Macro: REG_CLASS_NAMES
An initializer containing the names of the register classes as C
string constants. These names are used in writing some of the
debugging dumps.
! -- Macro: REG_CLASS_CONTENTS
An initializer containing the contents of the register classes, as
integers which are bit masks. The Nth integer specifies the
contents of class N. The way the integer MASK is interpreted is
*************** return.
*** 15395,15424 ****
registers 0 through 31, the second integer to registers 32 through
63, and so on.
! - Macro: REGNO_REG_CLASS (REGNO)
A C expression whose value is a register class containing hard
register REGNO. In general there is more than one such class;
choose a class which is "minimal", meaning that no smaller class
also contains the register.
! - Macro: BASE_REG_CLASS
A macro whose definition is the name of the class to which a valid
base register must belong. A base register is one used in an
address which is the register value plus a displacement.
! - Macro: MODE_BASE_REG_CLASS (MODE)
This is a variation of the `BASE_REG_CLASS' macro which allows the
selection of a base register in a mode dependent manner. If MODE
is VOIDmode then it should return the same value as
`BASE_REG_CLASS'.
! - Macro: INDEX_REG_CLASS
A macro whose definition is the name of the class to which a valid
index register must belong. An index register is one used in an
address where its value is either multiplied by a scale factor or
added to another register (as well as added to a displacement).
! - Macro: CONSTRAINT_LEN (CHAR, STR)
For the constraint at the start of STR, which starts with the
letter C, return the length. This allows you to have register
class / constant / extra constraints that are longer than a single
--- 15410,15439 ----
registers 0 through 31, the second integer to registers 32 through
63, and so on.
! -- Macro: REGNO_REG_CLASS (REGNO)
A C expression whose value is a register class containing hard
register REGNO. In general there is more than one such class;
choose a class which is "minimal", meaning that no smaller class
also contains the register.
! -- Macro: BASE_REG_CLASS
A macro whose definition is the name of the class to which a valid
base register must belong. A base register is one used in an
address which is the register value plus a displacement.
! -- Macro: MODE_BASE_REG_CLASS (MODE)
This is a variation of the `BASE_REG_CLASS' macro which allows the
selection of a base register in a mode dependent manner. If MODE
is VOIDmode then it should return the same value as
`BASE_REG_CLASS'.
! -- Macro: INDEX_REG_CLASS
A macro whose definition is the name of the class to which a valid
index register must belong. An index register is one used in an
address where its value is either multiplied by a scale factor or
added to another register (as well as added to a displacement).
! -- Macro: CONSTRAINT_LEN (CHAR, STR)
For the constraint at the start of STR, which starts with the
letter C, return the length. This allows you to have register
class / constant / extra constraints that are longer than a single
*************** return.
*** 15433,15439 ****
re-use, genoutput will complain about every instance where it is
used in the md file.
! - Macro: REG_CLASS_FROM_LETTER (CHAR)
A C expression which defines the machine-dependent operand
constraint letters for register classes. If CHAR is such a
letter, the value should be the register class corresponding to
--- 15448,15454 ----
re-use, genoutput will complain about every instance where it is
used in the md file.
! -- Macro: REG_CLASS_FROM_LETTER (CHAR)
A C expression which defines the machine-dependent operand
constraint letters for register classes. If CHAR is such a
letter, the value should be the register class corresponding to
*************** return.
*** 15441,15458 ****
letter `r', corresponding to class `GENERAL_REGS', will not be
passed to this macro; you do not need to handle it.
! - Macro: REG_CLASS_FROM_CONSTRAINT (CHAR, STR)
Like `REG_CLASS_FROM_LETTER', but you also get the constraint
string passed in STR, so that you can use suffixes to distinguish
between different variants.
! - Macro: REGNO_OK_FOR_BASE_P (NUM)
A C expression which is nonzero if register number NUM is suitable
for use as a base register in operand addresses. It may be either
a suitable hard register or a pseudo register that has been
allocated such a hard register.
! - Macro: REGNO_MODE_OK_FOR_BASE_P (NUM, MODE)
A C expression that is just like `REGNO_OK_FOR_BASE_P', except that
that expression may examine the mode of the memory reference in
MODE. You should define this macro if the mode of the memory
--- 15456,15473 ----
letter `r', corresponding to class `GENERAL_REGS', will not be
passed to this macro; you do not need to handle it.
! -- Macro: REG_CLASS_FROM_CONSTRAINT (CHAR, STR)
Like `REG_CLASS_FROM_LETTER', but you also get the constraint
string passed in STR, so that you can use suffixes to distinguish
between different variants.
! -- Macro: REGNO_OK_FOR_BASE_P (NUM)
A C expression which is nonzero if register number NUM is suitable
for use as a base register in operand addresses. It may be either
a suitable hard register or a pseudo register that has been
allocated such a hard register.
! -- Macro: REGNO_MODE_OK_FOR_BASE_P (NUM, MODE)
A C expression that is just like `REGNO_OK_FOR_BASE_P', except that
that expression may examine the mode of the memory reference in
MODE. You should define this macro if the mode of the memory
*************** return.
*** 15460,15466 ****
register. If you define this macro, the compiler will use it
instead of `REGNO_OK_FOR_BASE_P'.
! - Macro: REGNO_OK_FOR_INDEX_P (NUM)
A C expression which is nonzero if register number NUM is suitable
for use as an index register in operand addresses. It may be
either a suitable hard register or a pseudo register that has been
--- 15475,15481 ----
register. If you define this macro, the compiler will use it
instead of `REGNO_OK_FOR_BASE_P'.
! -- Macro: REGNO_OK_FOR_INDEX_P (NUM)
A C expression which is nonzero if register number NUM is suitable
for use as an index register in operand addresses. It may be
either a suitable hard register or a pseudo register that has been
*************** return.
*** 15475,15481 ****
labelings, looking for one that is valid, and will reload one or
both registers only if neither labeling works.
! - Macro: PREFERRED_RELOAD_CLASS (X, CLASS)
A C expression that places additional restrictions on the register
class to use when it is necessary to copy value X into a register
in class CLASS. The value is a register class; perhaps CLASS, or
--- 15490,15496 ----
labelings, looking for one that is valid, and will reload one or
both registers only if neither labeling works.
! -- Macro: PREFERRED_RELOAD_CLASS (X, CLASS)
A C expression that places additional restrictions on the register
class to use when it is necessary to copy value X into a register
in class CLASS. The value is a register class; perhaps CLASS, or
*************** return.
*** 15502,15513 ****
`LEGITIMATE_CONSTANT_P' makes the constant illegitimate instead of
using `PREFERRED_RELOAD_CLASS'.
! - Macro: PREFERRED_OUTPUT_RELOAD_CLASS (X, CLASS)
Like `PREFERRED_RELOAD_CLASS', but for output reloads instead of
input reloads. If you don't define this macro, the default is to
use CLASS, unchanged.
! - Macro: LIMIT_RELOAD_CLASS (MODE, CLASS)
A C expression that places additional restrictions on the register
class to use when it is necessary to be able to hold a value of
mode MODE in a reload register for which class CLASS would
--- 15517,15528 ----
`LEGITIMATE_CONSTANT_P' makes the constant illegitimate instead of
using `PREFERRED_RELOAD_CLASS'.
! -- Macro: PREFERRED_OUTPUT_RELOAD_CLASS (X, CLASS)
Like `PREFERRED_RELOAD_CLASS', but for output reloads instead of
input reloads. If you don't define this macro, the default is to
use CLASS, unchanged.
! -- Macro: LIMIT_RELOAD_CLASS (MODE, CLASS)
A C expression that places additional restrictions on the register
class to use when it is necessary to be able to hold a value of
mode MODE in a reload register for which class CLASS would
*************** return.
*** 15523,15531 ****
Don't define this macro unless the target machine has limitations
which require the macro to do something nontrivial.
! - Macro: SECONDARY_RELOAD_CLASS (CLASS, MODE, X)
! - Macro: SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)
! - Macro: SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)
Many machines have some registers that cannot be copied directly
to or from memory or even from other types of registers. An
example is the `MQ' register, which on most machines, can only be
--- 15538,15546 ----
Don't define this macro unless the target machine has limitations
which require the macro to do something nontrivial.
! -- Macro: SECONDARY_RELOAD_CLASS (CLASS, MODE, X)
! -- Macro: SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)
! -- Macro: SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)
Many machines have some registers that cannot be copied directly
to or from memory or even from other types of registers. An
example is the `MQ' register, which on most machines, can only be
*************** return.
*** 15586,15592 ****
memory as an intermediate storage. This case often occurs between
floating-point and general registers.
! - Macro: SECONDARY_MEMORY_NEEDED (CLASS1, CLASS2, M)
Certain machines have the property that some registers cannot be
copied to some other registers without using memory. Define this
macro on those machines to be a C expression that is nonzero if
--- 15601,15607 ----
memory as an intermediate storage. This case often occurs between
floating-point and general registers.
! -- Macro: SECONDARY_MEMORY_NEEDED (CLASS1, CLASS2, M)
Certain machines have the property that some registers cannot be
copied to some other registers without using memory. Define this
macro on those machines to be a C expression that is nonzero if
*************** return.
*** 15596,15602 ****
Do not define this macro if its value would always be zero.
! - Macro: SECONDARY_MEMORY_NEEDED_RTX (MODE)
Normally when `SECONDARY_MEMORY_NEEDED' is defined, the compiler
allocates a stack slot for a memory location needed for register
copies. If this macro is defined, the compiler instead uses the
--- 15611,15617 ----
Do not define this macro if its value would always be zero.
! -- Macro: SECONDARY_MEMORY_NEEDED_RTX (MODE)
Normally when `SECONDARY_MEMORY_NEEDED' is defined, the compiler
allocates a stack slot for a memory location needed for register
copies. If this macro is defined, the compiler instead uses the
*************** return.
*** 15605,15611 ****
Do not define this macro if you do not define
`SECONDARY_MEMORY_NEEDED'.
! - Macro: SECONDARY_MEMORY_NEEDED_MODE (MODE)
When the compiler needs a secondary memory location to copy
between two registers of mode MODE, it normally allocates
sufficient memory to hold a quantity of `BITS_PER_WORD' bits and
--- 15620,15626 ----
Do not define this macro if you do not define
`SECONDARY_MEMORY_NEEDED'.
! -- Macro: SECONDARY_MEMORY_NEEDED_MODE (MODE)
When the compiler needs a secondary memory location to copy
between two registers of mode MODE, it normally allocates
sufficient memory to hold a quantity of `BITS_PER_WORD' bits and
*************** return.
*** 15628,15634 ****
`SECONDARY_MEMORY_NEEDED' or if widening MODE to a mode that is
`BITS_PER_WORD' bits wide is correct for your machine.
! - Macro: SMALL_REGISTER_CLASSES
On some machines, it is risky to let hard registers live across
arbitrary insns. Typically, these machines have instructions that
require values to be in specific registers (like an accumulator),
--- 15643,15649 ----
`SECONDARY_MEMORY_NEEDED' or if widening MODE to a mode that is
`BITS_PER_WORD' bits wide is correct for your machine.
! -- Macro: SMALL_REGISTER_CLASSES
On some machines, it is risky to let hard registers live across
arbitrary insns. Typically, these machines have instructions that
require values to be in specific registers (like an accumulator),
*************** return.
*** 15647,15653 ****
message. For most machines, you should not define this macro at
all.
! - Macro: CLASS_LIKELY_SPILLED_P (CLASS)
A C expression whose value is nonzero if pseudos that have been
assigned to registers of class CLASS would likely be spilled
because registers of CLASS are needed for spill registers.
--- 15662,15668 ----
message. For most machines, you should not define this macro at
all.
! -- Macro: CLASS_LIKELY_SPILLED_P (CLASS)
A C expression whose value is nonzero if pseudos that have been
assigned to registers of class CLASS would likely be spilled
because registers of CLASS are needed for spill registers.
*************** return.
*** 15664,15670 ****
definition of this macro since the only effect of such a
definition would be to slow down register allocation.
! - Macro: CLASS_MAX_NREGS (CLASS, MODE)
A C expression for the maximum number of consecutive registers of
class CLASS needed to hold a value of mode MODE.
--- 15679,15685 ----
definition of this macro since the only effect of such a
definition would be to slow down register allocation.
! -- Macro: CLASS_MAX_NREGS (CLASS, MODE)
A C expression for the maximum number of consecutive registers of
class CLASS needed to hold a value of mode MODE.
*************** return.
*** 15676,15682 ****
This macro helps control the handling of multiple-word values in
the reload pass.
! - Macro: CANNOT_CHANGE_MODE_CLASS (FROM, TO, CLASS)
If defined, a C expression that returns nonzero for a CLASS for
which a change from mode FROM to mode TO is invalid.
--- 15691,15697 ----
This macro helps control the handling of multiple-word values in
the reload pass.
! -- Macro: CANNOT_CHANGE_MODE_CLASS (FROM, TO, CLASS)
If defined, a C expression that returns nonzero for a CLASS for
which a change from mode FROM to mode TO is invalid.
*************** return.
*** 15694,15700 ****
Three other special macros describe which operands fit which
constraint letters.
! - Macro: CONST_OK_FOR_LETTER_P (VALUE, C)
A C expression that defines the machine-dependent operand
constraint letters (`I', `J', `K', ... `P') that specify
particular ranges of integer values. If C is one of those
--- 15709,15715 ----
Three other special macros describe which operands fit which
constraint letters.
! -- Macro: CONST_OK_FOR_LETTER_P (VALUE, C)
A C expression that defines the machine-dependent operand
constraint letters (`I', `J', `K', ... `P') that specify
particular ranges of integer values. If C is one of those
*************** constraint letters.
*** 15703,15714 ****
not one of those letters, the value should be 0 regardless of
VALUE.
! - Macro: CONST_OK_FOR_CONSTRAINT_P (VALUE, C, STR)
Like `CONST_OK_FOR_LETTER_P', but you also get the constraint
string passed in STR, so that you can use suffixes to distinguish
between different variants.
! - Macro: CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)
A C expression that defines the machine-dependent operand
constraint letters that specify particular ranges of
`const_double' values (`G' or `H').
--- 15718,15729 ----
not one of those letters, the value should be 0 regardless of
VALUE.
! -- Macro: CONST_OK_FOR_CONSTRAINT_P (VALUE, C, STR)
Like `CONST_OK_FOR_LETTER_P', but you also get the constraint
string passed in STR, so that you can use suffixes to distinguish
between different variants.
! -- Macro: CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)
A C expression that defines the machine-dependent operand
constraint letters that specify particular ranges of
`const_double' values (`G' or `H').
*************** constraint letters.
*** 15723,15734 ****
or both kinds of values. It can use `GET_MODE' to distinguish
between these kinds.
! - Macro: CONST_DOUBLE_OK_FOR_CONSTRAINT_P (VALUE, C, STR)
Like `CONST_DOUBLE_OK_FOR_LETTER_P', but you also get the
constraint string passed in STR, so that you can use suffixes to
distinguish between different variants.
! - Macro: EXTRA_CONSTRAINT (VALUE, C)
A C expression that defines the optional machine-dependent
constraint letters that can be used to segregate specific types of
operands, usually memory references, for the target machine. Any
--- 15738,15749 ----
or both kinds of values. It can use `GET_MODE' to distinguish
between these kinds.
! -- Macro: CONST_DOUBLE_OK_FOR_CONSTRAINT_P (VALUE, C, STR)
Like `CONST_DOUBLE_OK_FOR_LETTER_P', but you also get the
constraint string passed in STR, so that you can use suffixes to
distinguish between different variants.
! -- Macro: EXTRA_CONSTRAINT (VALUE, C)
A C expression that defines the optional machine-dependent
constraint letters that can be used to segregate specific types of
operands, usually memory references, for the target machine. Any
*************** constraint letters.
*** 15749,15760 ****
output. The next alternative specifies `m' on the input and a
register class that does not include r0 on the output.
! - Macro: EXTRA_CONSTRAINT_STR (VALUE, C, STR)
Like `EXTRA_CONSTRAINT', but you also get the constraint string
passed in STR, so that you can use suffixes to distinguish between
different variants.
! - Macro: EXTRA_MEMORY_CONSTRAINT (C, STR)
A C expression that defines the optional machine-dependent
constraint letters, amongst those accepted by `EXTRA_CONSTRAINT',
that should be treated like memory constraints by the reload pass.
--- 15764,15775 ----
output. The next alternative specifies `m' on the input and a
register class that does not include r0 on the output.
! -- Macro: EXTRA_CONSTRAINT_STR (VALUE, C, STR)
Like `EXTRA_CONSTRAINT', but you also get the constraint string
passed in STR, so that you can use suffixes to distinguish between
different variants.
! -- Macro: EXTRA_MEMORY_CONSTRAINT (C, STR)
A C expression that defines the optional machine-dependent
constraint letters, amongst those accepted by `EXTRA_CONSTRAINT',
that should be treated like memory constraints by the reload pass.
*************** constraint letters.
*** 15777,15783 ****
register if required. This is analogous to the way a `o'
constraint can handle any memory operand.
! - Macro: EXTRA_ADDRESS_CONSTRAINT (C, STR)
A C expression that defines the optional machine-dependent
constraint letters, amongst those accepted by `EXTRA_CONSTRAINT' /
`EXTRA_CONSTRAINT_STR', that should be treated like address
--- 15792,15798 ----
register if required. This is analogous to the way a `o'
constraint can handle any memory operand.
! -- Macro: EXTRA_ADDRESS_CONSTRAINT (C, STR)
A C expression that defines the optional machine-dependent
constraint letters, amongst those accepted by `EXTRA_CONSTRAINT' /
`EXTRA_CONSTRAINT_STR', that should be treated like address
*************** constraint letters.
*** 15797,15806 ****
File: gccint.info, Node: Stack and Calling, Next: Varargs, Prev: Register Classes, Up: Target Macros
! Stack Layout and Calling Conventions
! ====================================
! This describes the stack layout and calling conventions.
* Menu:
--- 15812,15821 ----
File: gccint.info, Node: Stack and Calling, Next: Varargs, Prev: Register Classes, Up: Target Macros
! 11.10 Stack Layout and Calling Conventions
! ==========================================
! This describes the stack layout and calling conventions.
* Menu:
*************** Stack Layout and Calling Conventions
*** 15821,15832 ****
File: gccint.info, Node: Frame Layout, Next: Exception Handling, Up: Stack and Calling
! Basic Stack Layout
! ------------------
! Here is the basic stack layout.
! - Macro: STACK_GROWS_DOWNWARD
Define this macro if pushing a word onto the stack moves the stack
pointer to a smaller address.
--- 15836,15847 ----
File: gccint.info, Node: Frame Layout, Next: Exception Handling, Up: Stack and Calling
! 11.10.1 Basic Stack Layout
! --------------------------
! Here is the basic stack layout.
! -- Macro: STACK_GROWS_DOWNWARD
Define this macro if pushing a word onto the stack moves the stack
pointer to a smaller address.
*************** Basic Stack Layout
*** 15834,15840 ****
compiler checks this macro only with `#ifdef' so the precise
definition used does not matter.
! - Macro: STACK_PUSH_CODE
This macro defines the operation used when something is pushed on
the stack. In RTL, a push operation will be `(set (mem
(STACK_PUSH_CODE (reg sp))) ...)'
--- 15849,15855 ----
compiler checks this macro only with `#ifdef' so the precise
definition used does not matter.
! -- Macro: STACK_PUSH_CODE
This macro defines the operation used when something is pushed on
the stack. In RTL, a push operation will be `(set (mem
(STACK_PUSH_CODE (reg sp))) ...)'
*************** Basic Stack Layout
*** 15848,15862 ****
which is almost always right, and `PRE_INC' otherwise, which is
often wrong.
! - Macro: FRAME_GROWS_DOWNWARD
Define this macro if the addresses of local variable slots are at
negative offsets from the frame pointer.
! - Macro: ARGS_GROW_DOWNWARD
Define this macro if successive arguments to a function occupy
decreasing addresses on the stack.
! - Macro: STARTING_FRAME_OFFSET
Offset from the frame pointer to the first local variable slot to
be allocated.
--- 15863,15877 ----
which is almost always right, and `PRE_INC' otherwise, which is
often wrong.
! -- Macro: FRAME_GROWS_DOWNWARD
Define this macro if the addresses of local variable slots are at
negative offsets from the frame pointer.
! -- Macro: ARGS_GROW_DOWNWARD
Define this macro if successive arguments to a function occupy
decreasing addresses on the stack.
! -- Macro: STARTING_FRAME_OFFSET
Offset from the frame pointer to the first local variable slot to
be allocated.
*************** Basic Stack Layout
*** 15865,15871 ****
Otherwise, it is found by adding the length of the first slot to
the value `STARTING_FRAME_OFFSET'.
! - Macro: STACK_ALIGNMENT_NEEDED
Define to zero to disable final alignment of the stack during
reload. The nonzero default for this macro is suitable for most
ports.
--- 15880,15886 ----
Otherwise, it is found by adding the length of the first slot to
the value `STARTING_FRAME_OFFSET'.
! -- Macro: STACK_ALIGNMENT_NEEDED
Define to zero to disable final alignment of the stack during
reload. The nonzero default for this macro is suitable for most
ports.
*************** Basic Stack Layout
*** 15875,15881 ****
require alignment to `STACK_BOUNDARY', it may be beneficial to
disable stack alignment and do it in the backend.
! - Macro: STACK_POINTER_OFFSET
Offset from the stack pointer register to the first location at
which outgoing arguments are placed. If not specified, the
default value of zero is used. This is the proper value for most
--- 15890,15896 ----
require alignment to `STACK_BOUNDARY', it may be beneficial to
disable stack alignment and do it in the backend.
! -- Macro: STACK_POINTER_OFFSET
Offset from the stack pointer register to the first location at
which outgoing arguments are placed. If not specified, the
default value of zero is used. This is the proper value for most
*************** Basic Stack Layout
*** 15884,15890 ****
If `ARGS_GROW_DOWNWARD', this is the offset to the location above
the first location at which outgoing arguments are placed.
! - Macro: FIRST_PARM_OFFSET (FUNDECL)
Offset from the argument pointer register to the first argument's
address. On some machines it may depend on the data type of the
function.
--- 15899,15905 ----
If `ARGS_GROW_DOWNWARD', this is the offset to the location above
the first location at which outgoing arguments are placed.
! -- Macro: FIRST_PARM_OFFSET (FUNDECL)
Offset from the argument pointer register to the first argument's
address. On some machines it may depend on the data type of the
function.
*************** Basic Stack Layout
*** 15892,15898 ****
If `ARGS_GROW_DOWNWARD', this is the offset to the location above
the first argument's address.
! - Macro: STACK_DYNAMIC_OFFSET (FUNDECL)
Offset from the stack pointer register to an item dynamically
allocated on the stack, e.g., by `alloca'.
--- 15907,15913 ----
If `ARGS_GROW_DOWNWARD', this is the offset to the location above
the first argument's address.
! -- Macro: STACK_DYNAMIC_OFFSET (FUNDECL)
Offset from the stack pointer register to an item dynamically
allocated on the stack, e.g., by `alloca'.
*************** Basic Stack Layout
*** 15900,15906 ****
length of the outgoing arguments. The default is correct for most
machines. See `function.c' for details.
! - Macro: DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)
A C expression whose value is RTL representing the address in a
stack frame where the pointer to the caller's frame is stored.
Assume that FRAMEADDR is an RTL expression for the address of the
--- 15915,15921 ----
length of the outgoing arguments. The default is correct for most
machines. See `function.c' for details.
! -- Macro: DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)
A C expression whose value is RTL representing the address in a
stack frame where the pointer to the caller's frame is stored.
Assume that FRAMEADDR is an RTL expression for the address of the
*************** Basic Stack Layout
*** 15910,15923 ****
of FRAMEADDR--that is, the stack frame address is also the address
of the stack word that points to the previous frame.
! - Macro: SETUP_FRAME_ADDRESSES
If defined, a C expression that produces the machine-specific code
to setup the stack so that arbitrary frames can be accessed. For
example, on the SPARC, we must flush all of the register windows
to the stack before we can access arbitrary stack frames. You
will seldom need to define this macro.
! - Macro: BUILTIN_SETJMP_FRAME_VALUE
If defined, a C expression that contains an rtx that is used to
store the address of the current frame into the built in `setjmp'
buffer. The default value, `virtual_stack_vars_rtx', is correct
--- 15925,15938 ----
of FRAMEADDR--that is, the stack frame address is also the address
of the stack word that points to the previous frame.
! -- Macro: SETUP_FRAME_ADDRESSES
If defined, a C expression that produces the machine-specific code
to setup the stack so that arbitrary frames can be accessed. For
example, on the SPARC, we must flush all of the register windows
to the stack before we can access arbitrary stack frames. You
will seldom need to define this macro.
! -- Macro: BUILTIN_SETJMP_FRAME_VALUE
If defined, a C expression that contains an rtx that is used to
store the address of the current frame into the built in `setjmp'
buffer. The default value, `virtual_stack_vars_rtx', is correct
*************** Basic Stack Layout
*** 15925,15931 ****
is if `hard_frame_pointer_rtx' is the appropriate value on your
machine.
! - Macro: RETURN_ADDR_RTX (COUNT, FRAMEADDR)
A C expression whose value is RTL representing the value of the
return address for the frame COUNT steps up from the current
frame, after the prologue. FRAMEADDR is the frame pointer of the
--- 15940,15946 ----
is if `hard_frame_pointer_rtx' is the appropriate value on your
machine.
! -- Macro: RETURN_ADDR_RTX (COUNT, FRAMEADDR)
A C expression whose value is RTL representing the value of the
return address for the frame COUNT steps up from the current
frame, after the prologue. FRAMEADDR is the frame pointer of the
*************** Basic Stack Layout
*** 15936,15946 ****
COUNT is zero, but may be `NULL_RTX' if there is not way to
determine the return address of other frames.
! - Macro: RETURN_ADDR_IN_PREVIOUS_FRAME
Define this if the return address of a particular stack frame is
accessed from the frame pointer of the previous stack frame.
! - Macro: INCOMING_RETURN_ADDR_RTX
A C expression whose value is RTL representing the location of the
incoming return address at the beginning of any function, before
the prologue. This RTL is either a `REG', indicating that the
--- 15951,15961 ----
COUNT is zero, but may be `NULL_RTX' if there is not way to
determine the return address of other frames.
! -- Macro: RETURN_ADDR_IN_PREVIOUS_FRAME
Define this if the return address of a particular stack frame is
accessed from the frame pointer of the previous stack frame.
! -- Macro: INCOMING_RETURN_ADDR_RTX
A C expression whose value is RTL representing the location of the
incoming return address at the beginning of any function, before
the prologue. This RTL is either a `REG', indicating that the
*************** Basic Stack Layout
*** 15953,15966 ****
If this RTL is a `REG', you should also define
`DWARF_FRAME_RETURN_COLUMN' to `DWARF_FRAME_REGNUM (REGNO)'.
! - Macro: DWARF_ALT_FRAME_RETURN_COLUMN
A C expression whose value is an integer giving a DWARF 2 column
number that may be used as an alternate return column. This should
be defined only if `DWARF_FRAME_RETURN_COLUMN' is set to a general
register, but an alternate column needs to be used for signal
frames.
! - Macro: DWARF_ZERO_REG
A C expression whose value is an integer giving a DWARF 2 register
number that is considered to always have the value zero. This
should only be defined if the target has an architected zero
--- 15968,15981 ----
If this RTL is a `REG', you should also define
`DWARF_FRAME_RETURN_COLUMN' to `DWARF_FRAME_REGNUM (REGNO)'.
! -- Macro: DWARF_ALT_FRAME_RETURN_COLUMN
A C expression whose value is an integer giving a DWARF 2 column
number that may be used as an alternate return column. This should
be defined only if `DWARF_FRAME_RETURN_COLUMN' is set to a general
register, but an alternate column needs to be used for signal
frames.
! -- Macro: DWARF_ZERO_REG
A C expression whose value is an integer giving a DWARF 2 register
number that is considered to always have the value zero. This
should only be defined if the target has an architected zero
*************** Basic Stack Layout
*** 15968,15974 ****
register number to terminate the stack backtrace. New ports
should avoid this.
! - Macro: INCOMING_FRAME_SP_OFFSET
A C expression whose value is an integer giving the offset, in
bytes, from the value of the stack pointer register to the top of
the stack frame at the beginning of any function, before the
--- 15983,15989 ----
register number to terminate the stack backtrace. New ports
should avoid this.
! -- Macro: INCOMING_FRAME_SP_OFFSET
A C expression whose value is an integer giving the offset, in
bytes, from the value of the stack pointer register to the top of
the stack frame at the beginning of any function, before the
*************** Basic Stack Layout
*** 15979,15985 ****
You only need to define this macro if you want to support call
frame debugging information like that provided by DWARF 2.
! - Macro: ARG_POINTER_CFA_OFFSET (FUNDECL)
A C expression whose value is an integer giving the offset, in
bytes, from the argument pointer to the canonical frame address
(cfa). The final value should coincide with that calculated by
--- 15994,16000 ----
You only need to define this macro if you want to support call
frame debugging information like that provided by DWARF 2.
! -- Macro: ARG_POINTER_CFA_OFFSET (FUNDECL)
A C expression whose value is an integer giving the offset, in
bytes, from the argument pointer to the canonical frame address
(cfa). The final value should coincide with that calculated by
*************** Basic Stack Layout
*** 16000,16009 ****
File: gccint.info, Node: Exception Handling, Next: Stack Checking, Prev: Frame Layout, Up: Stack and Calling
! Exception Handling Support
! --------------------------
! - Macro: EH_RETURN_DATA_REGNO (N)
A C expression whose value is the Nth register number used for
data by exception handlers, or `INVALID_REGNUM' if fewer than N
registers are usable.
--- 16015,16024 ----
File: gccint.info, Node: Exception Handling, Next: Stack Checking, Prev: Frame Layout, Up: Stack and Calling
! 11.10.2 Exception Handling Support
! ----------------------------------
! -- Macro: EH_RETURN_DATA_REGNO (N)
A C expression whose value is the Nth register number used for
data by exception handlers, or `INVALID_REGNUM' if fewer than N
registers are usable.
*************** Exception Handling Support
*** 16018,16024 ****
You must define this macro if you want to support call frame
exception handling like that provided by DWARF 2.
! - Macro: EH_RETURN_STACKADJ_RTX
A C expression whose value is RTL representing a location in which
to store a stack adjustment to be applied before function return.
This is used to unwind the stack to an exception handler's call
--- 16033,16039 ----
You must define this macro if you want to support call frame
exception handling like that provided by DWARF 2.
! -- Macro: EH_RETURN_STACKADJ_RTX
A C expression whose value is RTL representing a location in which
to store a stack adjustment to be applied before function return.
This is used to unwind the stack to an exception handler's call
*************** Exception Handling Support
*** 16035,16041 ****
this macro if you want to support call frame exception handling
like that provided by DWARF 2.
! - Macro: EH_RETURN_HANDLER_RTX
A C expression whose value is RTL representing a location in which
to store the address of an exception handler to which we should
return. It will not be assigned on code paths that return
--- 16050,16056 ----
this macro if you want to support call frame exception handling
like that provided by DWARF 2.
! -- Macro: EH_RETURN_HANDLER_RTX
A C expression whose value is RTL representing a location in which
to store the address of an exception handler to which we should
return. It will not be assigned on code paths that return
*************** Exception Handling Support
*** 16056,16069 ****
If you want to support call frame exception handling, you must
define either this macro or the `eh_return' instruction pattern.
! - Macro: RETURN_ADDR_OFFSET
If defined, an integer-valued C expression for which rtl will be
generated to add it to the exception handler address before it is
searched in the exception handling tables, and to subtract it
again from the address before using it to return to the exception
handler.
! - Macro: ASM_PREFERRED_EH_DATA_FORMAT (CODE, GLOBAL)
This macro chooses the encoding of pointers embedded in the
exception handling sections. If at all possible, this should be
defined such that the exception handling section will not require
--- 16071,16084 ----
If you want to support call frame exception handling, you must
define either this macro or the `eh_return' instruction pattern.
! -- Macro: RETURN_ADDR_OFFSET
If defined, an integer-valued C expression for which rtl will be
generated to add it to the exception handler address before it is
searched in the exception handling tables, and to subtract it
again from the address before using it to return to the exception
handler.
! -- Macro: ASM_PREFERRED_EH_DATA_FORMAT (CODE, GLOBAL)
This macro chooses the encoding of pointers embedded in the
exception handling sections. If at all possible, this should be
defined such that the exception handling section will not require
*************** Exception Handling Support
*** 16077,16083 ****
If this macro is not defined, pointers will not be encoded but
represented directly.
! - Macro: ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (FILE, ENCODING, SIZE,
ADDR, DONE)
This macro allows the target to emit whatever special magic is
required to represent the encoding chosen by
--- 16092,16098 ----
If this macro is not defined, pointers will not be encoded but
represented directly.
! -- Macro: ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (FILE, ENCODING, SIZE,
ADDR, DONE)
This macro allows the target to emit whatever special magic is
required to represent the encoding chosen by
*************** Exception Handling Support
*** 16090,16096 ****
bytes that the format occupies, ADDR is the `SYMBOL_REF' to be
emitted.
! - Macro: MD_FALLBACK_FRAME_STATE_FOR (CONTEXT, FS, SUCCESS)
This macro allows the target to add cpu and operating system
specific code to the call-frame unwinder for use when there is no
unwind data available. The most common reason to implement this
--- 16105,16111 ----
bytes that the format occupies, ADDR is the `SYMBOL_REF' to be
emitted.
! -- Macro: MD_FALLBACK_FRAME_STATE_FOR (CONTEXT, FS, SUCCESS)
This macro allows the target to add cpu and operating system
specific code to the call-frame unwinder for use when there is no
unwind data available. The most common reason to implement this
*************** Exception Handling Support
*** 16108,16114 ****
`MAKE_THROW_FRAME', defined in `libjava/include/*-signal.h'
headers.
! - Macro: MD_HANDLE_UNWABI (CONTEXT, FS)
This macro allows the target to add operating system specific code
to the call-frame unwinder to handle the IA-64 `.unwabi' unwinding
directive, usually used for signal or interrupt frames.
--- 16123,16129 ----
`MAKE_THROW_FRAME', defined in `libjava/include/*-signal.h'
headers.
! -- Macro: MD_HANDLE_UNWABI (CONTEXT, FS)
This macro allows the target to add operating system specific code
to the call-frame unwinder to handle the IA-64 `.unwabi' unwinding
directive, usually used for signal or interrupt frames.
*************** Exception Handling Support
*** 16122,16132 ****
File: gccint.info, Node: Stack Checking, Next: Frame Registers, Prev: Exception Handling, Up: Stack and Calling
! Specifying How Stack Checking is Done
! -------------------------------------
! GCC will check that stack references are within the boundaries of
! the stack, if the `-fstack-check' is specified, in one of three ways:
1. If the value of the `STACK_CHECK_BUILTIN' macro is nonzero, GCC
will assume that you have arranged for stack checking to be done at
--- 16137,16147 ----
File: gccint.info, Node: Stack Checking, Next: Frame Registers, Prev: Exception Handling, Up: Stack and Calling
! 11.10.3 Specifying How Stack Checking is Done
! ---------------------------------------------
! GCC will check that stack references are within the boundaries of the
! stack, if the `-fstack-check' is specified, in one of three ways:
1. If the value of the `STACK_CHECK_BUILTIN' macro is nonzero, GCC
will assume that you have arranged for stack checking to be done at
*************** the stack, if the `-fstack-check' is spe
*** 16147,16153 ****
Normally, you will use the default values of these macros, so GCC
will use the third approach.
! - Macro: STACK_CHECK_BUILTIN
A nonzero value if stack checking is done by the configuration
files in a machine-dependent manner. You should define this macro
if stack checking is require by the ABI of your machine or if you
--- 16162,16168 ----
Normally, you will use the default values of these macros, so GCC
will use the third approach.
! -- Macro: STACK_CHECK_BUILTIN
A nonzero value if stack checking is done by the configuration
files in a machine-dependent manner. You should define this macro
if stack checking is require by the ABI of your machine or if you
*************** will use the third approach.
*** 16155,16179 ****
than GCC's portable approach. The default value of this macro is
zero.
! - Macro: STACK_CHECK_PROBE_INTERVAL
An integer representing the interval at which GCC must generate
stack probe instructions. You will normally define this macro to
be no larger than the size of the "guard pages" at the end of a
stack area. The default value of 4096 is suitable for most
systems.
! - Macro: STACK_CHECK_PROBE_LOAD
A integer which is nonzero if GCC should perform the stack probe
as a load instruction and zero if GCC should use a store
instruction. The default is zero, which is the most efficient
choice on most systems.
! - Macro: STACK_CHECK_PROTECT
The number of bytes of stack needed to recover from a stack
overflow, for languages where such a recovery is supported. The
default value of 75 words should be adequate for most machines.
! - Macro: STACK_CHECK_MAX_FRAME_SIZE
The maximum size of a stack frame, in bytes. GCC will generate
probe instructions in non-leaf functions to ensure at least this
many bytes of stack are available. If a stack frame is larger
--- 16170,16194 ----
than GCC's portable approach. The default value of this macro is
zero.
! -- Macro: STACK_CHECK_PROBE_INTERVAL
An integer representing the interval at which GCC must generate
stack probe instructions. You will normally define this macro to
be no larger than the size of the "guard pages" at the end of a
stack area. The default value of 4096 is suitable for most
systems.
! -- Macro: STACK_CHECK_PROBE_LOAD
A integer which is nonzero if GCC should perform the stack probe
as a load instruction and zero if GCC should use a store
instruction. The default is zero, which is the most efficient
choice on most systems.
! -- Macro: STACK_CHECK_PROTECT
The number of bytes of stack needed to recover from a stack
overflow, for languages where such a recovery is supported. The
default value of 75 words should be adequate for most machines.
! -- Macro: STACK_CHECK_MAX_FRAME_SIZE
The maximum size of a stack frame, in bytes. GCC will generate
probe instructions in non-leaf functions to ensure at least this
many bytes of stack are available. If a stack frame is larger
*************** will use the third approach.
*** 16182,16195 ****
one instruction on most systems. You should normally not change
the default value of this macro.
! - Macro: STACK_CHECK_FIXED_FRAME_SIZE
GCC uses this value to generate the above warning message. It
represents the amount of fixed frame used by a function, not
including space for any callee-saved registers, temporaries and
user variables. You need only specify an upper bound for this
amount and will normally use the default of four words.
! - Macro: STACK_CHECK_MAX_VAR_SIZE
The maximum size, in bytes, of an object that GCC will place in the
fixed area of the stack frame when the user specifies
`-fstack-check'. GCC computed the default from the values of the
--- 16197,16210 ----
one instruction on most systems. You should normally not change
the default value of this macro.
! -- Macro: STACK_CHECK_FIXED_FRAME_SIZE
GCC uses this value to generate the above warning message. It
represents the amount of fixed frame used by a function, not
including space for any callee-saved registers, temporaries and
user variables. You need only specify an upper bound for this
amount and will normally use the default of four words.
! -- Macro: STACK_CHECK_MAX_VAR_SIZE
The maximum size, in bytes, of an object that GCC will place in the
fixed area of the stack frame when the user specifies
`-fstack-check'. GCC computed the default from the values of the
*************** will use the third approach.
*** 16199,16221 ****
File: gccint.info, Node: Frame Registers, Next: Elimination, Prev: Stack Checking, Up: Stack and Calling
! Registers That Address the Stack Frame
! --------------------------------------
! This discusses registers that address the stack frame.
! - Macro: STACK_POINTER_REGNUM
The register number of the stack pointer register, which must also
be a fixed register according to `FIXED_REGISTERS'. On most
machines, the hardware determines which register this is.
! - Macro: FRAME_POINTER_REGNUM
The register number of the frame pointer register, which is used to
access automatic variables in the stack frame. On some machines,
the hardware determines which register this is. On other
machines, you can choose any register you wish for this purpose.
! - Macro: HARD_FRAME_POINTER_REGNUM
On some machines the offset between the frame pointer and starting
offset of the automatic variables is not known until after register
allocation has been done (for example, because the saved registers
--- 16214,16236 ----
File: gccint.info, Node: Frame Registers, Next: Elimination, Prev: Stack Checking, Up: Stack and Calling
! 11.10.4 Registers That Address the Stack Frame
! ----------------------------------------------
! This discusses registers that address the stack frame.
! -- Macro: STACK_POINTER_REGNUM
The register number of the stack pointer register, which must also
be a fixed register according to `FIXED_REGISTERS'. On most
machines, the hardware determines which register this is.
! -- Macro: FRAME_POINTER_REGNUM
The register number of the frame pointer register, which is used to
access automatic variables in the stack frame. On some machines,
the hardware determines which register this is. On other
machines, you can choose any register you wish for this purpose.
! -- Macro: HARD_FRAME_POINTER_REGNUM
On some machines the offset between the frame pointer and starting
offset of the automatic variables is not known until after register
allocation has been done (for example, because the saved registers
*************** Registers That Address the Stack Frame
*** 16236,16242 ****
Do not define this macro if it would be the same as
`FRAME_POINTER_REGNUM'.
! - Macro: ARG_POINTER_REGNUM
The register number of the arg pointer register, which is used to
access the function's argument list. On some machines, this is
the same as the frame pointer register. On some machines, the
--- 16251,16257 ----
Do not define this macro if it would be the same as
`FRAME_POINTER_REGNUM'.
! -- Macro: ARG_POINTER_REGNUM
The register number of the arg pointer register, which is used to
access the function's argument list. On some machines, this is
the same as the frame pointer register. On some machines, the
*************** Registers That Address the Stack Frame
*** 16246,16252 ****
mark it as a fixed register according to `FIXED_REGISTERS', or
arrange to be able to eliminate it (*note Elimination::).
! - Macro: RETURN_ADDRESS_POINTER_REGNUM
The register number of the return address pointer register, which
is used to access the current function's return address from the
stack. On some machines, the return address is not at a fixed
--- 16261,16267 ----
mark it as a fixed register according to `FIXED_REGISTERS', or
arrange to be able to eliminate it (*note Elimination::).
! -- Macro: RETURN_ADDRESS_POINTER_REGNUM
The register number of the return address pointer register, which
is used to access the current function's return address from the
stack. On some machines, the return address is not at a fixed
*************** Registers That Address the Stack Frame
*** 16258,16265 ****
Do not define this macro unless there is no other way to get the
return address from the stack.
! - Macro: STATIC_CHAIN_REGNUM
! - Macro: STATIC_CHAIN_INCOMING_REGNUM
Register numbers used for passing a function's static chain
pointer. If register windows are used, the register number as
seen by the called function is `STATIC_CHAIN_INCOMING_REGNUM',
--- 16273,16280 ----
Do not define this macro unless there is no other way to get the
return address from the stack.
! -- Macro: STATIC_CHAIN_REGNUM
! -- Macro: STATIC_CHAIN_INCOMING_REGNUM
Register numbers used for passing a function's static chain
pointer. If register windows are used, the register number as
seen by the called function is `STATIC_CHAIN_INCOMING_REGNUM',
*************** Registers That Address the Stack Frame
*** 16272,16279 ****
If the static chain is passed in memory, these macros should not be
defined; instead, the next two macros should be defined.
! - Macro: STATIC_CHAIN
! - Macro: STATIC_CHAIN_INCOMING
If the static chain is passed in memory, these macros provide rtx
giving `mem' expressions that denote where they are stored.
`STATIC_CHAIN' and `STATIC_CHAIN_INCOMING' give the locations as
--- 16287,16294 ----
If the static chain is passed in memory, these macros should not be
defined; instead, the next two macros should be defined.
! -- Macro: STATIC_CHAIN
! -- Macro: STATIC_CHAIN_INCOMING
If the static chain is passed in memory, these macros provide rtx
giving `mem' expressions that denote where they are stored.
`STATIC_CHAIN' and `STATIC_CHAIN_INCOMING' give the locations as
*************** Registers That Address the Stack Frame
*** 16288,16294 ****
If the static chain is passed in a register, the two previous
macros should be defined instead.
! - Macro: DWARF_FRAME_REGISTERS
This macro specifies the maximum number of hard registers that can
be saved in a call frame. This is used to size data structures
used in DWARF2 exception handling.
--- 16303,16309 ----
If the static chain is passed in a register, the two previous
macros should be defined instead.
! -- Macro: DWARF_FRAME_REGISTERS
This macro specifies the maximum number of hard registers that can
be saved in a call frame. This is used to size data structures
used in DWARF2 exception handling.
*************** Registers That Address the Stack Frame
*** 16305,16318 ****
If this macro is not defined, it defaults to
`FIRST_PSEUDO_REGISTER'.
! - Macro: PRE_GCC3_DWARF_FRAME_REGISTERS
This macro is similar to `DWARF_FRAME_REGISTERS', but is provided
for backward compatibility in pre GCC 3.0 compiled code.
If this macro is not defined, it defaults to
`DWARF_FRAME_REGISTERS'.
! - Macro: DWARF_REG_TO_UNWIND_COLUMN (REGNO)
Define this macro if the target's representation for dwarf
registers is different than the internal representation for unwind
column. Given a dwarf register, this macro should return the
--- 16320,16333 ----
If this macro is not defined, it defaults to
`FIRST_PSEUDO_REGISTER'.
! -- Macro: PRE_GCC3_DWARF_FRAME_REGISTERS
This macro is similar to `DWARF_FRAME_REGISTERS', but is provided
for backward compatibility in pre GCC 3.0 compiled code.
If this macro is not defined, it defaults to
`DWARF_FRAME_REGISTERS'.
! -- Macro: DWARF_REG_TO_UNWIND_COLUMN (REGNO)
Define this macro if the target's representation for dwarf
registers is different than the internal representation for unwind
column. Given a dwarf register, this macro should return the
*************** Registers That Address the Stack Frame
*** 16320,16326 ****
See the PowerPC's SPE target for an example.
! - Macro: DWARF_FRAME_REGNUM (REGNO)
Define this macro if the target's representation for dwarf
registers used in .eh_frame or .debug_frame is different from that
used in other debug info sections. Given a GCC hard register
--- 16335,16341 ----
See the PowerPC's SPE target for an example.
! -- Macro: DWARF_FRAME_REGNUM (REGNO)
Define this macro if the target's representation for dwarf
registers used in .eh_frame or .debug_frame is different from that
used in other debug info sections. Given a GCC hard register
*************** Registers That Address the Stack Frame
*** 16328,16334 ****
The default is `DBX_REGISTER_NUMBER (REGNO)'.
! - Macro: DWARF2_FRAME_REG_OUT (REGNO, FOR_EH)
Define this macro to map register numbers held in the call frame
info that GCC has collected using `DWARF_FRAME_REGNUM' to those
that should be output in .debug_frame (`FOR_EH' is zero) and
--- 16343,16349 ----
The default is `DBX_REGISTER_NUMBER (REGNO)'.
! -- Macro: DWARF2_FRAME_REG_OUT (REGNO, FOR_EH)
Define this macro to map register numbers held in the call frame
info that GCC has collected using `DWARF_FRAME_REGNUM' to those
that should be output in .debug_frame (`FOR_EH' is zero) and
*************** Registers That Address the Stack Frame
*** 16338,16349 ****
File: gccint.info, Node: Elimination, Next: Stack Arguments, Prev: Frame Registers, Up: Stack and Calling
! Eliminating Frame Pointer and Arg Pointer
! -----------------------------------------
! This is about eliminating the frame pointer and arg pointer.
! - Macro: FRAME_POINTER_REQUIRED
A C expression which is nonzero if a function must have and use a
frame pointer. This expression is evaluated in the reload pass.
If its value is nonzero the function will have a frame pointer.
--- 16353,16364 ----
File: gccint.info, Node: Elimination, Next: Stack Arguments, Prev: Frame Registers, Up: Stack and Calling
! 11.10.5 Eliminating Frame Pointer and Arg Pointer
! -------------------------------------------------
! This is about eliminating the frame pointer and arg pointer.
! -- Macro: FRAME_POINTER_REQUIRED
A C expression which is nonzero if a function must have and use a
frame pointer. This expression is evaluated in the reload pass.
If its value is nonzero the function will have a frame pointer.
*************** Eliminating Frame Pointer and Arg Pointe
*** 16366,16372 ****
mark it as a fixed register. See `FIXED_REGISTERS' for more
information.
! - Macro: INITIAL_FRAME_POINTER_OFFSET (DEPTH-VAR)
A C statement to store in the variable DEPTH-VAR the difference
between the frame pointer and the stack pointer values immediately
after the function prologue. The value would be computed from
--- 16381,16387 ----
mark it as a fixed register. See `FIXED_REGISTERS' for more
information.
! -- Macro: INITIAL_FRAME_POINTER_OFFSET (DEPTH-VAR)
A C statement to store in the variable DEPTH-VAR the difference
between the frame pointer and the stack pointer values immediately
after the function prologue. The value would be computed from
*************** Eliminating Frame Pointer and Arg Pointe
*** 16378,16384 ****
`FRAME_POINTER_REQUIRED' is defined to always be true; in that
case, you may set DEPTH-VAR to anything.
! - Macro: ELIMINABLE_REGS
If defined, this macro specifies a table of register pairs used to
eliminate unneeded registers that point into the stack frame. If
it is not defined, the only elimination attempted by the compiler
--- 16393,16399 ----
`FRAME_POINTER_REQUIRED' is defined to always be true; in that
case, you may set DEPTH-VAR to anything.
! -- Macro: ELIMINABLE_REGS
If defined, this macro specifies a table of register pairs used to
eliminate unneeded registers that point into the stack frame. If
it is not defined, the only elimination attempted by the compiler
*************** Eliminating Frame Pointer and Arg Pointe
*** 16405,16411 ****
Note that the elimination of the argument pointer with the stack
pointer is specified first since that is the preferred elimination.
! - Macro: CAN_ELIMINATE (FROM-REG, TO-REG)
A C expression that returns nonzero if the compiler is allowed to
try to replace register number FROM-REG with register number
TO-REG. This macro need only be defined if `ELIMINABLE_REGS' is
--- 16420,16426 ----
Note that the elimination of the argument pointer with the stack
pointer is specified first since that is the preferred elimination.
! -- Macro: CAN_ELIMINATE (FROM-REG, TO-REG)
A C expression that returns nonzero if the compiler is allowed to
try to replace register number FROM-REG with register number
TO-REG. This macro need only be defined if `ELIMINABLE_REGS' is
*************** Eliminating Frame Pointer and Arg Pointe
*** 16413,16419 ****
cases preventing register elimination are things that the compiler
already knows about.
! - Macro: INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)
This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
specifies the initial difference between the specified pair of
registers. This macro must be defined if `ELIMINABLE_REGS' is
--- 16428,16434 ----
cases preventing register elimination are things that the compiler
already knows about.
! -- Macro: INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)
This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
specifies the initial difference between the specified pair of
registers. This macro must be defined if `ELIMINABLE_REGS' is
*************** Eliminating Frame Pointer and Arg Pointe
*** 16422,16442 ****
File: gccint.info, Node: Stack Arguments, Next: Register Arguments, Prev: Elimination, Up: Stack and Calling
! Passing Function Arguments on the Stack
! ---------------------------------------
! The macros in this section control how arguments are passed on the
stack. See the following section for other macros that control passing
certain arguments in registers.
! - Target Hook: bool TARGET_PROMOTE_PROTOTYPES (tree FNTYPE)
This target hook returns `true' if an argument declared in a
prototype as an integral type smaller than `int' should actually be
passed as an `int'. In addition to avoiding errors in certain
cases of mismatch, it also makes for better code on certain
machines. The default is to not promote prototypes.
! - Macro: PUSH_ARGS
A C expression. If nonzero, push insns will be used to pass
outgoing arguments. If the target machine does not have a push
instruction, set it to zero. That directs GCC to use an alternate
--- 16437,16457 ----
File: gccint.info, Node: Stack Arguments, Next: Register Arguments, Prev: Elimination, Up: Stack and Calling
! 11.10.6 Passing Function Arguments on the Stack
! -----------------------------------------------
! The macros in this section control how arguments are passed on the
stack. See the following section for other macros that control passing
certain arguments in registers.
! -- Target Hook: bool TARGET_PROMOTE_PROTOTYPES (tree FNTYPE)
This target hook returns `true' if an argument declared in a
prototype as an integral type smaller than `int' should actually be
passed as an `int'. In addition to avoiding errors in certain
cases of mismatch, it also makes for better code on certain
machines. The default is to not promote prototypes.
! -- Macro: PUSH_ARGS
A C expression. If nonzero, push insns will be used to pass
outgoing arguments. If the target machine does not have a push
instruction, set it to zero. That directs GCC to use an alternate
*************** certain arguments in registers.
*** 16444,16456 ****
arguments into it. When `PUSH_ARGS' is nonzero, `PUSH_ROUNDING'
must be defined too.
! - Macro: PUSH_ARGS_REVERSED
A C expression. If nonzero, function arguments will be evaluated
from last to first, rather than from first to last. If this macro
is not defined, it defaults to `PUSH_ARGS' on targets where the
stack and args grow in opposite directions, and 0 otherwise.
! - Macro: PUSH_ROUNDING (NPUSHED)
A C expression that is the number of bytes actually pushed onto the
stack when an instruction attempts to push NPUSHED bytes.
--- 16459,16471 ----
arguments into it. When `PUSH_ARGS' is nonzero, `PUSH_ROUNDING'
must be defined too.
! -- Macro: PUSH_ARGS_REVERSED
A C expression. If nonzero, function arguments will be evaluated
from last to first, rather than from first to last. If this macro
is not defined, it defaults to `PUSH_ARGS' on targets where the
stack and args grow in opposite directions, and 0 otherwise.
! -- Macro: PUSH_ROUNDING (NPUSHED)
A C expression that is the number of bytes actually pushed onto the
stack when an instruction attempts to push NPUSHED bytes.
*************** certain arguments in registers.
*** 16464,16470 ****
#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
! - Macro: ACCUMULATE_OUTGOING_ARGS
A C expression. If nonzero, the maximum amount of space required
for outgoing arguments will be computed and placed into the
variable `current_function_outgoing_args_size'. No space will be
--- 16479,16485 ----
#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
! -- Macro: ACCUMULATE_OUTGOING_ARGS
A C expression. If nonzero, the maximum amount of space required
for outgoing arguments will be computed and placed into the
variable `current_function_outgoing_args_size'. No space will be
*************** certain arguments in registers.
*** 16474,16480 ****
Setting both `PUSH_ARGS' and `ACCUMULATE_OUTGOING_ARGS' is not
proper.
! - Macro: REG_PARM_STACK_SPACE (FNDECL)
Define this macro if functions should assume that stack space has
been allocated for arguments even when their values are passed in
registers.
--- 16489,16495 ----
Setting both `PUSH_ARGS' and `ACCUMULATE_OUTGOING_ARGS' is not
proper.
! -- Macro: REG_PARM_STACK_SPACE (FNDECL)
Define this macro if functions should assume that stack space has
been allocated for arguments even when their values are passed in
registers.
*************** certain arguments in registers.
*** 16488,16495 ****
machine-dependent stack frame: `OUTGOING_REG_PARM_STACK_SPACE' says
which.
! - Macro: MAYBE_REG_PARM_STACK_SPACE
! - Macro: FINAL_REG_PARM_STACK_SPACE (CONST_SIZE, VAR_SIZE)
Define these macros in addition to the one above if functions might
allocate stack space for arguments even when their values are
passed in registers. These should be used when the stack space
--- 16503,16510 ----
machine-dependent stack frame: `OUTGOING_REG_PARM_STACK_SPACE' says
which.
! -- Macro: MAYBE_REG_PARM_STACK_SPACE
! -- Macro: FINAL_REG_PARM_STACK_SPACE (CONST_SIZE, VAR_SIZE)
Define these macros in addition to the one above if functions might
allocate stack space for arguments even when their values are
passed in registers. These should be used when the stack space
*************** certain arguments in registers.
*** 16516,16522 ****
and how much space to reserve, GCC uses these two macros instead of
`REG_PARM_STACK_SPACE'.
! - Macro: OUTGOING_REG_PARM_STACK_SPACE
Define this if it is the responsibility of the caller to allocate
the area reserved for arguments passed in registers.
--- 16531,16537 ----
and how much space to reserve, GCC uses these two macros instead of
`REG_PARM_STACK_SPACE'.
! -- Macro: OUTGOING_REG_PARM_STACK_SPACE
Define this if it is the responsibility of the caller to allocate
the area reserved for arguments passed in registers.
*************** certain arguments in registers.
*** 16524,16530 ****
whether the space for these arguments counts in the value of
`current_function_outgoing_args_size'.
! - Macro: STACK_PARMS_IN_REG_PARM_AREA
Define this macro if `REG_PARM_STACK_SPACE' is defined, but the
stack parameters don't skip the area specified by it.
--- 16539,16545 ----
whether the space for these arguments counts in the value of
`current_function_outgoing_args_size'.
! -- Macro: STACK_PARMS_IN_REG_PARM_AREA
Define this macro if `REG_PARM_STACK_SPACE' is defined, but the
stack parameters don't skip the area specified by it.
*************** certain arguments in registers.
*** 16533,16539 ****
Defining this macro suppresses this behavior and causes the
parameter to be passed on the stack in its natural location.
! - Macro: RETURN_POPS_ARGS (FUNDECL, FUNTYPE, STACK-SIZE)
A C expression that should indicate the number of bytes of its own
arguments that a function pops on returning, or 0 if the function
pops no arguments and the caller must therefore pop them all after
--- 16548,16554 ----
Defining this macro suppresses this behavior and causes the
parameter to be passed on the stack in its natural location.
! -- Macro: RETURN_POPS_ARGS (FUNDECL, FUNTYPE, STACK-SIZE)
A C expression that should indicate the number of bytes of its own
arguments that a function pops on returning, or 0 if the function
pops no arguments and the caller must therefore pop them all after
*************** certain arguments in registers.
*** 16573,16579 ****
convention is in use, FUNTYPE is examined to determine whether a
function takes a fixed number of arguments.
! - Macro: CALL_POPS_ARGS (CUM)
A C expression that should indicate the number of bytes a call
sequence pops off the stack. It is added to the value of
`RETURN_POPS_ARGS' when compiling a function call.
--- 16588,16594 ----
convention is in use, FUNTYPE is examined to determine whether a
function takes a fixed number of arguments.
! -- Macro: CALL_POPS_ARGS (CUM)
A C expression that should indicate the number of bytes a call
sequence pops off the stack. It is added to the value of
`RETURN_POPS_ARGS' when compiling a function call.
*************** certain arguments in registers.
*** 16590,16603 ****
File: gccint.info, Node: Register Arguments, Next: Scalar Return, Prev: Stack Arguments, Up: Stack and Calling
! Passing Arguments in Registers
! ------------------------------
! This section describes the macros which let you control how various
types of arguments are passed in registers or how they are arranged in
the stack.
! - Macro: FUNCTION_ARG (CUM, MODE, TYPE, NAMED)
A C expression that controls whether a function argument is passed
in a register, and which register.
--- 16605,16618 ----
File: gccint.info, Node: Register Arguments, Next: Scalar Return, Prev: Stack Arguments, Up: Stack and Calling
! 11.10.7 Passing Arguments in Registers
! --------------------------------------
! This section describes the macros which let you control how various
types of arguments are passed in registers or how they are arranged in
the stack.
! -- Macro: FUNCTION_ARG (CUM, MODE, TYPE, NAMED)
A C expression that controls whether a function argument is passed
in a register, and which register.
*************** the stack.
*** 16647,16659 ****
defined, the argument will be computed in the stack and then
loaded into a register.
! - Macro: MUST_PASS_IN_STACK (MODE, TYPE)
Define as a C expression that evaluates to nonzero if we do not
know how to pass TYPE solely in registers. The file `expr.h'
defines a definition that is usually appropriate, refer to
`expr.h' for additional documentation.
! - Macro: FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)
Define this macro if the target machine has "register windows", so
that the register in which a function sees an arguments is not
necessarily the same as the one in which the caller passed the
--- 16662,16674 ----
defined, the argument will be computed in the stack and then
loaded into a register.
! -- Macro: MUST_PASS_IN_STACK (MODE, TYPE)
Define as a C expression that evaluates to nonzero if we do not
know how to pass TYPE solely in registers. The file `expr.h'
defines a definition that is usually appropriate, refer to
`expr.h' for additional documentation.
! -- Macro: FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)
Define this macro if the target machine has "register windows", so
that the register in which a function sees an arguments is not
necessarily the same as the one in which the caller passed the
*************** the stack.
*** 16667,16673 ****
If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
both purposes.
! - Macro: FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)
A C expression for the number of words, at the beginning of an
argument, that must be put in registers. The value must be zero
for arguments that are passed entirely in registers or that are
--- 16682,16688 ----
If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
both purposes.
! -- Macro: FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)
A C expression for the number of words, at the beginning of an
argument, that must be put in registers. The value must be zero
for arguments that are passed entirely in registers or that are
*************** the stack.
*** 16686,16692 ****
register to be used by the caller for this argument; likewise
`FUNCTION_INCOMING_ARG', for the called function.
! - Macro: FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)
A C expression that indicates when an argument must be passed by
reference. If nonzero for an argument, a copy of that argument is
made in memory and a pointer to the argument is passed instead of
--- 16701,16707 ----
register to be used by the caller for this argument; likewise
`FUNCTION_INCOMING_ARG', for the called function.
! -- Macro: FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)
A C expression that indicates when an argument must be passed by
reference. If nonzero for an argument, a copy of that argument is
made in memory and a pointer to the argument is passed instead of
*************** the stack.
*** 16699,16705 ****
(CUM, MODE, TYPE, NAMED) \
MUST_PASS_IN_STACK (MODE, TYPE)
! - Macro: FUNCTION_ARG_CALLEE_COPIES (CUM, MODE, TYPE, NAMED)
If defined, a C expression that indicates when it is the called
function's responsibility to make a copy of arguments passed by
invisible reference. Normally, the caller makes a copy and passes
--- 16714,16720 ----
(CUM, MODE, TYPE, NAMED) \
MUST_PASS_IN_STACK (MODE, TYPE)
! -- Macro: FUNCTION_ARG_CALLEE_COPIES (CUM, MODE, TYPE, NAMED)
If defined, a C expression that indicates when it is the called
function's responsibility to make a copy of arguments passed by
invisible reference. Normally, the caller makes a copy and passes
*************** the stack.
*** 16710,16716 ****
be determined that the value won't be modified, it need not make a
copy; otherwise a copy must be made.
! - Macro: CUMULATIVE_ARGS
A C type for declaring a variable that is used as the first
argument of `FUNCTION_ARG' and other related values. For some
target machines, the type `int' suffices and can hold the number
--- 16725,16731 ----
be determined that the value won't be modified, it need not make a
copy; otherwise a copy must be made.
! -- Macro: CUMULATIVE_ARGS
A C type for declaring a variable that is used as the first
argument of `FUNCTION_ARG' and other related values. For some
target machines, the type `int' suffices and can hold the number
*************** the stack.
*** 16723,16729 ****
store anything in `CUMULATIVE_ARGS'; however, the data structure
must exist and should not be empty, so use `int'.
! - Macro: INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME, FNDECL,
N_NAMED_ARGS)
A C statement (sans semicolon) for initializing the variable CUM
for the state at the beginning of the argument list. The variable
--- 16738,16744 ----
store anything in `CUMULATIVE_ARGS'; however, the data structure
must exist and should not be empty, so use `int'.
! -- Macro: INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME, FNDECL,
N_NAMED_ARGS)
A C statement (sans semicolon) for initializing the variable CUM
for the state at the beginning of the argument list. The variable
*************** the stack.
*** 16745,16758 ****
this macro is called, either LIBNAME or FNTYPE is nonzero, but
never both of them at once.
! - Macro: INIT_CUMULATIVE_LIBCALL_ARGS (CUM, MODE, LIBNAME)
Like `INIT_CUMULATIVE_ARGS' but only used for outgoing libcalls,
it gets a `MODE' argument instead of FNTYPE, that would be `NULL'.
INDIRECT would always be zero, too. If this macro is not
defined, `INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 0)' is
used instead.
! - Macro: INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)
Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
finding the arguments for the function being compiled. If this
macro is undefined, `INIT_CUMULATIVE_ARGS' is used instead.
--- 16760,16773 ----
this macro is called, either LIBNAME or FNTYPE is nonzero, but
never both of them at once.
! -- Macro: INIT_CUMULATIVE_LIBCALL_ARGS (CUM, MODE, LIBNAME)
Like `INIT_CUMULATIVE_ARGS' but only used for outgoing libcalls,
it gets a `MODE' argument instead of FNTYPE, that would be `NULL'.
INDIRECT would always be zero, too. If this macro is not
defined, `INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 0)' is
used instead.
! -- Macro: INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)
Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
finding the arguments for the function being compiled. If this
macro is undefined, `INIT_CUMULATIVE_ARGS' is used instead.
*************** the stack.
*** 16761,16767 ****
with special calling conventions are never compiled with GCC. The
argument LIBNAME exists for symmetry with `INIT_CUMULATIVE_ARGS'.
! - Macro: FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)
A C statement (sans semicolon) to update the summarizer variable
CUM to advance past an argument in the argument list. The values
MODE, TYPE and NAMED describe that argument. Once this is done,
--- 16776,16782 ----
with special calling conventions are never compiled with GCC. The
argument LIBNAME exists for symmetry with `INIT_CUMULATIVE_ARGS'.
! -- Macro: FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)
A C statement (sans semicolon) to update the summarizer variable
CUM to advance past an argument in the argument list. The values
MODE, TYPE and NAMED describe that argument. Once this is done,
*************** the stack.
*** 16772,16778 ****
passed on the stack. The compiler knows how to track the amount
of stack space used for arguments without any special help.
! - Macro: FUNCTION_ARG_PADDING (MODE, TYPE)
If defined, a C expression which determines whether, and in which
direction, to pad out an argument with extra space. The value
should be of type `enum direction': either `upward' to pad above
--- 16787,16793 ----
passed on the stack. The compiler knows how to track the amount
of stack space used for arguments without any special help.
! -- Macro: FUNCTION_ARG_PADDING (MODE, TYPE)
If defined, a C expression which determines whether, and in which
direction, to pad out an argument with extra space. The value
should be of type `enum direction': either `upward' to pad above
*************** the stack.
*** 16789,16795 ****
for an argument of constant size shorter than an `int', and upward
otherwise.
! - Macro: PAD_VARARGS_DOWN
If defined, a C expression which determines whether the default
implementation of va_arg will attempt to pad down before reading
the next argument, if that argument is smaller than its aligned
--- 16804,16810 ----
for an argument of constant size shorter than an `int', and upward
otherwise.
! -- Macro: PAD_VARARGS_DOWN
If defined, a C expression which determines whether the default
implementation of va_arg will attempt to pad down before reading
the next argument, if that argument is smaller than its aligned
*************** the stack.
*** 16797,16803 ****
defined, all such arguments are padded down if `BYTES_BIG_ENDIAN'
is true.
! - Macro: BLOCK_REG_PADDING (MODE, TYPE, FIRST)
Specify padding for the last element of a block move between
registers and memory. FIRST is nonzero if this is the only
element. Defining this macro allows better control of register
--- 16812,16818 ----
defined, all such arguments are padded down if `BYTES_BIG_ENDIAN'
is true.
! -- Macro: BLOCK_REG_PADDING (MODE, TYPE, FIRST)
Specify padding for the last element of a block move between
registers and memory. FIRST is nonzero if this is the only
element. Defining this macro allows better control of register
*************** the stack.
*** 16807,16818 ****
"wrong" part of a register; For example, a three byte aggregate
may be passed in the high part of a register if so required.
! - Macro: FUNCTION_ARG_BOUNDARY (MODE, TYPE)
If defined, a C expression that gives the alignment boundary, in
bits, of an argument with the specified mode and type. If it is
not defined, `PARM_BOUNDARY' is used for all arguments.
! - Macro: FUNCTION_ARG_REGNO_P (REGNO)
A C expression that is nonzero if REGNO is the number of a hard
register in which function arguments are sometimes passed. This
does _not_ include implicit arguments such as the static chain and
--- 16822,16833 ----
"wrong" part of a register; For example, a three byte aggregate
may be passed in the high part of a register if so required.
! -- Macro: FUNCTION_ARG_BOUNDARY (MODE, TYPE)
If defined, a C expression that gives the alignment boundary, in
bits, of an argument with the specified mode and type. If it is
not defined, `PARM_BOUNDARY' is used for all arguments.
! -- Macro: FUNCTION_ARG_REGNO_P (REGNO)
A C expression that is nonzero if REGNO is the number of a hard
register in which function arguments are sometimes passed. This
does _not_ include implicit arguments such as the static chain and
*************** the stack.
*** 16820,16826 ****
used for this purpose since all function arguments are pushed on
the stack.
! - Target Hook: bool TARGET_SPLIT_COMPLEX_ARG (tree TYPE)
This hook should return true if parameter of type TYPE are passed
as two scalar parameters. By default, GCC will attempt to pack
complex arguments into the target's word size. Some ABIs require
--- 16835,16841 ----
used for this purpose since all function arguments are pushed on
the stack.
! -- Target Hook: bool TARGET_SPLIT_COMPLEX_ARG (tree TYPE)
This hook should return true if parameter of type TYPE are passed
as two scalar parameters. By default, GCC will attempt to pack
complex arguments into the target's word size. Some ABIs require
*************** the stack.
*** 16835,16847 ****
File: gccint.info, Node: Scalar Return, Next: Aggregate Return, Prev: Register Arguments, Up: Stack and Calling
! How Scalar Function Values Are Returned
! ---------------------------------------
! This section discusses the macros that control returning scalars as
values--values that can fit in registers.
! - Macro: FUNCTION_VALUE (VALTYPE, FUNC)
A C expression to create an RTX representing the place where a
function returns a value of data type VALTYPE. VALTYPE is a tree
node representing a data type. Write `TYPE_MODE (VALTYPE)' to get
--- 16850,16862 ----
File: gccint.info, Node: Scalar Return, Next: Aggregate Return, Prev: Register Arguments, Up: Stack and Calling
! 11.10.8 How Scalar Function Values Are Returned
! -----------------------------------------------
! This section discusses the macros that control returning scalars as
values--values that can fit in registers.
! -- Macro: FUNCTION_VALUE (VALTYPE, FUNC)
A C expression to create an RTX representing the place where a
function returns a value of data type VALTYPE. VALTYPE is a tree
node representing a data type. Write `TYPE_MODE (VALTYPE)' to get
*************** values--values that can fit in registers
*** 16867,16873 ****
types, because these are returned in another way. See
`TARGET_STRUCT_VALUE_RTX' and related macros, below.
! - Macro: FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)
Define this macro if the target machine has "register windows" so
that the register in which a function returns its value is not the
same as the one in which the caller sees the value.
--- 16882,16888 ----
types, because these are returned in another way. See
`TARGET_STRUCT_VALUE_RTX' and related macros, below.
! -- Macro: FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)
Define this macro if the target machine has "register windows" so
that the register in which a function returns its value is not the
same as the one in which the caller sees the value.
*************** values--values that can fit in registers
*** 16884,16890 ****
aggregate data types, because these are returned in another way.
See `TARGET_STRUCT_VALUE_RTX' and related macros, below.
! - Macro: LIBCALL_VALUE (MODE)
A C expression to create an RTX representing the place where a
library function returns a value of mode MODE. If the precise
function being called is known, FUNC is a tree node
--- 16899,16905 ----
aggregate data types, because these are returned in another way.
See `TARGET_STRUCT_VALUE_RTX' and related macros, below.
! -- Macro: LIBCALL_VALUE (MODE)
A C expression to create an RTX representing the place where a
library function returns a value of mode MODE. If the precise
function being called is known, FUNC is a tree node
*************** values--values that can fit in registers
*** 16901,16907 ****
data types, because none of the library functions returns such
types.
! - Macro: FUNCTION_VALUE_REGNO_P (REGNO)
A C expression that is nonzero if REGNO is the number of a hard
register in which the values of called function may come back.
--- 16916,16922 ----
data types, because none of the library functions returns such
types.
! -- Macro: FUNCTION_VALUE_REGNO_P (REGNO)
A C expression that is nonzero if REGNO is the number of a hard
register in which the values of called function may come back.
*************** values--values that can fit in registers
*** 16916,16927 ****
called function use different registers for the return value, this
macro should recognize only the caller's register numbers.
! - Macro: APPLY_RESULT_SIZE
Define this macro if `untyped_call' and `untyped_return' need more
space than is implied by `FUNCTION_VALUE_REGNO_P' for saving and
restoring an arbitrary return value.
! - Target Hook: bool TARGET_RETURN_IN_MSB (tree TYPE)
This hook should return true if values of type TYPE are returned
at the most significant end of a register (in other words, if they
are padded at the least significant end). You can assume that TYPE
--- 16931,16942 ----
called function use different registers for the return value, this
macro should recognize only the caller's register numbers.
! -- Macro: APPLY_RESULT_SIZE
Define this macro if `untyped_call' and `untyped_return' need more
space than is implied by `FUNCTION_VALUE_REGNO_P' for saving and
restoring an arbitrary return value.
! -- Target Hook: bool TARGET_RETURN_IN_MSB (tree TYPE)
This hook should return true if values of type TYPE are returned
at the most significant end of a register (in other words, if they
are padded at the least significant end). You can assume that TYPE
*************** values--values that can fit in registers
*** 16935,16944 ****
File: gccint.info, Node: Aggregate Return, Next: Caller Saves, Prev: Scalar Return, Up: Stack and Calling
! How Large Values Are Returned
! -----------------------------
! When a function value's mode is `BLKmode' (and in some other cases),
the value is not returned according to `FUNCTION_VALUE' (*note Scalar
Return::). Instead, the caller passes the address of a block of memory
in which the value should be stored. This address is called the
--- 16950,16959 ----
File: gccint.info, Node: Aggregate Return, Next: Caller Saves, Prev: Scalar Return, Up: Stack and Calling
! 11.10.9 How Large Values Are Returned
! -------------------------------------
! When a function value's mode is `BLKmode' (and in some other cases),
the value is not returned according to `FUNCTION_VALUE' (*note Scalar
Return::). Instead, the caller passes the address of a block of memory
in which the value should be stored. This address is called the
*************** in which the value should be stored. Th
*** 16947,16953 ****
This section describes how to control returning structure values in
memory.
! - Target Hook: bool TARGET_RETURN_IN_MEMORY (tree TYPE, tree FNTYPE)
This target hook should return a nonzero value to say to return the
function value in memory, just as large structures are always
returned. Here TYPE will be the data type of the value, and FNTYPE
--- 16962,16968 ----
This section describes how to control returning structure values in
memory.
! -- Target Hook: bool TARGET_RETURN_IN_MEMORY (tree TYPE, tree FNTYPE)
This target hook should return a nonzero value to say to return the
function value in memory, just as large structures are always
returned. Here TYPE will be the data type of the value, and FNTYPE
*************** memory.
*** 16965,16971 ****
always be returned in memory. You should instead use
`DEFAULT_PCC_STRUCT_RETURN' to indicate this.
! - Macro: 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
--- 16980,16986 ----
always be returned in memory. You should instead use
`DEFAULT_PCC_STRUCT_RETURN' to indicate this.
! -- Macro: 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
*************** memory.
*** 16975,16981 ****
If not defined, this defaults to the value 1.
! - Target Hook: rtx TARGET_STRUCT_VALUE_RTX (tree FNDECL, int INCOMING)
This target hook should return the location of the structure value
address (normally a `mem' or `reg'), or 0 if the address is passed
as an "invisible" first argument. Note that FNDECL may be `NULL',
--- 16990,16996 ----
If not defined, this defaults to the value 1.
! -- Target Hook: rtx TARGET_STRUCT_VALUE_RTX (tree FNDECL, int INCOMING)
This target hook should return the location of the structure value
address (normally a `mem' or `reg'), or 0 if the address is passed
as an "invisible" first argument. Note that FNDECL may be `NULL',
*************** memory.
*** 16991,16997 ****
If INCOMING is `true' and the address is to be found on the stack,
return a `mem' which refers to the frame pointer.
! - Macro: PCC_STATIC_STRUCT_RETURN
Define this macro if the usual system convention on the target
machine for returning structures and unions is for the called
function to return the address of a static variable containing the
--- 17006,17012 ----
If INCOMING is `true' and the address is to be found on the stack,
return a `mem' which refers to the frame pointer.
! -- Macro: PCC_STATIC_STRUCT_RETURN
Define this macro if the usual system convention on the target
machine for returning structures and unions is for the called
function to return the address of a static variable containing the
*************** memory.
*** 17006,17019 ****
File: gccint.info, Node: Caller Saves, Next: Function Entry, Prev: Aggregate Return, Up: Stack and Calling
! Caller-Saves Register Allocation
! --------------------------------
! If you enable it, GCC can save registers around function calls. This
makes it possible to use call-clobbered registers to hold variables that
must live across calls.
! - Macro: CALLER_SAVE_PROFITABLE (REFS, CALLS)
A C expression to determine whether it is worthwhile to consider
placing a pseudo-register in a call-clobbered hard register and
saving and restoring it around each function call. The expression
--- 17021,17034 ----
File: gccint.info, Node: Caller Saves, Next: Function Entry, Prev: Aggregate Return, Up: Stack and Calling
! 11.10.10 Caller-Saves Register Allocation
! -----------------------------------------
! If you enable it, GCC can save registers around function calls. This
makes it possible to use call-clobbered registers to hold variables that
must live across calls.
! -- Macro: CALLER_SAVE_PROFITABLE (REFS, CALLS)
A C expression to determine whether it is worthwhile to consider
placing a pseudo-register in a call-clobbered hard register and
saving and restoring it around each function call. The expression
*************** must live across calls.
*** 17022,17028 ****
If you don't define this macro, a default is used which is good on
most machines: `4 * CALLS < REFS'.
! - Macro: HARD_REGNO_CALLER_SAVE_MODE (REGNO, NREGS)
A C expression specifying which mode is required for saving NREGS
of a pseudo-register in call-clobbered hard register REGNO. If
REGNO is unsuitable for caller save, `VOIDmode' should be
--- 17037,17043 ----
If you don't define this macro, a default is used which is good on
most machines: `4 * CALLS < REFS'.
! -- Macro: HARD_REGNO_CALLER_SAVE_MODE (REGNO, NREGS)
A C expression specifying which mode is required for saving NREGS
of a pseudo-register in call-clobbered hard register REGNO. If
REGNO is unsuitable for caller save, `VOIDmode' should be
*************** must live across calls.
*** 17032,17044 ****
File: gccint.info, Node: Function Entry, Next: Profiling, Prev: Caller Saves, Up: Stack and Calling
! Function Entry and Exit
! -----------------------
! This section describes the macros that output function entry
("prologue") and exit ("epilogue") code.
! - Target Hook: void TARGET_ASM_FUNCTION_PROLOGUE (FILE *FILE,
HOST_WIDE_INT SIZE)
If defined, a function that outputs the assembler code for entry
to a function. The prologue is responsible for setting up the
--- 17047,17059 ----
File: gccint.info, Node: Function Entry, Next: Profiling, Prev: Caller Saves, Up: Stack and Calling
! 11.10.11 Function Entry and Exit
! --------------------------------
! This section describes the macros that output function entry
("prologue") and exit ("epilogue") code.
! -- Target Hook: void TARGET_ASM_FUNCTION_PROLOGUE (FILE *FILE,
HOST_WIDE_INT SIZE)
If defined, a function that outputs the assembler code for entry
to a function. The prologue is responsible for setting up the
*************** Function Entry and Exit
*** 17083,17101 ****
stack layout used by GCC need agree with that used by other
compilers for a machine.
! - Target Hook: void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *FILE)
If defined, a function that outputs assembler code at the end of a
prologue. This should be used when the function prologue is being
emitted as RTL, and you have some extra assembler that needs to be
emitted. *Note prologue instruction pattern::.
! - Target Hook: void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *FILE)
If defined, a function that outputs assembler code at the start of
an epilogue. This should be used when the function epilogue is
being emitted as RTL, and you have some extra assembler that needs
to be emitted. *Note epilogue instruction pattern::.
! - Target Hook: void TARGET_ASM_FUNCTION_EPILOGUE (FILE *FILE,
HOST_WIDE_INT SIZE)
If defined, a function that outputs the assembler code for exit
from a function. The epilogue is responsible for restoring the
--- 17098,17116 ----
stack layout used by GCC need agree with that used by other
compilers for a machine.
! -- Target Hook: void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *FILE)
If defined, a function that outputs assembler code at the end of a
prologue. This should be used when the function prologue is being
emitted as RTL, and you have some extra assembler that needs to be
emitted. *Note prologue instruction pattern::.
! -- Target Hook: void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *FILE)
If defined, a function that outputs assembler code at the start of
an epilogue. This should be used when the function epilogue is
being emitted as RTL, and you have some extra assembler that needs
to be emitted. *Note epilogue instruction pattern::.
! -- Target Hook: void TARGET_ASM_FUNCTION_EPILOGUE (FILE *FILE,
HOST_WIDE_INT SIZE)
If defined, a function that outputs the assembler code for exit
from a function. The epilogue is responsible for restoring the
*************** Function Entry and Exit
*** 17173,17179 ****
treat leaf functions specially. The C variable
`current_function_is_leaf' is nonzero for such a function.
! - Macro: EXIT_IGNORE_STACK
Define this macro as a C expression that is nonzero if the return
instruction or the function epilogue ignores the value of the stack
pointer; in other words, if it is safe to delete an instruction to
--- 17188,17194 ----
treat leaf functions specially. The C variable
`current_function_is_leaf' is nonzero for such a function.
! -- Macro: EXIT_IGNORE_STACK
Define this macro as a C expression that is nonzero if the return
instruction or the function epilogue ignores the value of the stack
pointer; in other words, if it is safe to delete an instruction to
*************** treat leaf functions specially. The C v
*** 17185,17208 ****
final stack adjustment in a function that has no frame pointer,
and the compiler knows this regardless of `EXIT_IGNORE_STACK'.
! - Macro: EPILOGUE_USES (REGNO)
Define this macro as a C expression that is nonzero for registers
that are used by the epilogue or the `return' pattern. The stack
and frame pointer registers are already be assumed to be used as
needed.
! - Macro: EH_USES (REGNO)
Define this macro as a C expression that is nonzero for registers
that are used by the exception handling mechanism, and so should
be considered live on entry to an exception edge.
! - Macro: DELAY_SLOTS_FOR_EPILOGUE
Define this macro if the function epilogue contains delay slots to
which instructions from the rest of the function can be "moved".
The definition should be a C expression whose value is an integer
representing the number of delay slots there.
! - Macro: ELIGIBLE_FOR_EPILOGUE_DELAY (INSN, N)
A C expression that returns 1 if INSN can be placed in delay slot
number N of the epilogue.
--- 17200,17223 ----
final stack adjustment in a function that has no frame pointer,
and the compiler knows this regardless of `EXIT_IGNORE_STACK'.
! -- Macro: EPILOGUE_USES (REGNO)
Define this macro as a C expression that is nonzero for registers
that are used by the epilogue or the `return' pattern. The stack
and frame pointer registers are already be assumed to be used as
needed.
! -- Macro: EH_USES (REGNO)
Define this macro as a C expression that is nonzero for registers
that are used by the exception handling mechanism, and so should
be considered live on entry to an exception edge.
! -- Macro: DELAY_SLOTS_FOR_EPILOGUE
Define this macro if the function epilogue contains delay slots to
which instructions from the rest of the function can be "moved".
The definition should be a C expression whose value is an integer
representing the number of delay slots there.
! -- Macro: ELIGIBLE_FOR_EPILOGUE_DELAY (INSN, N)
A C expression that returns 1 if INSN can be placed in delay slot
number N of the epilogue.
*************** treat leaf functions specially. The C v
*** 17226,17232 ****
You need not define this macro if you did not define
`DELAY_SLOTS_FOR_EPILOGUE'.
! - Target Hook: void TARGET_ASM_OUTPUT_MI_THUNK (FILE *FILE, tree
THUNK_FNDECL, HOST_WIDE_INT DELTA, HOST_WIDE_INT
VCALL_OFFSET, tree FUNCTION)
A function that outputs the assembler code for a thunk function,
--- 17241,17247 ----
You need not define this macro if you did not define
`DELAY_SLOTS_FOR_EPILOGUE'.
! -- Target Hook: void TARGET_ASM_OUTPUT_MI_THUNK (FILE *FILE, tree
THUNK_FNDECL, HOST_WIDE_INT DELTA, HOST_WIDE_INT
VCALL_OFFSET, tree FUNCTION)
A function that outputs the assembler code for a thunk function,
*************** treat leaf functions specially. The C v
*** 17268,17276 ****
that calls FUNCTION instead of jumping to it. The generic
approach does not support varargs.
! - Target Hook: bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (tree THUNK_FNDECL,
! HOST_WIDE_INT DELTA, HOST_WIDE_INT VCALL_OFFSET, tree
! FUNCTION)
A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would
be able to output the assembler code for the thunk function
specified by the arguments it is passed, and false otherwise. In
--- 17283,17291 ----
that calls FUNCTION instead of jumping to it. The generic
approach does not support varargs.
! -- Target Hook: bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (tree
! THUNK_FNDECL, HOST_WIDE_INT DELTA, HOST_WIDE_INT
! VCALL_OFFSET, tree FUNCTION)
A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would
be able to output the assembler code for the thunk function
specified by the arguments it is passed, and false otherwise. In
*************** treat leaf functions specially. The C v
*** 17280,17291 ****
File: gccint.info, Node: Profiling, Next: Tail Calls, Prev: Function Entry, Up: Stack and Calling
! Generating Code for Profiling
! -----------------------------
! These macros will help you generate code for profiling.
! - Macro: FUNCTION_PROFILER (FILE, LABELNO)
A C statement or compound statement to output to FILE some
assembler code to call the profiling subroutine `mcount'.
--- 17295,17306 ----
File: gccint.info, Node: Profiling, Next: Tail Calls, Prev: Function Entry, Up: Stack and Calling
! 11.10.12 Generating Code for Profiling
! --------------------------------------
! These macros will help you generate code for profiling.
! -- Macro: FUNCTION_PROFILER (FILE, LABELNO)
A C statement or compound statement to output to FILE some
assembler code to call the profiling subroutine `mcount'.
*************** Generating Code for Profiling
*** 17299,17317 ****
variable is `LP' followed by the number LABELNO, so you would
generate the name using `LP%d' in a `fprintf'.
! - Macro: PROFILE_HOOK
A C statement or compound statement to output to FILE some assembly
code to call the profiling subroutine `mcount' even the target does
not support profiling.
! - Macro: NO_PROFILE_COUNTERS
Define this macro if the `mcount' subroutine on your system does
not need a counter variable allocated for each function. This is
true for almost all modern implementations. If you define this
macro, you must not use the LABELNO argument to
`FUNCTION_PROFILER'.
! - Macro: PROFILE_BEFORE_PROLOGUE
Define this macro if the code for function profiling should come
before the function prologue. Normally, the profiling code comes
after.
--- 17314,17332 ----
variable is `LP' followed by the number LABELNO, so you would
generate the name using `LP%d' in a `fprintf'.
! -- Macro: PROFILE_HOOK
A C statement or compound statement to output to FILE some assembly
code to call the profiling subroutine `mcount' even the target does
not support profiling.
! -- Macro: NO_PROFILE_COUNTERS
Define this macro if the `mcount' subroutine on your system does
not need a counter variable allocated for each function. This is
true for almost all modern implementations. If you define this
macro, you must not use the LABELNO argument to
`FUNCTION_PROFILER'.
! -- Macro: PROFILE_BEFORE_PROLOGUE
Define this macro if the code for function profiling should come
before the function prologue. Normally, the profiling code comes
after.
*************** Generating Code for Profiling
*** 17319,17328 ****
File: gccint.info, Node: Tail Calls, Prev: Profiling, Up: Stack and Calling
! Permitting tail calls
! ---------------------
! - Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree DECL, tree
EXP)
True if it is ok to do sibling call optimization for the specified
call expression EXP. DECL will be the called function, or `NULL'
--- 17334,17343 ----
File: gccint.info, Node: Tail Calls, Prev: Profiling, Up: Stack and Calling
! 11.10.13 Permitting tail calls
! ------------------------------
! -- Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree DECL, tree
EXP)
True if it is ok to do sibling call optimization for the specified
call expression EXP. DECL will be the called function, or `NULL'
*************** Permitting tail calls
*** 17339,17349 ****
File: gccint.info, Node: Varargs, Next: Trampolines, Prev: Stack and Calling, Up: Target Macros
! Implementing the Varargs Macros
! ===============================
! GCC comes with an implementation of `' and `'
! that work without change on machines that pass arguments on the stack.
Other machines require their own implementations of varargs, and the
two machine independent header files must have conditionals to include
it.
--- 17354,17364 ----
File: gccint.info, Node: Varargs, Next: Trampolines, Prev: Stack and Calling, Up: Target Macros
! 11.11 Implementing the Varargs Macros
! =====================================
! GCC comes with an implementation of `' and `' that
! work without change on machines that pass arguments on the stack.
Other machines require their own implementations of varargs, and the
two machine independent header files must have conditionals to include
it.
*************** named argument of the function here.
*** 17359,17365 ****
the end of the named arguments is with the built-in functions described
below.
! - Macro: __builtin_saveregs ()
Use this built-in function to save the argument registers in
memory so that the varargs mechanism can access them. Both ISO
and traditional versions of `va_start' must use
--- 17374,17380 ----
the end of the named arguments is with the built-in functions described
below.
! -- Macro: __builtin_saveregs ()
Use this built-in function to save the argument registers in
memory so that the varargs mechanism can access them. Both ISO
and traditional versions of `va_start' must use
*************** below.
*** 17377,17383 ****
This is because the registers must be saved before the function
starts to use them for its own purposes.
! - Macro: __builtin_args_info (CATEGORY)
Use this built-in function to find the first anonymous arguments in
registers.
--- 17392,17398 ----
This is because the registers must be saved before the function
starts to use them for its own purposes.
! -- Macro: __builtin_args_info (CATEGORY)
Use this built-in function to find the first anonymous arguments in
registers.
*************** below.
*** 17401,17407 ****
have to update the values, and there is no way to alter the values
accessed by `__builtin_args_info'.
! - Macro: __builtin_next_arg (LASTARG)
This is the equivalent of `__builtin_args_info', for stack
arguments. It returns the address of the first anonymous stack
argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns
--- 17416,17422 ----
have to update the values, and there is no way to alter the values
accessed by `__builtin_args_info'.
! -- Macro: __builtin_next_arg (LASTARG)
This is the equivalent of `__builtin_args_info', for stack
arguments. It returns the address of the first anonymous stack
argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns
*************** below.
*** 17411,17417 ****
verify that the second parameter LASTARG is the last named argument
of the current function.
! - Macro: __builtin_classify_type (OBJECT)
Since each machine has its own conventions for which data types are
passed in which kind of register, your implementation of `va_arg'
has to embody these conventions. The easiest way to categorize the
--- 17426,17432 ----
verify that the second parameter LASTARG is the last named argument
of the current function.
! -- Macro: __builtin_classify_type (OBJECT)
Since each machine has its own conventions for which data types are
passed in which kind of register, your implementation of `va_arg'
has to embody these conventions. The easiest way to categorize the
*************** below.
*** 17427,17440 ****
These machine description macros help implement varargs:
! - Target Hook: rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
If defined, this hook produces the machine-specific code for a
call to `__builtin_saveregs'. This code will be moved to the very
beginning of the function, before any parameter access are made.
The return value of this function should be an RTX that contains
the value to use as the return of `__builtin_saveregs'.
! - Target Hook: void TARGET_SETUP_INCOMING_VARARGS (CUMULATIVE_ARGS
*ARGS_SO_FAR, enum machine_mode MODE, tree TYPE, int
*PRETEND_ARGS_SIZE, int SECOND_TIME)
This target hook offers an alternative to using
--- 17442,17455 ----
These machine description macros help implement varargs:
! -- Target Hook: rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
If defined, this hook produces the machine-specific code for a
call to `__builtin_saveregs'. This code will be moved to the very
beginning of the function, before any parameter access are made.
The return value of this function should be an RTX that contains
the value to use as the return of `__builtin_saveregs'.
! -- Target Hook: void TARGET_SETUP_INCOMING_VARARGS (CUMULATIVE_ARGS
*ARGS_SO_FAR, enum machine_mode MODE, tree TYPE, int
*PRETEND_ARGS_SIZE, int SECOND_TIME)
This target hook offers an alternative to using
*************** below.
*** 17471,17477 ****
`TARGET_SETUP_INCOMING_VARARGS' should not generate any
instructions in this case.
! - Target Hook: bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS *CA)
Define this hook to return `true' if the location where a function
argument is passed depends on whether or not it is a named
argument.
--- 17486,17493 ----
`TARGET_SETUP_INCOMING_VARARGS' should not generate any
instructions in this case.
! -- Target Hook: bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS
! *CA)
Define this hook to return `true' if the location where a function
argument is passed depends on whether or not it is a named
argument.
*************** below.
*** 17486,17492 ****
You need not define this hook if it always returns zero.
! - Target Hook: bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
If you need to conditionally change ABIs so that one works with
`TARGET_SETUP_INCOMING_VARARGS', but the other works like neither
`TARGET_SETUP_INCOMING_VARARGS' nor
--- 17502,17508 ----
You need not define this hook if it always returns zero.
! -- Target Hook: bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
If you need to conditionally change ABIs so that one works with
`TARGET_SETUP_INCOMING_VARARGS', but the other works like neither
`TARGET_SETUP_INCOMING_VARARGS' nor
*************** below.
*** 17497,17506 ****
File: gccint.info, Node: Trampolines, Next: Library Calls, Prev: Varargs, Up: Target Macros
! Trampolines for Nested Functions
! ================================
! A "trampoline" is a small piece of code that is created at run time
when the address of a nested function is taken. It normally resides on
the stack, in the stack frame of the containing function. These macros
tell GCC how to generate code to allocate and initialize a trampoline.
--- 17513,17522 ----
File: gccint.info, Node: Trampolines, Next: Library Calls, Prev: Varargs, Up: Target Macros
! 11.12 Trampolines for Nested Functions
! ======================================
! A "trampoline" is a small piece of code that is created at run time
when the address of a nested function is taken. It normally resides on
the stack, in the stack frame of the containing function. These macros
tell GCC how to generate code to allocate and initialize a trampoline.
*************** proper offset from the start of the tram
*** 17522,17528 ****
may be necessary to take out pieces of the address and store them
separately.
! - Macro: TRAMPOLINE_TEMPLATE (FILE)
A C statement to output, on the stream FILE, assembler code for a
block of data that contains the constant parts of a trampoline.
This code should not include a label--the label is taken care of
--- 17538,17544 ----
may be necessary to take out pieces of the address and store them
separately.
! -- Macro: TRAMPOLINE_TEMPLATE (FILE)
A C statement to output, on the stream FILE, assembler code for a
block of data that contains the constant parts of a trampoline.
This code should not include a label--the label is taken care of
*************** separately.
*** 17533,17562 ****
block move code to copy the trampoline into place would be larger
than the code to generate it on the spot.
! - Macro: TRAMPOLINE_SECTION
The name of a subroutine to switch to the section in which the
trampoline template is to be placed (*note Sections::). The
default is a value of `readonly_data_section', which places the
trampoline in the section containing read-only data.
! - Macro: TRAMPOLINE_SIZE
A C expression for the size in bytes of the trampoline, as an
integer.
! - Macro: TRAMPOLINE_ALIGNMENT
Alignment required for trampolines, in bits.
If you don't define this macro, the value of `BIGGEST_ALIGNMENT'
is used for aligning trampolines.
! - Macro: INITIALIZE_TRAMPOLINE (ADDR, FNADDR, STATIC_CHAIN)
A C statement to initialize the variable parts of a trampoline.
ADDR is an RTX for the address of the trampoline; FNADDR is an RTX
for the address of the nested function; STATIC_CHAIN is an RTX for
the static chain value that should be passed to the function when
it is called.
! - Macro: TRAMPOLINE_ADJUST_ADDRESS (ADDR)
A C statement that should perform any machine-specific adjustment
in the address of the trampoline. Its argument contains the
address that was passed to `INITIALIZE_TRAMPOLINE'. In case the
--- 17549,17578 ----
block move code to copy the trampoline into place would be larger
than the code to generate it on the spot.
! -- Macro: TRAMPOLINE_SECTION
The name of a subroutine to switch to the section in which the
trampoline template is to be placed (*note Sections::). The
default is a value of `readonly_data_section', which places the
trampoline in the section containing read-only data.
! -- Macro: TRAMPOLINE_SIZE
A C expression for the size in bytes of the trampoline, as an
integer.
! -- Macro: TRAMPOLINE_ALIGNMENT
Alignment required for trampolines, in bits.
If you don't define this macro, the value of `BIGGEST_ALIGNMENT'
is used for aligning trampolines.
! -- Macro: INITIALIZE_TRAMPOLINE (ADDR, FNADDR, STATIC_CHAIN)
A C statement to initialize the variable parts of a trampoline.
ADDR is an RTX for the address of the trampoline; FNADDR is an RTX
for the address of the nested function; STATIC_CHAIN is an RTX for
the static chain value that should be passed to the function when
it is called.
! -- Macro: TRAMPOLINE_ADJUST_ADDRESS (ADDR)
A C statement that should perform any machine-specific adjustment
in the address of the trampoline. Its argument contains the
address that was passed to `INITIALIZE_TRAMPOLINE'. In case the
*************** latter makes initialization faster.
*** 17594,17600 ****
To clear the instruction cache when a trampoline is initialized,
define the following macro.
! - Macro: CLEAR_INSN_CACHE (BEG, END)
If defined, expands to a C expression clearing the _instruction
cache_ in the specified interval. The definition of this macro
would typically be a series of `asm' statements. Both BEG and END
--- 17610,17616 ----
To clear the instruction cache when a trampoline is initialized,
define the following macro.
! -- Macro: CLEAR_INSN_CACHE (BEG, END)
If defined, expands to a C expression clearing the _instruction
cache_ in the specified interval. The definition of this macro
would typically be a series of `asm' statements. Both BEG and END
*************** define the following macro.
*** 17604,17610 ****
before calling the trampoline. To implement this requirement, define
the following macro.
! - Macro: ENABLE_EXECUTE_STACK
Define this macro if certain operations must be performed before
executing code located on the stack. The macro should expand to a
series of C file-scope constructs (e.g. functions) and provide a
--- 17620,17626 ----
before calling the trampoline. To implement this requirement, define
the following macro.
! -- Macro: ENABLE_EXECUTE_STACK
Define this macro if certain operations must be performed before
executing code located on the stack. The macro should expand to a
series of C file-scope constructs (e.g. functions) and provide a
*************** an entire cache line with identical inst
*** 17618,17624 ****
the beginning of the trampoline code is always aligned at the same
point in its cache line. Look in `m68k.h' as a guide.
! - Macro: TRANSFER_FROM_TRAMPOLINE
Define this macro if trampolines need a special subroutine to do
their work. The macro should expand to a series of `asm'
statements which will be compiled with GCC. They go in a library
--- 17634,17640 ----
the beginning of the trampoline code is always aligned at the same
point in its cache line. Look in `m68k.h' as a guide.
! -- Macro: TRANSFER_FROM_TRAMPOLINE
Define this macro if trampolines need a special subroutine to do
their work. The macro should expand to a series of `asm'
statements which will be compiled with GCC. They go in a library
*************** point in its cache line. Look in `m68k.
*** 17634,17652 ****
File: gccint.info, Node: Library Calls, Next: Addressing Modes, Prev: Trampolines, Up: Target Macros
! Implicit Calls to Library Routines
! ==================================
! Here is an explanation of implicit calls to library routines.
! - Macro: DECLARE_LIBRARY_RENAMES
This macro, if defined, should expand to a piece of C code that
will get expanded when compiling functions for libgcc.a. It can
be used to provide alternate names for GCC's internal library
functions if there are ABI-mandated names that the compiler should
provide.
! - Target Hook: void TARGET_INIT_LIBFUNCS (void)
This hook should declare additional library routines or rename
existing ones, using the functions `set_optab_libfunc' and
`init_one_libfunc' defined in `optabs.c'. `init_optabs' calls
--- 17650,17668 ----
File: gccint.info, Node: Library Calls, Next: Addressing Modes, Prev: Trampolines, Up: Target Macros
! 11.13 Implicit Calls to Library Routines
! ========================================
! Here is an explanation of implicit calls to library routines.
! -- Macro: DECLARE_LIBRARY_RENAMES
This macro, if defined, should expand to a piece of C code that
will get expanded when compiling functions for libgcc.a. It can
be used to provide alternate names for GCC's internal library
functions if there are ABI-mandated names that the compiler should
provide.
! -- Target Hook: void TARGET_INIT_LIBFUNCS (void)
This hook should declare additional library routines or rename
existing ones, using the functions `set_optab_libfunc' and
`init_one_libfunc' defined in `optabs.c'. `init_optabs' calls
*************** Implicit Calls to Library Routines
*** 17655,17661 ****
The default is to do nothing. Most ports don't need to define
this hook.
! - Macro: TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL (MODE, COMPARISON)
This macro should return `true' if the library routine that
implements the floating point comparison operator COMPARISON in
mode MODE will return a boolean, and FALSE if it will return a
--- 17671,17677 ----
The default is to do nothing. Most ports don't need to define
this hook.
! -- Macro: TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL (MODE, COMPARISON)
This macro should return `true' if the library routine that
implements the floating point comparison operator COMPARISON in
mode MODE will return a boolean, and FALSE if it will return a
*************** Implicit Calls to Library Routines
*** 17665,17671 ****
comparison operators, so the default returns false always. Most
ports don't need to define this macro.
! - Macro: US_SOFTWARE_GOFAST
Define this macro if your system C library uses the US Software
GOFAST library to provide floating point emulation.
--- 17681,17687 ----
comparison operators, so the default returns false always. Most
ports don't need to define this macro.
! -- Macro: US_SOFTWARE_GOFAST
Define this macro if your system C library uses the US Software
GOFAST library to provide floating point emulation.
*************** Implicit Calls to Library Routines
*** 17679,17685 ****
`TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL' target hook must return
false for `SFmode' and `DFmode' comparisons.
! - Macro: TARGET_EDOM
The value of `EDOM' on the target machine, as a C integer constant
expression. If you don't define this macro, GCC does not attempt
to deposit the value of `EDOM' into `errno' directly. Look in
--- 17695,17701 ----
`TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL' target hook must return
false for `SFmode' and `DFmode' comparisons.
! -- Macro: TARGET_EDOM
The value of `EDOM' on the target machine, as a C integer constant
expression. If you don't define this macro, GCC does not attempt
to deposit the value of `EDOM' into `errno' directly. Look in
*************** Implicit Calls to Library Routines
*** 17691,17708 ****
`matherr' when there is an error, then you should leave
`TARGET_EDOM' undefined so that `matherr' is used normally.
! - Macro: GEN_ERRNO_RTX
Define this macro as a C expression to create an rtl expression
that refers to the global "variable" `errno'. (On certain systems,
`errno' may not actually be a variable.) If you don't define this
macro, a reasonable default is used.
! - Macro: TARGET_MEM_FUNCTIONS
Define this macro if GCC should generate calls to the ISO C (and
System V) library functions `memcpy', `memmove' and `memset'
rather than the BSD functions `bcopy' and `bzero'.
! - Macro: TARGET_C99_FUNCTIONS
When this macro is nonzero, GCC will implicitly optimize `sin'
calls into `sinf' and similarly for other functions defined by C99
standard. The default is nonzero that should be proper value for
--- 17707,17724 ----
`matherr' when there is an error, then you should leave
`TARGET_EDOM' undefined so that `matherr' is used normally.
! -- Macro: GEN_ERRNO_RTX
Define this macro as a C expression to create an rtl expression
that refers to the global "variable" `errno'. (On certain systems,
`errno' may not actually be a variable.) If you don't define this
macro, a reasonable default is used.
! -- Macro: TARGET_MEM_FUNCTIONS
Define this macro if GCC should generate calls to the ISO C (and
System V) library functions `memcpy', `memmove' and `memset'
rather than the BSD functions `bcopy' and `bzero'.
! -- Macro: TARGET_C99_FUNCTIONS
When this macro is nonzero, GCC will implicitly optimize `sin'
calls into `sinf' and similarly for other functions defined by C99
standard. The default is nonzero that should be proper value for
*************** Implicit Calls to Library Routines
*** 17710,17716 ****
support for these functions in the runtime so they needs this
macro to be redefined to 0.
! - Macro: NEXT_OBJC_RUNTIME
Define this macro to generate code for Objective-C message sending
using the calling convention of the NeXT system. This calling
convention involves passing the object, the selector and the
--- 17726,17732 ----
support for these functions in the runtime so they needs this
macro to be redefined to 0.
! -- Macro: NEXT_OBJC_RUNTIME
Define this macro to generate code for Objective-C message sending
using the calling convention of the NeXT system. This calling
convention involves passing the object, the selector and the
*************** Implicit Calls to Library Routines
*** 17723,17773 ****
File: gccint.info, Node: Addressing Modes, Next: Condition Code, Prev: Library Calls, Up: Target Macros
! Addressing Modes
! ================
! This is about addressing modes.
! - Macro: HAVE_PRE_INCREMENT
! - Macro: HAVE_PRE_DECREMENT
! - Macro: HAVE_POST_INCREMENT
! - Macro: HAVE_POST_DECREMENT
A C expression that is nonzero if the machine supports
pre-increment, pre-decrement, post-increment, or post-decrement
addressing respectively.
! - Macro: HAVE_PRE_MODIFY_DISP
! - Macro: HAVE_POST_MODIFY_DISP
A C expression that is nonzero if the machine supports pre- or
post-address side-effect generation involving constants other than
the size of the memory operand.
! - Macro: HAVE_PRE_MODIFY_REG
! - Macro: HAVE_POST_MODIFY_REG
A C expression that is nonzero if the machine supports pre- or
post-address side-effect generation involving a register
displacement.
! - Macro: CONSTANT_ADDRESS_P (X)
A C expression that is 1 if the RTX X is a constant which is a
valid address. On most machines, this can be defined as
`CONSTANT_P (X)', but a few machines are more restrictive in which
constant addresses are supported.
! - Macro: CONSTANT_P (X)
`CONSTANT_P', which is defined by target-independent code, accepts
integer-values expressions whose values are not explicitly known,
such as `symbol_ref', `label_ref', and `high' expressions and
`const' arithmetic expressions, in addition to `const_int' and
`const_double' expressions.
! - Macro: MAX_REGS_PER_ADDRESS
A number, the maximum number of registers that can appear in a
valid memory address. Note that it is up to you to specify a
value equal to the maximum number that `GO_IF_LEGITIMATE_ADDRESS'
would ever accept.
! - Macro: GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)
A C compound statement with a conditional `goto LABEL;' executed
if X (an RTX) is a legitimate memory address on the target machine
for a memory operand of mode MODE.
--- 17739,17789 ----
File: gccint.info, Node: Addressing Modes, Next: Condition Code, Prev: Library Calls, Up: Target Macros
! 11.14 Addressing Modes
! ======================
! This is about addressing modes.
! -- Macro: HAVE_PRE_INCREMENT
! -- Macro: HAVE_PRE_DECREMENT
! -- Macro: HAVE_POST_INCREMENT
! -- Macro: HAVE_POST_DECREMENT
A C expression that is nonzero if the machine supports
pre-increment, pre-decrement, post-increment, or post-decrement
addressing respectively.
! -- Macro: HAVE_PRE_MODIFY_DISP
! -- Macro: HAVE_POST_MODIFY_DISP
A C expression that is nonzero if the machine supports pre- or
post-address side-effect generation involving constants other than
the size of the memory operand.
! -- Macro: HAVE_PRE_MODIFY_REG
! -- Macro: HAVE_POST_MODIFY_REG
A C expression that is nonzero if the machine supports pre- or
post-address side-effect generation involving a register
displacement.
! -- Macro: CONSTANT_ADDRESS_P (X)
A C expression that is 1 if the RTX X is a constant which is a
valid address. On most machines, this can be defined as
`CONSTANT_P (X)', but a few machines are more restrictive in which
constant addresses are supported.
! -- Macro: CONSTANT_P (X)
`CONSTANT_P', which is defined by target-independent code, accepts
integer-values expressions whose values are not explicitly known,
such as `symbol_ref', `label_ref', and `high' expressions and
`const' arithmetic expressions, in addition to `const_int' and
`const_double' expressions.
! -- Macro: MAX_REGS_PER_ADDRESS
A number, the maximum number of registers that can appear in a
valid memory address. Note that it is up to you to specify a
value equal to the maximum number that `GO_IF_LEGITIMATE_ADDRESS'
would ever accept.
! -- Macro: GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)
A C compound statement with a conditional `goto LABEL;' executed
if X (an RTX) is a legitimate memory address on the target machine
for a memory operand of mode MODE.
*************** Addressing Modes
*** 17819,17825 ****
`symbol_ref' in order to determine the section. *Note Assembler
Format::.
! - Macro: REG_OK_FOR_BASE_P (X)
A C expression that is nonzero if X (assumed to be a `reg' RTX) is
valid for use as a base register. For hard registers, it should
always accept those which the hardware permits and reject the
--- 17835,17841 ----
`symbol_ref' in order to determine the section. *Note Assembler
Format::.
! -- Macro: REG_OK_FOR_BASE_P (X)
A C expression that is nonzero if X (assumed to be a `reg' RTX) is
valid for use as a base register. For hard registers, it should
always accept those which the hardware permits and reject the
*************** Addressing Modes
*** 17828,17834 ****
usually requires two variant definitions, of which `REG_OK_STRICT'
controls the one actually used.
! - Macro: REG_MODE_OK_FOR_BASE_P (X, MODE)
A C expression that is just like `REG_OK_FOR_BASE_P', except that
that expression may examine the mode of the memory reference in
MODE. You should define this macro if the mode of the memory
--- 17844,17850 ----
usually requires two variant definitions, of which `REG_OK_STRICT'
controls the one actually used.
! -- Macro: REG_MODE_OK_FOR_BASE_P (X, MODE)
A C expression that is just like `REG_OK_FOR_BASE_P', except that
that expression may examine the mode of the memory reference in
MODE. You should define this macro if the mode of the memory
*************** Addressing Modes
*** 17836,17842 ****
register. If you define this macro, the compiler will use it
instead of `REG_OK_FOR_BASE_P'.
! - Macro: REG_OK_FOR_INDEX_P (X)
A C expression that is nonzero if X (assumed to be a `reg' RTX) is
valid for use as an index register.
--- 17852,17858 ----
register. If you define this macro, the compiler will use it
instead of `REG_OK_FOR_BASE_P'.
! -- Macro: REG_OK_FOR_INDEX_P (X)
A C expression that is nonzero if X (assumed to be a `reg' RTX) is
valid for use as an index register.
*************** Addressing Modes
*** 17849,17855 ****
labelings, looking for one that is valid, and will reload one or
both registers only if neither labeling works.
! - Macro: FIND_BASE_TERM (X)
A C expression to determine the base term of address X. This
macro is used in only one place: `find_base_term' in alias.c.
--- 17865,17871 ----
labelings, looking for one that is valid, and will reload one or
both registers only if neither labeling works.
! -- Macro: FIND_BASE_TERM (X)
A C expression to determine the base term of address X. This
macro is used in only one place: `find_base_term' in alias.c.
*************** Addressing Modes
*** 17859,17865 ****
The typical use of this macro is to handle addresses containing a
label_ref or symbol_ref within an UNSPEC.
! - Macro: LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)
A C compound statement that attempts to replace X with a valid
memory address for an operand of mode MODE. WIN will be a C
statement label elsewhere in the code; the macro definition may use
--- 17875,17881 ----
The typical use of this macro is to handle addresses containing a
label_ref or symbol_ref within an UNSPEC.
! -- Macro: LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)
A C compound statement that attempts to replace X with a valid
memory address for an operand of mode MODE. WIN will be a C
statement label elsewhere in the code; the macro definition may use
*************** Addressing Modes
*** 17881,17887 ****
In fact, it is safe for this macro to do nothing. But often a
machine-dependent strategy can generate better code.
! - Macro: LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS,
WIN)
A C compound statement that attempts to replace X, which is an
address that needs reloading, with a valid memory address for an
--- 17897,17903 ----
In fact, it is safe for this macro to do nothing. But often a
machine-dependent strategy can generate better code.
! -- Macro: LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS,
WIN)
A C compound statement that attempts to replace X, which is an
address that needs reloading, with a valid memory address for an
*************** Addressing Modes
*** 17927,17933 ****
necessary for this macro to come up with a legitimate address;
but often a machine-dependent strategy can generate better code.
! - Macro: GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)
A C statement or compound statement with a conditional `goto
LABEL;' executed if memory address X (an RTX) can have different
meanings depending on the machine mode of the memory reference it
--- 17943,17949 ----
necessary for this macro to come up with a legitimate address;
but often a machine-dependent strategy can generate better code.
! -- Macro: GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)
A C statement or compound statement with a conditional `goto
LABEL;' executed if memory address X (an RTX) can have different
meanings depending on the machine mode of the memory reference it
*************** Addressing Modes
*** 17942,17948 ****
You may assume that ADDR is a valid address for the machine.
! - Macro: LEGITIMATE_CONSTANT_P (X)
A C expression that is nonzero if X is a legitimate constant for
an immediate operand on the target machine. You can assume that X
satisfies `CONSTANT_P', so you need not check this. In fact, `1'
--- 17958,17964 ----
You may assume that ADDR is a valid address for the machine.
! -- Macro: LEGITIMATE_CONSTANT_P (X)
A C expression that is nonzero if X is a legitimate constant for
an immediate operand on the target machine. You can assume that X
satisfies `CONSTANT_P', so you need not check this. In fact, `1'
*************** Addressing Modes
*** 17952,17961 ****
File: gccint.info, Node: Condition Code, Next: Costs, Prev: Addressing Modes, Up: Target Macros
! Condition Code Status
! =====================
! This describes the condition code status.
The file `conditions.h' defines a variable `cc_status' to describe
how the condition code was computed (in case the interpretation of the
--- 17968,17977 ----
File: gccint.info, Node: Condition Code, Next: Costs, Prev: Addressing Modes, Up: Target Macros
! 11.15 Condition Code Status
! ===========================
! This describes the condition code status.
The file `conditions.h' defines a variable `cc_status' to describe
how the condition code was computed (in case the interpretation of the
*************** currently based, and several standard fl
*** 17967,17979 ****
machine description header file. It can also add additional
machine-specific information by defining `CC_STATUS_MDEP'.
! - Macro: CC_STATUS_MDEP
C code for a data type which is used for declaring the `mdep'
component of `cc_status'. It defaults to `int'.
This macro is not used on machines that do not use `cc0'.
! - Macro: CC_STATUS_MDEP_INIT
A C expression to initialize the `mdep' field to "empty". The
default definition does nothing, since most machines don't use the
field anyway. If you want to use the field, you should probably
--- 17983,17995 ----
machine description header file. It can also add additional
machine-specific information by defining `CC_STATUS_MDEP'.
! -- Macro: CC_STATUS_MDEP
C code for a data type which is used for declaring the `mdep'
component of `cc_status'. It defaults to `int'.
This macro is not used on machines that do not use `cc0'.
! -- Macro: CC_STATUS_MDEP_INIT
A C expression to initialize the `mdep' field to "empty". The
default definition does nothing, since most machines don't use the
field anyway. If you want to use the field, you should probably
*************** machine-specific information by defining
*** 17981,17987 ****
This macro is not used on machines that do not use `cc0'.
! - Macro: NOTICE_UPDATE_CC (EXP, INSN)
A C compound statement to set the components of `cc_status'
appropriately for an insn INSN whose body is EXP. It is this
macro's responsibility to recognize insns that set the condition
--- 17997,18003 ----
This macro is not used on machines that do not use `cc0'.
! -- Macro: NOTICE_UPDATE_CC (EXP, INSN)
A C compound statement to set the components of `cc_status'
appropriately for an insn INSN whose body is EXP. It is this
macro's responsibility to recognize insns that set the condition
*************** machine-specific information by defining
*** 18016,18022 ****
example, `cc'. This avoids having detailed information about
patterns in two places, the `md' file and in `NOTICE_UPDATE_CC'.
! - Macro: SELECT_CC_MODE (OP, X, Y)
Returns a mode from class `MODE_CC' to be used when comparison
operation code OP is applied to rtx X and Y. For example, on the
SPARC, `SELECT_CC_MODE' is defined as (see *note Jump Patterns::
--- 18032,18038 ----
example, `cc'. This avoids having detailed information about
patterns in two places, the `md' file and in `NOTICE_UPDATE_CC'.
! -- Macro: SELECT_CC_MODE (OP, X, Y)
Returns a mode from class `MODE_CC' to be used when comparison
operation code OP is applied to rtx X and Y. For example, on the
SPARC, `SELECT_CC_MODE' is defined as (see *note Jump Patterns::
*************** machine-specific information by defining
*** 18032,18038 ****
You should define this macro if and only if you define extra CC
modes in `MACHINE-modes.def'.
! - Macro: CANONICALIZE_COMPARISON (CODE, OP0, OP1)
On some machines not all possible comparisons are defined, but you
can convert an invalid comparison into a valid one. For example,
the Alpha does not have a `GT' comparison, but you can use an `LT'
--- 18048,18054 ----
You should define this macro if and only if you define extra CC
modes in `MACHINE-modes.def'.
! -- Macro: CANONICALIZE_COMPARISON (CODE, OP0, OP1)
On some machines not all possible comparisons are defined, but you
can convert an invalid comparison into a valid one. For example,
the Alpha does not have a `GT' comparison, but you can use an `LT'
*************** machine-specific information by defining
*** 18050,18056 ****
You need not define this macro if it would never change the
comparison code or operands.
! - Macro: REVERSIBLE_CC_MODE (MODE)
A C expression whose value is one if it is always safe to reverse a
comparison whose mode is MODE. If `SELECT_CC_MODE' can ever
return MODE for a floating-point inequality comparison, then
--- 18066,18072 ----
You need not define this macro if it would never change the
comparison code or operands.
! -- Macro: REVERSIBLE_CC_MODE (MODE)
A C expression whose value is one if it is always safe to reverse a
comparison whose mode is MODE. If `SELECT_CC_MODE' can ever
return MODE for a floating-point inequality comparison, then
*************** machine-specific information by defining
*** 18064,18070 ****
#define REVERSIBLE_CC_MODE(MODE) ((MODE) != CCFPEmode)
! - Macro: REVERSE_CONDITION (CODE, MODE)
A C expression whose value is reversed condition code of the CODE
for comparison done in CC_MODE MODE. The macro is used only in
case `REVERSIBLE_CC_MODE (MODE)' is nonzero. Define this macro in
--- 18080,18086 ----
#define REVERSIBLE_CC_MODE(MODE) ((MODE) != CCFPEmode)
! -- Macro: REVERSE_CONDITION (CODE, MODE)
A C expression whose value is reversed condition code of the CODE
for comparison done in CC_MODE MODE. The macro is used only in
case `REVERSIBLE_CC_MODE (MODE)' is nonzero. Define this macro in
*************** machine-specific information by defining
*** 18077,18083 ****
((MODE) != CCFPmode ? reverse_condition (CODE) \
: reverse_condition_maybe_unordered (CODE))
! - Macro: REVERSE_CONDEXEC_PREDICATES_P (CODE1, CODE2)
A C expression that returns true if the conditional execution
predicate CODE1 is the inverse of CODE2 and vice versa. Define
this to return 0 if the target has conditional execution
--- 18093,18099 ----
((MODE) != CCFPmode ? reverse_condition (CODE) \
: reverse_condition_maybe_unordered (CODE))
! -- Macro: REVERSE_CONDEXEC_PREDICATES_P (CODE1, CODE2)
A C expression that returns true if the conditional execution
predicate CODE1 is the inverse of CODE2 and vice versa. Define
this to return 0 if the target has conditional execution
*************** machine-specific information by defining
*** 18087,18093 ****
#define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
((x) == reverse_condition (y))
! - Target Hook: bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *,
unsigned int *)
On targets which do not use `(cc0)', and which use a hard register
rather than a pseudo-register to hold condition codes, the regular
--- 18103,18109 ----
#define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
((x) == reverse_condition (y))
! -- Target Hook: bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *,
unsigned int *)
On targets which do not use `(cc0)', and which use a hard register
rather than a pseudo-register to hold condition codes, the regular
*************** machine-specific information by defining
*** 18102,18108 ****
The default version of this hook returns false.
! - Target Hook: enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum
machine_mode, enum machine_mode)
On targets which use multiple condition code modes in class
`MODE_CC', it is sometimes the case that a comparison can be
--- 18118,18124 ----
The default version of this hook returns false.
! -- Target Hook: enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum
machine_mode, enum machine_mode)
On targets which use multiple condition code modes in class
`MODE_CC', it is sometimes the case that a comparison can be
*************** machine-specific information by defining
*** 18118,18130 ****
File: gccint.info, Node: Costs, Next: Scheduling, Prev: Condition Code, Up: Target Macros
! Describing Relative Costs of Operations
! =======================================
! These macros let you describe the relative speed of various
! operations on the target machine.
! - Macro: REGISTER_MOVE_COST (MODE, FROM, TO)
A C expression for the cost of moving data of mode MODE from a
register in class FROM to one in class TO. The classes are
expressed using the enumeration values such as `GENERAL_REGS'. A
--- 18134,18146 ----
File: gccint.info, Node: Costs, Next: Scheduling, Prev: Condition Code, Up: Target Macros
! 11.16 Describing Relative Costs of Operations
! =============================================
! These macros let you describe the relative speed of various operations
! on the target machine.
! -- Macro: REGISTER_MOVE_COST (MODE, FROM, TO)
A C expression for the cost of moving data of mode MODE from a
register in class FROM to one in class TO. The classes are
expressed using the enumeration values such as `GENERAL_REGS'. A
*************** operations on the target machine.
*** 18143,18149 ****
should do this if the `movM' pattern's constraints do not allow
such copying.
! - Macro: MEMORY_MOVE_COST (MODE, CLASS, IN)
A C expression for the cost of moving data of mode MODE between a
register of class CLASS and memory; IN is zero if the value is to
be written to memory, nonzero if it is to be read in. This cost
--- 18159,18165 ----
should do this if the `movM' pattern's constraints do not allow
such copying.
! -- Macro: MEMORY_MOVE_COST (MODE, CLASS, IN)
A C expression for the cost of moving data of mode MODE between a
register of class CLASS and memory; IN is zero if the value is to
be written to memory, nonzero if it is to be read in. This cost
*************** operations on the target machine.
*** 18166,18172 ****
add some other value to the result of that function. The
arguments to that function are the same as to this macro.
! - Macro: BRANCH_COST
A C expression for the cost of a branch instruction. A value of 1
is the default; other values are interpreted relative to that.
--- 18182,18188 ----
add some other value to the result of that function. The
arguments to that function are the same as to this macro.
! -- Macro: BRANCH_COST
A C expression for the cost of a branch instruction. A value of 1
is the default; other values are interpreted relative to that.
*************** operations on the target machine.
*** 18174,18180 ****
costs, but only that certain actions are more expensive than GCC would
ordinarily expect.
! - Macro: SLOW_BYTE_ACCESS
Define this macro as a C expression which is nonzero if accessing
less than a word of memory (i.e. a `char' or a `short') is no
faster than accessing a word of memory, i.e., if such access
--- 18190,18196 ----
costs, but only that certain actions are more expensive than GCC would
ordinarily expect.
! -- Macro: SLOW_BYTE_ACCESS
Define this macro as a C expression which is nonzero if accessing
less than a word of memory (i.e. a `char' or a `short') is no
faster than accessing a word of memory, i.e., if such access
*************** ordinarily expect.
*** 18189,18195 ****
subsequent accesses occur to other fields in the same word of the
structure, but to different bytes.
! - Macro: SLOW_UNALIGNED_ACCESS (MODE, ALIGNMENT)
Define this macro to be the value 1 if memory accesses described
by the MODE and ALIGNMENT parameters have a cost many times greater
than aligned accesses, for example if they are emulated in a trap
--- 18205,18211 ----
subsequent accesses occur to other fields in the same word of the
structure, but to different bytes.
! -- Macro: SLOW_UNALIGNED_ACCESS (MODE, ALIGNMENT)
Define this macro to be the value 1 if memory accesses described
by the MODE and ALIGNMENT parameters have a cost many times greater
than aligned accesses, for example if they are emulated in a trap
*************** ordinarily expect.
*** 18205,18211 ****
If this macro is defined, it should produce a nonzero value when
`STRICT_ALIGNMENT' is nonzero.
! - Macro: MOVE_RATIO
The threshold of number of scalar memory-to-memory move insns,
_below_ which a sequence of insns should be generated instead of a
string move insn or a library call. Increasing the value will
--- 18221,18227 ----
If this macro is defined, it should produce a nonzero value when
`STRICT_ALIGNMENT' is nonzero.
! -- Macro: MOVE_RATIO
The threshold of number of scalar memory-to-memory move insns,
_below_ which a sequence of insns should be generated instead of a
string move insn or a library call. Increasing the value will
*************** ordinarily expect.
*** 18218,18235 ****
If you don't define this, a reasonable default is used.
! - Macro: MOVE_BY_PIECES_P (SIZE, ALIGNMENT)
A C expression used to determine whether `move_by_pieces' will be
used to copy a chunk of memory, or whether some other block move
mechanism will be used. Defaults to 1 if `move_by_pieces_ninsns'
returns less than `MOVE_RATIO'.
! - Macro: MOVE_MAX_PIECES
A C expression used by `move_by_pieces' to determine the largest
unit a load or store used to copy memory is. Defaults to
`MOVE_MAX'.
! - Macro: CLEAR_RATIO
The threshold of number of scalar move insns, _below_ which a
sequence of insns should be generated to clear memory instead of a
string clear insn or a library call. Increasing the value will
--- 18234,18251 ----
If you don't define this, a reasonable default is used.
! -- Macro: MOVE_BY_PIECES_P (SIZE, ALIGNMENT)
A C expression used to determine whether `move_by_pieces' will be
used to copy a chunk of memory, or whether some other block move
mechanism will be used. Defaults to 1 if `move_by_pieces_ninsns'
returns less than `MOVE_RATIO'.
! -- Macro: MOVE_MAX_PIECES
A C expression used by `move_by_pieces' to determine the largest
unit a load or store used to copy memory is. Defaults to
`MOVE_MAX'.
! -- Macro: CLEAR_RATIO
The threshold of number of scalar move insns, _below_ which a
sequence of insns should be generated to clear memory instead of a
string clear insn or a library call. Increasing the value will
*************** ordinarily expect.
*** 18238,18250 ****
If you don't define this, a reasonable default is used.
! - Macro: CLEAR_BY_PIECES_P (SIZE, ALIGNMENT)
A C expression used to determine whether `clear_by_pieces' will be
used to clear a chunk of memory, or whether some other block clear
mechanism will be used. Defaults to 1 if `move_by_pieces_ninsns'
returns less than `CLEAR_RATIO'.
! - Macro: STORE_BY_PIECES_P (SIZE, ALIGNMENT)
A C expression used to determine whether `store_by_pieces' will be
used to set a chunk of memory to a constant value, or whether some
other mechanism will be used. Used by `__builtin_memset' when
--- 18254,18266 ----
If you don't define this, a reasonable default is used.
! -- Macro: CLEAR_BY_PIECES_P (SIZE, ALIGNMENT)
A C expression used to determine whether `clear_by_pieces' will be
used to clear a chunk of memory, or whether some other block clear
mechanism will be used. Defaults to 1 if `move_by_pieces_ninsns'
returns less than `CLEAR_RATIO'.
! -- Macro: STORE_BY_PIECES_P (SIZE, ALIGNMENT)
A C expression used to determine whether `store_by_pieces' will be
used to set a chunk of memory to a constant value, or whether some
other mechanism will be used. Used by `__builtin_memset' when
*************** ordinarily expect.
*** 18252,18313 ****
when when called with a constant source string. Defaults to
`MOVE_BY_PIECES_P'.
! - Macro: USE_LOAD_POST_INCREMENT (MODE)
A C expression used to determine whether a load postincrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_POST_INCREMENT'.
! - Macro: USE_LOAD_POST_DECREMENT (MODE)
A C expression used to determine whether a load postdecrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_POST_DECREMENT'.
! - Macro: USE_LOAD_PRE_INCREMENT (MODE)
A C expression used to determine whether a load preincrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_INCREMENT'.
! - Macro: USE_LOAD_PRE_DECREMENT (MODE)
A C expression used to determine whether a load predecrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_DECREMENT'.
! - Macro: USE_STORE_POST_INCREMENT (MODE)
A C expression used to determine whether a store postincrement is
a good thing to use for a given mode. Defaults to the value of
`HAVE_POST_INCREMENT'.
! - Macro: USE_STORE_POST_DECREMENT (MODE)
A C expression used to determine whether a store postdecrement is
a good thing to use for a given mode. Defaults to the value of
`HAVE_POST_DECREMENT'.
! - Macro: USE_STORE_PRE_INCREMENT (MODE)
This macro is used to determine whether a store preincrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_INCREMENT'.
! - Macro: USE_STORE_PRE_DECREMENT (MODE)
This macro is used to determine whether a store predecrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_DECREMENT'.
! - Macro: NO_FUNCTION_CSE
Define this macro if it is as good or better to call a constant
function address than to call an address kept in a register.
! - Macro: NO_RECURSIVE_FUNCTION_CSE
Define this macro if it is as good or better for a function to call
itself with an explicit address than to call an address kept in a
register.
! - Macro: RANGE_TEST_NON_SHORT_CIRCUIT
Define this macro if a non-short-circuit operation produced by
`fold_range_test ()' is optimal. This macro defaults to true if
`BRANCH_COST' is greater than or equal to the value 2.
! - Target Hook: bool TARGET_RTX_COSTS (rtx X, int CODE, int OUTER_CODE,
! int *TOTAL)
This target hook describes the relative costs of RTL expressions.
The cost may depend on the precise form of the expression, which is
--- 18268,18329 ----
when when called with a constant source string. Defaults to
`MOVE_BY_PIECES_P'.
! -- Macro: USE_LOAD_POST_INCREMENT (MODE)
A C expression used to determine whether a load postincrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_POST_INCREMENT'.
! -- Macro: USE_LOAD_POST_DECREMENT (MODE)
A C expression used to determine whether a load postdecrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_POST_DECREMENT'.
! -- Macro: USE_LOAD_PRE_INCREMENT (MODE)
A C expression used to determine whether a load preincrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_INCREMENT'.
! -- Macro: USE_LOAD_PRE_DECREMENT (MODE)
A C expression used to determine whether a load predecrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_DECREMENT'.
! -- Macro: USE_STORE_POST_INCREMENT (MODE)
A C expression used to determine whether a store postincrement is
a good thing to use for a given mode. Defaults to the value of
`HAVE_POST_INCREMENT'.
! -- Macro: USE_STORE_POST_DECREMENT (MODE)
A C expression used to determine whether a store postdecrement is
a good thing to use for a given mode. Defaults to the value of
`HAVE_POST_DECREMENT'.
! -- Macro: USE_STORE_PRE_INCREMENT (MODE)
This macro is used to determine whether a store preincrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_INCREMENT'.
! -- Macro: USE_STORE_PRE_DECREMENT (MODE)
This macro is used to determine whether a store predecrement is a
good thing to use for a given mode. Defaults to the value of
`HAVE_PRE_DECREMENT'.
! -- Macro: NO_FUNCTION_CSE
Define this macro if it is as good or better to call a constant
function address than to call an address kept in a register.
! -- Macro: NO_RECURSIVE_FUNCTION_CSE
Define this macro if it is as good or better for a function to call
itself with an explicit address than to call an address kept in a
register.
! -- Macro: RANGE_TEST_NON_SHORT_CIRCUIT
Define this macro if a non-short-circuit operation produced by
`fold_range_test ()' is optimal. This macro defaults to true if
`BRANCH_COST' is greater than or equal to the value 2.
! -- Target Hook: bool TARGET_RTX_COSTS (rtx X, int CODE, int
! OUTER_CODE, int *TOTAL)
This target hook describes the relative costs of RTL expressions.
The cost may depend on the precise form of the expression, which is
*************** ordinarily expect.
*** 18326,18332 ****
The hook returns true when all subexpressions of X have been
processed, and false when `rtx_cost' should recurse.
! - Target Hook: int TARGET_ADDRESS_COST (rtx ADDRESS)
This hook computes the cost of an addressing mode that contains
ADDRESS. If not defined, the cost is computed from the ADDRESS
expression and the `TARGET_RTX_COST' hook.
--- 18342,18348 ----
The hook returns true when all subexpressions of X have been
processed, and false when `rtx_cost' should recurse.
! -- Target Hook: int TARGET_ADDRESS_COST (rtx ADDRESS)
This hook computes the cost of an addressing mode that contains
ADDRESS. If not defined, the cost is computed from the ADDRESS
expression and the `TARGET_RTX_COST' hook.
*************** ordinarily expect.
*** 18365,18379 ****
File: gccint.info, Node: Scheduling, Next: Sections, Prev: Costs, Up: Target Macros
! Adjusting the Instruction Scheduler
! ===================================
! The instruction scheduler may need a fair amount of machine-specific
adjustment in order to produce good code. GCC provides several target
hooks for this purpose. It is usually enough to define just a few of
them: try the first ones in this list first.
! - Target Hook: int TARGET_SCHED_ISSUE_RATE (void)
This hook returns the maximum number of instructions that can ever
issue at the same time on the target machine. The default is one.
Although the insn scheduler can define itself the possibility of
--- 18381,18395 ----
File: gccint.info, Node: Scheduling, Next: Sections, Prev: Costs, Up: Target Macros
! 11.17 Adjusting the Instruction Scheduler
! =========================================
! The instruction scheduler may need a fair amount of machine-specific
adjustment in order to produce good code. GCC provides several target
hooks for this purpose. It is usually enough to define just a few of
them: try the first ones in this list first.
! -- Target Hook: int TARGET_SCHED_ISSUE_RATE (void)
This hook returns the maximum number of instructions that can ever
issue at the same time on the target machine. The default is one.
Although the insn scheduler can define itself the possibility of
*************** them: try the first ones in this list fi
*** 18387,18393 ****
For the automaton based pipeline interface, you could define this
hook to return the value of the macro `MAX_DFA_ISSUE_RATE'.
! - Target Hook: int TARGET_SCHED_VARIABLE_ISSUE (FILE *FILE, int
VERBOSE, rtx INSN, int MORE)
This hook is executed by the scheduler after it has scheduled an
insn from the ready list. It should return the number of insns
--- 18403,18409 ----
For the automaton based pipeline interface, you could define this
hook to return the value of the macro `MAX_DFA_ISSUE_RATE'.
! -- Target Hook: int TARGET_SCHED_VARIABLE_ISSUE (FILE *FILE, int
VERBOSE, rtx INSN, int MORE)
This hook is executed by the scheduler after it has scheduled an
insn from the ready list. It should return the number of insns
*************** them: try the first ones in this list fi
*** 18400,18406 ****
debug output to. VERBOSE is the verbose level provided by
`-fsched-verbose-N'. INSN is the instruction that was scheduled.
! - Target Hook: int TARGET_SCHED_ADJUST_COST (rtx INSN, rtx LINK, rtx
DEP_INSN, int COST)
This function corrects the value of COST based on the relationship
between INSN and DEP_INSN through the dependence LINK. It should
--- 18416,18422 ----
debug output to. VERBOSE is the verbose level provided by
`-fsched-verbose-N'. INSN is the instruction that was scheduled.
! -- Target Hook: int TARGET_SCHED_ADJUST_COST (rtx INSN, rtx LINK, rtx
DEP_INSN, int COST)
This function corrects the value of COST based on the relationship
between INSN and DEP_INSN through the dependence LINK. It should
*************** them: try the first ones in this list fi
*** 18415,18421 ****
acceptable, you could use the hook to modify them too. See also
*note Automaton pipeline description::.
! - Target Hook: int TARGET_SCHED_ADJUST_PRIORITY (rtx INSN, int
PRIORITY)
This hook adjusts the integer scheduling priority PRIORITY of
INSN. It should return the new priority. Reduce the priority to
--- 18431,18437 ----
acceptable, you could use the hook to modify them too. See also
*note Automaton pipeline description::.
! -- Target Hook: int TARGET_SCHED_ADJUST_PRIORITY (rtx INSN, int
PRIORITY)
This hook adjusts the integer scheduling priority PRIORITY of
INSN. It should return the new priority. Reduce the priority to
*************** them: try the first ones in this list fi
*** 18423,18429 ****
Do not define this hook if you do not need to adjust the
scheduling priorities of insns.
! - Target Hook: int TARGET_SCHED_REORDER (FILE *FILE, int VERBOSE, rtx
*READY, int *N_READYP, int CLOCK)
This hook is executed by the scheduler after it has scheduled the
ready list, to allow the machine description to reorder it (for
--- 18439,18445 ----
Do not define this hook if you do not need to adjust the
scheduling priorities of insns.
! -- Target Hook: int TARGET_SCHED_REORDER (FILE *FILE, int VERBOSE, rtx
*READY, int *N_READYP, int CLOCK)
This hook is executed by the scheduler after it has scheduled the
ready list, to allow the machine description to reorder it (for
*************** them: try the first ones in this list fi
*** 18440,18447 ****
issue this cycle; normally this is just `issue_rate'. See also
`TARGET_SCHED_REORDER2'.
! - Target Hook: int TARGET_SCHED_REORDER2 (FILE *FILE, int VERBOSE, rtx
! *READY, int *N_READY, CLOCK)
Like `TARGET_SCHED_REORDER', but called at a different time. That
function is called whenever the scheduler starts a new cycle.
This one is called once per iteration over a cycle, immediately
--- 18456,18463 ----
issue this cycle; normally this is just `issue_rate'. See also
`TARGET_SCHED_REORDER2'.
! -- Target Hook: int TARGET_SCHED_REORDER2 (FILE *FILE, int VERBOSE,
! rtx *READY, int *N_READY, CLOCK)
Like `TARGET_SCHED_REORDER', but called at a different time. That
function is called whenever the scheduler starts a new cycle.
This one is called once per iteration over a cycle, immediately
*************** them: try the first ones in this list fi
*** 18452,18458 ****
the same cycle. These other insns can then be taken into account
properly.
! - Target Hook: void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx
HEAD, rtx TAIL)
This hook is called after evaluation forward dependencies of insns
in chain given by two parameter values (HEAD and TAIL
--- 18468,18474 ----
the same cycle. These other insns can then be taken into account
properly.
! -- Target Hook: void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx
HEAD, rtx TAIL)
This hook is called after evaluation forward dependencies of insns
in chain given by two parameter values (HEAD and TAIL
*************** them: try the first ones in this list fi
*** 18462,18468 ****
forward dependencies of the insn scheduler because they are already
calculated.
! - Target Hook: void TARGET_SCHED_INIT (FILE *FILE, int VERBOSE, int
MAX_READY)
This hook is executed by the scheduler at the beginning of each
block of instructions that are to be scheduled. FILE is either a
--- 18478,18484 ----
forward dependencies of the insn scheduler because they are already
calculated.
! -- Target Hook: void TARGET_SCHED_INIT (FILE *FILE, int VERBOSE, int
MAX_READY)
This hook is executed by the scheduler at the beginning of each
block of instructions that are to be scheduled. FILE is either a
*************** them: try the first ones in this list fi
*** 18473,18479 ****
allocate scratch space if it is needed, e.g. by
`TARGET_SCHED_REORDER'.
! - Target Hook: void TARGET_SCHED_FINISH (FILE *FILE, int VERBOSE)
This hook is executed by the scheduler at the end of each block of
instructions that are to be scheduled. It can be used to perform
cleanup of any actions done by the other scheduling hooks. FILE
--- 18489,18495 ----
allocate scratch space if it is needed, e.g. by
`TARGET_SCHED_REORDER'.
! -- Target Hook: void TARGET_SCHED_FINISH (FILE *FILE, int VERBOSE)
This hook is executed by the scheduler at the end of each block of
instructions that are to be scheduled. It can be used to perform
cleanup of any actions done by the other scheduling hooks. FILE
*************** them: try the first ones in this list fi
*** 18481,18487 ****
output to. VERBOSE is the verbose level provided by
`-fsched-verbose-N'.
! - Target Hook: int TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE (void)
This hook is called many times during insn scheduling. If the hook
returns nonzero, the automaton based pipeline description is used
for insn scheduling. Otherwise the traditional pipeline
--- 18497,18503 ----
output to. VERBOSE is the verbose level provided by
`-fsched-verbose-N'.
! -- Target Hook: int TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE (void)
This hook is called many times during insn scheduling. If the hook
returns nonzero, the automaton based pipeline description is used
for insn scheduling. Otherwise the traditional pipeline
*************** them: try the first ones in this list fi
*** 18495,18501 ****
pipeline description. That means that you should be accurate in
defining the hook.
! - Target Hook: int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
The hook returns an RTL insn. The automaton state used in the
pipeline hazard recognizer is changed as if the insn were scheduled
when the new simulated processor cycle starts. Usage of the hook
--- 18511,18517 ----
pipeline description. That means that you should be accurate in
defining the hook.
! -- Target Hook: int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
The hook returns an RTL insn. The automaton state used in the
pipeline hazard recognizer is changed as if the insn were scheduled
when the new simulated processor cycle starts. Usage of the hook
*************** them: try the first ones in this list fi
*** 18504,18522 ****
automaton based pipeline description. The default is not to
change the state when the new simulated processor cycle starts.
! - Target Hook: void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
The hook can be used to initialize data used by the previous hook.
! - Target Hook: int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
The hook is analogous to `TARGET_SCHED_DFA_PRE_CYCLE_INSN' but used
to changed the state as if the insn were scheduled when the new
simulated processor cycle finishes.
! - Target Hook: void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
The hook is analogous to `TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN' but
used to initialize data used by the previous hook.
! - Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
(void)
This hook controls better choosing an insn from the ready insn
queue for the DFA-based insn scheduler. Usually the scheduler
--- 18520,18538 ----
automaton based pipeline description. The default is not to
change the state when the new simulated processor cycle starts.
! -- Target Hook: void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
The hook can be used to initialize data used by the previous hook.
! -- Target Hook: int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
The hook is analogous to `TARGET_SCHED_DFA_PRE_CYCLE_INSN' but used
to changed the state as if the insn were scheduled when the new
simulated processor cycle finishes.
! -- Target Hook: void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
The hook is analogous to `TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN' but
used to initialize data used by the previous hook.
! -- Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
(void)
This hook controls better choosing an insn from the ready insn
queue for the DFA-based insn scheduler. Usually the scheduler
*************** them: try the first ones in this list fi
*** 18544,18550 ****
The default is no multipass scheduling.
! - Target Hook: int
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx)
This hook controls what insns from the ready insn queue will be
considered for the multipass insn scheduling. If the hook returns
--- 18560,18566 ----
The default is no multipass scheduling.
! -- Target Hook: int
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx)
This hook controls what insns from the ready insn queue will be
considered for the multipass insn scheduling. If the hook returns
*************** TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_L
*** 18553,18559 ****
The default is that any ready insns can be chosen to be issued.
! - Target Hook: int TARGET_SCHED_DFA_NEW_CYCLE (FILE *, int, rtx, int,
int, int *)
This hook is called by the insn scheduler before issuing insn
passed as the third parameter on given cycle. If the hook returns
--- 18569,18575 ----
The default is that any ready insns can be chosen to be issued.
! -- Target Hook: int TARGET_SCHED_DFA_NEW_CYCLE (FILE *, int, rtx, int,
int, int *)
This hook is called by the insn scheduler before issuing insn
passed as the third parameter on given cycle. If the hook returns
*************** TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_L
*** 18567,18573 ****
which the previous insn has been issued and the current processor
cycle.
! - Target Hook: void TARGET_SCHED_INIT_DFA_BUBBLES (void)
The DFA-based scheduler could take the insertion of nop operations
for better insn scheduling into account. It can be done only if
the multi-pass insn scheduling works (see hook
--- 18583,18589 ----
which the previous insn has been issued and the current processor
cycle.
! -- Target Hook: void TARGET_SCHED_INIT_DFA_BUBBLES (void)
The DFA-based scheduler could take the insertion of nop operations
for better insn scheduling into account. It can be done only if
the multi-pass insn scheduling works (see hook
*************** TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_L
*** 18591,18597 ****
result schedule. The nop insns should be inserted lately, e.g. on
the final phase.
! - Target Hook: rtx TARGET_SCHED_DFA_BUBBLE (int INDEX)
This hook `FIRST_CYCLE_MULTIPASS_SCHEDULING' is used to insert nop
operations for better insn scheduling when DFA-based scheduler
makes multipass insn scheduling (see also description of hook
--- 18607,18613 ----
result schedule. The nop insns should be inserted lately, e.g. on
the final phase.
! -- Target Hook: rtx TARGET_SCHED_DFA_BUBBLE (int INDEX)
This hook `FIRST_CYCLE_MULTIPASS_SCHEDULING' is used to insert nop
operations for better insn scheduling when DFA-based scheduler
makes multipass insn scheduling (see also description of hook
*************** TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_L
*** 18600,18606 ****
return `NULL' if there are no more nop insns with indexes greater
than given index.
! - Target Hook: bool IS_COSTLY_DEPENDENCE (rtx INSN1, rtx INSN2, rtx
DEP_LINK, int DEP_COST, int DISTANCE)
This hook is used to define which dependences are considered
costly by the target, so costly that it is not advisable to
--- 18616,18622 ----
return `NULL' if there are no more nop insns with indexes greater
than given index.
! -- Target Hook: bool IS_COSTLY_DEPENDENCE (rtx INSN1, rtx INSN2, rtx
DEP_LINK, int DEP_COST, int DISTANCE)
This hook is used to define which dependences are considered
costly by the target, so costly that it is not advisable to
*************** TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_L
*** 18628,18634 ****
Macros in the following table are generated by the program `genattr'
and can be useful for writing the hooks.
! - Macro: TRADITIONAL_PIPELINE_INTERFACE
The macro definition is generated if there is a traditional
pipeline description in `.md' file. You should also remember that
to simplify the insn scheduler sources an empty traditional
--- 18644,18650 ----
Macros in the following table are generated by the program `genattr'
and can be useful for writing the hooks.
! -- Macro: TRADITIONAL_PIPELINE_INTERFACE
The macro definition is generated if there is a traditional
pipeline description in `.md' file. You should also remember that
to simplify the insn scheduler sources an empty traditional
*************** and can be useful for writing the hooks.
*** 18636,18642 ****
traditional pipeline description in the `.md' file. The macro can
be used to distinguish the two types of the traditional interface.
! - Macro: DFA_PIPELINE_INTERFACE
The macro definition is generated if there is an automaton pipeline
description in `.md' file. You should also remember that to
simplify the insn scheduler sources an empty automaton pipeline
--- 18652,18658 ----
traditional pipeline description in the `.md' file. The macro can
be used to distinguish the two types of the traditional interface.
! -- Macro: DFA_PIPELINE_INTERFACE
The macro definition is generated if there is an automaton pipeline
description in `.md' file. You should also remember that to
simplify the insn scheduler sources an empty automaton pipeline
*************** and can be useful for writing the hooks.
*** 18644,18650 ****
pipeline description in the `.md' file. The macro can be used to
distinguish the two types of the automaton interface.
! - Macro: MAX_DFA_ISSUE_RATE
The macro definition is generated in the automaton based pipeline
description interface. Its value is calculated from the automaton
based pipeline description and is equal to maximal number of all
--- 18660,18666 ----
pipeline description in the `.md' file. The macro can be used to
distinguish the two types of the automaton interface.
! -- Macro: MAX_DFA_ISSUE_RATE
The macro definition is generated in the automaton based pipeline
description interface. Its value is calculated from the automaton
based pipeline description and is equal to maximal number of all
*************** and can be useful for writing the hooks.
*** 18654,18663 ****
File: gccint.info, Node: Sections, Next: PIC, Prev: Scheduling, Up: Target Macros
! Dividing the Output into Sections (Texts, Data, ...)
! ====================================================
! An object file is divided into sections containing different types of
data. In the most common case, there are three sections: the "text
section", which holds instructions and read-only data; the "data
section", which holds initialized writable data; and the "bss section",
--- 18670,18679 ----
File: gccint.info, Node: Sections, Next: PIC, Prev: Scheduling, Up: Target Macros
! 11.18 Dividing the Output into Sections (Texts, Data, ...)
! ==========================================================
! An object file is divided into sections containing different types of
data. In the most common case, there are three sections: the "text
section", which holds instructions and read-only data; the "data
section", which holds initialized writable data; and the "bss section",
*************** sections.
*** 18668,18699 ****
macros control what commands to output to tell the assembler this. You
can also define additional sections.
! - Macro: TEXT_SECTION_ASM_OP
A C expression whose value is a string, including spacing,
containing the assembler operation that should precede
instructions and read-only data. Normally `"\t.text"' is right.
! - Macro: HOT_TEXT_SECTION_NAME
If defined, a C string constant for the name of the section
containing most frequently executed functions of the program. If
not defined, GCC will provide a default definition if the target
supports named sections.
! - Macro: UNLIKELY_EXECUTED_TEXT_SECTION_NAME
If defined, a C string constant for the name of the section
containing unlikely executed functions in the program.
! - Macro: DATA_SECTION_ASM_OP
A C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data
as writable initialized data. Normally `"\t.data"' is right.
! - Macro: READONLY_DATA_SECTION_ASM_OP
A C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data
as read-only initialized data.
! - Macro: READONLY_DATA_SECTION
A macro naming a function to call to switch to the proper section
for read-only data. The default is to use
`READONLY_DATA_SECTION_ASM_OP' if defined, else fall back to
--- 18684,18715 ----
macros control what commands to output to tell the assembler this. You
can also define additional sections.
! -- Macro: TEXT_SECTION_ASM_OP
A C expression whose value is a string, including spacing,
containing the assembler operation that should precede
instructions and read-only data. Normally `"\t.text"' is right.
! -- Macro: HOT_TEXT_SECTION_NAME
If defined, a C string constant for the name of the section
containing most frequently executed functions of the program. If
not defined, GCC will provide a default definition if the target
supports named sections.
! -- Macro: UNLIKELY_EXECUTED_TEXT_SECTION_NAME
If defined, a C string constant for the name of the section
containing unlikely executed functions in the program.
! -- Macro: DATA_SECTION_ASM_OP
A C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data
as writable initialized data. Normally `"\t.data"' is right.
! -- Macro: READONLY_DATA_SECTION_ASM_OP
A C expression whose value is a string, including spacing,
containing the assembler operation to identify the following data
as read-only initialized data.
! -- Macro: READONLY_DATA_SECTION
A macro naming a function to call to switch to the proper section
for read-only data. The default is to use
`READONLY_DATA_SECTION_ASM_OP' if defined, else fall back to
*************** can also define additional sections.
*** 18703,18715 ****
does not have a special read-only data section, and does not put
data in the text section.
! - Macro: SHARED_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as shared data. If not defined,
`DATA_SECTION_ASM_OP' will be used.
! - Macro: BSS_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as uninitialized global data. If not defined, and
--- 18719,18731 ----
does not have a special read-only data section, and does not put
data in the text section.
! -- Macro: SHARED_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as shared data. If not defined,
`DATA_SECTION_ASM_OP' will be used.
! -- Macro: BSS_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as uninitialized global data. If not defined, and
*************** can also define additional sections.
*** 18718,18736 ****
`-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
used.
! - Macro: INIT_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as initialization code. If not defined, GCC will
assume such a section does not exist.
! - Macro: FINI_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as finalization code. If not defined, GCC will
assume such a section does not exist.
! - Macro: CRT_CALL_STATIC_FUNCTION (SECTION_OP, FUNCTION)
If defined, an ASM statement that switches to a different section
via SECTION_OP, calls FUNCTION, and switches back to the text
section. This is used in `crtstuff.c' if `INIT_SECTION_ASM_OP' or
--- 18734,18752 ----
`-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
used.
! -- Macro: INIT_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as initialization code. If not defined, GCC will
assume such a section does not exist.
! -- Macro: FINI_SECTION_ASM_OP
If defined, a C expression whose value is a string, including
spacing, containing the assembler operation to identify the
following data as finalization code. If not defined, GCC will
assume such a section does not exist.
! -- Macro: CRT_CALL_STATIC_FUNCTION (SECTION_OP, FUNCTION)
If defined, an ASM statement that switches to a different section
via SECTION_OP, calls FUNCTION, and switches back to the text
section. This is used in `crtstuff.c' if `INIT_SECTION_ASM_OP' or
*************** can also define additional sections.
*** 18741,18764 ****
the function prologue or to ensure that constant pools don't end
up too far way in the text section.
! - Macro: FORCE_CODE_SECTION_ALIGN
If defined, an ASM statement that aligns a code section to some
arbitrary boundary. This is used to force all fragments of the
`.init' and `.fini' sections to have to same alignment and thus
prevent the linker from having to add any padding.
! - Macro: EXTRA_SECTIONS
A list of names for sections other than the standard two, which are
`in_text' and `in_data'. You need not define this macro on a
system with no other sections (that GCC needs to use).
! - Macro: EXTRA_SECTION_FUNCTIONS
One or more functions to be defined in `varasm.c'. These
functions should do jobs analogous to those of `text_section' and
`data_section', for your additional sections. Do not define this
macro if you do not define `EXTRA_SECTIONS'.
! - Macro: JUMP_TABLES_IN_TEXT_SECTION
Define this macro to be an expression with a nonzero value if jump
tables (for `tablejump' insns) should be output in the text
section, along with the assembler instructions. Otherwise, the
--- 18757,18780 ----
the function prologue or to ensure that constant pools don't end
up too far way in the text section.
! -- Macro: FORCE_CODE_SECTION_ALIGN
If defined, an ASM statement that aligns a code section to some
arbitrary boundary. This is used to force all fragments of the
`.init' and `.fini' sections to have to same alignment and thus
prevent the linker from having to add any padding.
! -- Macro: EXTRA_SECTIONS
A list of names for sections other than the standard two, which are
`in_text' and `in_data'. You need not define this macro on a
system with no other sections (that GCC needs to use).
! -- Macro: EXTRA_SECTION_FUNCTIONS
One or more functions to be defined in `varasm.c'. These
functions should do jobs analogous to those of `text_section' and
`data_section', for your additional sections. Do not define this
macro if you do not define `EXTRA_SECTIONS'.
! -- Macro: JUMP_TABLES_IN_TEXT_SECTION
Define this macro to be an expression with a nonzero value if jump
tables (for `tablejump' insns) should be output in the text
section, along with the assembler instructions. Otherwise, the
*************** can also define additional sections.
*** 18767,18773 ****
This macro is irrelevant if there is no separate readonly data
section.
! - Target Hook: void TARGET_ASM_SELECT_SECTION (tree EXP, int RELOC,
unsigned HOST_WIDE_INT ALIGN)
Switches to the appropriate section for output of EXP. You can
assume that EXP is either a `VAR_DECL' node or a constant of some
--- 18783,18789 ----
This macro is irrelevant if there is no separate readonly data
section.
! -- Target Hook: void TARGET_ASM_SELECT_SECTION (tree EXP, int RELOC,
unsigned HOST_WIDE_INT ALIGN)
Switches to the appropriate section for output of EXP. You can
assume that EXP is either a `VAR_DECL' node or a constant of some
*************** can also define additional sections.
*** 18781,18787 ****
The default version of this function takes care of putting
read-only variables in `readonly_data_section'.
! - Target Hook: void TARGET_ASM_UNIQUE_SECTION (tree DECL, int RELOC)
Build up a unique section name, expressed as a `STRING_CST' node,
and assign it to `DECL_SECTION_NAME (DECL)'. As with
`TARGET_ASM_SELECT_SECTION', RELOC indicates whether the initial
--- 18797,18803 ----
The default version of this function takes care of putting
read-only variables in `readonly_data_section'.
! -- Target Hook: void TARGET_ASM_UNIQUE_SECTION (tree DECL, int RELOC)
Build up a unique section name, expressed as a `STRING_CST' node,
and assign it to `DECL_SECTION_NAME (DECL)'. As with
`TARGET_ASM_SELECT_SECTION', RELOC indicates whether the initial
*************** can also define additional sections.
*** 18793,18799 ****
Whatever the actual target object format, this is often good
enough.
! - Target Hook: void TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode
MODE, rtx X, unsigned HOST_WIDE_INT ALIGN)
Switches to the appropriate section for output of constant pool
entry X in MODE. You can assume that X is some kind of constant
--- 18809,18815 ----
Whatever the actual target object format, this is often good
enough.
! -- Target Hook: void TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode
MODE, rtx X, unsigned HOST_WIDE_INT ALIGN)
Switches to the appropriate section for output of constant pool
entry X in MODE. You can assume that X is some kind of constant
*************** can also define additional sections.
*** 18806,18812 ****
constants in `flag_pic' mode in `data_section' and everything else
in `readonly_data_section'.
! - Target Hook: void TARGET_ENCODE_SECTION_INFO (tree DECL, rtx RTL,
int NEW_DECL_P)
Define this hook if references to a symbol or a constant must be
treated differently depending on something about the variable or
--- 18822,18828 ----
constants in `flag_pic' mode in `data_section' and everything else
in `readonly_data_section'.
! -- Target Hook: void TARGET_ENCODE_SECTION_INFO (tree DECL, rtx RTL,
int NEW_DECL_P)
Define this hook if references to a symbol or a constant must be
treated differently depending on something about the variable or
*************** can also define additional sections.
*** 18843,18862 ****
`SYMBOL_REF_FLAGS'. Check whether the default does what you need
before overriding it.
! - Target Hook: const char *TARGET_STRIP_NAME_ENCODING (const char
*name)
Decode NAME and return the real name part, sans the characters
that `TARGET_ENCODE_SECTION_INFO' may have added.
! - Target Hook: bool TARGET_IN_SMALL_DATA_P (tree EXP)
Returns true if EXP should be placed into a "small data" section.
The default version of this hook always returns false.
! - Variable: Target Hook bool TARGET_HAVE_SRODATA_SECTION
Contains the value true if the target places read-only "small
data" into a separate section. The default value is false.
! - Target Hook: bool TARGET_BINDS_LOCAL_P (tree EXP)
Returns true if EXP names an object for which name resolution
rules must resolve to the current "module" (dynamic shared library
or executable image).
--- 18859,18878 ----
`SYMBOL_REF_FLAGS'. Check whether the default does what you need
before overriding it.
! -- Target Hook: const char *TARGET_STRIP_NAME_ENCODING (const char
*name)
Decode NAME and return the real name part, sans the characters
that `TARGET_ENCODE_SECTION_INFO' may have added.
! -- Target Hook: bool TARGET_IN_SMALL_DATA_P (tree EXP)
Returns true if EXP should be placed into a "small data" section.
The default version of this hook always returns false.
! -- Variable: Target Hook bool TARGET_HAVE_SRODATA_SECTION
Contains the value true if the target places read-only "small
data" into a separate section. The default value is false.
! -- Target Hook: bool TARGET_BINDS_LOCAL_P (tree EXP)
Returns true if EXP names an object for which name resolution
rules must resolve to the current "module" (dynamic shared library
or executable image).
*************** can also define additional sections.
*** 18865,18890 ****
rules for ELF, which has a looser model of global name binding
than other currently supported object file formats.
! - Variable: Target Hook bool TARGET_HAVE_TLS
Contains the value true if the target supports thread-local
storage. The default value is false.
File: gccint.info, Node: PIC, Next: Assembler Format, Prev: Sections, Up: Target Macros
! Position Independent Code
! =========================
! This section describes macros that help implement generation of
! position independent code. Simply defining these macros is not enough
! to generate valid PIC; you must also add support to the macros
`GO_IF_LEGITIMATE_ADDRESS' and `PRINT_OPERAND_ADDRESS', as well as
`LEGITIMIZE_ADDRESS'. You must modify the definition of `movsi' to do
something appropriate when the source operand contains a symbolic
address. You may also need to alter the handling of switch statements
so that they use relative addresses.
! - Macro: 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).
--- 18881,18906 ----
rules for ELF, which has a looser model of global name binding
than other currently supported object file formats.
! -- Variable: Target Hook bool TARGET_HAVE_TLS
Contains the value true if the target supports thread-local
storage. The default value is false.
File: gccint.info, Node: PIC, Next: Assembler Format, Prev: Sections, Up: Target Macros
! 11.19 Position Independent Code
! ===============================
! This section describes macros that help implement generation of position
! independent code. Simply defining these macros is not enough to
! generate valid PIC; you must also add support to the macros
`GO_IF_LEGITIMATE_ADDRESS' and `PRINT_OPERAND_ADDRESS', as well as
`LEGITIMIZE_ADDRESS'. You must modify the definition of `movsi' to do
something appropriate when the source operand contains a symbolic
address. You may also need to alter the handling of switch statements
so that they use relative addresses.
! -- Macro: 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).
*************** so that they use relative addresses.
*** 18894,18905 ****
to allocate such a register (if necessary). Note that this
register must be fixed when in use (e.g. when `flag_pic' is true).
! - Macro: PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
Define this macro if the register defined by
`PIC_OFFSET_TABLE_REGNUM' is clobbered by calls. Do not define
this macro if `PIC_OFFSET_TABLE_REGNUM' is not defined.
! - Macro: FINALIZE_PIC
By generating position-independent code, when two different
programs (A and B) share a common library (libC.a), the text of
the library can be shared whether or not the library is linked at
--- 18910,18921 ----
to allocate such a register (if necessary). Note that this
register must be fixed when in use (e.g. when `flag_pic' is true).
! -- Macro: PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
Define this macro if the register defined by
`PIC_OFFSET_TABLE_REGNUM' is clobbered by calls. Do not define
this macro if `PIC_OFFSET_TABLE_REGNUM' is not defined.
! -- Macro: FINALIZE_PIC
By generating position-independent code, when two different
programs (A and B) share a common library (libC.a), the text of
the library can be shared whether or not the library is linked at
*************** so that they use relative addresses.
*** 18915,18921 ****
prologues being included in functions which used inline functions
and were compiled to assembly language.)
! - Macro: LEGITIMATE_PIC_OPERAND_P (X)
A C expression that is nonzero if X is a legitimate immediate
operand on the target machine when generating position independent
code. You can assume that X satisfies `CONSTANT_P', so you need
--- 18931,18937 ----
prologues being included in functions which used inline functions
and were compiled to assembly language.)
! -- Macro: LEGITIMATE_PIC_OPERAND_P (X)
A C expression that is nonzero if X is a legitimate immediate
operand on the target machine when generating position independent
code. You can assume that X satisfies `CONSTANT_P', so you need
*************** so that they use relative addresses.
*** 18927,18937 ****
File: gccint.info, Node: Assembler Format, Next: Debugging Info, Prev: PIC, Up: Target Macros
! Defining the Output Assembler Language
! ======================================
! This section describes macros whose principal purpose is to describe
! how to write instructions in assembler language--rather than what the
instructions do.
* Menu:
--- 18943,18953 ----
File: gccint.info, Node: Assembler Format, Next: Debugging Info, Prev: PIC, Up: Target Macros
! 11.20 Defining the Output Assembler Language
! ============================================
! This section describes macros whose principal purpose is to describe how
! to write instructions in assembler language--rather than what the
instructions do.
* Menu:
*************** instructions do.
*** 18953,18964 ****
File: gccint.info, Node: File Framework, Next: Data Output, Up: Assembler Format
! The Overall Framework of an Assembler File
! ------------------------------------------
! This describes the overall framework of an assembly file.
! - Target Hook: void TARGET_ASM_FILE_START ()
Output to `asm_out_file' any text which the assembler expects to
find at the beginning of a file. The default behavior is
controlled by two flags, documented below. Unless your target's
--- 18969,18980 ----
File: gccint.info, Node: File Framework, Next: Data Output, Up: Assembler Format
! 11.20.1 The Overall Framework of an Assembler File
! --------------------------------------------------
! This describes the overall framework of an assembly file.
! -- Target Hook: void TARGET_ASM_FILE_START ()
Output to `asm_out_file' any text which the assembler expects to
find at the beginning of a file. The default behavior is
controlled by two flags, documented below. Unless your target's
*************** The Overall Framework of an Assembler Fi
*** 18966,18972 ****
should call `default_file_start' at some point in your target
hook. This lets other target files rely on these variables.
! - Target Hook: bool TARGET_ASM_FILE_START_APP_OFF
If this flag is true, the text of the macro `ASM_APP_OFF' will be
printed as the very first line in the assembly file, unless
`-fverbose-asm' is in effect. (If that macro has been defined to
--- 18982,18988 ----
should call `default_file_start' at some point in your target
hook. This lets other target files rely on these variables.
! -- Target Hook: bool TARGET_ASM_FILE_START_APP_OFF
If this flag is true, the text of the macro `ASM_APP_OFF' will be
printed as the very first line in the assembly file, unless
`-fverbose-asm' is in effect. (If that macro has been defined to
*************** The Overall Framework of an Assembler Fi
*** 18980,18996 ****
whitespace or comments that will cause GAS to issue errors in
NO_APP mode.
! - Target Hook: bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
If this flag is true, `output_file_directive' will be called for
the primary source file, immediately after printing `ASM_APP_OFF'
(if that is enabled). Most ELF assemblers expect this to be done.
The default is false.
! - Target Hook: void TARGET_ASM_FILE_END ()
Output to `asm_out_file' any text which the assembler expects to
find at the end of a file. The default is to output nothing.
! - Function: void file_end_indicate_exec_stack ()
Some systems use a common convention, the `.note.GNU-stack'
special section, to indicate whether or not an object file relies
on the stack being executable. If your system uses this
--- 18996,19012 ----
whitespace or comments that will cause GAS to issue errors in
NO_APP mode.
! -- Target Hook: bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
If this flag is true, `output_file_directive' will be called for
the primary source file, immediately after printing `ASM_APP_OFF'
(if that is enabled). Most ELF assemblers expect this to be done.
The default is false.
! -- Target Hook: void TARGET_ASM_FILE_END ()
Output to `asm_out_file' any text which the assembler expects to
find at the end of a file. The default is to output nothing.
! -- Function: void file_end_indicate_exec_stack ()
Some systems use a common convention, the `.note.GNU-stack'
special section, to indicate whether or not an object file relies
on the stack being executable. If your system uses this
*************** The Overall Framework of an Assembler Fi
*** 18998,19023 ****
function. If you need to do other things in that hook, have your
hook function call this function.
! - Macro: ASM_COMMENT_START
A C string constant describing how to begin a comment in the target
assembler language. The compiler assumes that the comment will
end at the end of the line.
! - Macro: ASM_APP_ON
A C string constant for text to be output before each `asm'
statement or group of consecutive ones. Normally this is
`"#APP"', which is a comment that has no effect on most assemblers
but tells the GNU assembler that it must check the lines that
follow for all valid assembler constructs.
! - Macro: ASM_APP_OFF
A C string constant for text to be output after each `asm'
statement or group of consecutive ones. Normally this is
`"#NO_APP"', which tells the GNU assembler to resume making the
time-saving assumptions that are valid for ordinary compiler
output.
! - Macro: ASM_OUTPUT_SOURCE_FILENAME (STREAM, NAME)
A C statement to output COFF information or DWARF debugging
information which indicates that filename NAME is the current
source file to the stdio stream STREAM.
--- 19014,19039 ----
function. If you need to do other things in that hook, have your
hook function call this function.
! -- Macro: ASM_COMMENT_START
A C string constant describing how to begin a comment in the target
assembler language. The compiler assumes that the comment will
end at the end of the line.
! -- Macro: ASM_APP_ON
A C string constant for text to be output before each `asm'
statement or group of consecutive ones. Normally this is
`"#APP"', which is a comment that has no effect on most assemblers
but tells the GNU assembler that it must check the lines that
follow for all valid assembler constructs.
! -- Macro: ASM_APP_OFF
A C string constant for text to be output after each `asm'
statement or group of consecutive ones. Normally this is
`"#NO_APP"', which tells the GNU assembler to resume making the
time-saving assumptions that are valid for ordinary compiler
output.
! -- Macro: ASM_OUTPUT_SOURCE_FILENAME (STREAM, NAME)
A C statement to output COFF information or DWARF debugging
information which indicates that filename NAME is the current
source file to the stdio stream STREAM.
*************** The Overall Framework of an Assembler Fi
*** 19025,19038 ****
This macro need not be defined if the standard form of output for
the file format in use is appropriate.
! - Macro: OUTPUT_QUOTED_STRING (STREAM, STRING)
A C statement to output the string STRING to the stdio stream
STREAM. If you do not call the function `output_quoted_string' in
your config files, GCC will only call it to output filenames to
the assembler source. So you can use it to canonicalize the format
of the filename using this macro.
! - Macro: ASM_OUTPUT_SOURCE_LINE (STREAM, LINE, COUNTER)
A C statement to output DBX or SDB debugging information before
code for line number LINE of the current source file to the stdio
stream STREAM. COUNTER is the number of time the macro was
--- 19041,19054 ----
This macro need not be defined if the standard form of output for
the file format in use is appropriate.
! -- Macro: OUTPUT_QUOTED_STRING (STREAM, STRING)
A C statement to output the string STRING to the stdio stream
STREAM. If you do not call the function `output_quoted_string' in
your config files, GCC will only call it to output filenames to
the assembler source. So you can use it to canonicalize the format
of the filename using this macro.
! -- Macro: ASM_OUTPUT_SOURCE_LINE (STREAM, LINE, COUNTER)
A C statement to output DBX or SDB debugging information before
code for line number LINE of the current source file to the stdio
stream STREAM. COUNTER is the number of time the macro was
*************** The Overall Framework of an Assembler Fi
*** 19042,19053 ****
This macro need not be defined if the standard form of debugging
information for the debugger in use is appropriate.
! - Macro: ASM_OUTPUT_IDENT (STREAM, STRING)
A C statement to output something to the assembler file to handle a
`#ident' directive containing the text STRING. If this macro is
not defined, nothing is output for a `#ident' directive.
! - Target Hook: void TARGET_ASM_NAMED_SECTION (const char *NAME,
unsigned int FLAGS, unsigned int ALIGN)
Output assembly directives to switch to section NAME. The section
should have attributes as specified by FLAGS, which is a bit mask
--- 19058,19069 ----
This macro need not be defined if the standard form of debugging
information for the debugger in use is appropriate.
! -- Macro: ASM_OUTPUT_IDENT (STREAM, STRING)
A C statement to output something to the assembler file to handle a
`#ident' directive containing the text STRING. If this macro is
not defined, nothing is output for a `#ident' directive.
! -- Target Hook: void TARGET_ASM_NAMED_SECTION (const char *NAME,
unsigned int FLAGS, unsigned int ALIGN)
Output assembly directives to switch to section NAME. The section
should have attributes as specified by FLAGS, which is a bit mask
*************** The Overall Framework of an Assembler Fi
*** 19058,19068 ****
directive need pay attention to ALIGN - we will still use
`ASM_OUTPUT_ALIGN'.
! - Target Hook: bool TARGET_HAVE_NAMED_SECTIONS
This flag is true if the target supports
`TARGET_ASM_NAMED_SECTION'.
! - Target Hook: unsigned int TARGET_SECTION_TYPE_FLAGS (tree DECL,
const char *NAME, int RELOC)
Choose a set of section attributes for use by
`TARGET_ASM_NAMED_SECTION' based on a variable or function decl, a
--- 19074,19084 ----
directive need pay attention to ALIGN - we will still use
`ASM_OUTPUT_ALIGN'.
! -- Target Hook: bool TARGET_HAVE_NAMED_SECTIONS
This flag is true if the target supports
`TARGET_ASM_NAMED_SECTION'.
! -- Target Hook: unsigned int TARGET_SECTION_TYPE_FLAGS (tree DECL,
const char *NAME, int RELOC)
Choose a set of section attributes for use by
`TARGET_ASM_NAMED_SECTION' based on a variable or function decl, a
*************** The Overall Framework of an Assembler Fi
*** 19078,19095 ****
File: gccint.info, Node: Data Output, Next: Uninitialized Data, Prev: File Framework, Up: Assembler Format
! Output of Data
! --------------
! - Target Hook: const char * TARGET_ASM_BYTE_OP
! - Target Hook: const char * TARGET_ASM_ALIGNED_HI_OP
! - Target Hook: const char * TARGET_ASM_ALIGNED_SI_OP
! - Target Hook: const char * TARGET_ASM_ALIGNED_DI_OP
! - Target Hook: const char * TARGET_ASM_ALIGNED_TI_OP
! - Target Hook: const char * TARGET_ASM_UNALIGNED_HI_OP
! - Target Hook: const char * TARGET_ASM_UNALIGNED_SI_OP
! - Target Hook: const char * TARGET_ASM_UNALIGNED_DI_OP
! - Target Hook: const char * TARGET_ASM_UNALIGNED_TI_OP
These hooks specify assembly directives for creating certain kinds
of integer object. The `TARGET_ASM_BYTE_OP' directive creates a
byte-sized object, the `TARGET_ASM_ALIGNED_HI_OP' one creates an
--- 19094,19111 ----
File: gccint.info, Node: Data Output, Next: Uninitialized Data, Prev: File Framework, Up: Assembler Format
! 11.20.2 Output of Data
! ----------------------
! -- Target Hook: const char * TARGET_ASM_BYTE_OP
! -- Target Hook: const char * TARGET_ASM_ALIGNED_HI_OP
! -- Target Hook: const char * TARGET_ASM_ALIGNED_SI_OP
! -- Target Hook: const char * TARGET_ASM_ALIGNED_DI_OP
! -- Target Hook: const char * TARGET_ASM_ALIGNED_TI_OP
! -- Target Hook: const char * TARGET_ASM_UNALIGNED_HI_OP
! -- Target Hook: const char * TARGET_ASM_UNALIGNED_SI_OP
! -- Target Hook: const char * TARGET_ASM_UNALIGNED_DI_OP
! -- Target Hook: const char * TARGET_ASM_UNALIGNED_TI_OP
These hooks specify assembly directives for creating certain kinds
of integer object. The `TARGET_ASM_BYTE_OP' directive creates a
byte-sized object, the `TARGET_ASM_ALIGNED_HI_OP' one creates an
*************** Output of Data
*** 19100,19106 ****
followed immediately by the object's initial value. In most cases,
the string should contain a tab, a pseudo-op, and then another tab.
! - Target Hook: bool TARGET_ASM_INTEGER (rtx X, unsigned int SIZE, int
ALIGNED_P)
The `assemble_integer' function uses this hook to output an
integer object. X is the object's value, SIZE is its size in
--- 19116,19122 ----
followed immediately by the object's initial value. In most cases,
the string should contain a tab, a pseudo-op, and then another tab.
! -- Target Hook: bool TARGET_ASM_INTEGER (rtx X, unsigned int SIZE, int
ALIGNED_P)
The `assemble_integer' function uses this hook to output an
integer object. X is the object's value, SIZE is its size in
*************** Output of Data
*** 19113,19119 ****
`TARGET_ASM_BYTE_OP' family of strings, returning `false' when the
relevant string is `NULL'.
! - Macro: OUTPUT_ADDR_CONST_EXTRA (STREAM, X, FAIL)
A C statement to recognize RTX patterns that `output_addr_const'
can't deal with, and output assembly code to STREAM corresponding
to the pattern X. This may be used to allow machine-dependent
--- 19129,19135 ----
`TARGET_ASM_BYTE_OP' family of strings, returning `false' when the
relevant string is `NULL'.
! -- Macro: OUTPUT_ADDR_CONST_EXTRA (STREAM, X, FAIL)
A C statement to recognize RTX patterns that `output_addr_const'
can't deal with, and output assembly code to STREAM corresponding
to the pattern X. This may be used to allow machine-dependent
*************** Output of Data
*** 19124,19130 ****
prints an error message itself, by calling, for example,
`output_operand_lossage', it may just complete normally.
! - Macro: ASM_OUTPUT_ASCII (STREAM, PTR, LEN)
A C statement to output to the stdio stream STREAM an assembler
instruction to assemble a string constant containing the LEN bytes
at PTR. PTR will be a C expression of type `char *' and LEN a C
--- 19140,19146 ----
prints an error message itself, by calling, for example,
`output_operand_lossage', it may just complete normally.
! -- Macro: ASM_OUTPUT_ASCII (STREAM, PTR, LEN)
A C statement to output to the stdio stream STREAM an assembler
instruction to assemble a string constant containing the LEN bytes
at PTR. PTR will be a C expression of type `char *' and LEN a C
*************** Output of Data
*** 19133,19144 ****
If the assembler has a `.ascii' pseudo-op as found in the Berkeley
Unix assembler, do not define the macro `ASM_OUTPUT_ASCII'.
! - Macro: ASM_OUTPUT_FDESC (STREAM, DECL, N)
A C statement to output word N of a function descriptor for DECL.
This must be defined if `TARGET_VTABLE_USES_DESCRIPTORS' is
defined, and is otherwise unused.
! - Macro: CONSTANT_POOL_BEFORE_FUNCTION
You may define this macro as a C expression. You should define the
expression to have a nonzero value if GCC should output the
constant pool for a function before the code for the function, or
--- 19149,19160 ----
If the assembler has a `.ascii' pseudo-op as found in the Berkeley
Unix assembler, do not define the macro `ASM_OUTPUT_ASCII'.
! -- Macro: ASM_OUTPUT_FDESC (STREAM, DECL, N)
A C statement to output word N of a function descriptor for DECL.
This must be defined if `TARGET_VTABLE_USES_DESCRIPTORS' is
defined, and is otherwise unused.
! -- Macro: CONSTANT_POOL_BEFORE_FUNCTION
You may define this macro as a C expression. You should define the
expression to have a nonzero value if GCC should output the
constant pool for a function before the code for the function, or
*************** Output of Data
*** 19146,19152 ****
function. If you do not define this macro, the usual case, GCC
will output the constant pool before the function.
! - Macro: ASM_OUTPUT_POOL_PROLOGUE (FILE, FUNNAME, FUNDECL, SIZE)
A C statement to output assembler commands to define the start of
the constant pool for a function. FUNNAME is a string giving the
name of the function. Should the return type of the function be
--- 19162,19168 ----
function. If you do not define this macro, the usual case, GCC
will output the constant pool before the function.
! -- Macro: ASM_OUTPUT_POOL_PROLOGUE (FILE, FUNNAME, FUNDECL, SIZE)
A C statement to output assembler commands to define the start of
the constant pool for a function. FUNNAME is a string giving the
name of the function. Should the return type of the function be
*************** Output of Data
*** 19157,19164 ****
If no constant-pool prefix is required, the usual case, this macro
need not be defined.
! - Macro: ASM_OUTPUT_SPECIAL_POOL_ENTRY (FILE, X, MODE, ALIGN, LABELNO,
! JUMPTO)
A C statement (with or without semicolon) to output a constant in
the constant pool, if it needs special treatment. (This macro
need not do anything for RTL expressions that can be output
--- 19173,19180 ----
If no constant-pool prefix is required, the usual case, this macro
need not be defined.
! -- Macro: ASM_OUTPUT_SPECIAL_POOL_ENTRY (FILE, X, MODE, ALIGN,
! LABELNO, JUMPTO)
A C statement (with or without semicolon) to output a constant in
the constant pool, if it needs special treatment. (This macro
need not do anything for RTL expressions that can be output
*************** Output of Data
*** 19183,19189 ****
You need not define this macro if it would do nothing.
! - Macro: ASM_OUTPUT_POOL_EPILOGUE (FILE FUNNAME FUNDECL SIZE)
A C statement to output assembler commands to at the end of the
constant pool for a function. FUNNAME is a string giving the name
of the function. Should the return type of the function be
--- 19199,19205 ----
You need not define this macro if it would do nothing.
! -- Macro: ASM_OUTPUT_POOL_EPILOGUE (FILE FUNNAME FUNDECL SIZE)
A C statement to output assembler commands to at the end of the
constant pool for a function. FUNNAME is a string giving the name
of the function. Should the return type of the function be
*************** Output of Data
*** 19194,19208 ****
If no constant-pool epilogue is required, the usual case, you need
not define this macro.
! - Macro: IS_ASM_LOGICAL_LINE_SEPARATOR (C)
Define this macro as a C expression which is nonzero if C is used
as a logical line separator by the assembler.
If you do not define this macro, the default is that only the
character `;' is treated as a logical line separator.
! - Target Hook: const char * TARGET_ASM_OPEN_PAREN
! - Target Hook: const char * TARGET_ASM_CLOSE_PAREN
These target hooks are C string constants, describing the syntax
in the assembler for grouping arithmetic expressions. If not
overridden, they default to normal parentheses, which is correct
--- 19210,19224 ----
If no constant-pool epilogue is required, the usual case, you need
not define this macro.
! -- Macro: IS_ASM_LOGICAL_LINE_SEPARATOR (C)
Define this macro as a C expression which is nonzero if C is used
as a logical line separator by the assembler.
If you do not define this macro, the default is that only the
character `;' is treated as a logical line separator.
! -- Target Hook: const char * TARGET_ASM_OPEN_PAREN
! -- Target Hook: const char * TARGET_ASM_CLOSE_PAREN
These target hooks are C string constants, describing the syntax
in the assembler for grouping arithmetic expressions. If not
overridden, they default to normal parentheses, which is correct
*************** Output of Data
*** 19211,19219 ****
These macros are provided by `real.h' for writing the definitions of
`ASM_OUTPUT_DOUBLE' and the like:
! - Macro: REAL_VALUE_TO_TARGET_SINGLE (X, L)
! - Macro: REAL_VALUE_TO_TARGET_DOUBLE (X, L)
! - Macro: REAL_VALUE_TO_TARGET_LONG_DOUBLE (X, L)
These translate X, of type `REAL_VALUE_TYPE', to the target's
floating point representation, and store its bit pattern in the
variable L. For `REAL_VALUE_TO_TARGET_SINGLE', this variable
--- 19227,19235 ----
These macros are provided by `real.h' for writing the definitions of
`ASM_OUTPUT_DOUBLE' and the like:
! -- Macro: REAL_VALUE_TO_TARGET_SINGLE (X, L)
! -- Macro: REAL_VALUE_TO_TARGET_DOUBLE (X, L)
! -- Macro: REAL_VALUE_TO_TARGET_LONG_DOUBLE (X, L)
These translate X, of type `REAL_VALUE_TYPE', to the target's
floating point representation, and store its bit pattern in the
variable L. For `REAL_VALUE_TO_TARGET_SINGLE', this variable
*************** Output of Data
*** 19231,19243 ****
File: gccint.info, Node: Uninitialized Data, Next: Label Output, Prev: Data Output, Up: Assembler Format
! Output of Uninitialized Variables
! ---------------------------------
! Each of the macros in this section is used to do the whole job of
outputting a single uninitialized variable.
! - Macro: ASM_OUTPUT_COMMON (STREAM, NAME, SIZE, ROUNDED)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of a common-label named NAME whose
size is SIZE bytes. The variable ROUNDED is the size rounded up
--- 19247,19259 ----
File: gccint.info, Node: Uninitialized Data, Next: Label Output, Prev: Data Output, Up: Assembler Format
! 11.20.3 Output of Uninitialized Variables
! -----------------------------------------
! Each of the macros in this section is used to do the whole job of
outputting a single uninitialized variable.
! -- Macro: ASM_OUTPUT_COMMON (STREAM, NAME, SIZE, ROUNDED)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of a common-label named NAME whose
size is SIZE bytes. The variable ROUNDED is the size rounded up
*************** outputting a single uninitialized variab
*** 19250,19263 ****
This macro controls how the assembler definitions of uninitialized
common global variables are output.
! - Macro: ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)
Like `ASM_OUTPUT_COMMON' except takes the required alignment as a
separate, explicit argument. If you define this macro, it is used
in place of `ASM_OUTPUT_COMMON', and gives you more flexibility in
handling the required alignment of the variable. The alignment is
specified as the number of bits.
! - Macro: ASM_OUTPUT_ALIGNED_DECL_COMMON (STREAM, DECL, NAME, SIZE,
ALIGNMENT)
Like `ASM_OUTPUT_ALIGNED_COMMON' except that DECL of the variable
to be output, if there is one, or `NULL_TREE' if there is no
--- 19266,19279 ----
This macro controls how the assembler definitions of uninitialized
common global variables are output.
! -- Macro: ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)
Like `ASM_OUTPUT_COMMON' except takes the required alignment as a
separate, explicit argument. If you define this macro, it is used
in place of `ASM_OUTPUT_COMMON', and gives you more flexibility in
handling the required alignment of the variable. The alignment is
specified as the number of bits.
! -- Macro: ASM_OUTPUT_ALIGNED_DECL_COMMON (STREAM, DECL, NAME, SIZE,
ALIGNMENT)
Like `ASM_OUTPUT_ALIGNED_COMMON' except that DECL of the variable
to be output, if there is one, or `NULL_TREE' if there is no
*************** outputting a single uninitialized variab
*** 19266,19277 ****
`ASM_OUTPUT_ALIGNED_COMMON'. Define this macro when you need to
see the variable's decl in order to chose what to output.
! - Macro: ASM_OUTPUT_SHARED_COMMON (STREAM, NAME, SIZE, ROUNDED)
If defined, it is similar to `ASM_OUTPUT_COMMON', except that it
is used when NAME is shared. If not defined, `ASM_OUTPUT_COMMON'
will be used.
! - Macro: ASM_OUTPUT_BSS (STREAM, DECL, NAME, SIZE, ROUNDED)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of uninitialized global DECL named
NAME whose size is SIZE bytes. The variable ROUNDED is the size
--- 19282,19293 ----
`ASM_OUTPUT_ALIGNED_COMMON'. Define this macro when you need to
see the variable's decl in order to chose what to output.
! -- Macro: ASM_OUTPUT_SHARED_COMMON (STREAM, NAME, SIZE, ROUNDED)
If defined, it is similar to `ASM_OUTPUT_COMMON', except that it
is used when NAME is shared. If not defined, `ASM_OUTPUT_COMMON'
will be used.
! -- Macro: ASM_OUTPUT_BSS (STREAM, DECL, NAME, SIZE, ROUNDED)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of uninitialized global DECL named
NAME whose size is SIZE bytes. The variable ROUNDED is the size
*************** outputting a single uninitialized variab
*** 19291,19297 ****
`ASM_OUTPUT_COMMON' or `ASM_OUTPUT_ALIGNED_COMMON' or
`ASM_OUTPUT_ALIGNED_DECL_COMMON' is used.
! - Macro: ASM_OUTPUT_ALIGNED_BSS (STREAM, DECL, NAME, SIZE, ALIGNMENT)
Like `ASM_OUTPUT_BSS' except takes the required alignment as a
separate, explicit argument. If you define this macro, it is used
in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
--- 19307,19313 ----
`ASM_OUTPUT_COMMON' or `ASM_OUTPUT_ALIGNED_COMMON' or
`ASM_OUTPUT_ALIGNED_DECL_COMMON' is used.
! -- Macro: ASM_OUTPUT_ALIGNED_BSS (STREAM, DECL, NAME, SIZE, ALIGNMENT)
Like `ASM_OUTPUT_BSS' except takes the required alignment as a
separate, explicit argument. If you define this macro, it is used
in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
*************** outputting a single uninitialized variab
*** 19301,19312 ****
Try to use function `asm_output_aligned_bss' defined in file
`varasm.c' when defining this macro.
! - Macro: ASM_OUTPUT_SHARED_BSS (STREAM, DECL, NAME, SIZE, ROUNDED)
If defined, it is similar to `ASM_OUTPUT_BSS', except that it is
used when NAME is shared. If not defined, `ASM_OUTPUT_BSS' will
be used.
! - Macro: ASM_OUTPUT_LOCAL (STREAM, NAME, SIZE, ROUNDED)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of a local-common-label named NAME
whose size is SIZE bytes. The variable ROUNDED is the size
--- 19317,19328 ----
Try to use function `asm_output_aligned_bss' defined in file
`varasm.c' when defining this macro.
! -- Macro: ASM_OUTPUT_SHARED_BSS (STREAM, DECL, NAME, SIZE, ROUNDED)
If defined, it is similar to `ASM_OUTPUT_BSS', except that it is
used when NAME is shared. If not defined, `ASM_OUTPUT_BSS' will
be used.
! -- Macro: ASM_OUTPUT_LOCAL (STREAM, NAME, SIZE, ROUNDED)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of a local-common-label named NAME
whose size is SIZE bytes. The variable ROUNDED is the size
*************** outputting a single uninitialized variab
*** 19319,19332 ****
This macro controls how the assembler definitions of uninitialized
static variables are output.
! - Macro: ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)
Like `ASM_OUTPUT_LOCAL' except takes the required alignment as a
separate, explicit argument. If you define this macro, it is used
in place of `ASM_OUTPUT_LOCAL', and gives you more flexibility in
handling the required alignment of the variable. The alignment is
specified as the number of bits.
! - Macro: ASM_OUTPUT_ALIGNED_DECL_LOCAL (STREAM, DECL, NAME, SIZE,
ALIGNMENT)
Like `ASM_OUTPUT_ALIGNED_DECL' except that DECL of the variable to
be output, if there is one, or `NULL_TREE' if there is no
--- 19335,19348 ----
This macro controls how the assembler definitions of uninitialized
static variables are output.
! -- Macro: ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)
Like `ASM_OUTPUT_LOCAL' except takes the required alignment as a
separate, explicit argument. If you define this macro, it is used
in place of `ASM_OUTPUT_LOCAL', and gives you more flexibility in
handling the required alignment of the variable. The alignment is
specified as the number of bits.
! -- Macro: ASM_OUTPUT_ALIGNED_DECL_LOCAL (STREAM, DECL, NAME, SIZE,
ALIGNMENT)
Like `ASM_OUTPUT_ALIGNED_DECL' except that DECL of the variable to
be output, if there is one, or `NULL_TREE' if there is no
*************** outputting a single uninitialized variab
*** 19335,19341 ****
Define this macro when you need to see the variable's decl in
order to chose what to output.
! - Macro: ASM_OUTPUT_SHARED_LOCAL (STREAM, NAME, SIZE, ROUNDED)
If defined, it is similar to `ASM_OUTPUT_LOCAL', except that it is
used when NAME is shared. If not defined, `ASM_OUTPUT_LOCAL' will
be used.
--- 19351,19357 ----
Define this macro when you need to see the variable's decl in
order to chose what to output.
! -- Macro: ASM_OUTPUT_SHARED_LOCAL (STREAM, NAME, SIZE, ROUNDED)
If defined, it is similar to `ASM_OUTPUT_LOCAL', except that it is
used when NAME is shared. If not defined, `ASM_OUTPUT_LOCAL' will
be used.
*************** outputting a single uninitialized variab
*** 19343,19354 ****
File: gccint.info, Node: Label Output, Next: Initialization, Prev: Uninitialized Data, Up: Assembler Format
! Output and Generation of Labels
! -------------------------------
! This is about outputting labels.
! - Macro: ASM_OUTPUT_LABEL (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of a label named NAME. Use the
expression `assemble_name (STREAM, NAME)' to output the name
--- 19359,19370 ----
File: gccint.info, Node: Label Output, Next: Initialization, Prev: Uninitialized Data, Up: Assembler Format
! 11.20.4 Output and Generation of Labels
! ---------------------------------------
! This is about outputting labels.
! -- Macro: ASM_OUTPUT_LABEL (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM the assembler definition of a label named NAME. Use the
expression `assemble_name (STREAM, NAME)' to output the name
*************** Output and Generation of Labels
*** 19356,19362 ****
syntax for defining the name, and a newline. A default definition
of this macro is provided which is correct for most systems.
! - Macro: SIZE_ASM_OP
A C string containing the appropriate assembler directive to
specify the size of a symbol, without any arguments. On systems
that use ELF, the default (in `config/elfos.h') is `"\t.size\t"';
--- 19372,19378 ----
syntax for defining the name, and a newline. A default definition
of this macro is provided which is correct for most systems.
! -- Macro: SIZE_ASM_OP
A C string containing the appropriate assembler directive to
specify the size of a symbol, without any arguments. On systems
that use ELF, the default (in `config/elfos.h') is `"\t.size\t"';
*************** Output and Generation of Labels
*** 19368,19380 ****
custom definitions of those macros, or if you do not need explicit
symbol sizes at all, do not define this macro.
! - Macro: ASM_OUTPUT_SIZE_DIRECTIVE (STREAM, NAME, SIZE)
A C statement (sans semicolon) to output to the stdio stream
STREAM a directive telling the assembler that the size of the
symbol NAME is SIZE. SIZE is a `HOST_WIDE_INT'. If you define
`SIZE_ASM_OP', a default definition of this macro is provided.
! - Macro: ASM_OUTPUT_MEASURED_SIZE (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM a directive telling the assembler to calculate the size of
the symbol NAME by subtracting its address from the current
--- 19384,19396 ----
custom definitions of those macros, or if you do not need explicit
symbol sizes at all, do not define this macro.
! -- Macro: ASM_OUTPUT_SIZE_DIRECTIVE (STREAM, NAME, SIZE)
A C statement (sans semicolon) to output to the stdio stream
STREAM a directive telling the assembler that the size of the
symbol NAME is SIZE. SIZE is a `HOST_WIDE_INT'. If you define
`SIZE_ASM_OP', a default definition of this macro is provided.
! -- Macro: ASM_OUTPUT_MEASURED_SIZE (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM a directive telling the assembler to calculate the size of
the symbol NAME by subtracting its address from the current
*************** Output and Generation of Labels
*** 19388,19394 ****
it, you will need to redefine `ASM_OUTPUT_MEASURED_SIZE' to use
some other technique.
! - Macro: TYPE_ASM_OP
A C string containing the appropriate assembler directive to
specify the type of a symbol, without any arguments. On systems
that use ELF, the default (in `config/elfos.h') is `"\t.type\t"';
--- 19404,19410 ----
it, you will need to redefine `ASM_OUTPUT_MEASURED_SIZE' to use
some other technique.
! -- Macro: TYPE_ASM_OP
A C string containing the appropriate assembler directive to
specify the type of a symbol, without any arguments. On systems
that use ELF, the default (in `config/elfos.h') is `"\t.type\t"';
*************** Output and Generation of Labels
*** 19399,19405 ****
need your own custom definition of this macro, or if you do not
need explicit symbol types at all, do not define this macro.
! - Macro: TYPE_OPERAND_FMT
A C string which specifies (using `printf' syntax) the format of
the second operand to `TYPE_ASM_OP'. On systems that use ELF, the
default (in `config/elfos.h') is `"@%s"'; on other systems, the
--- 19415,19421 ----
need your own custom definition of this macro, or if you do not
need explicit symbol types at all, do not define this macro.
! -- Macro: TYPE_OPERAND_FMT
A C string which specifies (using `printf' syntax) the format of
the second operand to `TYPE_ASM_OP'. On systems that use ELF, the
default (in `config/elfos.h') is `"@%s"'; on other systems, the
*************** Output and Generation of Labels
*** 19410,19416 ****
need your own custom definition of this macro, or if you do not
need explicit symbol types at all, do not define this macro.
! - Macro: ASM_OUTPUT_TYPE_DIRECTIVE (STREAM, TYPE)
A C statement (sans semicolon) to output to the stdio stream
STREAM a directive telling the assembler that the type of the
symbol NAME is TYPE. TYPE is a C string; currently, that string
--- 19426,19432 ----
need your own custom definition of this macro, or if you do not
need explicit symbol types at all, do not define this macro.
! -- Macro: ASM_OUTPUT_TYPE_DIRECTIVE (STREAM, TYPE)
A C statement (sans semicolon) to output to the stdio stream
STREAM a directive telling the assembler that the type of the
symbol NAME is TYPE. TYPE is a C string; currently, that string
*************** Output and Generation of Labels
*** 19420,19426 ****
If you define `TYPE_ASM_OP' and `TYPE_OPERAND_FMT', a default
definition of this macro is provided.
! - Macro: ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name NAME of a
function which is being defined. This macro is responsible for
--- 19436,19442 ----
If you define `TYPE_ASM_OP' and `TYPE_OPERAND_FMT', a default
definition of this macro is provided.
! -- Macro: ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name NAME of a
function which is being defined. This macro is responsible for
*************** Output and Generation of Labels
*** 19434,19440 ****
You may wish to use `ASM_OUTPUT_TYPE_DIRECTIVE' in the definition
of this macro.
! - Macro: ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the size of a function
which is being defined. The argument NAME is the name of the
--- 19450,19456 ----
You may wish to use `ASM_OUTPUT_TYPE_DIRECTIVE' in the definition
of this macro.
! -- Macro: ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the size of a function
which is being defined. The argument NAME is the name of the
*************** Output and Generation of Labels
*** 19447,19453 ****
You may wish to use `ASM_OUTPUT_MEASURED_SIZE' in the definition
of this macro.
! - Macro: ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name NAME of an
initialized variable which is being defined. This macro must
--- 19463,19469 ----
You may wish to use `ASM_OUTPUT_MEASURED_SIZE' in the definition
of this macro.
! -- Macro: ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name NAME of an
initialized variable which is being defined. This macro must
*************** Output and Generation of Labels
*** 19461,19467 ****
You may wish to use `ASM_OUTPUT_TYPE_DIRECTIVE' and/or
`ASM_OUTPUT_SIZE_DIRECTIVE' in the definition of this macro.
! - Macro: ASM_DECLARE_CONSTANT_NAME (STREAM, NAME, EXP, SIZE)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name NAME of a
constant which is being defined. This macro is responsible for
--- 19477,19483 ----
You may wish to use `ASM_OUTPUT_TYPE_DIRECTIVE' and/or
`ASM_OUTPUT_SIZE_DIRECTIVE' in the definition of this macro.
! -- Macro: ASM_DECLARE_CONSTANT_NAME (STREAM, NAME, EXP, SIZE)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name NAME of a
constant which is being defined. This macro is responsible for
*************** Output and Generation of Labels
*** 19476,19482 ****
You may wish to use `ASM_OUTPUT_TYPE_DIRECTIVE' in the definition
of this macro.
! - Macro: ASM_DECLARE_REGISTER_GLOBAL (STREAM, DECL, REGNO, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for claiming a register REGNO for a
global variable DECL with name NAME.
--- 19492,19498 ----
You may wish to use `ASM_OUTPUT_TYPE_DIRECTIVE' in the definition
of this macro.
! -- Macro: ASM_DECLARE_REGISTER_GLOBAL (STREAM, DECL, REGNO, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for claiming a register REGNO for a
global variable DECL with name NAME.
*************** Output and Generation of Labels
*** 19484,19490 ****
If you don't define this macro, that is equivalent to defining it
to do nothing.
! - Macro: ASM_FINISH_DECLARE_OBJECT (STREAM, DECL, TOPLEVEL, ATEND)
A C statement (sans semicolon) to finish up declaring a variable
name once the compiler has processed its initializer fully and
thus has had a chance to determine the size of an array when
--- 19500,19506 ----
If you don't define this macro, that is equivalent to defining it
to do nothing.
! -- Macro: ASM_FINISH_DECLARE_OBJECT (STREAM, DECL, TOPLEVEL, ATEND)
A C statement (sans semicolon) to finish up declaring a variable
name once the compiler has processed its initializer fully and
thus has had a chance to determine the size of an array when
*************** Output and Generation of Labels
*** 19497,19503 ****
You may wish to use `ASM_OUTPUT_SIZE_DIRECTIVE' and/or
`ASM_OUTPUT_MEASURED_SIZE' in the definition of this macro.
! - Target Hook: void TARGET_ASM_GLOBALIZE_LABEL (FILE *STREAM, const
char *NAME)
This target hook is a function to output to the stdio stream
STREAM some commands that will make the label NAME global; that
--- 19513,19519 ----
You may wish to use `ASM_OUTPUT_SIZE_DIRECTIVE' and/or
`ASM_OUTPUT_MEASURED_SIZE' in the definition of this macro.
! -- Target Hook: void TARGET_ASM_GLOBALIZE_LABEL (FILE *STREAM, const
char *NAME)
This target hook is a function to output to the stdio stream
STREAM some commands that will make the label NAME global; that
*************** Output and Generation of Labels
*** 19506,19512 ****
The default implementation relies on a proper definition of
`GLOBAL_ASM_OP'.
! - Macro: ASM_WEAKEN_LABEL (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM some commands that will make the label NAME weak; that is,
available for reference from other files but only used if no other
--- 19522,19528 ----
The default implementation relies on a proper definition of
`GLOBAL_ASM_OP'.
! -- Macro: ASM_WEAKEN_LABEL (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM some commands that will make the label NAME weak; that is,
available for reference from other files but only used if no other
*************** Output and Generation of Labels
*** 19519,19525 ****
support weak symbols and you should not define the `SUPPORTS_WEAK'
macro.
! - Macro: ASM_WEAKEN_DECL (STREAM, DECL, NAME, VALUE)
Combines (and replaces) the function of `ASM_WEAKEN_LABEL' and
`ASM_OUTPUT_WEAK_ALIAS', allowing access to the associated function
or variable decl. If VALUE is not `NULL', this C statement should
--- 19535,19541 ----
support weak symbols and you should not define the `SUPPORTS_WEAK'
macro.
! -- Macro: ASM_WEAKEN_DECL (STREAM, DECL, NAME, VALUE)
Combines (and replaces) the function of `ASM_WEAKEN_LABEL' and
`ASM_OUTPUT_WEAK_ALIAS', allowing access to the associated function
or variable decl. If VALUE is not `NULL', this C statement should
*************** Output and Generation of Labels
*** 19527,19533 ****
(equates) the weak symbol NAME to have the value VALUE. If VALUE
is `NULL', it should output commands to make NAME weak.
! - Macro: SUPPORTS_WEAK
A C expression which evaluates to true if the target supports weak
symbols.
--- 19543,19549 ----
(equates) the weak symbol NAME to have the value VALUE. If VALUE
is `NULL', it should output commands to make NAME weak.
! -- Macro: SUPPORTS_WEAK
A C expression which evaluates to true if the target supports weak
symbols.
*************** Output and Generation of Labels
*** 19537,19543 ****
Define this macro if you want to control weak symbol support with
a compiler flag such as `-melf'.
! - Macro: MAKE_DECL_ONE_ONLY (DECL)
A C statement (sans semicolon) to mark DECL to be emitted as a
public symbol such that extra copies in multiple translation units
will be discarded by the linker. Define this macro if your object
--- 19553,19559 ----
Define this macro if you want to control weak symbol support with
a compiler flag such as `-melf'.
! -- Macro: MAKE_DECL_ONE_ONLY (DECL)
A C statement (sans semicolon) to mark DECL to be emitted as a
public symbol such that extra copies in multiple translation units
will be discarded by the linker. Define this macro if your object
*************** Output and Generation of Labels
*** 19546,19552 ****
support requires changes to DECL, such as putting it in a separate
section.
! - Macro: SUPPORTS_ONE_ONLY
A C expression which evaluates to true if the target supports
one-only semantics.
--- 19562,19568 ----
support requires changes to DECL, such as putting it in a separate
section.
! -- Macro: SUPPORTS_ONE_ONLY
A C expression which evaluates to true if the target supports
one-only semantics.
*************** Output and Generation of Labels
*** 19557,19570 ****
setting the `DECL_ONE_ONLY' flag is enough to mark a declaration to
be emitted as one-only.
! - Target Hook: void TARGET_ASM_ASSEMBLE_VISIBILITY (tree DECL, const
char *VISIBILITY)
This target hook is a function to output to ASM_OUT_FILE some
commands that will make the symbol(s) associated with DECL have
hidden, protected or internal visibility as specified by
VISIBILITY.
! - Macro: ASM_OUTPUT_EXTERNAL (STREAM, DECL, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name of an external
symbol named NAME which is referenced in this compilation but not
--- 19573,19586 ----
setting the `DECL_ONE_ONLY' flag is enough to mark a declaration to
be emitted as one-only.
! -- Target Hook: void TARGET_ASM_ASSEMBLE_VISIBILITY (tree DECL, const
char *VISIBILITY)
This target hook is a function to output to ASM_OUT_FILE some
commands that will make the symbol(s) associated with DECL have
hidden, protected or internal visibility as specified by
VISIBILITY.
! -- Macro: ASM_OUTPUT_EXTERNAL (STREAM, DECL, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the name of an external
symbol named NAME which is referenced in this compilation but not
*************** Output and Generation of Labels
*** 19574,19600 ****
anything. The GNU assembler and most Unix assemblers don't
require anything.
! - Target Hook: void TARGET_ASM_EXTERNAL_LIBCALL (rtx SYMREF)
This target hook is a function to output to ASM_OUT_FILE an
assembler pseudo-op to declare a library function name external.
The name of the library function is given by SYMREF, which is a
`symbol_ref'.
! - Macro: ASM_OUTPUT_LABELREF (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM a reference in assembler syntax to a label named NAME.
This should add `_' to the front of the name, if that is customary
on your operating system, as it is in most Berkeley Unix systems.
This macro is used in `assemble_name'.
! - Macro: ASM_OUTPUT_SYMBOL_REF (STREAM, SYM)
A C statement (sans semicolon) to output a reference to
`SYMBOL_REF' SYM. If not defined, `assemble_name' will be used to
output the name of the symbol. This macro may be used to modify
the way a symbol is referenced depending on information encoded by
`TARGET_ENCODE_SECTION_INFO'.
! - Macro: ASM_OUTPUT_LABEL_REF (STREAM, BUF)
A C statement (sans semicolon) to output a reference to BUF, the
result of `ASM_GENERATE_INTERNAL_LABEL'. If not defined,
`assemble_name' will be used to output the name of the symbol.
--- 19590,19616 ----
anything. The GNU assembler and most Unix assemblers don't
require anything.
! -- Target Hook: void TARGET_ASM_EXTERNAL_LIBCALL (rtx SYMREF)
This target hook is a function to output to ASM_OUT_FILE an
assembler pseudo-op to declare a library function name external.
The name of the library function is given by SYMREF, which is a
`symbol_ref'.
! -- Macro: ASM_OUTPUT_LABELREF (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM a reference in assembler syntax to a label named NAME.
This should add `_' to the front of the name, if that is customary
on your operating system, as it is in most Berkeley Unix systems.
This macro is used in `assemble_name'.
! -- Macro: ASM_OUTPUT_SYMBOL_REF (STREAM, SYM)
A C statement (sans semicolon) to output a reference to
`SYMBOL_REF' SYM. If not defined, `assemble_name' will be used to
output the name of the symbol. This macro may be used to modify
the way a symbol is referenced depending on information encoded by
`TARGET_ENCODE_SECTION_INFO'.
! -- Macro: ASM_OUTPUT_LABEL_REF (STREAM, BUF)
A C statement (sans semicolon) to output a reference to BUF, the
result of `ASM_GENERATE_INTERNAL_LABEL'. If not defined,
`assemble_name' will be used to output the name of the symbol.
*************** Output and Generation of Labels
*** 19603,19609 ****
be set when it is necessary to output a label differently when its
address is being taken.
! - Target Hook: void TARGET_ASM_INTERNAL_LABEL (FILE *STREAM, const
char *PREFIX, unsigned long LABELNO)
A function to output to the stdio stream STREAM a label whose name
is made from the string PREFIX and the number LABELNO.
--- 19619,19625 ----
be set when it is necessary to output a label differently when its
address is being taken.
! -- Target Hook: void TARGET_ASM_INTERNAL_LABEL (FILE *STREAM, const
char *PREFIX, unsigned long LABELNO)
A function to output to the stdio stream STREAM a label whose name
is made from the string PREFIX and the number LABELNO.
*************** Output and Generation of Labels
*** 19621,19627 ****
The default version of this function utilizes
ASM_GENERATE_INTERNAL_LABEL.
! - Macro: ASM_OUTPUT_DEBUG_LABEL (STREAM, PREFIX, NUM)
A C statement to output to the stdio stream STREAM a debug info
label whose name is made from the string PREFIX and the number
NUM. This is useful for VLIW targets, where debug info labels may
--- 19637,19643 ----
The default version of this function utilizes
ASM_GENERATE_INTERNAL_LABEL.
! -- Macro: ASM_OUTPUT_DEBUG_LABEL (STREAM, PREFIX, NUM)
A C statement to output to the stdio stream STREAM a debug info
label whose name is made from the string PREFIX and the number
NUM. This is useful for VLIW targets, where debug info labels may
*************** Output and Generation of Labels
*** 19633,19639 ****
If this macro is not defined, then
`(*targetm.asm_out.internal_label)' will be used.
! - Macro: ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)
A C statement to store into the string STRING a label whose name
is made from the string PREFIX and the number NUM.
--- 19649,19655 ----
If this macro is not defined, then
`(*targetm.asm_out.internal_label)' will be used.
! -- Macro: ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)
A C statement to store into the string STRING a label whose name
is made from the string PREFIX and the number NUM.
*************** Output and Generation of Labels
*** 19649,19655 ****
`ASM_OUTPUT_LABELREF' is also part of your machine description, so
you should know what it does on your machine.)
! - Macro: ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)
A C expression to assign to OUTVAR (which is a variable of type
`char *') a newly allocated string made from the string NAME and
the number NUMBER, with some suitable punctuation added. Use
--- 19665,19671 ----
`ASM_OUTPUT_LABELREF' is also part of your machine description, so
you should know what it does on your machine.)
! -- Macro: ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)
A C expression to assign to OUTVAR (which is a variable of type
`char *') a newly allocated string made from the string NAME and
the number NUMBER, with some suitable punctuation added. Use
*************** Output and Generation of Labels
*** 19670,19683 ****
If this macro is not defined, a default definition will be provided
which is correct for most systems.
! - Macro: ASM_OUTPUT_DEF (STREAM, NAME, VALUE)
A C statement to output to the stdio stream STREAM assembler code
which defines (equates) the symbol NAME to have the value VALUE.
If `SET_ASM_OP' is defined, a default definition is provided which
is correct for most systems.
! - Macro: ASM_OUTPUT_DEF_FROM_DECLS (STREAM, DECL_OF_NAME,
DECL_OF_VALUE)
A C statement to output to the stdio stream STREAM assembler code
which defines (equates) the symbol whose tree node is DECL_OF_NAME
--- 19686,19699 ----
If this macro is not defined, a default definition will be provided
which is correct for most systems.
! -- Macro: ASM_OUTPUT_DEF (STREAM, NAME, VALUE)
A C statement to output to the stdio stream STREAM assembler code
which defines (equates) the symbol NAME to have the value VALUE.
If `SET_ASM_OP' is defined, a default definition is provided which
is correct for most systems.
! -- Macro: ASM_OUTPUT_DEF_FROM_DECLS (STREAM, DECL_OF_NAME,
DECL_OF_VALUE)
A C statement to output to the stdio stream STREAM assembler code
which defines (equates) the symbol whose tree node is DECL_OF_NAME
*************** Output and Generation of Labels
*** 19688,19694 ****
If `SET_ASM_OP' is defined, a default definition is provided which
is correct for most systems.
! - Macro: TARGET_DEFERRED_OUTPUT_DEFS (DECL_OF_NAME, DECL_OF_VALUE)
A C statement that evaluates to true if the assembler code which
defines (equates) the symbol whose tree node is DECL_OF_NAME to
have the value of the tree node DECL_OF_VALUE should be emitted
--- 19704,19710 ----
If `SET_ASM_OP' is defined, a default definition is provided which
is correct for most systems.
! -- Macro: TARGET_DEFERRED_OUTPUT_DEFS (DECL_OF_NAME, DECL_OF_VALUE)
A C statement that evaluates to true if the assembler code which
defines (equates) the symbol whose tree node is DECL_OF_NAME to
have the value of the tree node DECL_OF_VALUE should be emitted
*************** Output and Generation of Labels
*** 19696,19702 ****
not defer output of defines. This macro affects defines output by
`ASM_OUTPUT_DEF' and `ASM_OUTPUT_DEF_FROM_DECLS'.
! - Macro: ASM_OUTPUT_WEAK_ALIAS (STREAM, NAME, VALUE)
A C statement to output to the stdio stream STREAM assembler code
which defines (equates) the weak symbol NAME to have the value
VALUE. If VALUE is `NULL', it defines NAME as an undefined weak
--- 19712,19718 ----
not defer output of defines. This macro affects defines output by
`ASM_OUTPUT_DEF' and `ASM_OUTPUT_DEF_FROM_DECLS'.
! -- Macro: ASM_OUTPUT_WEAK_ALIAS (STREAM, NAME, VALUE)
A C statement to output to the stdio stream STREAM assembler code
which defines (equates) the weak symbol NAME to have the value
VALUE. If VALUE is `NULL', it defines NAME as an undefined weak
*************** Output and Generation of Labels
*** 19705,19711 ****
Define this macro if the target only supports weak aliases; define
`ASM_OUTPUT_DEF' instead if possible.
! - Macro: OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME,
SEL_NAME)
Define this macro to override the default assembler names used for
Objective-C methods.
--- 19721,19727 ----
Define this macro if the target only supports weak aliases; define
`ASM_OUTPUT_DEF' instead if possible.
! -- Macro: OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME,
SEL_NAME)
Define this macro to override the default assembler names used for
Objective-C methods.
*************** Output and Generation of Labels
*** 19731,19743 ****
On systems where the assembler can handle quoted names, you can
use this macro to provide more human-readable names.
! - Macro: ASM_DECLARE_CLASS_REFERENCE (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM commands to declare that the label NAME is an Objective-C
class reference. This is only needed for targets whose linkers
have special support for NeXT-style runtimes.
! - Macro: ASM_DECLARE_UNRESOLVED_REFERENCE (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM commands to declare that the label NAME is an unresolved
Objective-C class reference. This is only needed for targets
--- 19747,19759 ----
On systems where the assembler can handle quoted names, you can
use this macro to provide more human-readable names.
! -- Macro: ASM_DECLARE_CLASS_REFERENCE (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM commands to declare that the label NAME is an Objective-C
class reference. This is only needed for targets whose linkers
have special support for NeXT-style runtimes.
! -- Macro: ASM_DECLARE_UNRESOLVED_REFERENCE (STREAM, NAME)
A C statement (sans semicolon) to output to the stdio stream
STREAM commands to declare that the label NAME is an unresolved
Objective-C class reference. This is only needed for targets
*************** Output and Generation of Labels
*** 19746,19759 ****
File: gccint.info, Node: Initialization, Next: Macros for Initialization, Prev: Label Output, Up: Assembler Format
! How Initialization Functions Are Handled
! ----------------------------------------
! The compiled code for certain languages includes "constructors"
! (also called "initialization routines")--functions to initialize data
! in the program when the program is started. These functions need to be
! called before the program is "started"--that is to say, before `main'
! is called.
Compiling some languages generates "destructors" (also called
"termination routines") that should be called when the program
--- 19762,19775 ----
File: gccint.info, Node: Initialization, Next: Macros for Initialization, Prev: Label Output, Up: Assembler Format
! 11.20.5 How Initialization Functions Are Handled
! ------------------------------------------------
! The compiled code for certain languages includes "constructors" (also
! called "initialization routines")--functions to initialize data in the
! program when the program is started. These functions need to be called
! before the program is "started"--that is to say, before `main' is
! called.
Compiling some languages generates "destructors" (also called
"termination routines") that should be called when the program
*************** customize the handling of initialization
*** 19861,19873 ****
File: gccint.info, Node: Macros for Initialization, Next: Instruction Output, Prev: Initialization, Up: Assembler Format
! Macros Controlling Initialization Routines
! ------------------------------------------
! Here are the macros that control how the compiler handles
! initialization and termination functions:
! - Macro: INIT_SECTION_ASM_OP
If defined, a C string constant, including spacing, for the
assembler operation to identify the following data as
initialization code. If not defined, GCC will assume such a
--- 19877,19889 ----
File: gccint.info, Node: Macros for Initialization, Next: Instruction Output, Prev: Initialization, Up: Assembler Format
! 11.20.6 Macros Controlling Initialization Routines
! --------------------------------------------------
! Here are the macros that control how the compiler handles initialization
! and termination functions:
! -- Macro: INIT_SECTION_ASM_OP
If defined, a C string constant, including spacing, for the
assembler operation to identify the following data as
initialization code. If not defined, GCC will assume such a
*************** initialization and termination functions
*** 19876,19896 ****
how `crtstuff.c' and `libgcc2.c' arrange to run the initialization
functions.
! - Macro: HAS_INIT_SECTION
If defined, `main' will not call `__main' as described above.
This macro should be defined for systems that control start-up code
on a symbol-by-symbol basis, such as OSF/1, and should not be
defined explicitly for systems that support `INIT_SECTION_ASM_OP'.
! - Macro: LD_INIT_SWITCH
If defined, a C string constant for a switch that tells the linker
that the following symbol is an initialization routine.
! - Macro: LD_FINI_SWITCH
If defined, a C string constant for a switch that tells the linker
that the following symbol is a finalization routine.
! - Macro: COLLECT_SHARED_INIT_FUNC (STREAM, FUNC)
If defined, a C statement that will write a function that can be
automatically called when a shared library is loaded. The function
should call FUNC, which takes no arguments. If not defined, and
--- 19892,19912 ----
how `crtstuff.c' and `libgcc2.c' arrange to run the initialization
functions.
! -- Macro: HAS_INIT_SECTION
If defined, `main' will not call `__main' as described above.
This macro should be defined for systems that control start-up code
on a symbol-by-symbol basis, such as OSF/1, and should not be
defined explicitly for systems that support `INIT_SECTION_ASM_OP'.
! -- Macro: LD_INIT_SWITCH
If defined, a C string constant for a switch that tells the linker
that the following symbol is an initialization routine.
! -- Macro: LD_FINI_SWITCH
If defined, a C string constant for a switch that tells the linker
that the following symbol is a finalization routine.
! -- Macro: COLLECT_SHARED_INIT_FUNC (STREAM, FUNC)
If defined, a C statement that will write a function that can be
automatically called when a shared library is loaded. The function
should call FUNC, which takes no arguments. If not defined, and
*************** initialization and termination functions
*** 19901,19932 ****
linking a shared library that needs constructors or destructors,
or has DWARF2 exception tables embedded in the code.
! - Macro: COLLECT_SHARED_FINI_FUNC (STREAM, FUNC)
If defined, a C statement that will write a function that can be
automatically called when a shared library is unloaded. The
function should call FUNC, which takes no arguments. If not
defined, and the object format requires an explicit finalization
function, then a function called `_GLOBAL__DD' will be generated.
! - Macro: INVOKE__main
If defined, `main' will call `__main' despite the presence of
`INIT_SECTION_ASM_OP'. This macro should be defined for systems
where the init section is not actually run automatically, but is
still useful for collecting the lists of constructors and
destructors.
! - Macro: SUPPORTS_INIT_PRIORITY
If nonzero, the C++ `init_priority' attribute is supported and the
compiler should emit instructions to control the order of
initialization of objects. If zero, the compiler will issue an
error message upon encountering an `init_priority' attribute.
! - Target Hook: bool TARGET_HAVE_CTORS_DTORS
This value is true if the target supports some "native" method of
collecting constructors and destructors to be run at startup and
exit. It is false if we must use `collect2'.
! - Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx SYMBOL, int PRIORITY)
If defined, a function that outputs assembler code to arrange to
call the function referenced by SYMBOL at initialization time.
--- 19917,19948 ----
linking a shared library that needs constructors or destructors,
or has DWARF2 exception tables embedded in the code.
! -- Macro: COLLECT_SHARED_FINI_FUNC (STREAM, FUNC)
If defined, a C statement that will write a function that can be
automatically called when a shared library is unloaded. The
function should call FUNC, which takes no arguments. If not
defined, and the object format requires an explicit finalization
function, then a function called `_GLOBAL__DD' will be generated.
! -- Macro: INVOKE__main
If defined, `main' will call `__main' despite the presence of
`INIT_SECTION_ASM_OP'. This macro should be defined for systems
where the init section is not actually run automatically, but is
still useful for collecting the lists of constructors and
destructors.
! -- Macro: SUPPORTS_INIT_PRIORITY
If nonzero, the C++ `init_priority' attribute is supported and the
compiler should emit instructions to control the order of
initialization of objects. If zero, the compiler will issue an
error message upon encountering an `init_priority' attribute.
! -- Target Hook: bool TARGET_HAVE_CTORS_DTORS
This value is true if the target supports some "native" method of
collecting constructors and destructors to be run at startup and
exit. It is false if we must use `collect2'.
! -- Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx SYMBOL, int PRIORITY)
If defined, a function that outputs assembler code to arrange to
call the function referenced by SYMBOL at initialization time.
*************** initialization and termination functions
*** 19940,19946 ****
the target defines `CTORS_SECTION_ASM_OP', or (3) `USE_COLLECT2'
is not defined.
! - Target Hook: void TARGET_ASM_DESTRUCTOR (rtx SYMBOL, int PRIORITY)
This is like `TARGET_ASM_CONSTRUCTOR' but used for termination
functions rather than initialization functions.
--- 19956,19962 ----
the target defines `CTORS_SECTION_ASM_OP', or (3) `USE_COLLECT2'
is not defined.
! -- Target Hook: void TARGET_ASM_DESTRUCTOR (rtx SYMBOL, int PRIORITY)
This is like `TARGET_ASM_CONSTRUCTOR' but used for termination
functions rather than initialization functions.
*************** file for constructor functions to be cal
*** 19954,19960 ****
On certain kinds of systems, you can define this macro to make
`collect2' work faster (and, in some cases, make it work at all):
! - Macro: OBJECT_FORMAT_COFF
Define this macro if the system uses COFF (Common Object File
Format) object files, so that `collect2' can assume this format
and scan object files directly for dynamic constructor/destructor
--- 19970,19976 ----
On certain kinds of systems, you can define this macro to make
`collect2' work faster (and, in some cases, make it work at all):
! -- Macro: OBJECT_FORMAT_COFF
Define this macro if the system uses COFF (Common Object File
Format) object files, so that `collect2' can assume this format
and scan object files directly for dynamic constructor/destructor
*************** file for constructor functions to be cal
*** 19963,19974 ****
This macro is effective only in a native compiler; `collect2' as
part of a cross compiler always uses `nm' for the target machine.
! - Macro: COLLECT_PARSE_FLAG (FLAG)
Define this macro to be C code that examines `collect2' command
line option FLAG and performs special actions if `collect2' needs
to behave differently depending on FLAG.
! - Macro: REAL_NM_FILE_NAME
Define this macro as a C string constant containing the file name
to use to execute `nm'. The default is to search the path
normally for `nm'.
--- 19979,19990 ----
This macro is effective only in a native compiler; `collect2' as
part of a cross compiler always uses `nm' for the target machine.
! -- Macro: COLLECT_PARSE_FLAG (FLAG)
Define this macro to be C code that examines `collect2' command
line option FLAG and performs special actions if `collect2' needs
to behave differently depending on FLAG.
! -- Macro: REAL_NM_FILE_NAME
Define this macro as a C string constant containing the file name
to use to execute `nm'. The default is to search the path
normally for `nm'.
*************** file for constructor functions to be cal
*** 19978,19989 ****
define these macros to enable support for running initialization
and termination functions in shared libraries:
! - Macro: LDD_SUFFIX
Define this macro to a C string constant containing the name of
the program which lists dynamic dependencies, like `"ldd"' under
SunOS 4.
! - Macro: PARSE_LDD_OUTPUT (PTR)
Define this macro to be C code that extracts filenames from the
output of the program denoted by `LDD_SUFFIX'. PTR is a variable
of type `char *' that points to the beginning of a line of output
--- 19994,20005 ----
define these macros to enable support for running initialization
and termination functions in shared libraries:
! -- Macro: LDD_SUFFIX
Define this macro to a C string constant containing the name of
the program which lists dynamic dependencies, like `"ldd"' under
SunOS 4.
! -- Macro: PARSE_LDD_OUTPUT (PTR)
Define this macro to be C code that extracts filenames from the
output of the program denoted by `LDD_SUFFIX'. PTR is a variable
of type `char *' that points to the beginning of a line of output
*************** file for constructor functions to be cal
*** 19994,20017 ****
File: gccint.info, Node: Instruction Output, Next: Dispatch Tables, Prev: Macros for Initialization, Up: Assembler Format
! Output of Assembler Instructions
! --------------------------------
! This describes assembler instruction output.
! - Macro: REGISTER_NAMES
A C initializer containing the assembler's names for the machine
registers, each one as a C string constant. This is what
translates register numbers in the compiler into assembler
language.
! - Macro: ADDITIONAL_REGISTER_NAMES
If defined, a C initializer for an array of structures containing
a name and a register number. This macro defines additional names
for hard registers, thus allowing the `asm' option in declarations
to refer to registers using alternate names.
! - Macro: ASM_OUTPUT_OPCODE (STREAM, PTR)
Define this macro if you are using an unusual assembler that
requires different names for the machine instructions.
--- 20010,20033 ----
File: gccint.info, Node: Instruction Output, Next: Dispatch Tables, Prev: Macros for Initialization, Up: Assembler Format
! 11.20.7 Output of Assembler Instructions
! ----------------------------------------
! This describes assembler instruction output.
! -- Macro: REGISTER_NAMES
A C initializer containing the assembler's names for the machine
registers, each one as a C string constant. This is what
translates register numbers in the compiler into assembler
language.
! -- Macro: ADDITIONAL_REGISTER_NAMES
If defined, a C initializer for an array of structures containing
a name and a register number. This macro defines additional names
for hard registers, thus allowing the `asm' option in declarations
to refer to registers using alternate names.
! -- Macro: ASM_OUTPUT_OPCODE (STREAM, PTR)
Define this macro if you are using an unusual assembler that
requires different names for the machine instructions.
*************** Output of Assembler Instructions
*** 20036,20042 ****
If the macro definition does nothing, the instruction is output in
the usual way.
! - Macro: FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS)
If defined, a C statement to be executed just prior to the output
of assembler code for INSN, to modify the extracted operands so
they will be output differently.
--- 20052,20058 ----
If the macro definition does nothing, the instruction is output in
the usual way.
! -- Macro: FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS)
If defined, a C statement to be executed just prior to the output
of assembler code for INSN, to modify the extracted operands so
they will be output differently.
*************** Output of Assembler Instructions
*** 20058,20064 ****
If this macro is not defined, it is equivalent to a null statement.
! - Macro: PRINT_OPERAND (STREAM, X, CODE)
A C compound statement to output to stdio stream STREAM the
assembler syntax for an instruction operand X. X is an RTL
expression.
--- 20074,20080 ----
If this macro is not defined, it is equivalent to a null statement.
! -- Macro: PRINT_OPERAND (STREAM, X, CODE)
A C compound statement to output to stdio stream STREAM the
assembler syntax for an instruction operand X. X is an RTL
expression.
*************** Output of Assembler Instructions
*** 20079,20092 ****
followed by a punctuation character), this macro is called with a
null pointer for X and the punctuation character for CODE.
! - Macro: PRINT_OPERAND_PUNCT_VALID_P (CODE)
A C expression which evaluates to true if CODE is a valid
punctuation character for use in the `PRINT_OPERAND' macro. If
`PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no
punctuation characters (except for the standard one, `%') are used
in this way.
! - Macro: PRINT_OPERAND_ADDRESS (STREAM, X)
A C compound statement to output to stdio stream STREAM the
assembler syntax for an instruction operand that is a memory
reference whose address is X. X is an RTL expression.
--- 20095,20108 ----
followed by a punctuation character), this macro is called with a
null pointer for X and the punctuation character for CODE.
! -- Macro: PRINT_OPERAND_PUNCT_VALID_P (CODE)
A C expression which evaluates to true if CODE is a valid
punctuation character for use in the `PRINT_OPERAND' macro. If
`PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no
punctuation characters (except for the standard one, `%') are used
in this way.
! -- Macro: PRINT_OPERAND_ADDRESS (STREAM, X)
A C compound statement to output to stdio stream STREAM the
assembler syntax for an instruction operand that is a memory
reference whose address is X. X is an RTL expression.
*************** Output of Assembler Instructions
*** 20097,20103 ****
`symbol_ref', and then check for it here. *Note Assembler
Format::.
! - Macro: DBR_OUTPUT_SEQEND (FILE)
A C statement, to be executed after all slot-filler instructions
have been output. If necessary, call `dbr_sequence_length' to
determine the number of slots filled in a sequence (zero if not
--- 20113,20119 ----
`symbol_ref', and then check for it here. *Note Assembler
Format::.
! -- Macro: DBR_OUTPUT_SEQEND (FILE)
A C statement, to be executed after all slot-filler instructions
have been output. If necessary, call `dbr_sequence_length' to
determine the number of slots filled in a sequence (zero if not
*************** the scheduling pass is not run, or when
*** 20114,20130 ****
found.) The variable `final_sequence' is null when not processing a
sequence, otherwise it contains the `sequence' rtx being output.
! - Macro: REGISTER_PREFIX
! - Macro: LOCAL_LABEL_PREFIX
! - Macro: USER_LABEL_PREFIX
! - Macro: IMMEDIATE_PREFIX
If defined, C string expressions to be used for the `%R', `%L',
`%U', and `%I' options of `asm_fprintf' (see `final.c'). These
are useful when a single `md' file must support multiple assembler
formats. In that case, the various `tm.h' files can define these
macros differently.
! - Macro: ASM_FPRINTF_EXTENSIONS (FILE, ARGPTR, FORMAT)
If defined this macro should expand to a series of `case'
statements which will be parsed inside the `switch' statement of
the `asm_fprintf' function. This allows targets to define extra
--- 20130,20146 ----
found.) The variable `final_sequence' is null when not processing a
sequence, otherwise it contains the `sequence' rtx being output.
! -- Macro: REGISTER_PREFIX
! -- Macro: LOCAL_LABEL_PREFIX
! -- Macro: USER_LABEL_PREFIX
! -- Macro: IMMEDIATE_PREFIX
If defined, C string expressions to be used for the `%R', `%L',
`%U', and `%I' options of `asm_fprintf' (see `final.c'). These
are useful when a single `md' file must support multiple assembler
formats. In that case, the various `tm.h' files can define these
macros differently.
! -- Macro: ASM_FPRINTF_EXTENSIONS (FILE, ARGPTR, FORMAT)
If defined this macro should expand to a series of `case'
statements which will be parsed inside the `switch' statement of
the `asm_fprintf' function. This allows targets to define extra
*************** sequence, otherwise it contains the `seq
*** 20136,20142 ****
format string, starting the character after the one that is being
switched upon, is pointed to by FORMAT.
! - Macro: ASSEMBLER_DIALECT
If your target supports multiple dialects of assembler language
(such as different opcodes), define this macro as a C expression
that gives the numeric index of the assembler language dialect to
--- 20152,20158 ----
format string, starting the character after the one that is being
switched upon, is pointed to by FORMAT.
! -- Macro: ASSEMBLER_DIALECT
If your target supports multiple dialects of assembler language
(such as different opcodes), define this macro as a C expression
that gives the numeric index of the assembler language dialect to
*************** sequence, otherwise it contains the `seq
*** 20144,20150 ****
If this macro is defined, you may use constructs of the form
`{option0|option1|option2...}'
-
in the output templates of patterns (*note Output Template::) or
in the first argument of `asm_fprintf'. This construct outputs
`option0', `option1', `option2', etc., if the value of
--- 20160,20165 ----
*************** sequence, otherwise it contains the `seq
*** 20164,20175 ****
if the syntax variant are larger and involve such things as
different opcodes or operand order.
! - Macro: ASM_OUTPUT_REG_PUSH (STREAM, REGNO)
A C expression to output to STREAM some assembler code which will
push hard register number REGNO onto the stack. The code need not
be optimal, since this macro is used only when profiling.
! - Macro: ASM_OUTPUT_REG_POP (STREAM, REGNO)
A C expression to output to STREAM some assembler code which will
pop hard register number REGNO off of the stack. The code need
not be optimal, since this macro is used only when profiling.
--- 20179,20190 ----
if the syntax variant are larger and involve such things as
different opcodes or operand order.
! -- Macro: ASM_OUTPUT_REG_PUSH (STREAM, REGNO)
A C expression to output to STREAM some assembler code which will
push hard register number REGNO onto the stack. The code need not
be optimal, since this macro is used only when profiling.
! -- Macro: ASM_OUTPUT_REG_POP (STREAM, REGNO)
A C expression to output to STREAM some assembler code which will
pop hard register number REGNO off of the stack. The code need
not be optimal, since this macro is used only when profiling.
*************** sequence, otherwise it contains the `seq
*** 20177,20188 ****
File: gccint.info, Node: Dispatch Tables, Next: Exception Region Output, Prev: Instruction Output, Up: Assembler Format
! Output of Dispatch Tables
! -------------------------
! This concerns dispatch tables.
! - Macro: ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, BODY, VALUE, REL)
A C statement to output to the stdio stream STREAM an assembler
pseudo-instruction to generate a difference between two labels.
VALUE and REL are the numbers of two internal labels. The
--- 20192,20203 ----
File: gccint.info, Node: Dispatch Tables, Next: Exception Region Output, Prev: Instruction Output, Up: Assembler Format
! 11.20.8 Output of Dispatch Tables
! ---------------------------------
! This concerns dispatch tables.
! -- Macro: ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, BODY, VALUE, REL)
A C statement to output to the stdio stream STREAM an assembler
pseudo-instruction to generate a difference between two labels.
VALUE and REL are the numbers of two internal labels. The
*************** Output of Dispatch Tables
*** 20199,20205 ****
producing PIC. BODY is the body of the `ADDR_DIFF_VEC'; it is
provided so that the mode and flags can be read.
! - Macro: ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)
This macro should be provided on machines where the addresses in a
dispatch table are absolute.
--- 20214,20220 ----
producing PIC. BODY is the body of the `ADDR_DIFF_VEC'; it is
provided so that the mode and flags can be read.
! -- Macro: ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)
This macro should be provided on machines where the addresses in a
dispatch table are absolute.
*************** Output of Dispatch Tables
*** 20211,20217 ****
fprintf (STREAM, "\t.word L%d\n", VALUE)
! - Macro: ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)
Define this if the label before a jump-table needs to be output
specially. The first three arguments are the same as for
`(*targetm.asm_out.internal_label)'; the fourth argument is the
--- 20226,20232 ----
fprintf (STREAM, "\t.word L%d\n", VALUE)
! -- Macro: ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)
Define this if the label before a jump-table needs to be output
specially. The first three arguments are the same as for
`(*targetm.asm_out.internal_label)'; the fourth argument is the
*************** Output of Dispatch Tables
*** 20224,20230 ****
If this macro is not defined, these labels are output with
`(*targetm.asm_out.internal_label)'.
! - Macro: ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)
Define this if something special must be output at the end of a
jump-table. The definition should be a C statement to be executed
after the assembler code for the table is written. It should write
--- 20239,20245 ----
If this macro is not defined, these labels are output with
`(*targetm.asm_out.internal_label)'.
! -- Macro: ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)
Define this if something special must be output at the end of a
jump-table. The definition should be a C statement to be executed
after the assembler code for the table is written. It should write
*************** Output of Dispatch Tables
*** 20238,20250 ****
File: gccint.info, Node: Exception Region Output, Next: Alignment Output, Prev: Dispatch Tables, Up: Assembler Format
! Assembler Commands for Exception Regions
! ----------------------------------------
! This describes commands marking the start and the end of an exception
region.
! - Macro: EH_FRAME_SECTION_NAME
If defined, a C string constant for the name of the section
containing exception handling frame unwind information. If not
defined, GCC will provide a default definition if the target
--- 20253,20265 ----
File: gccint.info, Node: Exception Region Output, Next: Alignment Output, Prev: Dispatch Tables, Up: Assembler Format
! 11.20.9 Assembler Commands for Exception Regions
! ------------------------------------------------
! This describes commands marking the start and the end of an exception
region.
! -- Macro: EH_FRAME_SECTION_NAME
If defined, a C string constant for the name of the section
containing exception handling frame unwind information. If not
defined, GCC will provide a default definition if the target
*************** region.
*** 20254,20260 ****
You should define this symbol if your target supports DWARF 2 frame
unwind information and the default definition does not work.
! - Macro: EH_FRAME_IN_DATA_SECTION
If defined, DWARF 2 frame unwind information will be placed in the
data section even though the target supports named sections. This
might be necessary, for instance, if the system linker does garbage
--- 20269,20275 ----
You should define this symbol if your target supports DWARF 2 frame
unwind information and the default definition does not work.
! -- Macro: EH_FRAME_IN_DATA_SECTION
If defined, DWARF 2 frame unwind information will be placed in the
data section even though the target supports named sections. This
might be necessary, for instance, if the system linker does garbage
*************** region.
*** 20263,20274 ****
Do not define this macro unless `TARGET_ASM_NAMED_SECTION' is also
defined.
! - Macro: MASK_RETURN_ADDR
An rtx used to mask the return address found via
`RETURN_ADDR_RTX', so that it does not contain any extraneous set
bits in it.
! - Macro: DWARF2_UNWIND_INFO
Define this macro to 0 if your target supports DWARF 2 frame unwind
information, but it does not yet work with exception handling.
Otherwise, if your target supports this information (if it defines
--- 20278,20289 ----
Do not define this macro unless `TARGET_ASM_NAMED_SECTION' is also
defined.
! -- Macro: MASK_RETURN_ADDR
An rtx used to mask the return address found via
`RETURN_ADDR_RTX', so that it does not contain any extraneous set
bits in it.
! -- Macro: DWARF2_UNWIND_INFO
Define this macro to 0 if your target supports DWARF 2 frame unwind
information, but it does not yet work with exception handling.
Otherwise, if your target supports this information (if it defines
*************** region.
*** 20283,20295 ****
used instead of inline unwinders and `__unwind_function' in the
non-`setjmp' case.
! - Macro: MUST_USE_SJLJ_EXCEPTIONS
This macro need only be defined if `DWARF2_UNWIND_INFO' is
runtime-variable. In that case, `except.h' cannot correctly
determine the corresponding definition of
`MUST_USE_SJLJ_EXCEPTIONS', so the target must provide it directly.
! - Macro: DWARF_CIE_DATA_ALIGNMENT
This macro need only be defined if the target might save registers
in the function prologue at an offset to the stack pointer that is
not aligned to `UNITS_PER_WORD'. The definition should be the
--- 20298,20310 ----
used instead of inline unwinders and `__unwind_function' in the
non-`setjmp' case.
! -- Macro: MUST_USE_SJLJ_EXCEPTIONS
This macro need only be defined if `DWARF2_UNWIND_INFO' is
runtime-variable. In that case, `except.h' cannot correctly
determine the corresponding definition of
`MUST_USE_SJLJ_EXCEPTIONS', so the target must provide it directly.
! -- Macro: DWARF_CIE_DATA_ALIGNMENT
This macro need only be defined if the target might save registers
in the function prologue at an offset to the stack pointer that is
not aligned to `UNITS_PER_WORD'. The definition should be the
*************** region.
*** 20298,20304 ****
DWARF::. Only applicable if the target supports DWARF 2 frame
unwind information.
! - Target Hook: void TARGET_ASM_EXCEPTION_SECTION ()
If defined, a function that switches to the section in which the
main exception table is to be placed (*note Sections::). The
default is a function that switches to a section named
--- 20313,20319 ----
DWARF::. Only applicable if the target supports DWARF 2 frame
unwind information.
! -- Target Hook: void TARGET_ASM_EXCEPTION_SECTION ()
If defined, a function that switches to the section in which the
main exception table is to be placed (*note Sections::). The
default is a function that switches to a section named
*************** region.
*** 20306,20325 ****
`TARGET_ASM_NAMED_SECTION', otherwise if `-fpic' or `-fPIC' is in
effect, the `data_section', otherwise the `readonly_data_section'.
! - Target Hook: void TARGET_ASM_EH_FRAME_SECTION ()
If defined, a function that switches to the section in which the
DWARF 2 frame unwind information to be placed (*note Sections::).
The default is a function that outputs a standard GAS section
directive, if `EH_FRAME_SECTION_NAME' is defined, or else a data
section directive followed by a synthetic label.
! - Variable: Target Hook bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
Contains the value true if the target should add a zero word onto
the end of a Dwarf-2 frame info section when used for exception
handling. Default value is false if `EH_FRAME_SECTION_NAME' is
defined, and true otherwise.
! - Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx REG)
Given a register, this hook should return a parallel of registers
to represent where to find the register pieces. Define this hook
if the register and its mode are represented in Dwarf in
--- 20321,20340 ----
`TARGET_ASM_NAMED_SECTION', otherwise if `-fpic' or `-fPIC' is in
effect, the `data_section', otherwise the `readonly_data_section'.
! -- Target Hook: void TARGET_ASM_EH_FRAME_SECTION ()
If defined, a function that switches to the section in which the
DWARF 2 frame unwind information to be placed (*note Sections::).
The default is a function that outputs a standard GAS section
directive, if `EH_FRAME_SECTION_NAME' is defined, or else a data
section directive followed by a synthetic label.
! -- Variable: Target Hook bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
Contains the value true if the target should add a zero word onto
the end of a Dwarf-2 frame info section when used for exception
handling. Default value is false if `EH_FRAME_SECTION_NAME' is
defined, and true otherwise.
! -- Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx REG)
Given a register, this hook should return a parallel of registers
to represent where to find the register pieces. Define this hook
if the register and its mode are represented in Dwarf in
*************** region.
*** 20331,20342 ****
File: gccint.info, Node: Alignment Output, Prev: Exception Region Output, Up: Assembler Format
! Assembler Commands for Alignment
! --------------------------------
! This describes commands for alignment.
! - Macro: JUMP_ALIGN (LABEL)
The alignment (log base 2) to put in front of LABEL, which is a
common destination of jumps and has no fallthru incoming edge.
--- 20346,20357 ----
File: gccint.info, Node: Alignment Output, Prev: Exception Region Output, Up: Assembler Format
! 11.20.10 Assembler Commands for Alignment
! -----------------------------------------
! This describes commands for alignment.
! -- Macro: JUMP_ALIGN (LABEL)
The alignment (log base 2) to put in front of LABEL, which is a
common destination of jumps and has no fallthru incoming edge.
*************** Assembler Commands for Alignment
*** 20349,20355 ****
`OVERRIDE_OPTIONS'. Otherwise, you should try to honor the user's
selection in ALIGN_JUMPS in a `JUMP_ALIGN' implementation.
! - Macro: LABEL_ALIGN_AFTER_BARRIER (LABEL)
The alignment (log base 2) to put in front of LABEL, which follows
a `BARRIER'.
--- 20364,20370 ----
`OVERRIDE_OPTIONS'. Otherwise, you should try to honor the user's
selection in ALIGN_JUMPS in a `JUMP_ALIGN' implementation.
! -- Macro: LABEL_ALIGN_AFTER_BARRIER (LABEL)
The alignment (log base 2) to put in front of LABEL, which follows
a `BARRIER'.
*************** Assembler Commands for Alignment
*** 20357,20368 ****
alignment to be done at such a time. Most machine descriptions do
not currently define the macro.
! - Macro: LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
The maximum number of bytes to skip when applying
`LABEL_ALIGN_AFTER_BARRIER'. This works only if
`ASM_OUTPUT_MAX_SKIP_ALIGN' is defined.
! - Macro: LOOP_ALIGN (LABEL)
The alignment (log base 2) to put in front of LABEL, which follows
a `NOTE_INSN_LOOP_BEG' note.
--- 20372,20383 ----
alignment to be done at such a time. Most machine descriptions do
not currently define the macro.
! -- Macro: LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
The maximum number of bytes to skip when applying
`LABEL_ALIGN_AFTER_BARRIER'. This works only if
`ASM_OUTPUT_MAX_SKIP_ALIGN' is defined.
! -- Macro: LOOP_ALIGN (LABEL)
The alignment (log base 2) to put in front of LABEL, which follows
a `NOTE_INSN_LOOP_BEG' note.
*************** Assembler Commands for Alignment
*** 20375,20385 ****
`OVERRIDE_OPTIONS'. Otherwise, you should try to honor the user's
selection in `align_loops' in a `LOOP_ALIGN' implementation.
! - Macro: LOOP_ALIGN_MAX_SKIP
The maximum number of bytes to skip when applying `LOOP_ALIGN'.
This works only if `ASM_OUTPUT_MAX_SKIP_ALIGN' is defined.
! - Macro: LABEL_ALIGN (LABEL)
The alignment (log base 2) to put in front of LABEL. If
`LABEL_ALIGN_AFTER_BARRIER' / `LOOP_ALIGN' specify a different
alignment, the maximum of the specified values is used.
--- 20390,20400 ----
`OVERRIDE_OPTIONS'. Otherwise, you should try to honor the user's
selection in `align_loops' in a `LOOP_ALIGN' implementation.
! -- Macro: LOOP_ALIGN_MAX_SKIP
The maximum number of bytes to skip when applying `LOOP_ALIGN'.
This works only if `ASM_OUTPUT_MAX_SKIP_ALIGN' is defined.
! -- Macro: LABEL_ALIGN (LABEL)
The alignment (log base 2) to put in front of LABEL. If
`LABEL_ALIGN_AFTER_BARRIER' / `LOOP_ALIGN' specify a different
alignment, the maximum of the specified values is used.
*************** Assembler Commands for Alignment
*** 20389,20421 ****
`OVERRIDE_OPTIONS'. Otherwise, you should try to honor the user's
selection in `align_labels' in a `LABEL_ALIGN' implementation.
! - Macro: LABEL_ALIGN_MAX_SKIP
The maximum number of bytes to skip when applying `LABEL_ALIGN'.
This works only if `ASM_OUTPUT_MAX_SKIP_ALIGN' is defined.
! - Macro: ASM_OUTPUT_SKIP (STREAM, NBYTES)
A C statement to output to the stdio stream STREAM an assembler
instruction to advance the location counter by NBYTES bytes.
Those bytes should be zero when loaded. NBYTES will be a C
expression of type `int'.
! - Macro: ASM_NO_SKIP_IN_TEXT
Define this macro if `ASM_OUTPUT_SKIP' should not be used in the
text section because it fails to put zeros in the bytes that are
skipped. This is true on many Unix systems, where the pseudo-op
to skip bytes produces no-op instructions rather than zeros when
used in the text section.
! - Macro: ASM_OUTPUT_ALIGN (STREAM, POWER)
A C statement to output to the stdio stream STREAM an assembler
command to advance the location counter to a multiple of 2 to the
POWER bytes. POWER will be a C expression of type `int'.
! - Macro: ASM_OUTPUT_ALIGN_WITH_NOP (STREAM, POWER)
Like `ASM_OUTPUT_ALIGN', except that the "nop" instruction is used
for padding, if necessary.
! - Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (STREAM, POWER, MAX_SKIP)
A C statement to output to the stdio stream STREAM an assembler
command to advance the location counter to a multiple of 2 to the
POWER bytes, but only if MAX_SKIP or fewer bytes are needed to
--- 20404,20436 ----
`OVERRIDE_OPTIONS'. Otherwise, you should try to honor the user's
selection in `align_labels' in a `LABEL_ALIGN' implementation.
! -- Macro: LABEL_ALIGN_MAX_SKIP
The maximum number of bytes to skip when applying `LABEL_ALIGN'.
This works only if `ASM_OUTPUT_MAX_SKIP_ALIGN' is defined.
! -- Macro: ASM_OUTPUT_SKIP (STREAM, NBYTES)
A C statement to output to the stdio stream STREAM an assembler
instruction to advance the location counter by NBYTES bytes.
Those bytes should be zero when loaded. NBYTES will be a C
expression of type `int'.
! -- Macro: ASM_NO_SKIP_IN_TEXT
Define this macro if `ASM_OUTPUT_SKIP' should not be used in the
text section because it fails to put zeros in the bytes that are
skipped. This is true on many Unix systems, where the pseudo-op
to skip bytes produces no-op instructions rather than zeros when
used in the text section.
! -- Macro: ASM_OUTPUT_ALIGN (STREAM, POWER)
A C statement to output to the stdio stream STREAM an assembler
command to advance the location counter to a multiple of 2 to the
POWER bytes. POWER will be a C expression of type `int'.
! -- Macro: ASM_OUTPUT_ALIGN_WITH_NOP (STREAM, POWER)
Like `ASM_OUTPUT_ALIGN', except that the "nop" instruction is used
for padding, if necessary.
! -- Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (STREAM, POWER, MAX_SKIP)
A C statement to output to the stdio stream STREAM an assembler
command to advance the location counter to a multiple of 2 to the
POWER bytes, but only if MAX_SKIP or fewer bytes are needed to
*************** Assembler Commands for Alignment
*** 20425,20434 ****
File: gccint.info, Node: Debugging Info, Next: Floating Point, Prev: Assembler Format, Up: Target Macros
! Controlling Debugging Information Format
! ========================================
! This describes how to specify debugging information.
* Menu:
--- 20440,20449 ----
File: gccint.info, Node: Debugging Info, Next: Floating Point, Prev: Assembler Format, Up: Target Macros
! 11.21 Controlling Debugging Information Format
! ==============================================
! This describes how to specify debugging information.
* Menu:
*************** Controlling Debugging Information Format
*** 20442,20453 ****
File: gccint.info, Node: All Debuggers, Next: DBX Options, Up: Debugging Info
! Macros Affecting All Debugging Formats
! --------------------------------------
! These macros affect all debugging formats.
! - Macro: DBX_REGISTER_NUMBER (REGNO)
A C expression that returns the DBX register number for the
compiler register number REGNO. In the default macro provided,
the value of this expression will be REGNO itself. But sometimes
--- 20457,20468 ----
File: gccint.info, Node: All Debuggers, Next: DBX Options, Up: Debugging Info
! 11.21.1 Macros Affecting All Debugging Formats
! ----------------------------------------------
! These macros affect all debugging formats.
! -- Macro: DBX_REGISTER_NUMBER (REGNO)
A C expression that returns the DBX register number for the
compiler register number REGNO. In the default macro provided,
the value of this expression will be REGNO itself. But sometimes
*************** Macros Affecting All Debugging Formats
*** 20466,20472 ****
does not preserve register pairs, then what you must do instead is
redefine the actual register numbering scheme.
! - Macro: DEBUGGER_AUTO_OFFSET (X)
A C expression that returns the integer offset value for an
automatic variable having address X (an RTL expression). The
default computation assumes that X is based on the frame-pointer
--- 20481,20487 ----
does not preserve register pairs, then what you must do instead is
redefine the actual register numbering scheme.
! -- Macro: DEBUGGER_AUTO_OFFSET (X)
A C expression that returns the integer offset value for an
automatic variable having address X (an RTL expression). The
default computation assumes that X is based on the frame-pointer
*************** Macros Affecting All Debugging Formats
*** 20475,20486 ****
debugging output for SDB and allow the frame-pointer to be
eliminated when the `-g' options is used.
! - Macro: DEBUGGER_ARG_OFFSET (OFFSET, X)
A C expression that returns the integer offset value for an
argument having address X (an RTL expression). The nominal offset
is OFFSET.
! - Macro: PREFERRED_DEBUGGING_TYPE
A C expression that returns the type of debugging output GCC should
produce when the user specifies just `-g'. Define this if you
have arranged for GCC to support more than one format of debugging
--- 20490,20501 ----
debugging output for SDB and allow the frame-pointer to be
eliminated when the `-g' options is used.
! -- Macro: DEBUGGER_ARG_OFFSET (OFFSET, X)
A C expression that returns the integer offset value for an
argument having address X (an RTL expression). The nominal offset
is OFFSET.
! -- Macro: PREFERRED_DEBUGGING_TYPE
A C expression that returns the type of debugging output GCC should
produce when the user specifies just `-g'. Define this if you
have arranged for GCC to support more than one format of debugging
*************** Macros Affecting All Debugging Formats
*** 20501,20559 ****
File: gccint.info, Node: DBX Options, Next: DBX Hooks, Prev: All Debuggers, Up: Debugging Info
! Specific Options for DBX Output
! -------------------------------
! These are specific options for DBX output.
! - Macro: DBX_DEBUGGING_INFO
Define this macro if GCC should produce debugging output for DBX
in response to the `-g' option.
! - Macro: XCOFF_DEBUGGING_INFO
Define this macro if GCC should produce XCOFF format debugging
output in response to the `-g' option. This is a variant of DBX
format.
! - Macro: DEFAULT_GDB_EXTENSIONS
Define this macro to control whether GCC should by default generate
GDB's extended version of DBX debugging information (assuming
DBX-format debugging information is enabled at all). If you don't
define the macro, the default is 1: always generate the extended
information if there is any occasion to.
! - Macro: DEBUG_SYMS_TEXT
Define this macro if all `.stabs' commands should be output while
in the text section.
! - Macro: ASM_STABS_OP
A C string constant, including spacing, naming the assembler
pseudo op to use instead of `"\t.stabs\t"' to define an ordinary
debugging symbol. If you don't define this macro, `"\t.stabs\t"'
is used. This macro applies only to DBX debugging information
format.
! - Macro: ASM_STABD_OP
A C string constant, including spacing, naming the assembler
pseudo op to use instead of `"\t.stabd\t"' to define a debugging
symbol whose value is the current location. If you don't define
this macro, `"\t.stabd\t"' is used. This macro applies only to
DBX debugging information format.
! - Macro: ASM_STABN_OP
A C string constant, including spacing, naming the assembler
pseudo op to use instead of `"\t.stabn\t"' to define a debugging
symbol with no name. If you don't define this macro,
`"\t.stabn\t"' is used. This macro applies only to DBX debugging
information format.
! - Macro: DBX_NO_XREFS
Define this macro if DBX on your system does not support the
construct `xsTAGNAME'. On some systems, this construct is used to
describe a forward reference to a structure named TAGNAME. On
other systems, this construct is not supported at all.
! - Macro: DBX_CONTIN_LENGTH
A symbol name in DBX-format debugging information is normally
continued (split into two separate `.stabs' directives) when it
exceeds a certain length (by default, 80 characters). On some
--- 20516,20574 ----
File: gccint.info, Node: DBX Options, Next: DBX Hooks, Prev: All Debuggers, Up: Debugging Info
! 11.21.2 Specific Options for DBX Output
! ---------------------------------------
! These are specific options for DBX output.
! -- Macro: DBX_DEBUGGING_INFO
Define this macro if GCC should produce debugging output for DBX
in response to the `-g' option.
! -- Macro: XCOFF_DEBUGGING_INFO
Define this macro if GCC should produce XCOFF format debugging
output in response to the `-g' option. This is a variant of DBX
format.
! -- Macro: DEFAULT_GDB_EXTENSIONS
Define this macro to control whether GCC should by default generate
GDB's extended version of DBX debugging information (assuming
DBX-format debugging information is enabled at all). If you don't
define the macro, the default is 1: always generate the extended
information if there is any occasion to.
! -- Macro: DEBUG_SYMS_TEXT
Define this macro if all `.stabs' commands should be output while
in the text section.
! -- Macro: ASM_STABS_OP
A C string constant, including spacing, naming the assembler
pseudo op to use instead of `"\t.stabs\t"' to define an ordinary
debugging symbol. If you don't define this macro, `"\t.stabs\t"'
is used. This macro applies only to DBX debugging information
format.
! -- Macro: ASM_STABD_OP
A C string constant, including spacing, naming the assembler
pseudo op to use instead of `"\t.stabd\t"' to define a debugging
symbol whose value is the current location. If you don't define
this macro, `"\t.stabd\t"' is used. This macro applies only to
DBX debugging information format.
! -- Macro: ASM_STABN_OP
A C string constant, including spacing, naming the assembler
pseudo op to use instead of `"\t.stabn\t"' to define a debugging
symbol with no name. If you don't define this macro,
`"\t.stabn\t"' is used. This macro applies only to DBX debugging
information format.
! -- Macro: DBX_NO_XREFS
Define this macro if DBX on your system does not support the
construct `xsTAGNAME'. On some systems, this construct is used to
describe a forward reference to a structure named TAGNAME. On
other systems, this construct is not supported at all.
! -- Macro: DBX_CONTIN_LENGTH
A symbol name in DBX-format debugging information is normally
continued (split into two separate `.stabs' directives) when it
exceeds a certain length (by default, 80 characters). On some
*************** Specific Options for DBX Output
*** 20563,20615 ****
splitting-length by defining this macro as an expression for the
length you desire.
! - Macro: DBX_CONTIN_CHAR
Normally continuation is indicated by adding a `\' character to
the end of a `.stabs' string when a continuation follows. To use
a different character instead, define this macro as a character
constant for the character you want to use. Do not define this
macro if backslash is correct for your system.
! - Macro: DBX_STATIC_STAB_DATA_SECTION
Define this macro if it is necessary to go to the data section
before outputting the `.stabs' pseudo-op for a non-global static
variable.
! - Macro: DBX_TYPE_DECL_STABS_CODE
The value to use in the "code" field of the `.stabs' directive for
a typedef. The default is `N_LSYM'.
! - Macro: DBX_STATIC_CONST_VAR_CODE
The value to use in the "code" field of the `.stabs' directive for
a static variable located in the text section. DBX format does not
provide any "right" way to do this. The default is `N_FUN'.
! - Macro: DBX_REGPARM_STABS_CODE
The value to use in the "code" field of the `.stabs' directive for
a parameter passed in registers. DBX format does not provide any
"right" way to do this. The default is `N_RSYM'.
! - Macro: DBX_REGPARM_STABS_LETTER
The letter to use in DBX symbol data to identify a symbol as a
parameter passed in registers. DBX format does not customarily
provide any way to do this. The default is `'P''.
! - Macro: DBX_MEMPARM_STABS_LETTER
The letter to use in DBX symbol data to identify a symbol as a
stack parameter. The default is `'p''.
! - Macro: DBX_FUNCTION_FIRST
Define this macro if the DBX information for a function and its
arguments should precede the assembler code for the function.
Normally, in DBX format, the debugging information entirely
follows the assembler code.
! - Macro: DBX_BLOCKS_FUNCTION_RELATIVE
Define this macro if the value of a symbol describing the scope of
a block (`N_LBRAC' or `N_RBRAC') should be relative to the start
of the enclosing function. Normally, GCC uses an absolute address.
! - Macro: DBX_USE_BINCL
Define this macro if GCC should generate `N_BINCL' and `N_EINCL'
stabs for included header files, as on Sun systems. This macro
also directs GCC to output a type number as a pair of a file
--- 20578,20630 ----
splitting-length by defining this macro as an expression for the
length you desire.
! -- Macro: DBX_CONTIN_CHAR
Normally continuation is indicated by adding a `\' character to
the end of a `.stabs' string when a continuation follows. To use
a different character instead, define this macro as a character
constant for the character you want to use. Do not define this
macro if backslash is correct for your system.
! -- Macro: DBX_STATIC_STAB_DATA_SECTION
Define this macro if it is necessary to go to the data section
before outputting the `.stabs' pseudo-op for a non-global static
variable.
! -- Macro: DBX_TYPE_DECL_STABS_CODE
The value to use in the "code" field of the `.stabs' directive for
a typedef. The default is `N_LSYM'.
! -- Macro: DBX_STATIC_CONST_VAR_CODE
The value to use in the "code" field of the `.stabs' directive for
a static variable located in the text section. DBX format does not
provide any "right" way to do this. The default is `N_FUN'.
! -- Macro: DBX_REGPARM_STABS_CODE
The value to use in the "code" field of the `.stabs' directive for
a parameter passed in registers. DBX format does not provide any
"right" way to do this. The default is `N_RSYM'.
! -- Macro: DBX_REGPARM_STABS_LETTER
The letter to use in DBX symbol data to identify a symbol as a
parameter passed in registers. DBX format does not customarily
provide any way to do this. The default is `'P''.
! -- Macro: DBX_MEMPARM_STABS_LETTER
The letter to use in DBX symbol data to identify a symbol as a
stack parameter. The default is `'p''.
! -- Macro: DBX_FUNCTION_FIRST
Define this macro if the DBX information for a function and its
arguments should precede the assembler code for the function.
Normally, in DBX format, the debugging information entirely
follows the assembler code.
! -- Macro: DBX_BLOCKS_FUNCTION_RELATIVE
Define this macro if the value of a symbol describing the scope of
a block (`N_LBRAC' or `N_RBRAC') should be relative to the start
of the enclosing function. Normally, GCC uses an absolute address.
! -- Macro: DBX_USE_BINCL
Define this macro if GCC should generate `N_BINCL' and `N_EINCL'
stabs for included header files, as on Sun systems. This macro
also directs GCC to output a type number as a pair of a file
*************** Specific Options for DBX Output
*** 20620,20651 ****
File: gccint.info, Node: DBX Hooks, Next: File Names and DBX, Prev: DBX Options, Up: Debugging Info
! Open-Ended Hooks for DBX Format
! -------------------------------
! These are hooks for DBX format.
! - Macro: DBX_OUTPUT_LBRAC (STREAM, NAME)
Define this macro to say how to output to STREAM the debugging
information for the start of a scope level for variable names. The
argument NAME is the name of an assembler symbol (for use with
`assemble_name') whose value is the address where the scope begins.
! - Macro: DBX_OUTPUT_RBRAC (STREAM, NAME)
Like `DBX_OUTPUT_LBRAC', but for the end of a scope level.
! - Macro: DBX_OUTPUT_NFUN (STREAM, LSCOPE_LABEL, DECL)
Define this macro if the target machine requires special handling
to output an `N_FUN' entry for the function DECL.
! - Macro: DBX_OUTPUT_FUNCTION_END (STREAM, FUNCTION)
Define this macro if the target machine requires special output at
the end of the debugging information for a function. The
definition should be a C statement (sans semicolon) to output the
appropriate information to STREAM. FUNCTION is the
`FUNCTION_DECL' node for the function.
! - Macro: DBX_OUTPUT_STANDARD_TYPES (SYMS)
Define this macro if you need to control the order of output of the
standard data types at the beginning of compilation. The argument
SYMS is a `tree' which is a chain of all the predefined global
--- 20635,20666 ----
File: gccint.info, Node: DBX Hooks, Next: File Names and DBX, Prev: DBX Options, Up: Debugging Info
! 11.21.3 Open-Ended Hooks for DBX Format
! ---------------------------------------
! These are hooks for DBX format.
! -- Macro: DBX_OUTPUT_LBRAC (STREAM, NAME)
Define this macro to say how to output to STREAM the debugging
information for the start of a scope level for variable names. The
argument NAME is the name of an assembler symbol (for use with
`assemble_name') whose value is the address where the scope begins.
! -- Macro: DBX_OUTPUT_RBRAC (STREAM, NAME)
Like `DBX_OUTPUT_LBRAC', but for the end of a scope level.
! -- Macro: DBX_OUTPUT_NFUN (STREAM, LSCOPE_LABEL, DECL)
Define this macro if the target machine requires special handling
to output an `N_FUN' entry for the function DECL.
! -- Macro: DBX_OUTPUT_FUNCTION_END (STREAM, FUNCTION)
Define this macro if the target machine requires special output at
the end of the debugging information for a function. The
definition should be a C statement (sans semicolon) to output the
appropriate information to STREAM. FUNCTION is the
`FUNCTION_DECL' node for the function.
! -- Macro: DBX_OUTPUT_STANDARD_TYPES (SYMS)
Define this macro if you need to control the order of output of the
standard data types at the beginning of compilation. The argument
SYMS is a `tree' which is a chain of all the predefined global
*************** Open-Ended Hooks for DBX Format
*** 20696,20702 ****
...
}
! - Macro: NO_DBX_FUNCTION_END
Some stabs encapsulation formats (in particular ECOFF), cannot
handle the `.stabs "",N_FUN,,0,0,Lscope-function-1' gdb dbx
extension construct. On those machines, define this macro to turn
--- 20711,20717 ----
...
}
! -- Macro: NO_DBX_FUNCTION_END
Some stabs encapsulation formats (in particular ECOFF), cannot
handle the `.stabs "",N_FUN,,0,0,Lscope-function-1' gdb dbx
extension construct. On those machines, define this macro to turn
*************** Open-Ended Hooks for DBX Format
*** 20705,20716 ****
File: gccint.info, Node: File Names and DBX, Next: SDB and DWARF, Prev: DBX Hooks, Up: Debugging Info
! File Names in DBX Format
! ------------------------
! This describes file names in DBX format.
! - Macro: DBX_OUTPUT_MAIN_SOURCE_FILENAME (STREAM, NAME)
A C statement to output DBX debugging information to the stdio
stream STREAM which indicates that file NAME is the main source
file--the file specified as the input file for compilation. This
--- 20720,20731 ----
File: gccint.info, Node: File Names and DBX, Next: SDB and DWARF, Prev: DBX Hooks, Up: Debugging Info
! 11.21.4 File Names in DBX Format
! --------------------------------
! This describes file names in DBX format.
! -- Macro: DBX_OUTPUT_MAIN_SOURCE_FILENAME (STREAM, NAME)
A C statement to output DBX debugging information to the stdio
stream STREAM which indicates that file NAME is the main source
file--the file specified as the input file for compilation. This
*************** File Names in DBX Format
*** 20719,20725 ****
This macro need not be defined if the standard form of output for
DBX debugging information is appropriate.
! - Macro: DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (STREAM, NAME)
A C statement to output DBX debugging information to the stdio
stream STREAM which indicates that the current directory during
compilation is named NAME.
--- 20734,20740 ----
This macro need not be defined if the standard form of output for
DBX debugging information is appropriate.
! -- Macro: DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (STREAM, NAME)
A C statement to output DBX debugging information to the stdio
stream STREAM which indicates that the current directory during
compilation is named NAME.
*************** File Names in DBX Format
*** 20727,20733 ****
This macro need not be defined if the standard form of output for
DBX debugging information is appropriate.
! - Macro: DBX_OUTPUT_MAIN_SOURCE_FILE_END (STREAM, NAME)
A C statement to output DBX debugging information at the end of
compilation of the main source file NAME.
--- 20742,20748 ----
This macro need not be defined if the standard form of output for
DBX debugging information is appropriate.
! -- Macro: DBX_OUTPUT_MAIN_SOURCE_FILE_END (STREAM, NAME)
A C statement to output DBX debugging information at the end of
compilation of the main source file NAME.
*************** File Names in DBX Format
*** 20737,20752 ****
File: gccint.info, Node: SDB and DWARF, Next: VMS Debug, Prev: File Names and DBX, Up: Debugging Info
! Macros for SDB and DWARF Output
! -------------------------------
! Here are macros for SDB and DWARF output.
! - Macro: SDB_DEBUGGING_INFO
Define this macro if GCC should produce COFF-style debugging output
for SDB in response to the `-g' option.
! - Macro: DWARF2_DEBUGGING_INFO
Define this macro if GCC should produce dwarf version 2 format
debugging output in response to the `-g' option.
--- 20752,20767 ----
File: gccint.info, Node: SDB and DWARF, Next: VMS Debug, Prev: File Names and DBX, Up: Debugging Info
! 11.21.5 Macros for SDB and DWARF Output
! ---------------------------------------
! Here are macros for SDB and DWARF output.
! -- Macro: SDB_DEBUGGING_INFO
Define this macro if GCC should produce COFF-style debugging output
for SDB in response to the `-g' option.
! -- Macro: DWARF2_DEBUGGING_INFO
Define this macro if GCC should produce dwarf version 2 format
debugging output in response to the `-g' option.
*************** Macros for SDB and DWARF Output
*** 20756,20818 ****
prologue, or call `dwarf2out_def_cfa' and `dwarf2out_reg_save' as
appropriate from `TARGET_ASM_FUNCTION_PROLOGUE' if you don't.
! - Macro: DWARF2_FRAME_INFO
Define this macro to a nonzero value if GCC should always output
Dwarf 2 frame information. If `DWARF2_UNWIND_INFO' (*note
Exception Region Output:: is nonzero, GCC will output this
information not matter how you define `DWARF2_FRAME_INFO'.
! - Macro: DWARF2_GENERATE_TEXT_SECTION_LABEL
By default, the Dwarf 2 debugging information generator will
generate a label to mark the beginning of the text section. If it
is better simply to use the name of the text section itself,
rather than an explicit label, to indicate the beginning of the
text section, define this macro to zero.
! - Macro: DWARF2_ASM_LINE_DEBUG_INFO
Define this macro to be a nonzero value if the assembler can
generate Dwarf 2 line debug info sections. This will result in
much more compact line number tables, and hence is desirable if it
works.
! - Macro: ASM_OUTPUT_DWARF_DELTA (STREAM, SIZE, LABEL1, LABEL2)
A C statement to issue assembly directives that create a difference
between the two given labels, using an integer of the given size.
! - Macro: ASM_OUTPUT_DWARF_OFFSET (STREAM, SIZE, LABEL)
A C statement to issue assembly directives that create a
section-relative reference to the given label, using an integer of
the given size.
! - Macro: ASM_OUTPUT_DWARF_PCREL (STREAM, SIZE, LABEL)
A C statement to issue assembly directives that create a
self-relative reference to the given label, using an integer of
the given size.
! - Macro: PUT_SDB_...
Define these macros to override the assembler syntax for the
special SDB assembler directives. See `sdbout.c' for a list of
these macros and their arguments. If the standard syntax is used,
you need not define them yourself.
! - Macro: SDB_DELIM
Some assemblers do not support a semicolon as a delimiter, even
between SDB assembler directives. In that case, define this macro
to be the delimiter to use (usually `\n'). It is not necessary to
define a new set of `PUT_SDB_OP' macros if this is the only change
required.
! - Macro: SDB_GENERATE_FAKE
Define this macro to override the usual method of constructing a
dummy name for anonymous structure and union types. See
`sdbout.c' for more information.
! - Macro: SDB_ALLOW_UNKNOWN_REFERENCES
Define this macro to allow references to unknown structure, union,
or enumeration tags to be emitted. Standard COFF does not allow
handling of unknown references, MIPS ECOFF has support for it.
! - Macro: SDB_ALLOW_FORWARD_REFERENCES
Define this macro to allow references to structure, union, or
enumeration tags that have not yet been seen to be handled. Some
assemblers choke if forward tags are used, while some require it.
--- 20771,20833 ----
prologue, or call `dwarf2out_def_cfa' and `dwarf2out_reg_save' as
appropriate from `TARGET_ASM_FUNCTION_PROLOGUE' if you don't.
! -- Macro: DWARF2_FRAME_INFO
Define this macro to a nonzero value if GCC should always output
Dwarf 2 frame information. If `DWARF2_UNWIND_INFO' (*note
Exception Region Output:: is nonzero, GCC will output this
information not matter how you define `DWARF2_FRAME_INFO'.
! -- Macro: DWARF2_GENERATE_TEXT_SECTION_LABEL
By default, the Dwarf 2 debugging information generator will
generate a label to mark the beginning of the text section. If it
is better simply to use the name of the text section itself,
rather than an explicit label, to indicate the beginning of the
text section, define this macro to zero.
! -- Macro: DWARF2_ASM_LINE_DEBUG_INFO
Define this macro to be a nonzero value if the assembler can
generate Dwarf 2 line debug info sections. This will result in
much more compact line number tables, and hence is desirable if it
works.
! -- Macro: ASM_OUTPUT_DWARF_DELTA (STREAM, SIZE, LABEL1, LABEL2)
A C statement to issue assembly directives that create a difference
between the two given labels, using an integer of the given size.
! -- Macro: ASM_OUTPUT_DWARF_OFFSET (STREAM, SIZE, LABEL)
A C statement to issue assembly directives that create a
section-relative reference to the given label, using an integer of
the given size.
! -- Macro: ASM_OUTPUT_DWARF_PCREL (STREAM, SIZE, LABEL)
A C statement to issue assembly directives that create a
self-relative reference to the given label, using an integer of
the given size.
! -- Macro: PUT_SDB_...
Define these macros to override the assembler syntax for the
special SDB assembler directives. See `sdbout.c' for a list of
these macros and their arguments. If the standard syntax is used,
you need not define them yourself.
! -- Macro: SDB_DELIM
Some assemblers do not support a semicolon as a delimiter, even
between SDB assembler directives. In that case, define this macro
to be the delimiter to use (usually `\n'). It is not necessary to
define a new set of `PUT_SDB_OP' macros if this is the only change
required.
! -- Macro: SDB_GENERATE_FAKE
Define this macro to override the usual method of constructing a
dummy name for anonymous structure and union types. See
`sdbout.c' for more information.
! -- Macro: SDB_ALLOW_UNKNOWN_REFERENCES
Define this macro to allow references to unknown structure, union,
or enumeration tags to be emitted. Standard COFF does not allow
handling of unknown references, MIPS ECOFF has support for it.
! -- Macro: SDB_ALLOW_FORWARD_REFERENCES
Define this macro to allow references to structure, union, or
enumeration tags that have not yet been seen to be handled. Some
assemblers choke if forward tags are used, while some require it.
*************** Macros for SDB and DWARF Output
*** 20820,20831 ****
File: gccint.info, Node: VMS Debug, Prev: SDB and DWARF, Up: Debugging Info
! Macros for VMS Debug Format
! ---------------------------
! Here are macros for VMS debug format.
! - Macro: VMS_DEBUGGING_INFO
Define this macro if GCC should produce debugging output for VMS
in response to the `-g' option. The default behavior for VMS is
to generate minimal debug info for a traceback in the absence of
--- 20835,20846 ----
File: gccint.info, Node: VMS Debug, Prev: SDB and DWARF, Up: Debugging Info
! 11.21.6 Macros for VMS Debug Format
! -----------------------------------
! Here are macros for VMS debug format.
! -- Macro: VMS_DEBUGGING_INFO
Define this macro if GCC should produce debugging output for VMS
in response to the `-g' option. The default behavior for VMS is
to generate minimal debug info for a traceback in the absence of
*************** Macros for VMS Debug Format
*** 20835,20844 ****
File: gccint.info, Node: Floating Point, Next: Mode Switching, Prev: Debugging Info, Up: Target Macros
! Cross Compilation and Floating Point
! ====================================
! While all modern machines use twos-complement representation for
integers, there are a variety of representations for floating point
numbers. This means that in a cross-compiler the representation of
floating point numbers in the compiled program may be different from
--- 20850,20859 ----
File: gccint.info, Node: Floating Point, Next: Mode Switching, Prev: Debugging Info, Up: Target Macros
! 11.22 Cross Compilation and Floating Point
! ==========================================
! While all modern machines use twos-complement representation for
integers, there are a variety of representations for floating point
numbers. This means that in a cross-compiler the representation of
floating point numbers in the compiled program may be different from
*************** use. All parts of the compiler which ge
*** 20858,20903 ****
floating-point calculations must use these macros. They may evaluate
their operands more than once, so operands must not have side effects.
! - Macro: REAL_VALUE_TYPE
The C data type to be used to hold a floating point value in the
target machine's format. Typically this is a `struct' containing
an array of `HOST_WIDE_INT', but all code should treat it as an
opaque quantity.
! - Macro: int REAL_VALUES_EQUAL (REAL_VALUE_TYPE X, REAL_VALUE_TYPE Y)
Compares for equality the two values, X and Y. If the target
floating point format supports negative zeroes and/or NaNs,
`REAL_VALUES_EQUAL (-0.0, 0.0)' is true, and `REAL_VALUES_EQUAL
(NaN, NaN)' is false.
! - Macro: int REAL_VALUES_LESS (REAL_VALUE_TYPE X, REAL_VALUE_TYPE Y)
Tests whether X is less than Y.
! - Macro: HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE X)
Truncates X to a signed integer, rounding toward zero.
! - Macro: unsigned HOST_WIDE_INT REAL_VALUE_UNSIGNED_FIX
(REAL_VALUE_TYPE X)
Truncates X to an unsigned integer, rounding toward zero. If X is
negative, returns zero.
! - Macro: REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *STRING, enum
machine_mode MODE)
Converts STRING into a floating point number in the target
machine's representation for mode MODE. This routine can handle
both decimal and hexadecimal floating point constants, using the
syntax defined by the C language for both.
! - Macro: int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE X)
Returns 1 if X is negative (including negative zero), 0 otherwise.
! - Macro: int REAL_VALUE_ISINF (REAL_VALUE_TYPE X)
Determines whether X represents infinity (positive or negative).
! - Macro: int REAL_VALUE_ISNAN (REAL_VALUE_TYPE X)
Determines whether X represents a "NaN" (not-a-number).
! - Macro: void REAL_ARITHMETIC (REAL_VALUE_TYPE OUTPUT, enum tree_code
CODE, REAL_VALUE_TYPE X, REAL_VALUE_TYPE Y)
Calculates an arithmetic operation on the two floating point values
X and Y, storing the result in OUTPUT (which must be a variable).
--- 20873,20918 ----
floating-point calculations must use these macros. They may evaluate
their operands more than once, so operands must not have side effects.
! -- Macro: REAL_VALUE_TYPE
The C data type to be used to hold a floating point value in the
target machine's format. Typically this is a `struct' containing
an array of `HOST_WIDE_INT', but all code should treat it as an
opaque quantity.
! -- Macro: int REAL_VALUES_EQUAL (REAL_VALUE_TYPE X, REAL_VALUE_TYPE Y)
Compares for equality the two values, X and Y. If the target
floating point format supports negative zeroes and/or NaNs,
`REAL_VALUES_EQUAL (-0.0, 0.0)' is true, and `REAL_VALUES_EQUAL
(NaN, NaN)' is false.
! -- Macro: int REAL_VALUES_LESS (REAL_VALUE_TYPE X, REAL_VALUE_TYPE Y)
Tests whether X is less than Y.
! -- Macro: HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE X)
Truncates X to a signed integer, rounding toward zero.
! -- Macro: unsigned HOST_WIDE_INT REAL_VALUE_UNSIGNED_FIX
(REAL_VALUE_TYPE X)
Truncates X to an unsigned integer, rounding toward zero. If X is
negative, returns zero.
! -- Macro: REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *STRING, enum
machine_mode MODE)
Converts STRING into a floating point number in the target
machine's representation for mode MODE. This routine can handle
both decimal and hexadecimal floating point constants, using the
syntax defined by the C language for both.
! -- Macro: int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE X)
Returns 1 if X is negative (including negative zero), 0 otherwise.
! -- Macro: int REAL_VALUE_ISINF (REAL_VALUE_TYPE X)
Determines whether X represents infinity (positive or negative).
! -- Macro: int REAL_VALUE_ISNAN (REAL_VALUE_TYPE X)
Determines whether X represents a "NaN" (not-a-number).
! -- Macro: void REAL_ARITHMETIC (REAL_VALUE_TYPE OUTPUT, enum tree_code
CODE, REAL_VALUE_TYPE X, REAL_VALUE_TYPE Y)
Calculates an arithmetic operation on the two floating point values
X and Y, storing the result in OUTPUT (which must be a variable).
*************** their operands more than once, so operan
*** 20911,20936 ****
call `abort'. Callers should check for this situation first, using
`MODE_HAS_INFINITIES'. *Note Storage Layout::.
! - Macro: REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE X)
Returns the negative of the floating point value X.
! - Macro: REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE X)
Returns the absolute value of X.
! - Macro: REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE MODE,
enum machine_mode X)
Truncates the floating point value X to fit in MODE. The return
value is still a full-size `REAL_VALUE_TYPE', but it has an
appropriate bit pattern to be output asa floating constant whose
precision accords with mode MODE.
! - Macro: void REAL_VALUE_TO_INT (HOST_WIDE_INT LOW, HOST_WIDE_INT
HIGH, REAL_VALUE_TYPE X)
Converts a floating point value X into a double-precision integer
which is then stored into LOW and HIGH. If the value is not
integral, it is truncated.
! - Macro: void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE X, HOST_WIDE_INT
LOW, HOST_WIDE_INT HIGH, enum machine_mode MODE)
Converts a double-precision integer found in LOW and HIGH, into a
floating point value which is then stored into X. The value is
--- 20926,20951 ----
call `abort'. Callers should check for this situation first, using
`MODE_HAS_INFINITIES'. *Note Storage Layout::.
! -- Macro: REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE X)
Returns the negative of the floating point value X.
! -- Macro: REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE X)
Returns the absolute value of X.
! -- Macro: REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE MODE,
enum machine_mode X)
Truncates the floating point value X to fit in MODE. The return
value is still a full-size `REAL_VALUE_TYPE', but it has an
appropriate bit pattern to be output asa floating constant whose
precision accords with mode MODE.
! -- Macro: void REAL_VALUE_TO_INT (HOST_WIDE_INT LOW, HOST_WIDE_INT
HIGH, REAL_VALUE_TYPE X)
Converts a floating point value X into a double-precision integer
which is then stored into LOW and HIGH. If the value is not
integral, it is truncated.
! -- Macro: void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE X, HOST_WIDE_INT
LOW, HOST_WIDE_INT HIGH, enum machine_mode MODE)
Converts a double-precision integer found in LOW and HIGH, into a
floating point value which is then stored into X. The value is
*************** their operands more than once, so operan
*** 20939,20950 ****
File: gccint.info, Node: Mode Switching, Next: Target Attributes, Prev: Floating Point, Up: Target Macros
! Mode Switching Instructions
! ===========================
! The following macros control mode switching optimizations:
! - Macro: OPTIMIZE_MODE_SWITCHING (ENTITY)
Define this macro if the port needs extra instructions inserted
for mode switching in an optimizing compilation.
--- 20954,20965 ----
File: gccint.info, Node: Mode Switching, Next: Target Attributes, Prev: Floating Point, Up: Target Macros
! 11.23 Mode Switching Instructions
! =================================
! The following macros control mode switching optimizations:
! -- Macro: OPTIMIZE_MODE_SWITCHING (ENTITY)
Define this macro if the port needs extra instructions inserted
for mode switching in an optimizing compilation.
*************** Mode Switching Instructions
*** 20965,20971 ****
`MODE_PRIORITY_TO_MODE' and `EMIT_MODE_SET'. `MODE_AFTER',
`MODE_ENTRY', and `MODE_EXIT' are optional.
! - Macro: NUM_MODES_FOR_MODE_SWITCHING
If you define `OPTIMIZE_MODE_SWITCHING', you have to define this as
initializer for an array of integers. Each initializer element N
refers to an entity that needs mode switching, and specifies the
--- 20980,20986 ----
`MODE_PRIORITY_TO_MODE' and `EMIT_MODE_SET'. `MODE_AFTER',
`MODE_ENTRY', and `MODE_EXIT' are optional.
! -- Macro: NUM_MODES_FOR_MODE_SWITCHING
If you define `OPTIMIZE_MODE_SWITCHING', you have to define this as
initializer for an array of integers. Each initializer element N
refers to an entity that needs mode switching, and specifies the
*************** Mode Switching Instructions
*** 20977,21007 ****
as numbers 0 ... N - 1. N is used to specify that no mode switch
is needed / supplied.
! - Macro: MODE_NEEDED (ENTITY, INSN)
ENTITY is an integer specifying a mode-switched entity. If
`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 ENTITY
must be switched into prior to the execution of INSN.
! - Macro: MODE_AFTER (MODE, INSN)
If this macro is defined, it is evaluated for every INSN during
mode switching. It determines the mode that an insn results in (if
different from the incoming mode).
! - Macro: MODE_ENTRY (ENTITY)
If this macro is defined, it is evaluated for every ENTITY that
needs mode switching. It should evaluate to an integer, which is a
mode that ENTITY is assumed to be switched to at function entry.
If `MODE_ENTRY' is defined then `MODE_EXIT' must be defined.
! - Macro: MODE_EXIT (ENTITY)
If this macro is defined, it is evaluated for every ENTITY that
needs mode switching. It should evaluate to an integer, which is a
mode that ENTITY is assumed to be switched to at function exit. If
`MODE_EXIT' is defined then `MODE_ENTRY' must be defined.
! - Macro: MODE_PRIORITY_TO_MODE (ENTITY, N)
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
--- 20992,21022 ----
as numbers 0 ... N - 1. N is used to specify that no mode switch
is needed / supplied.
! -- Macro: MODE_NEEDED (ENTITY, INSN)
ENTITY is an integer specifying a mode-switched entity. If
`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 ENTITY
must be switched into prior to the execution of INSN.
! -- Macro: MODE_AFTER (MODE, INSN)
If this macro is defined, it is evaluated for every INSN during
mode switching. It determines the mode that an insn results in (if
different from the incoming mode).
! -- Macro: MODE_ENTRY (ENTITY)
If this macro is defined, it is evaluated for every ENTITY that
needs mode switching. It should evaluate to an integer, which is a
mode that ENTITY is assumed to be switched to at function entry.
If `MODE_ENTRY' is defined then `MODE_EXIT' must be defined.
! -- Macro: MODE_EXIT (ENTITY)
If this macro is defined, it is evaluated for every ENTITY that
needs mode switching. It should evaluate to an integer, which is a
mode that ENTITY is assumed to be switched to at function exit. If
`MODE_EXIT' is defined then `MODE_ENTRY' must be defined.
! -- Macro: MODE_PRIORITY_TO_MODE (ENTITY, N)
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
*************** Mode Switching Instructions
*** 21009,21015 ****
For any fixed ENTITY, `mode_priority_to_mode' (ENTITY, N) shall be
a bijection in 0 ... `num_modes_for_mode_switching[ENTITY] - 1'.
! - Macro: EMIT_MODE_SET (ENTITY, MODE, HARD_REGS_LIVE)
Generate one or more insns to set ENTITY to MODE. HARD_REG_LIVE
is the set of hard registers live at the point where the insn(s)
are to be inserted.
--- 21024,21030 ----
For any fixed ENTITY, `mode_priority_to_mode' (ENTITY, N) shall be
a bijection in 0 ... `num_modes_for_mode_switching[ENTITY] - 1'.
! -- Macro: EMIT_MODE_SET (ENTITY, MODE, HARD_REGS_LIVE)
Generate one or more insns to set ENTITY to MODE. HARD_REG_LIVE
is the set of hard registers live at the point where the insn(s)
are to be inserted.
*************** Mode Switching Instructions
*** 21017,21048 ****
File: gccint.info, Node: Target Attributes, Next: MIPS Coprocessors, Prev: Mode Switching, Up: Target Macros
! Defining target-specific uses of `__attribute__'
! ================================================
! Target-specific attributes may be defined for functions, data and
! types. These are described using the following target hooks; they also
! need to be documented in `extend.texi'.
! - Target Hook: const struct attribute_spec * TARGET_ATTRIBUTE_TABLE
If defined, this target hook points to an array of `struct
attribute_spec' (defined in `tree.h') specifying the machine
specific attributes for this target and some of the restrictions
on the entities to which these attributes are applied and the
arguments they take.
! - Target Hook: int TARGET_COMP_TYPE_ATTRIBUTES (tree TYPE1, tree TYPE2)
If defined, this target hook is a function which returns zero if
the attributes on TYPE1 and TYPE2 are incompatible, one if they
are compatible, and two if they are nearly compatible (which
causes a warning to be generated). If this is not defined,
machine-specific attributes are supposed always to be compatible.
! - Target Hook: void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree TYPE)
If defined, this target hook is a function which assigns default
attributes to newly defined TYPE.
! - Target Hook: tree TARGET_MERGE_TYPE_ATTRIBUTES (tree TYPE1, tree
TYPE2)
Define this target hook if the merging of type attributes needs
special handling. If defined, the result is a list of the combined
--- 21032,21064 ----
File: gccint.info, Node: Target Attributes, Next: MIPS Coprocessors, Prev: Mode Switching, Up: Target Macros
! 11.24 Defining target-specific uses of `__attribute__'
! ======================================================
! Target-specific attributes may be defined for functions, data and types.
! These are described using the following target hooks; they also need to
! be documented in `extend.texi'.
! -- Target Hook: const struct attribute_spec * TARGET_ATTRIBUTE_TABLE
If defined, this target hook points to an array of `struct
attribute_spec' (defined in `tree.h') specifying the machine
specific attributes for this target and some of the restrictions
on the entities to which these attributes are applied and the
arguments they take.
! -- Target Hook: int TARGET_COMP_TYPE_ATTRIBUTES (tree TYPE1, tree
! TYPE2)
If defined, this target hook is a function which returns zero if
the attributes on TYPE1 and TYPE2 are incompatible, one if they
are compatible, and two if they are nearly compatible (which
causes a warning to be generated). If this is not defined,
machine-specific attributes are supposed always to be compatible.
! -- Target Hook: void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree TYPE)
If defined, this target hook is a function which assigns default
attributes to newly defined TYPE.
! -- Target Hook: tree TARGET_MERGE_TYPE_ATTRIBUTES (tree TYPE1, tree
TYPE2)
Define this target hook if the merging of type attributes needs
special handling. If defined, the result is a list of the combined
*************** need to be documented in `extend.texi'.
*** 21050,21056 ****
`comptypes' has already been called and returned 1. This function
may call `merge_attributes' to handle machine-independent merging.
! - Target Hook: tree TARGET_MERGE_DECL_ATTRIBUTES (tree OLDDECL, tree
NEWDECL)
Define this target hook if the merging of decl attributes needs
special handling. If defined, the result is a list of the combined
--- 21066,21072 ----
`comptypes' has already been called and returned 1. This function
may call `merge_attributes' to handle machine-independent merging.
! -- Target Hook: tree TARGET_MERGE_DECL_ATTRIBUTES (tree OLDDECL, tree
NEWDECL)
Define this target hook if the merging of decl attributes needs
special handling. If defined, the result is a list of the combined
*************** need to be documented in `extend.texi'.
*** 21067,21073 ****
as the expansion of `TARGET_MERGE_DECL_ATTRIBUTES'. This is done
in `i386/cygwin.h' and `i386/i386.c', for example.
! - Target Hook: void TARGET_INSERT_ATTRIBUTES (tree NODE, tree
*ATTR_PTR)
Define this target hook if you want to be able to add attributes
to a decl when it is being created. This is normally useful for
--- 21083,21089 ----
as the expansion of `TARGET_MERGE_DECL_ATTRIBUTES'. This is done
in `i386/cygwin.h' and `i386/i386.c', for example.
! -- Target Hook: void TARGET_INSERT_ATTRIBUTES (tree NODE, tree
*ATTR_PTR)
Define this target hook if you want to be able to add attributes
to a decl when it is being created. This is normally useful for
*************** need to be documented in `extend.texi'.
*** 21080,21086 ****
modified to point to the new attributes, or a copy of the list may
be made if further changes are needed.
! - Target Hook: bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree FNDECL)
This target hook returns `true' if it is ok to inline FNDECL into
the current function, despite its having target-specific
attributes, `false' otherwise. By default, if a function has a
--- 21096,21103 ----
modified to point to the new attributes, or a copy of the list may
be made if further changes are needed.
! -- Target Hook: bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree
! FNDECL)
This target hook returns `true' if it is ok to inline FNDECL into
the current function, despite its having target-specific
attributes, `false' otherwise. By default, if a function has a
*************** need to be documented in `extend.texi'.
*** 21089,21105 ****
File: gccint.info, Node: MIPS Coprocessors, Next: PCH Target, Prev: Target Attributes, Up: Target Macros
! Defining coprocessor specifics for MIPS targets.
! ================================================
! The MIPS specification allows MIPS implementations to have as many
! as 4 coprocessors, each with as many as 32 private registers. GCC
! supports accessing these registers and transferring values between the
! registers and memory using asm-ized variables. For example:
register unsigned int cp0count asm ("c0r1");
unsigned int d;
!
d = cp0count + 3;
("c0r1" is the default name of register 1 in coprocessor 0; alternate
--- 21106,21122 ----
File: gccint.info, Node: MIPS Coprocessors, Next: PCH Target, Prev: Target Attributes, Up: Target Macros
! 11.25 Defining coprocessor specifics for MIPS targets.
! ======================================================
! The MIPS specification allows MIPS implementations to have as many as 4
! coprocessors, each with as many as 32 private registers. GCC supports
! accessing these registers and transferring values between the registers
! and memory using asm-ized variables. For example:
register unsigned int cp0count asm ("c0r1");
unsigned int d;
!
d = cp0count + 3;
("c0r1" is the default name of register 1 in coprocessor 0; alternate
*************** floating-point support; they are not inc
*** 21117,21123 ****
There is one macro used in defining the MIPS coprocessor interface
which you may want to override in subtargets; it is described below.
! - Macro: ALL_COP_ADDITIONAL_REGISTER_NAMES
A comma-separated list (with leading comma) of pairs describing the
alternate names of coprocessor registers. The format of each
entry should be
--- 21134,21140 ----
There is one macro used in defining the MIPS coprocessor interface
which you may want to override in subtargets; it is described below.
! -- Macro: ALL_COP_ADDITIONAL_REGISTER_NAMES
A comma-separated list (with leading comma) of pairs describing the
alternate names of coprocessor registers. The format of each
entry should be
*************** which you may want to override in subtar
*** 21127,21136 ****
File: gccint.info, Node: PCH Target, Next: Misc, Prev: MIPS Coprocessors, Up: Target Macros
! Parameters for Precompiled Header Validity Checking
! ===================================================
! - Target Hook: void * TARGET_GET_PCH_VALIDITY (size_t * SZ)
Define this hook if your target needs to check a different
collection of flags than the default, which is every flag defined
by `TARGET_SWITCHES' and `TARGET_OPTIONS'. It should return some
--- 21144,21153 ----
File: gccint.info, Node: PCH Target, Next: Misc, Prev: MIPS Coprocessors, Up: Target Macros
! 11.26 Parameters for Precompiled Header Validity Checking
! =========================================================
! -- Target Hook: void * TARGET_GET_PCH_VALIDITY (size_t * SZ)
Define this hook if your target needs to check a different
collection of flags than the default, which is every flag defined
by `TARGET_SWITCHES' and `TARGET_OPTIONS'. It should return some
*************** Parameters for Precompiled Header Validi
*** 21138,21144 ****
`TARGET_PCH_VALID_P' later; it should set `SZ' to the size of the
data.
! - Target Hook: const char * TARGET_PCH_VALID_P (const void * DATA,
size_t SZ)
Define this hook if your target needs to check a different
collection of flags than the default, which is every flag defined
--- 21155,21161 ----
`TARGET_PCH_VALID_P' later; it should set `SZ' to the size of the
data.
! -- Target Hook: const char * TARGET_PCH_VALID_P (const void * DATA,
size_t SZ)
Define this hook if your target needs to check a different
collection of flags than the default, which is every flag defined
*************** Parameters for Precompiled Header Validi
*** 21152,21163 ****
File: gccint.info, Node: Misc, Prev: PCH Target, Up: Target Macros
! Miscellaneous Parameters
! ========================
! Here are several miscellaneous parameters.
! - Macro: PREDICATE_CODES
Define this if you have defined special-purpose predicates in the
file `MACHINE.c'. This macro is called within an initializer of an
array of structures. The first field in the structure is the name
--- 21169,21180 ----
File: gccint.info, Node: Misc, Prev: PCH Target, Up: Target Macros
! 11.27 Miscellaneous Parameters
! ==============================
! Here are several miscellaneous parameters.
! -- Macro: PREDICATE_CODES
Define this if you have defined special-purpose predicates in the
file `MACHINE.c'. This macro is called within an initializer of an
array of structures. The first field in the structure is the name
*************** Miscellaneous Parameters
*** 21182,21188 ****
For each predicate function named in `PREDICATE_CODES', a
declaration will be generated in `insn-codes.h'.
! - Macro: SPECIAL_MODE_PREDICATES
Define this if you have special predicates that know special things
about modes. Genrecog will warn about certain forms of
`match_operand' without a mode; if the operand predicate is listed
--- 21199,21205 ----
For each predicate function named in `PREDICATE_CODES', a
declaration will be generated in `insn-codes.h'.
! -- Macro: SPECIAL_MODE_PREDICATES
Define this if you have special predicates that know special things
about modes. Genrecog will warn about certain forms of
`match_operand' without a mode; if the operand predicate is listed
*************** Miscellaneous Parameters
*** 21195,21205 ****
#define SPECIAL_MODE_PREDICATES \
"ext_register_operand",
! - Macro: CASE_VECTOR_MODE
An alias for a machine mode name. This is the machine mode that
elements of a jump-table should have.
! - Macro: CASE_VECTOR_SHORTEN_MODE (MIN_OFFSET, MAX_OFFSET, BODY)
Optional: return the preferred mode for an `addr_diff_vec' when
the minimum and maximum offset are known. If you define this, it
enables extra code in branch shortening to deal with
--- 21212,21222 ----
#define SPECIAL_MODE_PREDICATES \
"ext_register_operand",
! -- Macro: CASE_VECTOR_MODE
An alias for a machine mode name. This is the machine mode that
elements of a jump-table should have.
! -- Macro: CASE_VECTOR_SHORTEN_MODE (MIN_OFFSET, MAX_OFFSET, BODY)
Optional: return the preferred mode for an `addr_diff_vec' when
the minimum and maximum offset are known. If you define this, it
enables extra code in branch shortening to deal with
*************** Miscellaneous Parameters
*** 21208,21233 ****
The BODY argument is provided so that the offset_unsigned and scale
flags can be updated.
! - Macro: CASE_VECTOR_PC_RELATIVE
Define this macro to be a C expression to indicate when jump-tables
should contain relative addresses. You need not define this macro
if jump-tables never contain relative addresses, or jump-tables
should contain relative addresses only when `-fPIC' or `-fPIC' is
in effect.
! - Macro: CASE_DROPS_THROUGH
Define this if control falls through a `case' insn when the index
value is out of range. This means the specified default-label is
actually ignored by the `case' insn proper.
! - Macro: CASE_VALUES_THRESHOLD
Define this to be the smallest number of different values for
which it is best to use a jump-table instead of a tree of
conditional branches. The default is four for machines with a
`casesi' instruction and five otherwise. This is best for most
machines.
! - Macro: CASE_USE_BIT_TESTS
Define this macro to be a C expression to indicate whether C switch
statements may be implemented by a sequence of bit tests. This is
advantageous on processors that can efficiently implement left
--- 21225,21250 ----
The BODY argument is provided so that the offset_unsigned and scale
flags can be updated.
! -- Macro: CASE_VECTOR_PC_RELATIVE
Define this macro to be a C expression to indicate when jump-tables
should contain relative addresses. You need not define this macro
if jump-tables never contain relative addresses, or jump-tables
should contain relative addresses only when `-fPIC' or `-fPIC' is
in effect.
! -- Macro: CASE_DROPS_THROUGH
Define this if control falls through a `case' insn when the index
value is out of range. This means the specified default-label is
actually ignored by the `case' insn proper.
! -- Macro: CASE_VALUES_THRESHOLD
Define this to be the smallest number of different values for
which it is best to use a jump-table instead of a tree of
conditional branches. The default is four for machines with a
`casesi' instruction and five otherwise. This is best for most
machines.
! -- Macro: CASE_USE_BIT_TESTS
Define this macro to be a C expression to indicate whether C switch
statements may be implemented by a sequence of bit tests. This is
advantageous on processors that can efficiently implement left
*************** Miscellaneous Parameters
*** 21236,21248 ****
this macro returns `true' if the target defines an `ashlsi3'
pattern, and `false' otherwise.
! - Macro: WORD_REGISTER_OPERATIONS
Define this macro if operations between registers with integral
mode smaller than a word are always performed on the entire
register. Most RISC machines have this property and most CISC
machines do not.
! - Macro: LOAD_EXTEND_OP (MEM_MODE)
Define this macro to be a C expression indicating when insns that
read memory in MEM_MODE, an integral mode narrower than a word,
set the bits outside of MEM_MODE to be either the sign-extension
--- 21253,21265 ----
this macro returns `true' if the target defines an `ashlsi3'
pattern, and `false' otherwise.
! -- Macro: WORD_REGISTER_OPERATIONS
Define this macro if operations between registers with integral
mode smaller than a word are always performed on the entire
register. Most RISC machines have this property and most CISC
machines do not.
! -- Macro: LOAD_EXTEND_OP (MEM_MODE)
Define this macro to be a C expression indicating when insns that
read memory in MEM_MODE, an integral mode narrower than a word,
set the bits outside of MEM_MODE to be either the sign-extension
*************** Miscellaneous Parameters
*** 21267,21294 ****
`word_mode', but that they can change to another integral mode that
is larger then MEM_MODE but still smaller than `word_mode'.
! - Macro: SHORT_IMMEDIATES_SIGN_EXTEND
Define this macro if loading short immediate values into registers
sign extends.
! - Macro: FIXUNS_TRUNC_LIKE_FIX_TRUNC
Define this macro if the same instructions that convert a floating
point number to a signed fixed point number also convert validly
to an unsigned one.
! - Macro: MOVE_MAX
The maximum number of bytes that a single instruction can move
quickly between memory and registers or between two memory
locations.
! - Macro: MAX_MOVE_MAX
The maximum number of bytes that a single instruction can move
quickly between memory and registers or between two memory
locations. If this is undefined, the default is `MOVE_MAX'.
Otherwise, it is the constant value that is the largest value that
`MOVE_MAX' can have at run-time.
! - Macro: SHIFT_COUNT_TRUNCATED
A C expression that is nonzero if on this machine the number of
bits actually used for the count of a shift operation is equal to
the number of bits needed to represent the size of the object
--- 21284,21311 ----
`word_mode', but that they can change to another integral mode that
is larger then MEM_MODE but still smaller than `word_mode'.
! -- Macro: SHORT_IMMEDIATES_SIGN_EXTEND
Define this macro if loading short immediate values into registers
sign extends.
! -- Macro: FIXUNS_TRUNC_LIKE_FIX_TRUNC
Define this macro if the same instructions that convert a floating
point number to a signed fixed point number also convert validly
to an unsigned one.
! -- Macro: MOVE_MAX
The maximum number of bytes that a single instruction can move
quickly between memory and registers or between two memory
locations.
! -- Macro: MAX_MOVE_MAX
The maximum number of bytes that a single instruction can move
quickly between memory and registers or between two memory
locations. If this is undefined, the default is `MOVE_MAX'.
Otherwise, it is the constant value that is the largest value that
`MOVE_MAX' can have at run-time.
! -- Macro: SHIFT_COUNT_TRUNCATED
A C expression that is nonzero if on this machine the number of
bits actually used for the count of a shift operation is equal to
the number of bits needed to represent the size of the object
*************** Miscellaneous Parameters
*** 21314,21320 ****
You need not define this macro if it would always have the value
of zero.
! - Macro: TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)
A C expression which is nonzero if on this machine it is safe to
"convert" an integer of INPREC bits to one of OUTPREC bits (where
OUTPREC is smaller than INPREC) by merely operating on it as if it
--- 21331,21337 ----
You need not define this macro if it would always have the value
of zero.
! -- Macro: TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)
A C expression which is nonzero if on this machine it is safe to
"convert" an integer of INPREC bits to one of OUTPREC bits (where
OUTPREC is smaller than INPREC) by merely operating on it as if it
*************** Miscellaneous Parameters
*** 21327,21333 ****
If this is the case, making `TRULY_NOOP_TRUNCATION' return 0 in
such cases may improve things.
! - Macro: STORE_FLAG_VALUE
A C expression describing the value returned by a comparison
operator with an integral mode and stored by a store-flag
instruction (`sCOND') when the condition is true. This
--- 21344,21350 ----
If this is the case, making `TRULY_NOOP_TRUNCATION' return 0 in
such cases may improve things.
! -- Macro: STORE_FLAG_VALUE
A C expression describing the value returned by a comparison
operator with an integral mode and stored by a store-flag
instruction (`sCOND') when the condition is true. This
*************** Miscellaneous Parameters
*** 21412,21426 ****
need not define `STORE_FLAG_VALUE' if the machine has no store-flag
instructions, or if the value generated by these instructions is 1.
! - Macro: FLOAT_STORE_FLAG_VALUE (MODE)
A C expression that gives a nonzero `REAL_VALUE_TYPE' value that is
returned when comparison operators with floating-point results are
true. Define this macro on machine that have comparison
operations that return floating-point values. If there are no
such operations, do not define this macro.
! - Macro: CLZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
! - Macro: CTZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
A C expression that evaluates to true if the architecture defines
a value for `clz' or `ctz' with a zero operand. If so, VALUE
should be set to this value. If this macro is not defined, the
--- 21429,21443 ----
need not define `STORE_FLAG_VALUE' if the machine has no store-flag
instructions, or if the value generated by these instructions is 1.
! -- Macro: FLOAT_STORE_FLAG_VALUE (MODE)
A C expression that gives a nonzero `REAL_VALUE_TYPE' value that is
returned when comparison operators with floating-point results are
true. Define this macro on machine that have comparison
operations that return floating-point values. If there are no
such operations, do not define this macro.
! -- Macro: CLZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
! -- Macro: CTZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
A C expression that evaluates to true if the architecture defines
a value for `clz' or `ctz' with a zero operand. If so, VALUE
should be set to this value. If this macro is not defined, the
*************** Miscellaneous Parameters
*** 21437,21443 ****
match the target expansion of these operations without fear of
breaking the API.
! - Macro: Pmode
An alias for the machine mode for pointers. On most machines,
define this to be the integer mode corresponding to the width of a
hardware pointer; `SImode' on 32-bit machine or `DImode' on 64-bit
--- 21454,21460 ----
match the target expansion of these operations without fear of
breaking the API.
! -- Macro: Pmode
An alias for the machine mode for pointers. On most machines,
define this to be the integer mode corresponding to the width of a
hardware pointer; `SImode' on 32-bit machine or `DImode' on 64-bit
*************** Miscellaneous Parameters
*** 21449,21460 ****
`POINTERS_EXTEND_UNSIGNED' to specify how pointers are extended to
`Pmode'.
! - Macro: FUNCTION_MODE
An alias for the machine mode used for memory references to
functions being called, in `call' RTL expressions. On most
machines this should be `QImode'.
! - Macro: INTEGRATE_THRESHOLD (DECL)
A C expression for the maximum number of instructions above which
the function DECL should not be inlined. DECL is a
`FUNCTION_DECL' node.
--- 21466,21477 ----
`POINTERS_EXTEND_UNSIGNED' to specify how pointers are extended to
`Pmode'.
! -- Macro: FUNCTION_MODE
An alias for the machine mode used for memory references to
functions being called, in `call' RTL expressions. On most
machines this should be `QImode'.
! -- Macro: INTEGRATE_THRESHOLD (DECL)
A C expression for the maximum number of instructions above which
the function DECL should not be inlined. DECL is a
`FUNCTION_DECL' node.
*************** Miscellaneous Parameters
*** 21463,21469 ****
of arguments that the function accepts. Some people think a larger
threshold should be used on RISC machines.
! - Macro: STDC_0_IN_SYSTEM_HEADERS
In normal operation, the preprocessor expands `__STDC__' to the
constant 1, to signify that GCC conforms to ISO Standard C. On
some hosts, like Solaris, the system compiler uses a different
--- 21480,21486 ----
of arguments that the function accepts. Some people think a larger
threshold should be used on RISC machines.
! -- Macro: STDC_0_IN_SYSTEM_HEADERS
In normal operation, the preprocessor expands `__STDC__' to the
constant 1, to signify that GCC conforms to ISO Standard C. On
some hosts, like Solaris, the system compiler uses a different
*************** Miscellaneous Parameters
*** 21474,21486 ****
convention when processing system header files, but when
processing user files `__STDC__' will always expand to 1.
! - Macro: NO_IMPLICIT_EXTERN_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 `extern "C" {...}'.
! - Macro: REGISTER_TARGET_PRAGMAS ()
Define this macro if you want to implement any target-specific
pragmas. If defined, it is a C expression which makes a series of
calls to `c_register_pragma' for each pragma. The macro may also
--- 21491,21503 ----
convention when processing system header files, but when
processing user files `__STDC__' will always expand to 1.
! -- Macro: NO_IMPLICIT_EXTERN_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 `extern "C" {...}'.
! -- Macro: REGISTER_TARGET_PRAGMAS ()
Define this macro if you want to implement any target-specific
pragmas. If defined, it is a C expression which makes a series of
calls to `c_register_pragma' for each pragma. The macro may also
*************** Miscellaneous Parameters
*** 21500,21506 ****
are silently ignored, unless the user specifies
`-Wunknown-pragmas'.
! - Function: void c_register_pragma (const char *SPACE, const char
*NAME, void (*CALLBACK) (struct cpp_reader *))
Each call to `c_register_pragma' establishes one pragma. The
CALLBACK routine will be called when the preprocessor encounters a
--- 21517,21523 ----
are silently ignored, unless the user specifies
`-Wunknown-pragmas'.
! -- Function: void c_register_pragma (const char *SPACE, const char
*NAME, void (*CALLBACK) (struct cpp_reader *))
Each call to `c_register_pragma' establishes one pragma. The
CALLBACK routine will be called when the preprocessor encounters a
*************** Miscellaneous Parameters
*** 21531,21537 ****
a rule to the makefile fragment pointed to by `tmake_file' that
shows how to build this object file.
! - Macro: HANDLE_SYSV_PRAGMA
Define this macro (to a value of 1) if you want the System V style
pragmas `#pragma pack()' and `#pragma weak [=]'
to be supported by gcc.
--- 21548,21554 ----
a rule to the makefile fragment pointed to by `tmake_file' that
shows how to build this object file.
! -- Macro: HANDLE_SYSV_PRAGMA
Define this macro (to a value of 1) if you want the System V style
pragmas `#pragma pack()' and `#pragma weak [=]'
to be supported by gcc.
*************** Miscellaneous Parameters
*** 21560,21566 ****
`ASM_WEAKEN_LABEL' are defined. If enabled it allows the creation
of specifically named weak labels, optionally with a value.
! - Macro: HANDLE_PRAGMA_PACK_PUSH_POP
Define this macro (to a value of 1) if you want to support the
Win32 style pragmas `#pragma pack(push,N)' and `#pragma
pack(pop)'. The `pack(push,N)' pragma specifies the maximum
--- 21577,21583 ----
`ASM_WEAKEN_LABEL' are defined. If enabled it allows the creation
of specifically named weak labels, optionally with a value.
! -- Macro: HANDLE_PRAGMA_PACK_PUSH_POP
Define this macro (to a value of 1) if you want to support the
Win32 style pragmas `#pragma pack(push,N)' and `#pragma
pack(pop)'. The `pack(push,N)' pragma specifies the maximum
*************** Miscellaneous Parameters
*** 21571,21595 ****
be stacked, so that invocations of `#pragma pack(pop)' will return
to the previous value.
! - Macro: DOLLARS_IN_IDENTIFIERS
Define this macro to control use of the character `$' in
identifier names for the C family of languages. 0 means `$' is
not allowed by default; 1 means it is allowed. 1 is the default;
there is no need to define this macro in that case.
! - Macro: NO_DOLLAR_IN_LABEL
Define this macro if the assembler does not accept the character
`$' in label names. By default constructors and destructors in
G++ have `$' in the identifiers. If this macro is defined, `.' is
used instead.
! - Macro: NO_DOT_IN_LABEL
Define this macro if the assembler does not accept the character
`.' in label names. By default constructors and destructors in G++
have names that use `.'. If this macro is defined, these names
are rewritten to avoid `.'.
! - Macro: DEFAULT_MAIN_RETURN
Define this macro if the target system expects every program's
`main' function to return a standard "success" value by default
(if no other value is explicitly returned).
--- 21588,21612 ----
be stacked, so that invocations of `#pragma pack(pop)' will return
to the previous value.
! -- Macro: DOLLARS_IN_IDENTIFIERS
Define this macro to control use of the character `$' in
identifier names for the C family of languages. 0 means `$' is
not allowed by default; 1 means it is allowed. 1 is the default;
there is no need to define this macro in that case.
! -- Macro: NO_DOLLAR_IN_LABEL
Define this macro if the assembler does not accept the character
`$' in label names. By default constructors and destructors in
G++ have `$' in the identifiers. If this macro is defined, `.' is
used instead.
! -- Macro: NO_DOT_IN_LABEL
Define this macro if the assembler does not accept the character
`.' in label names. By default constructors and destructors in G++
have names that use `.'. If this macro is defined, these names
are rewritten to avoid `.'.
! -- Macro: DEFAULT_MAIN_RETURN
Define this macro if the target system expects every program's
`main' function to return a standard "success" value by default
(if no other value is explicitly returned).
*************** Miscellaneous Parameters
*** 21598,21604 ****
generate the appropriate rtl instructions. It is used only when
compiling the end of `main'.
! - Macro: INSN_SETS_ARE_DELAYED (INSN)
Define this macro as a C expression that is nonzero if it is safe
for the delay slot scheduler to place instructions in the delay
slot of INSN, even if they appear to use a resource set or
--- 21615,21621 ----
generate the appropriate rtl instructions. It is used only when
compiling the end of `main'.
! -- Macro: INSN_SETS_ARE_DELAYED (INSN)
Define this macro as a C expression that is nonzero if it is safe
for the delay slot scheduler to place instructions in the delay
slot of INSN, even if they appear to use a resource set or
*************** Miscellaneous Parameters
*** 21609,21615 ****
You need not define this macro if it would always return zero.
! - Macro: INSN_REFERENCES_ARE_DELAYED (INSN)
Define this macro as a C expression that is nonzero if it is safe
for the delay slot scheduler to place instructions in the delay
slot of INSN, even if they appear to set or clobber a resource
--- 21626,21632 ----
You need not define this macro if it would always return zero.
! -- Macro: INSN_REFERENCES_ARE_DELAYED (INSN)
Define this macro as a C expression that is nonzero if it is safe
for the delay slot scheduler to place instructions in the delay
slot of INSN, even if they appear to set or clobber a resource
*************** Miscellaneous Parameters
*** 21622,21666 ****
You need not define this macro if it would always return zero.
! - Macro: MULTIPLE_SYMBOL_SPACES
Define this macro if in some cases global symbols from one
translation unit may not be bound to undefined symbols in another
translation unit without user intervention. For instance, under
Microsoft Windows symbols must be explicitly imported from shared
libraries (DLLs).
! - Macro: MD_ASM_CLOBBERS (CLOBBERS)
A C statement that adds to CLOBBERS `STRING_CST' trees for any
hard regs the port wishes to automatically clobber for all asms.
! - Macro: MATH_LIBRARY
Define this macro as a C string constant for the linker argument
to link in the system math library, or `""' if the target does not
have a separate math library.
You need only define this macro if the default of `"-lm"' is wrong.
! - Macro: LIBRARY_PATH_ENV
Define this macro as a C string constant for the environment
variable that specifies where the linker should look for libraries.
You need only define this macro if the default of `"LIBRARY_PATH"'
is wrong.
! - Macro: 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.
Defining `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.
! - Macro: MAX_CONDITIONAL_EXECUTE
A C expression for the maximum number of instructions to execute
via conditional execution instructions instead of a branch. A
value of `BRANCH_COST'+1 is the default if the machine does not
use cc0, and 1 if it does use cc0.
! - Macro: IFCVT_MODIFY_TESTS (CE_INFO, TRUE_EXPR, FALSE_EXPR)
Used if the target needs to perform machine-dependent
modifications on the conditionals used for turning basic blocks
into conditionally executed code. CE_INFO points to a data
--- 21639,21683 ----
You need not define this macro if it would always return zero.
! -- Macro: MULTIPLE_SYMBOL_SPACES
Define this macro if in some cases global symbols from one
translation unit may not be bound to undefined symbols in another
translation unit without user intervention. For instance, under
Microsoft Windows symbols must be explicitly imported from shared
libraries (DLLs).
! -- Macro: MD_ASM_CLOBBERS (CLOBBERS)
A C statement that adds to CLOBBERS `STRING_CST' trees for any
hard regs the port wishes to automatically clobber for all asms.
! -- Macro: MATH_LIBRARY
Define this macro as a C string constant for the linker argument
to link in the system math library, or `""' if the target does not
have a separate math library.
You need only define this macro if the default of `"-lm"' is wrong.
! -- Macro: LIBRARY_PATH_ENV
Define this macro as a C string constant for the environment
variable that specifies where the linker should look for libraries.
You need only define this macro if the default of `"LIBRARY_PATH"'
is wrong.
! -- Macro: 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.
Defining `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.
! -- Macro: MAX_CONDITIONAL_EXECUTE
A C expression for the maximum number of instructions to execute
via conditional execution instructions instead of a branch. A
value of `BRANCH_COST'+1 is the default if the machine does not
use cc0, and 1 if it does use cc0.
! -- Macro: IFCVT_MODIFY_TESTS (CE_INFO, TRUE_EXPR, FALSE_EXPR)
Used if the target needs to perform machine-dependent
modifications on the conditionals used for turning basic blocks
into conditionally executed code. CE_INFO points to a data
*************** Miscellaneous Parameters
*** 21670,21676 ****
else-block, respectively. Set either TRUE_EXPR or FALSE_EXPR to a
null pointer if the tests cannot be converted.
! - Macro: IFCVT_MODIFY_MULTIPLE_TESTS (CE_INFO, BB, TRUE_EXPR,
FALSE_EXPR)
Like `IFCVT_MODIFY_TESTS', but used when converting more
complicated if-statements into conditions combined by `and' and
--- 21687,21693 ----
else-block, respectively. Set either TRUE_EXPR or FALSE_EXPR to a
null pointer if the tests cannot be converted.
! -- Macro: IFCVT_MODIFY_MULTIPLE_TESTS (CE_INFO, BB, TRUE_EXPR,
FALSE_EXPR)
Like `IFCVT_MODIFY_TESTS', but used when converting more
complicated if-statements into conditions combined by `and' and
*************** Miscellaneous Parameters
*** 21678,21712 ****
test that is currently being processed and about to be turned into
a condition.
! - Macro: IFCVT_MODIFY_INSN (CE_INFO, PATTERN, INSN)
A C expression to modify the PATTERN of an INSN that is to be
converted to conditional execution format. CE_INFO points to a
data structure, `struct ce_if_block', which contains information
about the currently processed blocks.
! - Macro: IFCVT_MODIFY_FINAL (CE_INFO)
A C expression to perform any final machine dependent
modifications in converting code to conditional execution. The
involved basic blocks can be found in the `struct ce_if_block'
structure that is pointed to by CE_INFO.
! - Macro: IFCVT_MODIFY_CANCEL (CE_INFO)
A C expression to cancel any machine dependent modifications in
converting code to conditional execution. The involved basic
blocks can be found in the `struct ce_if_block' structure that is
pointed to by CE_INFO.
! - Macro: IFCVT_INIT_EXTRA_FIELDS (CE_INFO)
A C expression to initialize any extra fields in a `struct
ce_if_block' structure, which are defined by the
`IFCVT_EXTRA_FIELDS' macro.
! - Macro: IFCVT_EXTRA_FIELDS
If defined, it should expand to a set of field declarations that
will be added to the `struct ce_if_block' structure. These should
be initialized by the `IFCVT_INIT_EXTRA_FIELDS' macro.
! - Target Hook: void TARGET_MACHINE_DEPENDENT_REORG ()
If non-null, this hook performs a target-specific pass over the
instruction stream. The compiler will run it at all optimization
levels, just before the point at which it normally does
--- 21695,21729 ----
test that is currently being processed and about to be turned into
a condition.
! -- Macro: IFCVT_MODIFY_INSN (CE_INFO, PATTERN, INSN)
A C expression to modify the PATTERN of an INSN that is to be
converted to conditional execution format. CE_INFO points to a
data structure, `struct ce_if_block', which contains information
about the currently processed blocks.
! -- Macro: IFCVT_MODIFY_FINAL (CE_INFO)
A C expression to perform any final machine dependent
modifications in converting code to conditional execution. The
involved basic blocks can be found in the `struct ce_if_block'
structure that is pointed to by CE_INFO.
! -- Macro: IFCVT_MODIFY_CANCEL (CE_INFO)
A C expression to cancel any machine dependent modifications in
converting code to conditional execution. The involved basic
blocks can be found in the `struct ce_if_block' structure that is
pointed to by CE_INFO.
! -- Macro: IFCVT_INIT_EXTRA_FIELDS (CE_INFO)
A C expression to initialize any extra fields in a `struct
ce_if_block' structure, which are defined by the
`IFCVT_EXTRA_FIELDS' macro.
! -- Macro: IFCVT_EXTRA_FIELDS
If defined, it should expand to a set of field declarations that
will be added to the `struct ce_if_block' structure. These should
be initialized by the `IFCVT_INIT_EXTRA_FIELDS' macro.
! -- Target Hook: void TARGET_MACHINE_DEPENDENT_REORG ()
If non-null, this hook performs a target-specific pass over the
instruction stream. The compiler will run it at all optimization
levels, just before the point at which it normally does
*************** Miscellaneous Parameters
*** 21721,21727 ****
You need not implement the hook if it has nothing to do. The
default definition is null.
! - Target Hook: void TARGET_INIT_BUILTINS ()
Define this hook if you have any machine-specific built-in
functions that need to be defined. It should be a function that
performs the necessary setup.
--- 21738,21744 ----
You need not implement the hook if it has nothing to do. The
default definition is null.
! -- Target Hook: void TARGET_INIT_BUILTINS ()
Define this hook if you have any machine-specific built-in
functions that need to be defined. It should be a function that
performs the necessary setup.
*************** Miscellaneous Parameters
*** 21737,21743 ****
`build_common_tree_nodes_2'; only language front ends that use
those two functions will call `TARGET_INIT_BUILTINS'.
! - Target Hook: rtx TARGET_EXPAND_BUILTIN (tree EXP, rtx TARGET, rtx
SUBTARGET, enum machine_mode MODE, int IGNORE)
Expand a call to a machine specific built-in function that was set
up by `TARGET_INIT_BUILTINS'. EXP is the expression for the
--- 21754,21760 ----
`build_common_tree_nodes_2'; only language front ends that use
those two functions will call `TARGET_INIT_BUILTINS'.
! -- Target Hook: rtx TARGET_EXPAND_BUILTIN (tree EXP, rtx TARGET, rtx
SUBTARGET, enum machine_mode MODE, int IGNORE)
Expand a call to a machine specific built-in function that was set
up by `TARGET_INIT_BUILTINS'. EXP is the expression for the
*************** Miscellaneous Parameters
*** 21747,21753 ****
IGNORE is nonzero if the value is to be ignored. This function
should return the result of the call to the built-in function.
! - Macro: MD_CAN_REDIRECT_BRANCH (BRANCH1, BRANCH2)
Take a branch insn in BRANCH1 and another in BRANCH2. Return true
if redirecting BRANCH1 to the destination of BRANCH2 is possible.
--- 21764,21770 ----
IGNORE is nonzero if the value is to be ignored. This function
should return the result of the call to the built-in function.
! -- Macro: MD_CAN_REDIRECT_BRANCH (BRANCH1, BRANCH2)
Take a branch insn in BRANCH1 and another in BRANCH2. Return true
if redirecting BRANCH1 to the destination of BRANCH2 is possible.
*************** Miscellaneous Parameters
*** 21755,21761 ****
filling of delay slots can result in branches being redirected,
and this may in turn cause a branch offset to overflow.
! - Macro: ALLOCATE_INITIAL_VALUE (HARD_REG)
When the initial value of a hard register has been copied in a
pseudo register, it is often not necessary to actually allocate
another register to this pseudo register, because the original
--- 21772,21778 ----
filling of delay slots can result in branches being redirected,
and this may in turn cause a branch offset to overflow.
! -- Macro: ALLOCATE_INITIAL_VALUE (HARD_REG)
When the initial value of a hard register has been copied in a
pseudo register, it is often not necessary to actually allocate
another register to this pseudo register, because the original
*************** Miscellaneous Parameters
*** 21772,21796 ****
the definition of the macro, functions that use `REG_N_SETS', to
determine if the hard register in question will not be clobbered.
! - Macro: TARGET_OBJECT_SUFFIX
Define this macro to be a C string representing the suffix for
object files on your target machine. If you do not define this
macro, GCC will use `.o' as the suffix for object files.
! - Macro: TARGET_EXECUTABLE_SUFFIX
Define this macro to be a C string representing the suffix to be
automatically added to executable files on your target machine.
If you do not define this macro, GCC will use the null string as
the suffix for executable files.
! - Macro: COLLECT_EXPORT_LIST
If defined, `collect2' will scan the individual object files
specified on its command line and create an export list for the
linker. Define this macro for systems like AIX, where the linker
discards object files that are not referenced from `main' and uses
export lists.
! - Macro: MODIFY_JNI_METHOD_CALL (MDECL)
Define this macro to a C expression representing a variant of the
method call MDECL, if Java Native Interface (JNI) methods must be
invoked differently from other methods on your target. For
--- 21789,21813 ----
the definition of the macro, functions that use `REG_N_SETS', to
determine if the hard register in question will not be clobbered.
! -- Macro: TARGET_OBJECT_SUFFIX
Define this macro to be a C string representing the suffix for
object files on your target machine. If you do not define this
macro, GCC will use `.o' as the suffix for object files.
! -- Macro: TARGET_EXECUTABLE_SUFFIX
Define this macro to be a C string representing the suffix to be
automatically added to executable files on your target machine.
If you do not define this macro, GCC will use the null string as
the suffix for executable files.
! -- Macro: COLLECT_EXPORT_LIST
If defined, `collect2' will scan the individual object files
specified on its command line and create an export list for the
linker. Define this macro for systems like AIX, where the linker
discards object files that are not referenced from `main' and uses
export lists.
! -- Macro: MODIFY_JNI_METHOD_CALL (MDECL)
Define this macro to a C expression representing a variant of the
method call MDECL, if Java Native Interface (JNI) methods must be
invoked differently from other methods on your target. For
*************** Miscellaneous Parameters
*** 21803,21809 ****
(get_identifier ("stdcall"),
NULL))
! - Target Hook: bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
This target hook returns `true' past the point in which new jump
instructions could be created. On machines that require a
register for every jump such as the SHmedia ISA of SH5, this point
--- 21820,21826 ----
(get_identifier ("stdcall"),
NULL))
! -- Target Hook: bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
This target hook returns `true' past the point in which new jump
instructions could be created. On machines that require a
register for every jump such as the SHmedia ISA of SH5, this point
*************** Miscellaneous Parameters
*** 21816,21829 ****
return (reload_completed || reload_in_progress);
}
! - Target Hook: int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
This target hook returns a register class for which branch target
register optimizations should be applied. All registers in this
class should be usable interchangeably. After reload, registers
in this class will be re-allocated and loads will be hoisted out
of loops and be subjected to inter-block scheduling.
! - Target Hook: bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool
AFTER_PROLOGUE_EPILOGUE_GEN)
Branch target register optimization will by default exclude
callee-saved registers that are not already live during the
--- 21833,21846 ----
return (reload_completed || reload_in_progress);
}
! -- Target Hook: int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
This target hook returns a register class for which branch target
register optimizations should be applied. All registers in this
class should be usable interchangeably. After reload, registers
in this class will be re-allocated and loads will be hoisted out
of loops and be subjected to inter-block scheduling.
! -- Target Hook: bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool
AFTER_PROLOGUE_EPILOGUE_GEN)
Branch target register optimization will by default exclude
callee-saved registers that are not already live during the
*************** Miscellaneous Parameters
*** 21838,21844 ****
`INITIAL_ELIMINATION_OFFSET' to reserve space for caller-saved
target registers.
! - Macro: POWI_MAX_MULTS
If defined, this macro is interpreted as a signed integer C
expression that specifies the maximum number of floating point
multiplications that should be emitted when expanding
--- 21855,21861 ----
`INITIAL_ELIMINATION_OFFSET' to reserve space for caller-saved
target registers.
! -- Macro: POWI_MAX_MULTS
If defined, this macro is interpreted as a signed integer C
expression that specifies the maximum number of floating point
multiplications that should be emitted when expanding
*************** Miscellaneous Parameters
*** 21851,21860 ****
File: gccint.info, Node: Host Config, Next: Fragments, Prev: Target Macros, Up: Top
! Host Configuration
! ******************
! Most details about the machine and system on which the compiler is
actually running are detected by the `configure' script. Some things
are impossible for `configure' to detect; these are described in two
ways, either by macros defined in a file named `xm-MACHINE.h' or by
--- 21868,21877 ----
File: gccint.info, Node: Host Config, Next: Fragments, Prev: Target Macros, Up: Top
! 12 Host Configuration
! *********************
! Most details about the machine and system on which the compiler is
actually running are detected by the `configure' script. Some things
are impossible for `configure' to detect; these are described in two
ways, either by macros defined in a file named `xm-MACHINE.h' or by
*************** definitions, consider using the `xm_defi
*** 21877,21933 ****
File: gccint.info, Node: Host Common, Next: Filesystem, Up: Host Config
! Host Common
! ===========
! Some things are just not portable, even between similar operating
systems, and are too difficult for autoconf to detect. They get
implemented using hook functions in the file specified by the
HOST_HOOK_OBJ variable in `config.gcc'.
! - Host Hook: void HOST_HOOKS_EXTRA_SIGNALS (void)
This host hook is used to set up handling for extra signals. The
most common thing to do in this hook is to detect stack overflow.
! - Host Hook: void * HOST_HOOKS_GT_PCH_GET_ADDRESS (size_t SIZE)
! This host hook returns the address of some space in which a PCH
! may be loaded with `HOST_HOOKS_PCH_LOAD_PCH'. The space will need
! to have SIZE bytes. If insufficient space is available, `NULL'
! may be returned; the PCH machinery will try to find a suitable
! address using a heuristic.
!
! The memory does not have to be available now. In fact, usually
! `HOST_HOOKS_PCH_LOAD_PCH' will already have been called. The
! memory need only be available in future invocations of GCC.
!
! - Host Hook: bool HOST_HOOKS_GT_PCH_USE_ADDRESS (size_t SIZE, void *
! ADDRESS)
! This host hook is called when a PCH file is about to be loaded. If
! ADDRESS is the address that would have been returned by
! `HOST_HOOKS_PCH_MEMORY_ADDRESS', and SIZE is smaller than the
! maximum than `HOST_HOOKS_PCH_MEMORY_ADDRESS' would have accepted,
! return true, otherwise return false.
! In addition, free any address space reserved that isn't needed to
! hold SIZE bytes (whether or not true is returned). The PCH
! machinery will use `mmap' with `MAP_FIXED' to load the PCH if
! `HAVE_MMAP_FILE', or will use `fread' otherwise.
! If no PCH will be loaded, this hook may be called with SIZE zero,
! in which case all reserved address space should be freed.
Do not try to handle values of ADDRESS that could not have been
! returned by this executable; just return false. Such values
! usually indicate an out-of-date PCH file (built by some other GCC
executable), and such a PCH file won't work.
File: gccint.info, Node: Filesystem, Next: Host Misc, Prev: Host Common, Up: Host Config
! Host Filesystem
! ===============
! GCC needs to know a number of things about the semantics of the host
machine's filesystem. Filesystems with Unix and MS-DOS semantics are
automatically detected. For other systems, you can define the
following macros in `xm-MACHINE.h'.
--- 21894,21947 ----
File: gccint.info, Node: Host Common, Next: Filesystem, Up: Host Config
! 12.1 Host Common
! ================
! Some things are just not portable, even between similar operating
systems, and are too difficult for autoconf to detect. They get
implemented using hook functions in the file specified by the
HOST_HOOK_OBJ variable in `config.gcc'.
! -- Host Hook: void HOST_HOOKS_EXTRA_SIGNALS (void)
This host hook is used to set up handling for extra signals. The
most common thing to do in this hook is to detect stack overflow.
! -- Host Hook: void * HOST_HOOKS_GT_PCH_GET_ADDRESS (size_t SIZE, int
! FD)
! This host hook returns the address of some space that is likely to
! be free in some subsequent invocation of the compiler. We intend
! to load the PCH data at this address such that the data need not
! be relocated. The area should be able to hold SIZE bytes. If the
! host uses `mmap', FD is an open file descriptor that can be used
! for probing.
! -- Host Hook: int HOST_HOOKS_GT_PCH_USE_ADDRESS (void * ADDRESS,
! size_t SIZE, int FD, size_t OFFSET)
! This host hook is called when a PCH file is about to be loaded.
! We want to load SIZE bytes from FD at OFFSET into memory at
! ADDRESS. The given address will be the result of a previous
! invocation of `HOST_HOOKS_GT_PCH_GET_ADDRESS'. Return -1 if we
! couldn't allocate SIZE bytes at ADDRESS. Return 0 if the memory
! is allocated but the data is not loaded. Return 1 if the hook has
! performed everything.
! If the implementation uses reserved address space, free any
! reserved space beyond SIZE, regardless of the return value. If no
! PCH will be loaded, this hook may be called with SIZE zero, in
! which case all reserved address space should be freed.
Do not try to handle values of ADDRESS that could not have been
! returned by this executable; just return -1. Such values usually
! indicate an out-of-date PCH file (built by some other GCC
executable), and such a PCH file won't work.
File: gccint.info, Node: Filesystem, Next: Host Misc, Prev: Host Common, Up: Host Config
! 12.2 Host Filesystem
! ====================
! GCC needs to know a number of things about the semantics of the host
machine's filesystem. Filesystems with Unix and MS-DOS semantics are
automatically detected. For other systems, you can define the
following macros in `xm-MACHINE.h'.
*************** following macros in `xm-MACHINE.h'.
*** 22003,22010 ****
File: gccint.info, Node: Host Misc, Prev: Filesystem, Up: Host Config
! Host Misc
! =========
`FATAL_EXIT_CODE'
A C expression for the status code to be returned when the compiler
--- 22017,22024 ----
File: gccint.info, Node: Host Misc, Prev: Filesystem, Up: Host Config
! 12.3 Host Misc
! ==============
`FATAL_EXIT_CODE'
A C expression for the status code to be returned when the compiler
*************** possible to fix `configure'.
*** 22054,22067 ****
File: gccint.info, Node: Fragments, Next: Collect2, Prev: Host Config, Up: Top
! Makefile Fragments
! ******************
! When you configure GCC using the `configure' script, it will
! construct the file `Makefile' from the template file `Makefile.in'.
! When it does this, it can incorporate makefile fragments from the
! `config' directory. These are used to set Makefile parameters that are
! not amenable to being calculated by autoconf. The list of fragments to
incorporate is set by `config.gcc' (and occasionally `config.build' and
`config.host'); *Note System Config::.
--- 22068,22081 ----
File: gccint.info, Node: Fragments, Next: Collect2, Prev: Host Config, Up: Top
! 13 Makefile Fragments
! *********************
! When you configure GCC using the `configure' script, it will construct
! the file `Makefile' from the template file `Makefile.in'. When it does
! this, it can incorporate makefile fragments from the `config'
! directory. These are used to set Makefile parameters that are not
! amenable to being calculated by autoconf. The list of fragments to
incorporate is set by `config.gcc' (and occasionally `config.build' and
`config.host'); *Note System Config::.
*************** but needing `x-HOST' fragments is rare.
*** 22083,22092 ****
File: gccint.info, Node: Target Fragment, Next: Host Fragment, Up: Fragments
! Target Makefile Fragments
! =========================
! Target makefile fragments can set these Makefile variables.
`LIBGCC2_CFLAGS'
Compiler flags to use when compiling `libgcc2.c'.
--- 22097,22106 ----
File: gccint.info, Node: Target Fragment, Next: Host Fragment, Up: Fragments
! 13.1 Target Makefile Fragments
! ==============================
! Target makefile fragments can set these Makefile variables.
`LIBGCC2_CFLAGS'
Compiler flags to use when compiling `libgcc2.c'.
*************** Target Makefile Fragments
*** 22102,22113 ****
# to build the floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
!
!
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
!
dp-bit.c: $(srcdir)/config/fp-bit.c
cat $(srcdir)/config/fp-bit.c > dp-bit.c
--- 22116,22127 ----
# to build the floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
!
!
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
!
dp-bit.c: $(srcdir)/config/fp-bit.c
cat $(srcdir)/config/fp-bit.c > dp-bit.c
*************** Target Makefile Fragments
*** 22201,22211 ****
File: gccint.info, Node: Host Fragment, Prev: Target Fragment, Up: Fragments
! Host Makefile Fragments
! =======================
! The use of `x-HOST' fragments is discouraged. You should do so only
! if there is no other mechanism to get the behavior desired. Host
fragments should never forcibly override variables set by the configure
script, as they may have been adjusted by the user.
--- 22215,22225 ----
File: gccint.info, Node: Host Fragment, Prev: Target Fragment, Up: Fragments
! 13.2 Host Makefile Fragments
! ============================
! The use of `x-HOST' fragments is discouraged. You should do so only if
! there is no other mechanism to get the behavior desired. Host
fragments should never forcibly override variables set by the configure
script, as they may have been adjusted by the user.
*************** script, as they may have been adjusted b
*** 22235,22247 ****
the front ends. If you set this variable, you must also provide
rules to build the extra programs.
File: gccint.info, Node: Collect2, Next: Header Dirs, Prev: Fragments, Up: Top
! `collect2'
! **********
! GCC uses a utility called `collect2' on nearly all systems to arrange
to call various initialization functions at start time.
The program `collect2' works by linking the program once and looking
--- 22249,22262 ----
the front ends. If you set this variable, you must also provide
rules to build the extra programs.
+
File: gccint.info, Node: Collect2, Next: Header Dirs, Prev: Fragments, Up: Top
! 14 `collect2'
! *************
! GCC uses a utility called `collect2' on nearly all systems to arrange
to call various initialization functions at start time.
The program `collect2' works by linking the program once and looking
*************** same algorithm as above for `ld'.
*** 22306,22315 ****
File: gccint.info, Node: Header Dirs, Next: Type Information, Prev: Collect2, Up: Top
! Standard Header File Directories
! ********************************
! `GCC_INCLUDE_DIR' means the same thing for native and cross. It is
where GCC stores its private include files, and also where GCC stores
the fixed include files. A cross compiled GCC runs `fixincludes' on
the header files in `$(tooldir)/include'. (If the cross compilation
--- 22321,22330 ----
File: gccint.info, Node: Header Dirs, Next: Type Information, Prev: Collect2, Up: Top
! 15 Standard Header File Directories
! ***********************************
! `GCC_INCLUDE_DIR' means the same thing for native and cross. It is
where GCC stores its private include files, and also where GCC stores
the fixed include files. A cross compiled GCC runs `fixincludes' on
the header files in `$(tooldir)/include'. (If the cross compilation
*************** files in this directory.
*** 22337,22349 ****
File: gccint.info, Node: Type Information, Next: Funding, Prev: Header Dirs, Up: Top
! Memory Management and Type Information
! **************************************
! GCC uses some fairly sophisticated memory management techniques,
! which involve determining information about GCC's data structures from
! GCC's source code and using this information to perform garbage
! collection and implement precompiled headers.
A full C parser would be too overcomplicated for this task, so a
limited subset of C is interpreted and special markers are used to
--- 22352,22364 ----
File: gccint.info, Node: Type Information, Next: Funding, Prev: Header Dirs, Up: Top
! 16 Memory Management and Type Information
! *****************************************
! GCC uses some fairly sophisticated memory management techniques, which
! involve determining information about GCC's data structures from GCC's
! source code and using this information to perform garbage collection and
! implement precompiled headers.
A full C parser would be too overcomplicated for this task, so a
limited subset of C is interpreted and special markers are used to
*************** typedef struct ID2 GTY(([options]))
*** 22372,22383 ****
File: gccint.info, Node: GTY Options, Next: GGC Roots, Up: Type Information
! The Inside of a `GTY(())'
! =========================
! Sometimes the C code is not enough to fully describe the type
! structure. Extra information can be provided by using more `GTY'
! markers. These markers can be placed:
* In a structure definition, before the open brace;
* In a global variable declaration, after the keyword `static' or
--- 22387,22398 ----
File: gccint.info, Node: GTY Options, Next: GGC Roots, Up: Type Information
! 16.1 The Inside of a `GTY(())'
! ==============================
! Sometimes the C code is not enough to fully describe the type structure.
! Extra information can be provided by using more `GTY' markers. These
! markers can be placed:
* In a structure definition, before the open brace;
* In a global variable declaration, after the keyword `static' or
*************** Three special escapes may be available:
*** 22416,22422 ****
There are two places the type machinery will need to be explicitly
told the length of an array. The first case is when a structure
ends in a variable-length array, like this:
-
struct rtvec_def GTY(()) {
int num_elem; /* number of elements */
rtx GTY ((length ("%h.num_elem"))) elem[1];
--- 22431,22436 ----
*************** Three special escapes may be available:
*** 22437,22443 ****
and the `length' provides the length of the field.
This second use of `length' also works on global variables, like:
-
static GTY((length ("reg_base_value_size")))
rtx *reg_base_value;
--- 22451,22456 ----
*************** Three special escapes may be available:
*** 22488,22494 ****
For instance, to have a `htab_t' that points to trees, one should
write
-
htab_t GTY ((param_is (union tree_node))) ict;
`paramN_is'
--- 22501,22506 ----
*************** Three special escapes may be available:
*** 22569,22583 ****
The `special' option is used for those bizarre cases that are just
too hard to deal with otherwise. Don't use it for new code.
File: gccint.info, Node: GGC Roots, Next: Files, Prev: GTY Options, Up: Type Information
! Marking Roots for the Garbage Collector
! =======================================
! In addition to keeping track of types, the type machinery also
! locates the global variables that the garbage collector starts at.
! There are two syntaxes it accepts to indicate a root:
1. extern GTY (([options])) [type] ID;
--- 22581,22596 ----
The `special' option is used for those bizarre cases that are just
too hard to deal with otherwise. Don't use it for new code.
+
File: gccint.info, Node: GGC Roots, Next: Files, Prev: GTY Options, Up: Type Information
! 16.2 Marking Roots for the Garbage Collector
! ============================================
! In addition to keeping track of types, the type machinery also locates
! the global variables that the garbage collector starts at. There are
! two syntaxes it accepts to indicate a root:
1. extern GTY (([options])) [type] ID;
*************** int ID;
*** 22593,22602 ****
File: gccint.info, Node: Files, Prev: GGC Roots, Up: Type Information
! Source Files Containing Type Information
! ========================================
! Whenever you add `GTY' markers to a new source file, there are three
things you need to do:
1. You need to add the file to the list of source files the type
--- 22606,22615 ----
File: gccint.info, Node: Files, Prev: GGC Roots, Up: Type Information
! 16.3 Source Files Containing Type Information
! =============================================
! Whenever you add `GTY' markers to a new source file, there are three
things you need to do:
1. You need to add the file to the list of source files the type
*************** things you need to do:
*** 22641,22647 ****
3. If a new `gt-PATH.h' file is needed, you need to arrange to add a
`Makefile' rule that will ensure this file can be built. This is
done by making it a dependency of `s-gtype', like this:
-
gt-path.h : s-gtype ; @true
For language frontends, there is another file that needs to be
--- 22654,22659 ----
*************** File: gccint.info, Node: Funding, Next
*** 22655,22661 ****
Funding Free Software
*********************
! If you want to have more free software a few years from now, it makes
sense for you to help encourage people to contribute funds for its
development. The most effective approach known is to encourage
commercial redistributors to donate.
--- 22667,22673 ----
Funding Free Software
*********************
! If you want to have more free software a few years from now, it makes
sense for you to help encourage people to contribute funds for its
development. The most effective approach known is to encourage
commercial redistributors to donate.
*************** File: gccint.info, Node: GNU Project,
*** 22705,22711 ****
The GNU Project and GNU/Linux
*****************************
! The GNU Project was launched in 1984 to develop a complete Unix-like
operating system which is free software: the GNU system. (GNU is a
recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".)
Variants of the GNU operating system, which use the kernel Linux, are
--- 22717,22723 ----
The GNU Project and GNU/Linux
*****************************
! The GNU Project was launched in 1984 to develop a complete Unix-like
operating system which is free software: the GNU system. (GNU is a
recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".)
Variants of the GNU operating system, which use the kernel Linux, are
*************** GNU GENERAL PUBLIC LICENSE
*** 22723,22740 ****
**************************
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your
! freedom to share and change it. By contrast, the GNU General Public
! License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
--- 22735,22753 ----
**************************
Version 2, June 1991
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your freedom
! to share and change it. By contrast, the GNU General Public License is
! intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
*************** modification follow.
*** 22987,22993 ****
and reuse of software generally.
NO WARRANTY
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
--- 23000,23005 ----
*************** modification follow.
*** 23011,23021 ****
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
-
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
--- 23023,23032 ----
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
*************** the "copyright" line and a pointer to wh
*** 23027,23043 ****
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--- 23038,23054 ----
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*************** if necessary. Here is a sample; alter t
*** 23066,23072 ****
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
--- 23077,23083 ----
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
*************** GNU Free Documentation License
*** 23083,23091 ****
******************************
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
--- 23094,23103 ----
******************************
Version 1.2, November 2002
+
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 23479,23485 ****
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
--- 23491,23497 ----
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
*************** File: gccint.info, Node: Contributors,
*** 23513,23519 ****
Contributors to GCC
*******************
! The GCC project would like to thank its many contributors. Without
them the project would not have been nearly as successful as it has
been. Any omissions in this list are accidental. Feel free to contact
or if you have been left out or
--- 23525,23531 ----
Contributors to GCC
*******************
! The GCC project would like to thank its many contributors. Without
them the project would not have been nearly as successful as it has
been. Any omissions in this list are accidental. Feel free to contact
or if you have been left out or
*************** File: gccint.info, Node: Option Index,
*** 24360,24396 ****
Option Index
************
! GCC's command line options are indexed here without any initial `-'
! or `--'. Where an option has both positive and negative forms (such as
`-fOPTION' and `-fno-OPTION'), relevant entries in the manual are
indexed under the most appropriate form; it may sometimes be useful to
look up both forms.
* Menu:
! * dB: Passes.
! * dc: Passes.
! * dd: Passes.
! * dE: Passes.
! * df: Passes.
! * dg: Passes.
! * dG: Passes.
! * di: Passes.
! * dj: Passes.
! * dk: Passes.
! * dl: Passes.
! * dL: Passes.
! * dN: Passes.
! * dR: Passes.
! * dr: Passes.
! * dS: Passes.
! * ds: Passes.
! * dt: Passes.
! * dZ: Passes.
! * fnew-ra: Passes.
! * frerun-cse-after-loop: Passes.
! * fthread-jumps: Passes.
* msoft-float: Soft float library routines.
File: gccint.info, Node: Index, Prev: Option Index, Up: Top
--- 24372,24410 ----
Option Index
************
! GCC's command line options are indexed here without any initial `-' or
! `--'. Where an option has both positive and negative forms (such as
`-fOPTION' and `-fno-OPTION'), relevant entries in the manual are
indexed under the most appropriate form; it may sometimes be useful to
look up both forms.
+ [index ]
* Menu:
! * dB: Passes. (line 380)
! * dc: Passes. (line 273)
! * dd: Passes. (line 389)
! * dE: Passes. (line 282)
! * df: Passes. (line 261)
! * dg: Passes. (line 361)
! * dG: Passes. (line 200)
! * di: Passes. (line 135)
! * dj: Passes. (line 157)
! * dk: Passes. (line 405)
! * dl: Passes. (line 328)
! * dL: Passes. (line 219)
! * dN: Passes. (line 292)
! * dR: Passes. (line 368)
! * dr: Passes. (line 124)
! * dS: Passes. (line 308)
! * ds: Passes. (line 177)
! * dt: Passes. (line 247)
! * dZ: Passes. (line 238)
! * fnew-ra: Passes. (line 336)
! * frerun-cse-after-loop: Passes. (line 242)
! * fthread-jumps: Passes. (line 165)
* msoft-float: Soft float library routines.
+ (line 6)
File: gccint.info, Node: Index, Prev: Option Index, Up: Top
*************** File: gccint.info, Node: Index, Prev:
*** 24398,27022 ****
Index
*****
* Menu:
! * ! in constraint: Multi-Alternative.
! * # in constraint: Modifiers.
! * # in template: Output Template.
! * #pragma: Misc.
! * % in constraint: Modifiers.
! * % in GTY option: GTY Options.
! * % in template: Output Template.
! * & in constraint: Modifiers.
! * (nil): RTL Objects.
! * * <1>: Host Common.
! * *: PCH Target.
! * * in constraint: Modifiers.
! * * in template: Output Statement.
! * + in constraint: Modifiers.
! * /c in RTL dump: Flags.
! * /f in RTL dump: Flags.
! * /i in RTL dump: Flags.
! * /j in RTL dump: Flags.
! * /s in RTL dump: Flags.
! * /u in RTL dump: Flags.
! * /v in RTL dump: Flags.
! * 0 in constraint: Simple Constraints.
! * < in constraint: Simple Constraints.
! * = in constraint: Modifiers.
! * > in constraint: Simple Constraints.
! * ? in constraint: Multi-Alternative.
! * \: Output Template.
* __absvdi2: Integer library routines.
* __absvsi2: Integer library routines.
* __adddf3: Soft float library routines.
* __addsf3: Soft float library routines.
* __addtf3: Soft float library routines.
* __addvdi3: Integer library routines.
* __addvsi3: Integer library routines.
* __addxf3: Soft float library routines.
* __ashldi3: Integer library routines.
* __ashlsi3: Integer library routines.
* __ashlti3: Integer library routines.
* __ashrdi3: Integer library routines.
* __ashrsi3: Integer library routines.
* __ashrti3: Integer library routines.
! * __builtin_args_info: Varargs.
! * __builtin_classify_type: Varargs.
! * __builtin_next_arg: Varargs.
! * __builtin_saveregs: Varargs.
* __clear_cache: Miscellaneous routines.
* __clzdi2: Integer library routines.
* __clzsi2: Integer library routines.
* __clzti2: Integer library routines.
* __cmpdf2: Soft float library routines.
* __cmpdi2: Integer library routines.
* __cmpsf2: Soft float library routines.
* __cmptf2: Soft float library routines.
* __cmpti2: Integer library routines.
! * __CTOR_LIST__: Initialization.
* __ctzdi2: Integer library routines.
* __ctzsi2: Integer library routines.
* __ctzti2: Integer library routines.
* __divdf3: Soft float library routines.
* __divdi3: Integer library routines.
* __divsf3: Soft float library routines.
* __divsi3: Integer library routines.
* __divtf3: Soft float library routines.
* __divti3: Integer library routines.
* __divxf3: Soft float library routines.
! * __DTOR_LIST__: Initialization.
* __eqdf2: Soft float library routines.
* __eqsf2: Soft float library routines.
* __eqtf2: Soft float library routines.
* __extenddftf2: Soft float library routines.
* __extenddfxf2: Soft float library routines.
* __extendsfdf2: Soft float library routines.
* __extendsftf2: Soft float library routines.
* __extendsfxf2: Soft float library routines.
* __ffsdi2: Integer library routines.
* __ffsti2: Integer library routines.
* __fixdfdi: Soft float library routines.
* __fixdfsi: Soft float library routines.
* __fixdfti: Soft float library routines.
* __fixsfdi: Soft float library routines.
* __fixsfsi: Soft float library routines.
* __fixsfti: Soft float library routines.
* __fixtfdi: Soft float library routines.
* __fixtfsi: Soft float library routines.
* __fixtfti: Soft float library routines.
* __fixunsdfdi: Soft float library routines.
* __fixunsdfsi: Soft float library routines.
* __fixunsdfti: Soft float library routines.
* __fixunssfdi: Soft float library routines.
* __fixunssfsi: Soft float library routines.
* __fixunssfti: Soft float library routines.
* __fixunstfdi: Soft float library routines.
* __fixunstfsi: Soft float library routines.
* __fixunstfti: Soft float library routines.
* __fixunsxfdi: Soft float library routines.
* __fixunsxfsi: Soft float library routines.
* __fixunsxfti: Soft float library routines.
* __fixxfdi: Soft float library routines.
* __fixxfsi: Soft float library routines.
* __fixxfti: Soft float library routines.
* __floatdidf: Soft float library routines.
* __floatdisf: Soft float library routines.
* __floatditf: Soft float library routines.
* __floatdixf: Soft float library routines.
* __floatsidf: Soft float library routines.
* __floatsisf: Soft float library routines.
* __floatsitf: Soft float library routines.
* __floatsixf: Soft float library routines.
* __floattidf: Soft float library routines.
* __floattisf: Soft float library routines.
* __floattitf: Soft float library routines.
* __floattixf: Soft float library routines.
* __gedf2: Soft float library routines.
* __gesf2: Soft float library routines.
* __getf2: Soft float library routines.
* __gtdf2: Soft float library routines.
* __gtsf2: Soft float library routines.
* __gttf2: Soft float library routines.
* __ledf2: Soft float library routines.
* __lesf2: Soft float library routines.
* __letf2: Soft float library routines.
* __lshrdi3: Integer library routines.
* __lshrsi3: Integer library routines.
* __lshrti3: Integer library routines.
* __ltdf2: Soft float library routines.
* __ltsf2: Soft float library routines.
* __lttf2: Soft float library routines.
! * __main: Collect2.
* __moddi3: Integer library routines.
* __modsi3: Integer library routines.
* __modti3: Integer library routines.
* __muldf3: Soft float library routines.
* __muldi3: Integer library routines.
* __mulsf3: Soft float library routines.
* __mulsi3: Integer library routines.
* __multf3: Soft float library routines.
* __multi3: Integer library routines.
* __mulvdi3: Integer library routines.
* __mulvsi3: Integer library routines.
* __mulxf3: Soft float library routines.
* __nedf2: Soft float library routines.
* __negdf2: Soft float library routines.
* __negdi2: Integer library routines.
* __negsf2: Soft float library routines.
* __negtf2: Soft float library routines.
* __negti2: Integer library routines.
* __negvdi2: Integer library routines.
* __negvsi2: Integer library routines.
* __negxf2: Soft float library routines.
* __nesf2: Soft float library routines.
* __netf2: Soft float library routines.
* __paritydi2: Integer library routines.
* __paritysi2: Integer library routines.
* __parityti2: Integer library routines.
* __popcountdi2: Integer library routines.
* __popcountsi2: Integer library routines.
* __popcountti2: Integer library routines.
* __subdf3: Soft float library routines.
* __subsf3: Soft float library routines.
* __subtf3: Soft float library routines.
* __subvdi3: Integer library routines.
* __subvsi3: Integer library routines.
* __subxf3: Soft float library routines.
* __truncdfsf2: Soft float library routines.
* __trunctfdf2: Soft float library routines.
* __trunctfsf2: Soft float library routines.
* __truncxfdf2: Soft float library routines.
* __truncxfsf2: Soft float library routines.
* __ucmpdi2: Integer library routines.
* __ucmpti2: Integer library routines.
* __udivdi3: Integer library routines.
* __udivmoddi3: Integer library routines.
* __udivsi3: Integer library routines.
* __udivti3: Integer library routines.
* __umoddi3: Integer library routines.
* __umodsi3: Integer library routines.
* __umodti3: Integer library routines.
* __unorddf2: Soft float library routines.
* __unordsf2: Soft float library routines.
* __unordtf2: Soft float library routines.
! * abort: Portability.
! * abs: Arithmetic.
! * abs and attributes: Expressions.
! * ABS_EXPR: Expression trees.
* absence_set: Automaton pipeline description.
! * absM2 instruction pattern: Standard Names.
! * absolute value: Arithmetic.
! * access to operands: Accessors.
! * access to special operands: Special Accessors.
! * accessors: Accessors.
! * ACCUMULATE_OUTGOING_ARGS: Stack Arguments.
! * ACCUMULATE_OUTGOING_ARGS and stack frames: Function Entry.
! * ADA_LONG_TYPE_SIZE: Type Layout.
! * ADDITIONAL_REGISTER_NAMES: Instruction Output.
! * addM3 instruction pattern: Standard Names.
! * addMODEcc instruction pattern: Standard Names.
! * addr_diff_vec: Side Effects.
! * addr_diff_vec, length of: Insn Lengths.
! * ADDR_EXPR: Expression trees.
! * addr_vec: Side Effects.
! * addr_vec, length of: Insn Lengths.
! * address constraints: Simple Constraints.
! * address_operand: Simple Constraints.
! * addressing modes: Addressing Modes.
! * addressof: Regs and Memory.
! * ADJUST_FIELD_ALIGN: Storage Layout.
! * ADJUST_INSN_LENGTH: Insn Lengths.
! * aggregates as return values: Aggregate Return.
! * ALL_COP_ADDITIONAL_REGISTER_NAMES: MIPS Coprocessors.
! * ALL_REGS: Register Classes.
! * ALLOCATE_INITIAL_VALUE: Misc.
! * allocate_stack instruction pattern: Standard Names.
! * alternate entry points: Insns.
! * analysis, data flow: Passes.
! * and: Arithmetic.
! * and and attributes: Expressions.
* and, canonicalization of: Insn Canonicalizations.
! * andM3 instruction pattern: Standard Names.
! * APPLY_RESULT_SIZE: Scalar Return.
! * ARG_POINTER_CFA_OFFSET: Frame Layout.
! * ARG_POINTER_REGNUM: Frame Registers.
! * ARG_POINTER_REGNUM and virtual registers: Regs and Memory.
! * arg_pointer_rtx: Frame Registers.
! * ARGS_GROW_DOWNWARD: Frame Layout.
! * argument passing: Interface.
! * arguments in registers: Register Arguments.
! * arguments on stack: Stack Arguments.
* arithmetic library: Soft float library routines.
! * arithmetic shift: Arithmetic.
! * arithmetic simplifications: Passes.
! * arithmetic, in RTL: Arithmetic.
! * ARITHMETIC_TYPE_P: Types.
! * array: Types.
! * ARRAY_REF: Expression trees.
! * ARRAY_TYPE: Types.
! * AS_NEEDS_DASH_FOR_PIPED_INPUT: Driver.
! * ashift: Arithmetic.
! * ashift and attributes: Expressions.
! * ashiftrt: Arithmetic.
! * ashiftrt and attributes: Expressions.
! * ashlM3 instruction pattern: Standard Names.
! * ashrM3 instruction pattern: Standard Names.
! * ASM_APP_OFF: File Framework.
! * ASM_APP_ON: File Framework.
! * ASM_CLOBBERS: Function Bodies.
! * ASM_COMMENT_START: File Framework.
! * ASM_CV_QUAL: Function Bodies.
! * ASM_DECLARE_CLASS_REFERENCE: Label Output.
! * ASM_DECLARE_CONSTANT_NAME: Label Output.
! * ASM_DECLARE_FUNCTION_NAME: Label Output.
! * ASM_DECLARE_FUNCTION_SIZE: Label Output.
! * ASM_DECLARE_OBJECT_NAME: Label Output.
! * ASM_DECLARE_REGISTER_GLOBAL: Label Output.
! * ASM_DECLARE_UNRESOLVED_REFERENCE: Label Output.
! * ASM_FINAL_SPEC: Driver.
! * ASM_FINISH_DECLARE_OBJECT: Label Output.
! * ASM_FORMAT_PRIVATE_NAME: Label Output.
! * asm_fprintf: Instruction Output.
! * ASM_FPRINTF_EXTENSIONS: Instruction Output.
! * ASM_GENERATE_INTERNAL_LABEL: Label Output.
! * asm_input: Side Effects.
! * asm_input and /v: Flags.
! * ASM_INPUTS: Function Bodies.
! * ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX: Exception Handling.
! * ASM_NO_SKIP_IN_TEXT: Alignment Output.
! * asm_noperands: Insns.
! * asm_operands and /v: Flags.
! * asm_operands, RTL sharing: Sharing.
! * asm_operands, usage: Assembler.
! * ASM_OUTPUT_ADDR_DIFF_ELT: Dispatch Tables.
! * ASM_OUTPUT_ADDR_VEC_ELT: Dispatch Tables.
! * ASM_OUTPUT_ALIGN: Alignment Output.
! * ASM_OUTPUT_ALIGN_WITH_NOP: Alignment Output.
! * ASM_OUTPUT_ALIGNED_BSS: Uninitialized Data.
! * ASM_OUTPUT_ALIGNED_COMMON: Uninitialized Data.
! * ASM_OUTPUT_ALIGNED_DECL_COMMON: Uninitialized Data.
! * ASM_OUTPUT_ALIGNED_DECL_LOCAL: Uninitialized Data.
! * ASM_OUTPUT_ALIGNED_LOCAL: Uninitialized Data.
! * ASM_OUTPUT_ASCII: Data Output.
! * ASM_OUTPUT_BSS: Uninitialized Data.
! * ASM_OUTPUT_CASE_END: Dispatch Tables.
! * ASM_OUTPUT_CASE_LABEL: Dispatch Tables.
! * ASM_OUTPUT_COMMON: Uninitialized Data.
! * ASM_OUTPUT_DEBUG_LABEL: Label Output.
! * ASM_OUTPUT_DEF: Label Output.
! * ASM_OUTPUT_DEF_FROM_DECLS: Label Output.
! * ASM_OUTPUT_DWARF_DELTA: SDB and DWARF.
! * ASM_OUTPUT_DWARF_OFFSET: SDB and DWARF.
! * ASM_OUTPUT_DWARF_PCREL: SDB and DWARF.
! * ASM_OUTPUT_EXTERNAL: Label Output.
! * ASM_OUTPUT_FDESC: Data Output.
! * ASM_OUTPUT_IDENT: File Framework.
! * ASM_OUTPUT_LABEL: Label Output.
! * ASM_OUTPUT_LABEL_REF: Label Output.
! * ASM_OUTPUT_LABELREF: Label Output.
! * ASM_OUTPUT_LOCAL: Uninitialized Data.
! * ASM_OUTPUT_MAX_SKIP_ALIGN: Alignment Output.
! * ASM_OUTPUT_MEASURED_SIZE: Label Output.
! * ASM_OUTPUT_OPCODE: Instruction Output.
! * ASM_OUTPUT_POOL_EPILOGUE: Data Output.
! * ASM_OUTPUT_POOL_PROLOGUE: Data Output.
! * ASM_OUTPUT_REG_POP: Instruction Output.
! * ASM_OUTPUT_REG_PUSH: Instruction Output.
! * ASM_OUTPUT_SHARED_BSS: Uninitialized Data.
! * ASM_OUTPUT_SHARED_COMMON: Uninitialized Data.
! * ASM_OUTPUT_SHARED_LOCAL: Uninitialized Data.
! * ASM_OUTPUT_SIZE_DIRECTIVE: Label Output.
! * ASM_OUTPUT_SKIP: Alignment Output.
! * ASM_OUTPUT_SOURCE_FILENAME: File Framework.
! * ASM_OUTPUT_SOURCE_LINE: File Framework.
! * ASM_OUTPUT_SPECIAL_POOL_ENTRY: Data Output.
! * ASM_OUTPUT_SYMBOL_REF: Label Output.
! * ASM_OUTPUT_TYPE_DIRECTIVE: Label Output.
! * ASM_OUTPUT_WEAK_ALIAS: Label Output.
! * ASM_OUTPUTS: Function Bodies.
! * ASM_PREFERRED_EH_DATA_FORMAT: Exception Handling.
! * ASM_SPEC: Driver.
! * ASM_STABD_OP: DBX Options.
! * ASM_STABN_OP: DBX Options.
! * ASM_STABS_OP: DBX Options.
! * ASM_STMT: Function Bodies.
! * ASM_STRING: Function Bodies.
! * ASM_WEAKEN_DECL: Label Output.
! * ASM_WEAKEN_LABEL: Label Output.
! * assemble_name: Label Output.
! * assembler format: File Framework.
! * assembler instructions in RTL: Assembler.
! * ASSEMBLER_DIALECT: Instruction Output.
! * assigning attribute values to insns: Tagging Insns.
! * assignment operator: Function Basics.
! * asterisk in template: Output Statement.
! * atan2M3 instruction pattern: Standard Names.
! * attr <1>: Tagging Insns.
! * attr: Expressions.
! * attr_flag: Expressions.
! * attribute expressions: Expressions.
! * attribute specifications: Attr Example.
! * attribute specifications example: Attr Example.
! * attributes: Attributes.
* attributes, defining: Defining Attributes.
! * attributes, target-specific: Target Attributes.
! * autoincrement addressing, availability: Portability.
! * autoincrement/decrement addressing: Simple Constraints.
! * autoincrement/decrement analysis: Passes.
* automata_option: Automaton pipeline description.
* automaton based pipeline description <1>: Comparison of the two descriptions.
* automaton based pipeline description <2>: Automaton pipeline description.
* automaton based pipeline description: Processor pipeline description.
* automaton based scheduler: Processor pipeline description.
* AVOID_CCMODE_COPIES: Values in Registers.
! * backslash: Output Template.
! * barrier: Insns.
! * barrier and /f: Flags.
! * barrier and /i: Flags.
! * barrier and /v: Flags.
! * BASE_REG_CLASS: Register Classes.
! * basic block reordering: Passes.
! * basic blocks: Passes.
! * bCOND instruction pattern: Standard Names.
! * bcopy, implicit usage: Library Calls.
! * BIGGEST_ALIGNMENT: Storage Layout.
! * BIGGEST_FIELD_ALIGNMENT: Storage Layout.
! * BImode: Machine Modes.
! * BIND_EXPR: Expression trees.
! * BINFO_TYPE: Classes.
! * bit-fields: Bit-Fields.
! * BIT_AND_EXPR: Expression trees.
! * BIT_IOR_EXPR: Expression trees.
! * BIT_NOT_EXPR: Expression trees.
! * BIT_XOR_EXPR: Expression trees.
! * BITFIELD_NBYTES_LIMITED: Storage Layout.
! * BITS_BIG_ENDIAN: Storage Layout.
! * BITS_BIG_ENDIAN, effect on sign_extract: Bit-Fields.
! * BITS_PER_UNIT: Storage Layout.
! * BITS_PER_WORD: Storage Layout.
! * bitwise complement: Arithmetic.
! * bitwise exclusive-or: Arithmetic.
! * bitwise inclusive-or: Arithmetic.
! * bitwise logical-and: Arithmetic.
! * BLKmode: Machine Modes.
! * BLKmode, and function return values: Calls.
! * BLOCK_REG_PADDING: Register Arguments.
* bool <1>: Exception Region Output.
! * bool: Sections.
! * BOOL_TYPE_SIZE: Type Layout.
! * BOOLEAN_TYPE: Types.
! * branch shortening: Passes.
! * BRANCH_COST: Costs.
! * break_out_memory_refs: Addressing Modes.
! * BREAK_STMT: Function Bodies.
! * BSS_SECTION_ASM_OP: Sections.
! * builtin_longjmp instruction pattern: Standard Names.
! * BUILTIN_SETJMP_FRAME_VALUE: Frame Layout.
* builtin_setjmp_receiver instruction pattern: Standard Names.
! * builtin_setjmp_setup instruction pattern: Standard Names.
! * byte_mode: Machine Modes.
! * BYTES_BIG_ENDIAN: Storage Layout.
! * BYTES_BIG_ENDIAN, effect on subreg: Regs and Memory.
! * bzero, implicit usage: Library Calls.
! * C statements for assembler output: Output Statement.
! * C/C++ Internal Representation: Trees.
! * C4X_FLOAT_FORMAT: Storage Layout.
! * C99 math functions, implicit usage: Library Calls.
! * c_register_pragma: Misc.
! * call <1>: Side Effects.
! * call: Flags.
! * call instruction pattern: Standard Names.
! * call usage: Calls.
! * call, in mem: Flags.
! * call-clobbered register: Register Basics.
! * call-saved register: Register Basics.
! * call-used register: Register Basics.
! * CALL_EXPR: Expression trees.
! * call_insn: Insns.
! * call_insn and /f: Flags.
! * call_insn and /i: Flags.
! * call_insn and /j: Flags.
! * call_insn and /s: Flags.
! * call_insn and /u: Flags.
! * call_insn and /v: Flags.
! * CALL_INSN_FUNCTION_USAGE: Insns.
! * call_pop instruction pattern: Standard Names.
! * CALL_POPS_ARGS: Stack Arguments.
! * CALL_REALLY_USED_REGISTERS: Register Basics.
! * CALL_USED_REGISTERS: Register Basics.
! * call_used_regs: Register Basics.
! * call_value instruction pattern: Standard Names.
! * call_value_pop instruction pattern: Standard Names.
! * CALLER_SAVE_PROFITABLE: Caller Saves.
! * calling conventions: Stack and Calling.
! * calling functions in RTL: Calls.
! * CAN_DEBUG_WITHOUT_FP: Run-time Target.
! * CAN_ELIMINATE: Elimination.
! * canadian: Configure Terms.
! * CANNOT_CHANGE_MODE_CLASS: Register Classes.
* canonicalization of instructions: Insn Canonicalizations.
! * CANONICALIZE_COMPARISON: Condition Code.
* canonicalize_funcptr_for_compare instruction pattern: Standard Names.
! * CASE_DROPS_THROUGH: Misc.
! * CASE_USE_BIT_TESTS: Misc.
! * CASE_VALUES_THRESHOLD: Misc.
! * CASE_VECTOR_MODE: Misc.
! * CASE_VECTOR_PC_RELATIVE: Misc.
! * CASE_VECTOR_SHORTEN_MODE: Misc.
! * casesi instruction pattern: Standard Names.
! * cc0: Regs and Memory.
! * cc0, RTL sharing: Sharing.
! * cc0_rtx: Regs and Memory.
! * CC1_SPEC: Driver.
! * CC1PLUS_SPEC: Driver.
! * cc_status: Condition Code.
! * CC_STATUS_MDEP: Condition Code.
! * CC_STATUS_MDEP_INIT: Condition Code.
! * CCmode: Machine Modes.
! * CDImode: Machine Modes.
! * ceilM2 instruction pattern: Standard Names.
! * chain_next: GTY Options.
! * chain_prev: GTY Options.
! * change_address: Standard Names.
! * char <1>: PCH Target.
! * char: Sections.
! * CHAR_TYPE_SIZE: Type Layout.
! * check_stack instruction pattern: Standard Names.
! * CHImode: Machine Modes.
! * class: Classes.
! * class definitions, register: Register Classes.
! * class preference constraints: Class Preferences.
! * CLASS_LIKELY_SPILLED_P: Register Classes.
! * CLASS_MAX_NREGS: Register Classes.
! * CLASS_TYPE_P: Types.
! * classes of RTX codes: RTL Classes.
! * CLASSTYPE_DECLARED_CLASS: Classes.
! * CLASSTYPE_HAS_MUTABLE: Classes.
! * CLASSTYPE_NON_POD_P: Classes.
! * CLEANUP_DECL: Function Bodies.
! * CLEANUP_EXPR: Function Bodies.
! * CLEANUP_POINT_EXPR: Expression trees.
! * CLEANUP_STMT: Function Bodies.
! * CLEAR_BY_PIECES_P: Costs.
! * CLEAR_INSN_CACHE: Trampolines.
! * CLEAR_RATIO: Costs.
! * clobber: Side Effects.
! * clrstrM instruction pattern: Standard Names.
! * clz: Arithmetic.
! * CLZ_DEFINED_VALUE_AT_ZERO: Misc.
! * clzM2 instruction pattern: Standard Names.
! * cmpM instruction pattern: Standard Names.
! * cmpmemM instruction pattern: Standard Names.
! * cmpstrM instruction pattern: Standard Names.
* code generation RTL sequences: Expander Definitions.
! * code motion: Passes.
! * code_label: Insns.
! * code_label and /i: Flags.
! * code_label and /v: Flags.
! * CODE_LABEL_NUMBER: Insns.
! * codes, RTL expression: RTL Objects.
! * COImode: Machine Modes.
! * COLLECT2_HOST_INITIALIZATION: Host Misc.
! * COLLECT_EXPORT_LIST: Misc.
* COLLECT_PARSE_FLAG: Macros for Initialization.
* COLLECT_SHARED_FINI_FUNC: Macros for Initialization.
* COLLECT_SHARED_INIT_FUNC: Macros for Initialization.
! * combiner pass: Regs and Memory.
! * common subexpression elimination: Passes.
! * compare: Arithmetic.
* compare, canonicalization of: Insn Canonicalizations.
! * compiler passes and files: Passes.
! * complement, bitwise: Arithmetic.
! * COMPLEX_CST: Expression trees.
! * COMPLEX_EXPR: Expression trees.
! * COMPLEX_TYPE: Types.
! * COMPONENT_REF: Expression trees.
! * COMPOUND_BODY: Function Bodies.
! * COMPOUND_EXPR: Expression trees.
! * COMPOUND_LITERAL_EXPR: Expression trees.
! * COMPOUND_LITERAL_EXPR_DECL: Expression trees.
! * COMPOUND_LITERAL_EXPR_DECL_STMT: Expression trees.
! * COMPOUND_STMT: Function Bodies.
! * computing the length of an insn: Insn Lengths.
! * concat and /u: Flags.
! * cond: Comparisons.
! * cond and attributes: Expressions.
! * cond_exec: Side Effects.
! * COND_EXPR: Expression trees.
! * condition code register: Regs and Memory.
! * condition code status: Condition Code.
! * condition codes: Comparisons.
* conditional execution: Conditional Execution.
! * CONDITIONAL_REGISTER_USAGE: Register Basics.
! * conditional_trap instruction pattern: Standard Names.
! * conditions, in patterns: Patterns.
! * configuration file <1>: Host Misc.
! * configuration file: Filesystem.
! * configure terms: Configure Terms.
! * CONJ_EXPR: Expression trees.
! * const and /i: Flags.
! * CONST0_RTX: Constants.
! * const0_rtx: Constants.
! * CONST1_RTX: Constants.
! * const1_rtx: Constants.
! * CONST2_RTX: Constants.
! * const2_rtx: Constants.
! * CONST_DECL: Declarations.
! * const_double: Constants.
! * const_double, RTL sharing: Sharing.
! * CONST_DOUBLE_CHAIN: Constants.
! * CONST_DOUBLE_LOW: Constants.
! * CONST_DOUBLE_MEM: Constants.
! * CONST_DOUBLE_OK_FOR_CONSTRAINT_P: Register Classes.
! * CONST_DOUBLE_OK_FOR_LETTER_P: Register Classes.
! * const_int: Constants.
! * const_int and attribute tests: Expressions.
! * const_int and attributes: Expressions.
! * const_int, RTL sharing: Sharing.
! * CONST_OK_FOR_CONSTRAINT_P: Register Classes.
! * CONST_OK_FOR_LETTER_P: Register Classes.
! * CONST_OR_PURE_CALL_P: Flags.
! * const_string: Constants.
! * const_string and attributes: Expressions.
! * const_true_rtx: Constants.
! * const_vector: Constants.
! * const_vector, RTL sharing: Sharing.
* constant attributes: Constant Attributes.
* constant definitions: Constant Definitions.
! * constant folding: Passes.
! * constant propagation: Passes.
! * CONSTANT_ADDRESS_P: Addressing Modes.
! * CONSTANT_ALIGNMENT: Storage Layout.
! * CONSTANT_P: Addressing Modes.
! * CONSTANT_POOL_ADDRESS_P: Flags.
! * CONSTANT_POOL_BEFORE_FUNCTION: Data Output.
! * constants in constraints: Simple Constraints.
! * constm1_rtx: Constants.
! * constraint modifier characters: Modifiers.
! * constraint, matching: Simple Constraints.
! * CONSTRAINT_LEN: Register Classes.
! * constraints: Constraints.
* constraints, machine specific: Machine Constraints.
! * CONSTRUCTOR: Expression trees.
! * constructor: Function Basics.
! * constructors, automatic calls: Collect2.
! * constructors, output of: Initialization.
! * container: Containers.
! * CONTINUE_STMT: Function Bodies.
! * contributors: Contributors.
! * controlling register usage: Register Basics.
! * controlling the compilation driver: Driver.
! * conventions, run-time: Interface.
! * conversions: Conversions.
! * CONVERT_EXPR: Expression trees.
! * copy constructor: Function Basics.
! * copy propagation: Passes.
! * copy_rtx: Addressing Modes.
! * copy_rtx_if_shared: Sharing.
! * cosM2 instruction pattern: Standard Names.
! * costs of instructions: Costs.
! * CP_INTEGRAL_TYPE: Types.
! * cp_namespace_decls: Namespaces.
! * CP_TYPE_CONST_NON_VOLATILE_P: Types.
! * CP_TYPE_CONST_P: Types.
! * CP_TYPE_QUALS: Types.
! * CP_TYPE_RESTRICT_P: Types.
! * CP_TYPE_VOLATILE_P: Types.
! * CPLUSPLUS_CPP_SPEC: Driver.
! * CPP_SPEC: Driver.
! * CQImode: Machine Modes.
! * cross compilation and floating point: Floating Point.
! * CRT_CALL_STATIC_FUNCTION: Sections.
! * CRTSTUFF_T_CFLAGS: Target Fragment.
! * CRTSTUFF_T_CFLAGS_S: Target Fragment.
! * CSImode: Machine Modes.
! * CTImode: Machine Modes.
! * ctz: Arithmetic.
! * CTZ_DEFINED_VALUE_AT_ZERO: Misc.
! * ctzM2 instruction pattern: Standard Names.
! * CUMULATIVE_ARGS: Register Arguments.
! * current_function_epilogue_delay_list: Function Entry.
! * current_function_is_leaf: Leaf Functions.
! * current_function_outgoing_args_size: Stack Arguments.
! * current_function_pops_args: Function Entry.
! * current_function_pretend_args_size: Function Entry.
! * current_function_uses_only_leaf_regs: Leaf Functions.
* current_insn_predicate: Conditional Execution.
* data bypass <1>: Comparison of the two descriptions.
* data bypass: Automaton pipeline description.
* data dependence delays: Processor pipeline description.
! * data flow analysis: Passes.
! * data structures: Per-Function Data.
! * DATA_ALIGNMENT: Storage Layout.
! * data_section: Sections.
! * DATA_SECTION_ASM_OP: Sections.
! * DBR_OUTPUT_SEQEND: Instruction Output.
! * dbr_sequence_length: Instruction Output.
! * DBX_BLOCKS_FUNCTION_RELATIVE: DBX Options.
! * DBX_CONTIN_CHAR: DBX Options.
! * DBX_CONTIN_LENGTH: DBX Options.
! * DBX_DEBUGGING_INFO: DBX Options.
! * DBX_FUNCTION_FIRST: DBX Options.
! * DBX_MEMPARM_STABS_LETTER: DBX Options.
! * DBX_NO_XREFS: DBX Options.
! * DBX_OUTPUT_FUNCTION_END: DBX Hooks.
! * DBX_OUTPUT_LBRAC: DBX Hooks.
! * DBX_OUTPUT_MAIN_SOURCE_DIRECTORY: File Names and DBX.
! * DBX_OUTPUT_MAIN_SOURCE_FILE_END: File Names and DBX.
! * DBX_OUTPUT_MAIN_SOURCE_FILENAME: File Names and DBX.
! * DBX_OUTPUT_NFUN: DBX Hooks.
! * DBX_OUTPUT_RBRAC: DBX Hooks.
! * DBX_OUTPUT_STANDARD_TYPES: DBX Hooks.
! * DBX_REGISTER_NUMBER: All Debuggers.
! * DBX_REGPARM_STABS_CODE: DBX Options.
! * DBX_REGPARM_STABS_LETTER: DBX Options.
! * DBX_STATIC_CONST_VAR_CODE: DBX Options.
! * DBX_STATIC_STAB_DATA_SECTION: DBX Options.
! * DBX_TYPE_DECL_STABS_CODE: DBX Options.
! * DBX_USE_BINCL: DBX Options.
! * DCmode: Machine Modes.
* De Morgan's law: Insn Canonicalizations.
! * dead code: Passes.
! * dead_or_set_p: define_peephole.
! * DEBUG_SYMS_TEXT: DBX Options.
! * DEBUGGER_ARG_OFFSET: All Debuggers.
! * DEBUGGER_AUTO_OFFSET: All Debuggers.
! * debugging information generation: Passes.
! * DECL_ALIGN: Declarations.
! * DECL_ANTICIPATED: Function Basics.
! * DECL_ARGUMENTS: Function Basics.
! * DECL_ARRAY_DELETE_OPERATOR_P: Function Basics.
! * DECL_ARTIFICIAL <1>: Function Basics.
! * DECL_ARTIFICIAL: Declarations.
! * DECL_ASSEMBLER_NAME: Function Basics.
! * DECL_ATTRIBUTES: Attributes.
! * DECL_BASE_CONSTRUCTOR_P: Function Basics.
! * DECL_CLASS_SCOPE_P: Declarations.
! * DECL_COMPLETE_CONSTRUCTOR_P: Function Basics.
! * DECL_COMPLETE_DESTRUCTOR_P: Function Basics.
! * DECL_CONST_MEMFUNC_P: Function Basics.
! * DECL_CONSTRUCTOR_P: Function Basics.
! * DECL_CONTEXT: Namespaces.
! * DECL_CONV_FN_P: Function Basics.
! * DECL_COPY_CONSTRUCTOR_P: Function Basics.
! * DECL_DESTRUCTOR_P: Function Basics.
! * DECL_EXTERN_C_FUNCTION_P: Function Basics.
! * DECL_EXTERNAL <1>: Function Basics.
! * DECL_EXTERNAL: Declarations.
! * DECL_FUNCTION_MEMBER_P: Function Basics.
! * DECL_FUNCTION_SCOPE_P: Declarations.
! * DECL_GLOBAL_CTOR_P: Function Basics.
! * DECL_GLOBAL_DTOR_P: Function Basics.
! * DECL_INITIAL: Declarations.
! * DECL_LINKONCE_P: Function Basics.
! * DECL_LOCAL_FUNCTION_P: Function Basics.
! * DECL_MAIN_P: Function Basics.
! * DECL_NAME <1>: Function Basics.
! * DECL_NAME <2>: Declarations.
! * DECL_NAME: Namespaces.
! * DECL_NAMESPACE_ALIAS: Namespaces.
! * DECL_NAMESPACE_SCOPE_P: Declarations.
! * DECL_NAMESPACE_STD_P: Namespaces.
! * DECL_NON_THUNK_FUNCTION_P: Function Basics.
! * DECL_NONCONVERTING_P: Function Basics.
! * DECL_NONSTATIC_MEMBER_FUNCTION_P: Function Basics.
! * DECL_OVERLOADED_OPERATOR_P: Function Basics.
! * DECL_RESULT: Function Basics.
! * DECL_SIZE: Declarations.
! * DECL_SOURCE_FILE: Declarations.
! * DECL_SOURCE_LINE: Declarations.
! * DECL_STATIC_FUNCTION_P: Function Basics.
! * DECL_STMT: Function Bodies.
! * DECL_STMT_DECL: Function Bodies.
! * DECL_THUNK_P: Function Basics.
! * DECL_VOLATILE_MEMFUNC_P: Function Basics.
! * declaration: Declarations.
! * declarations, RTL: RTL Declarations.
! * DECLARE_LIBRARY_RENAMES: Library Calls.
* decrement_and_branch_until_zero instruction pattern: Standard Names.
! * default: GTY Options.
! * default_file_start: File Framework.
! * DEFAULT_GDB_EXTENSIONS: DBX Options.
! * DEFAULT_MAIN_RETURN: Misc.
! * DEFAULT_PCC_STRUCT_RETURN: Aggregate Return.
! * DEFAULT_SHORT_ENUMS: Type Layout.
! * DEFAULT_SIGNED_CHAR: Type Layout.
! * define_asm_attributes: Tagging Insns.
* define_attr: Defining Attributes.
* define_automaton: Automaton pipeline description.
* define_bypass: Automaton pipeline description.
* define_cond_exec: Conditional Execution.
* define_constants: Constant Definitions.
* define_cpu_unit: Automaton pipeline description.
! * define_delay: Delay Slots.
* define_expand: Expander Definitions.
* define_function_unit: Old pipeline description.
! * define_insn: Patterns.
! * define_insn example: Example.
! * define_insn_and_split: Insn Splitting.
* define_insn_reservation: Automaton pipeline description.
! * define_peephole: define_peephole.
! * define_peephole2: define_peephole2.
* define_query_cpu_unit: Automaton pipeline description.
* define_reservation: Automaton pipeline description.
! * define_split: Insn Splitting.
* defining attributes and their values: Defining Attributes.
! * defining jump instruction patterns: Jump Patterns.
! * defining looping instruction patterns: Looping Patterns.
* defining peephole optimizers: Peephole Definitions.
* defining RTL sequences for code generation: Expander Definitions.
! * delay slots, defining: Delay Slots.
! * DELAY_SLOTS_FOR_EPILOGUE: Function Entry.
! * delayed branch scheduling: Passes.
! * deletable: GTY Options.
! * Dependent Patterns: Dependent Patterns.
! * desc: GTY Options.
! * destructor: Function Basics.
! * destructors, output of: Initialization.
* deterministic finite state automaton <1>: Automaton pipeline description.
* deterministic finite state automaton: Processor pipeline description.
! * DFA_PIPELINE_INTERFACE: Scheduling.
! * DFmode: Machine Modes.
! * digits in constraint: Simple Constraints.
! * DImode: Machine Modes.
! * DIR_SEPARATOR: Filesystem.
! * DIR_SEPARATOR_2: Filesystem.
! * directory options .md: Including Patterns.
! * disabling certain registers: Register Basics.
! * dispatch table: Dispatch Tables.
! * div: Arithmetic.
! * div and attributes: Expressions.
! * division: Arithmetic.
! * divM3 instruction pattern: Standard Names.
! * divmodM4 instruction pattern: Standard Names.
! * DO_BODY: Function Bodies.
! * DO_COND: Function Bodies.
! * DO_STMT: Function Bodies.
! * DOLLARS_IN_IDENTIFIERS: Misc.
! * doloop_begin instruction pattern: Standard Names.
! * doloop_end instruction pattern: Standard Names.
* DONE: Expander Definitions.
! * DOUBLE_TYPE_SIZE: Type Layout.
! * driver: Driver.
! * DRIVER_SELF_SPECS: Driver.
! * DUMPFILE_FORMAT: Filesystem.
! * DWARF2_ASM_LINE_DEBUG_INFO: SDB and DWARF.
! * DWARF2_DEBUGGING_INFO: SDB and DWARF.
! * DWARF2_FRAME_INFO: SDB and DWARF.
! * DWARF2_FRAME_REG_OUT: Frame Registers.
! * DWARF2_GENERATE_TEXT_SECTION_LABEL: SDB and DWARF.
* DWARF2_UNWIND_INFO: Exception Region Output.
! * DWARF_ALT_FRAME_RETURN_COLUMN: Frame Layout.
* DWARF_CIE_DATA_ALIGNMENT: Exception Region Output.
! * DWARF_FRAME_REGISTERS: Frame Registers.
! * DWARF_FRAME_REGNUM: Frame Registers.
! * DWARF_REG_TO_UNWIND_COLUMN: Frame Registers.
! * DWARF_ZERO_REG: Frame Layout.
! * DYNAMIC_CHAIN_ADDRESS: Frame Layout.
! * E in constraint: Simple Constraints.
! * earlyclobber operand: Modifiers.
! * EDOM, implicit usage: Library Calls.
* EH_FRAME_IN_DATA_SECTION: Exception Region Output.
* EH_FRAME_SECTION_NAME: Exception Region Output.
! * eh_return instruction pattern: Standard Names.
! * EH_RETURN_DATA_REGNO: Exception Handling.
! * EH_RETURN_HANDLER_RTX: Exception Handling.
! * EH_RETURN_STACKADJ_RTX: Exception Handling.
! * EH_USES: Function Entry.
! * ELIGIBLE_FOR_EPILOGUE_DELAY: Function Entry.
! * ELIMINABLE_REGS: Elimination.
! * ELSE_CLAUSE: Function Bodies.
! * EMIT_MODE_SET: Mode Switching.
! * EMPTY_CLASS_EXPR: Function Bodies.
! * EMPTY_FIELD_BOUNDARY: Storage Layout.
! * ENABLE_EXECUTE_STACK: Trampolines.
! * ENDFILE_SPEC: Driver.
! * endianness: Portability.
! * enum machine_mode: Machine Modes.
! * enum reg_class: Register Classes.
! * ENUMERAL_TYPE: Types.
! * epilogue: Function Entry.
! * epilogue instruction pattern: Standard Names.
! * EPILOGUE_USES: Function Entry.
! * eq: Comparisons.
! * eq and attributes: Expressions.
! * eq_attr: Expressions.
! * EQ_EXPR: Expression trees.
! * equal: Comparisons.
! * errno, implicit usage: Library Calls.
! * escape sequences: Escape Sequences.
! * exception handling: Exception Handling.
! * exception_receiver instruction pattern: Standard Names.
! * exclamation point: Multi-Alternative.
* exclusion_set: Automaton pipeline description.
! * exclusive-or, bitwise: Arithmetic.
! * EXIT_EXPR: Expression trees.
! * EXIT_IGNORE_STACK: Function Entry.
* expander definitions: Expander Definitions.
! * expM2 instruction pattern: Standard Names.
! * expr_list: Insns.
! * EXPR_STMT: Function Bodies.
! * EXPR_STMT_EXPR: Function Bodies.
! * expression: Expression trees.
! * expression codes: RTL Objects.
! * extendMN2 instruction pattern: Standard Names.
! * extensible constraints: Simple Constraints.
! * EXTRA_ADDRESS_CONSTRAINT: Register Classes.
! * EXTRA_CONSTRAINT: Register Classes.
! * EXTRA_CONSTRAINT_STR: Register Classes.
! * EXTRA_MEMORY_CONSTRAINT: Register Classes.
! * EXTRA_SECTION_FUNCTIONS: Sections.
! * EXTRA_SECTIONS: Sections.
! * EXTRA_SPECS: Driver.
! * extv instruction pattern: Standard Names.
! * extzv instruction pattern: Standard Names.
! * F in constraint: Simple Constraints.
* FAIL: Expander Definitions.
! * FATAL_EXIT_CODE: Host Misc.
* FDL, GNU Free Documentation License: GNU Free Documentation License.
* features, optional, in system conventions: Run-time Target.
! * ffs: Arithmetic.
! * ffsM2 instruction pattern: Standard Names.
! * FIELD_DECL: Declarations.
! * file_end_indicate_exec_stack: File Framework.
! * FILE_STMT: Function Bodies.
! * FILE_STMT_FILENAME: Function Bodies.
! * files and passes of the compiler: Passes.
! * files, generated: Files.
! * final pass: Passes.
* final_absence_set: Automaton pipeline description.
! * FINAL_PRESCAN_INSN: Instruction Output.
* final_presence_set: Automaton pipeline description.
! * FINAL_REG_PARM_STACK_SPACE: Stack Arguments.
! * final_scan_insn: Function Entry.
! * final_sequence: Instruction Output.
! * FINALIZE_PIC: PIC.
! * FIND_BASE_TERM: Addressing Modes.
! * FINI_SECTION_ASM_OP: Sections.
* finite state automaton minimization: Automaton pipeline description.
! * FIRST_PARM_OFFSET: Frame Layout.
! * FIRST_PARM_OFFSET and virtual registers: Regs and Memory.
! * FIRST_PSEUDO_REGISTER: Register Basics.
! * FIRST_STACK_REG: Stack Registers.
! * FIRST_VIRTUAL_REGISTER: Regs and Memory.
! * fix: Conversions.
! * FIX_TRUNC_EXPR: Expression trees.
! * fix_truncMN2 instruction pattern: Standard Names.
! * fixed register: Register Basics.
! * FIXED_REGISTERS: Register Basics.
! * fixed_regs: Register Basics.
! * fixMN2 instruction pattern: Standard Names.
! * FIXUNS_TRUNC_LIKE_FIX_TRUNC: Misc.
! * fixuns_truncMN2 instruction pattern: Standard Names.
! * fixunsMN2 instruction pattern: Standard Names.
! * flags in RTL expression: Flags.
! * float: Conversions.
! * FLOAT_EXPR: Expression trees.
! * float_extend: Conversions.
! * FLOAT_STORE_FLAG_VALUE: Misc.
! * float_truncate: Conversions.
! * FLOAT_TYPE_SIZE: Type Layout.
! * FLOAT_WORDS_BIG_ENDIAN: Storage Layout.
* FLOAT_WORDS_BIG_ENDIAN, (lack of) effect on subreg: Regs and Memory.
! * floating point and cross compilation: Floating Point.
! * Floating Point Emulation: Target Fragment.
* floating point emulation library, US Software GOFAST: Library Calls.
! * floatMN2 instruction pattern: Standard Names.
! * floatunsMN2 instruction pattern: Standard Names.
! * floorM2 instruction pattern: Standard Names.
! * FOR_BODY: Function Bodies.
! * FOR_COND: Function Bodies.
! * FOR_EXPR: Function Bodies.
! * FOR_INIT_STMT: Function Bodies.
! * FOR_STMT: Function Bodies.
! * FORCE_CODE_SECTION_ALIGN: Sections.
! * FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN: Storage Layout.
! * force_reg: Standard Names.
! * frame layout: Frame Layout.
! * FRAME_GROWS_DOWNWARD: Frame Layout.
* FRAME_GROWS_DOWNWARD and virtual registers: Regs and Memory.
! * frame_pointer_needed: Function Entry.
! * FRAME_POINTER_REGNUM: Frame Registers.
* FRAME_POINTER_REGNUM and virtual registers: Regs and Memory.
! * FRAME_POINTER_REQUIRED: Elimination.
! * frame_pointer_rtx: Frame Registers.
! * frame_related: Flags.
* frame_related, in insn, call_insn, jump_insn, barrier, and set: Flags.
! * frame_related, in mem: Flags.
! * frame_related, in reg: Flags.
! * frame_related, in symbol_ref: Flags.
! * ftruncM2 instruction pattern: Standard Names.
! * function: Functions.
! * function body: Function Bodies.
! * function call conventions: Interface.
! * function entry and exit: Function Entry.
* function units, for scheduling: Old pipeline description.
! * function-call insns: Calls.
! * FUNCTION_ARG: Register Arguments.
! * FUNCTION_ARG_ADVANCE: Register Arguments.
! * FUNCTION_ARG_BOUNDARY: Register Arguments.
! * FUNCTION_ARG_CALLEE_COPIES: Register Arguments.
! * FUNCTION_ARG_PADDING: Register Arguments.
! * FUNCTION_ARG_PARTIAL_NREGS: Register Arguments.
! * FUNCTION_ARG_PASS_BY_REFERENCE: Register Arguments.
! * FUNCTION_ARG_REGNO_P: Register Arguments.
! * FUNCTION_BOUNDARY: Storage Layout.
! * FUNCTION_DECL: Functions.
! * FUNCTION_INCOMING_ARG: Register Arguments.
! * FUNCTION_MODE: Misc.
! * FUNCTION_OUTGOING_VALUE: Scalar Return.
! * FUNCTION_PROFILER: Profiling.
! * FUNCTION_TYPE: Types.
! * FUNCTION_VALUE: Scalar Return.
! * FUNCTION_VALUE_REGNO_P: Scalar Return.
! * functions, leaf: Leaf Functions.
! * fundamental type: Types.
! * g in constraint: Simple Constraints.
! * G in constraint: Simple Constraints.
! * GCC and portability: Portability.
! * GCC_DRIVER_HOST_INITIALIZATION: Host Misc.
! * GCOV_TYPE_SIZE: Type Layout.
! * ge: Comparisons.
! * ge and attributes: Expressions.
! * GE_EXPR: Expression trees.
! * GEN_ERRNO_RTX: Library Calls.
! * gencodes: Passes.
! * genconfig: Passes.
! * general_operand: RTL Template.
! * GENERAL_REGS: Register Classes.
! * generated files: Files.
! * generating assembler output: Output Statement.
! * generating insns: RTL Template.
! * genflags: Passes.
! * get_attr: Expressions.
! * get_attr_length: Insn Lengths.
! * GET_CLASS_NARROWEST_MODE: Machine Modes.
! * GET_CODE: RTL Objects.
! * get_frame_size: Elimination.
! * get_insns: Insns.
! * get_last_insn: Insns.
! * GET_MODE: Machine Modes.
! * GET_MODE_ALIGNMENT: Machine Modes.
! * GET_MODE_BITSIZE: Machine Modes.
! * GET_MODE_CLASS: Machine Modes.
! * GET_MODE_MASK: Machine Modes.
! * GET_MODE_NAME: Machine Modes.
! * GET_MODE_NUNITS: Machine Modes.
! * GET_MODE_SIZE: Machine Modes.
! * GET_MODE_UNIT_SIZE: Machine Modes.
! * GET_MODE_WIDER_MODE: Machine Modes.
! * GET_RTX_CLASS: RTL Classes.
! * GET_RTX_FORMAT: RTL Classes.
! * GET_RTX_LENGTH: RTL Classes.
! * geu: Comparisons.
! * geu and attributes: Expressions.
! * GGC: Type Information.
! * global common subexpression elimination: Passes.
! * global register allocation: Passes.
! * GLOBAL_INIT_PRIORITY: Function Basics.
! * global_regs: Register Basics.
! * GO_IF_LEGITIMATE_ADDRESS: Addressing Modes.
! * GO_IF_MODE_DEPENDENT_ADDRESS: Addressing Modes.
! * GOFAST, floating point emulation library: Library Calls.
! * gofast_maybe_init_libfuncs: Library Calls.
! * GOTO_DESTINATION: Function Bodies.
! * GOTO_FAKE_P: Function Bodies.
! * GOTO_STMT: Function Bodies.
! * graph coloring register allocation: Passes.
! * greater than: Comparisons.
! * gt: Comparisons.
! * gt and attributes: Expressions.
! * GT_EXPR: Expression trees.
! * gtu: Comparisons.
! * gtu and attributes: Expressions.
! * GTY: Type Information.
! * H in constraint: Simple Constraints.
! * HANDLE_PRAGMA_PACK_PUSH_POP: Misc.
! * HANDLE_SYSV_PRAGMA: Misc.
! * HANDLER: Function Bodies.
! * HANDLER_BODY: Function Bodies.
! * HANDLER_PARMS: Function Bodies.
! * hard registers: Regs and Memory.
! * HARD_FRAME_POINTER_REGNUM: Frame Registers.
! * HARD_REGNO_CALL_PART_CLOBBERED: Register Basics.
! * HARD_REGNO_CALLER_SAVE_MODE: Caller Saves.
* HARD_REGNO_MODE_OK: Values in Registers.
* HARD_REGNO_NREGS: Values in Registers.
* HAS_INIT_SECTION: Macros for Initialization.
! * HAVE_DOS_BASED_FILE_SYSTEM: Filesystem.
! * HAVE_POST_DECREMENT: Addressing Modes.
! * HAVE_POST_INCREMENT: Addressing Modes.
! * HAVE_POST_MODIFY_DISP: Addressing Modes.
! * HAVE_POST_MODIFY_REG: Addressing Modes.
! * HAVE_PRE_DECREMENT: Addressing Modes.
! * HAVE_PRE_INCREMENT: Addressing Modes.
! * HAVE_PRE_MODIFY_DISP: Addressing Modes.
! * HAVE_PRE_MODIFY_REG: Addressing Modes.
! * HCmode: Machine Modes.
! * HFmode: Machine Modes.
! * high: Constants.
! * HImode: Machine Modes.
! * HImode, in insn: Insns.
! * host configuration: Host Config.
! * host functions: Host Common.
! * host hooks: Host Common.
! * host makefile fragment: Host Fragment.
! * HOST_BIT_BUCKET: Filesystem.
! * HOST_EXECUTABLE_SUFFIX: Filesystem.
! * HOST_HOOKS_EXTRA_SIGNALS: Host Common.
! * HOST_HOOKS_GT_PCH_USE_ADDRESS: Host Common.
! * HOST_OBJECT_SUFFIX: Filesystem.
! * HOT_TEXT_SECTION_NAME: Sections.
! * I in constraint: Simple Constraints.
! * i in constraint: Simple Constraints.
! * IBM_FLOAT_FORMAT: Storage Layout.
! * identifier: Identifiers.
! * IDENTIFIER_LENGTH: Identifiers.
! * IDENTIFIER_NODE: Identifiers.
! * IDENTIFIER_OPNAME_P: Identifiers.
! * IDENTIFIER_POINTER: Identifiers.
! * IDENTIFIER_TYPENAME_P: Identifiers.
! * IEEE_FLOAT_FORMAT: Storage Layout.
! * if conversion: Passes.
! * IF_COND: Function Bodies.
! * if_marked: GTY Options.
! * IF_STMT: Function Bodies.
! * if_then_else: Comparisons.
! * if_then_else and attributes: Expressions.
! * if_then_else usage: Side Effects.
! * IFCVT_EXTRA_FIELDS: Misc.
! * IFCVT_INIT_EXTRA_FIELDS: Misc.
! * IFCVT_MODIFY_CANCEL: Misc.
! * IFCVT_MODIFY_FINAL: Misc.
! * IFCVT_MODIFY_INSN: Misc.
! * IFCVT_MODIFY_MULTIPLE_TESTS: Misc.
! * IFCVT_MODIFY_TESTS: Misc.
! * IMAGPART_EXPR: Expression trees.
! * immediate_operand: RTL Template.
! * IMMEDIATE_PREFIX: Instruction Output.
! * in_data: Sections.
! * in_struct: Flags.
! * in_struct, in code_label and note: Flags.
! * in_struct, in insn: Flags.
! * in_struct, in insn and jump_insn and call_insn: Flags.
! * in_struct, in insn, jump_insn and call_insn: Flags.
! * in_struct, in label_ref: Flags.
! * in_struct, in mem: Flags.
! * in_struct, in reg: Flags.
! * in_struct, in subreg: Flags.
! * in_text: Sections.
! * include: Including Patterns.
! * INCLUDE_DEFAULTS: Driver.
! * inclusive-or, bitwise: Arithmetic.
! * INCOMING_FRAME_SP_OFFSET: Frame Layout.
! * INCOMING_REGNO: Register Basics.
! * INCOMING_RETURN_ADDR_RTX: Frame Layout.
! * INDEX_REG_CLASS: Register Classes.
! * indirect_jump instruction pattern: Standard Names.
! * INDIRECT_REF: Expression trees.
! * INIT_CUMULATIVE_ARGS: Register Arguments.
! * INIT_CUMULATIVE_INCOMING_ARGS: Register Arguments.
! * INIT_CUMULATIVE_LIBCALL_ARGS: Register Arguments.
! * INIT_ENVIRONMENT: Driver.
! * INIT_EXPANDERS: Per-Function Data.
! * INIT_EXPR: Expression trees.
! * init_machine_status: Per-Function Data.
! * init_one_libfunc: Library Calls.
* INIT_SECTION_ASM_OP <1>: Macros for Initialization.
! * INIT_SECTION_ASM_OP: Sections.
! * INITIAL_ELIMINATION_OFFSET: Elimination.
! * INITIAL_FRAME_POINTER_OFFSET: Elimination.
! * initialization routines: Initialization.
! * INITIALIZE_TRAMPOLINE: Trampolines.
! * inline on rtx, automatic: Passes.
! * inline on trees, automatic: Passes.
! * inlining: Target Attributes.
! * insn: Insns.
! * insn and /f: Flags.
! * insn and /i: Flags.
! * insn and /j: Flags.
! * insn and /s: Flags.
! * insn and /u: Flags.
! * insn and /v: Flags.
! * insn attributes: Insn Attributes.
* insn canonicalization: Insn Canonicalizations.
! * insn includes: Including Patterns.
! * insn lengths, computing: Insn Lengths.
! * insn splitting: Insn Splitting.
* insn-attr.h: Defining Attributes.
! * INSN_ANNULLED_BRANCH_P: Flags.
! * INSN_CODE: Insns.
! * INSN_DEAD_CODE_P: Flags.
! * INSN_DELETED_P: Flags.
! * INSN_FROM_TARGET_P: Flags.
! * insn_list: Insns.
! * insn_list and /i: Flags.
! * INSN_REFERENCES_ARE_DELAYED: Misc.
! * INSN_SETS_ARE_DELAYED: Misc.
! * INSN_UID: Insns.
! * insns: Insns.
! * insns, generating: RTL Template.
! * insns, recognizing: RTL Template.
! * instruction attributes: Insn Attributes.
! * instruction combination: Passes.
* instruction latency time <1>: Comparison of the two descriptions.
* instruction latency time <2>: Automaton pipeline description.
* instruction latency time: Processor pipeline description.
! * instruction patterns: Patterns.
! * instruction recognizer: Passes.
! * instruction scheduling: Passes.
! * instruction splitting: Insn Splitting.
! * insv instruction pattern: Standard Names.
! * INT_TYPE_SIZE: Type Layout.
! * INTEGER_CST: Expression trees.
! * INTEGER_TYPE: Types.
! * INTEGRATE_THRESHOLD: Misc.
! * integrated: Flags.
* integrated, in insn, call_insn, jump_insn, barrier, code_label, insn_list, const, and note: Flags.
! * integrated, in reg: Flags.
! * integrated, in symbol_ref: Flags.
! * Interdependence of Patterns: Dependent Patterns.
! * interfacing to GCC output: Interface.
* interlock delays <1>: Comparison of the two descriptions.
* interlock delays: Processor pipeline description.
! * INTMAX_TYPE: Type Layout.
! * introduction: Top.
* INVOKE__main: Macros for Initialization.
! * ior: Arithmetic.
! * ior and attributes: Expressions.
* ior, canonicalization of: Insn Canonicalizations.
! * iorM3 instruction pattern: Standard Names.
! * IS_ASM_LOGICAL_LINE_SEPARATOR: Data Output.
! * IS_COSTLY_DEPENDENCE: Scheduling.
! * jump: Flags.
! * jump bypassing: Passes.
! * jump instruction pattern: Standard Names.
! * jump instruction patterns: Jump Patterns.
! * jump instructions and set: Side Effects.
! * jump optimization: Passes.
! * jump threading: Passes.
! * jump, in call_insn: Flags.
! * jump, in insn: Flags.
! * jump, in mem: Flags.
! * JUMP_ALIGN: Alignment Output.
! * jump_insn: Insns.
! * jump_insn and /f: Flags.
! * jump_insn and /i: Flags.
! * jump_insn and /s: Flags.
! * jump_insn and /u: Flags.
! * jump_insn and /v: Flags.
! * JUMP_LABEL: Insns.
! * JUMP_TABLES_IN_TEXT_SECTION: Sections.
! * LABEL_ALIGN: Alignment Output.
! * LABEL_ALIGN_AFTER_BARRIER: Alignment Output.
! * LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP: Alignment Output.
! * LABEL_ALIGN_MAX_SKIP: Alignment Output.
! * LABEL_ALT_ENTRY_P: Insns.
! * LABEL_DECL: Declarations.
! * LABEL_KIND: Insns.
! * LABEL_NUSES: Insns.
! * LABEL_OUTSIDE_LOOP_P: Flags.
! * LABEL_PRESERVE_P: Flags.
! * label_ref: Constants.
! * label_ref and /s: Flags.
! * label_ref and /v: Flags.
! * label_ref, RTL sharing: Sharing.
! * LABEL_REF_NONLOCAL_P: Flags.
! * LABEL_STMT: Function Bodies.
! * LABEL_STMT_LABEL: Function Bodies.
! * large return values: Aggregate Return.
! * LARGEST_EXPONENT_IS_NORMAL: Storage Layout.
! * LAST_STACK_REG: Stack Registers.
! * LAST_VIRTUAL_REGISTER: Regs and Memory.
* LD_FINI_SWITCH: Macros for Initialization.
* LD_INIT_SWITCH: Macros for Initialization.
* LDD_SUFFIX: Macros for Initialization.
! * le: Comparisons.
! * le and attributes: Expressions.
! * LE_EXPR: Expression trees.
! * leaf functions: Leaf Functions.
! * leaf_function_p: Standard Names.
! * LEAF_REG_REMAP: Leaf Functions.
! * LEAF_REGISTERS: Leaf Functions.
! * left rotate: Arithmetic.
! * left shift: Arithmetic.
! * LEGITIMATE_CONSTANT_P: Addressing Modes.
! * LEGITIMATE_PIC_OPERAND_P: PIC.
! * LEGITIMIZE_ADDRESS: Addressing Modes.
! * LEGITIMIZE_RELOAD_ADDRESS: Addressing Modes.
! * length: GTY Options.
! * less than: Comparisons.
! * less than or equal: Comparisons.
! * leu: Comparisons.
! * leu and attributes: Expressions.
! * LIB2FUNCS_EXTRA: Target Fragment.
! * LIB_SPEC: Driver.
! * LIBCALL_VALUE: Scalar Return.
! * libgcc.a: Library Calls.
! * LIBGCC2_CFLAGS: Target Fragment.
! * LIBGCC2_WORDS_BIG_ENDIAN: Storage Layout.
! * LIBGCC_SPEC: Driver.
! * library subroutine names: Library Calls.
! * LIBRARY_PATH_ENV: Misc.
! * LIMIT_RELOAD_CLASS: Register Classes.
! * LINK_COMMAND_SPEC: Driver.
! * LINK_EH_SPEC: Driver.
! * LINK_ELIMINATE_DUPLICATE_LDIRECTORIES: Driver.
! * LINK_GCC_C_SEQUENCE_SPEC: Driver.
! * LINK_LIBGCC_SPECIAL: Driver.
! * LINK_LIBGCC_SPECIAL_1: Driver.
! * LINK_SPEC: Driver.
! * linkage: Function Basics.
! * list: Containers.
! * lo_sum: Arithmetic.
! * load address instruction: Simple Constraints.
! * LOAD_EXTEND_OP: Misc.
! * load_multiple instruction pattern: Standard Names.
! * local register allocation: Passes.
! * LOCAL_ALIGNMENT: Storage Layout.
! * LOCAL_CLASS_P: Classes.
! * LOCAL_INCLUDE_DIR: Driver.
! * LOCAL_LABEL_PREFIX: Instruction Output.
! * LOCAL_REGNO: Register Basics.
! * LOG_LINKS: Insns.
! * logical-and, bitwise: Arithmetic.
! * logM2 instruction pattern: Standard Names.
! * LONG_DOUBLE_TYPE_SIZE: Type Layout.
! * LONG_LONG_TYPE_SIZE: Type Layout.
! * LONG_TYPE_SIZE: Type Layout.
! * longjmp and automatic variables: Interface.
! * loop optimization: Passes.
! * LOOP_ALIGN: Alignment Output.
! * LOOP_ALIGN_MAX_SKIP: Alignment Output.
! * LOOP_EXPR: Expression trees.
! * looping instruction patterns: Looping Patterns.
! * LSHIFT_EXPR: Expression trees.
! * lshiftrt: Arithmetic.
! * lshiftrt and attributes: Expressions.
! * lshrM3 instruction pattern: Standard Names.
! * lt: Comparisons.
! * lt and attributes: Expressions.
! * LT_EXPR: Expression trees.
! * ltu: Comparisons.
! * m in constraint: Simple Constraints.
! * machine attributes: Target Attributes.
! * machine description macros: Target Macros.
! * machine descriptions: Machine Desc.
! * machine mode conversions: Conversions.
! * machine modes: Machine Modes.
* machine specific constraints: Machine Constraints.
! * machine_mode: Condition Code.
! * macros, target description: Target Macros.
! * MAKE_DECL_ONE_ONLY: Label Output.
* make_safe_from: Expander Definitions.
! * makefile fragment: Fragments.
! * makefile targets: Makefile.
! * marking roots: GGC Roots.
* MASK_RETURN_ADDR: Exception Region Output.
! * match_dup <1>: define_peephole2.
! * match_dup: RTL Template.
! * match_dup and attributes: Insn Lengths.
! * match_insn: RTL Template.
! * match_insn2: RTL Template.
! * match_op_dup: RTL Template.
! * match_operand: RTL Template.
! * match_operand and attributes: Expressions.
! * match_operator: RTL Template.
! * match_par_dup: RTL Template.
! * match_parallel: RTL Template.
! * match_scratch <1>: define_peephole2.
! * match_scratch: RTL Template.
! * matching constraint: Simple Constraints.
! * matching operands: Output Template.
* math library: Soft float library routines.
! * math, in RTL: Arithmetic.
! * MATH_LIBRARY: Misc.
! * matherr: Library Calls.
! * MAX_BITS_PER_WORD: Storage Layout.
! * MAX_CONDITIONAL_EXECUTE: Misc.
! * MAX_DFA_ISSUE_RATE: Scheduling.
! * MAX_FIXED_MODE_SIZE: Storage Layout.
! * MAX_LONG_DOUBLE_TYPE_SIZE: Type Layout.
! * MAX_LONG_TYPE_SIZE: Type Layout.
! * MAX_MOVE_MAX: Misc.
! * MAX_OFILE_ALIGNMENT: Storage Layout.
! * MAX_REGS_PER_ADDRESS: Addressing Modes.
! * MAX_WCHAR_TYPE_SIZE: Type Layout.
! * maxM3 instruction pattern: Standard Names.
! * MAYBE_REG_PARM_STACK_SPACE: Stack Arguments.
! * maybe_undef: GTY Options.
! * mcount: Profiling.
! * MD_ASM_CLOBBERS: Misc.
! * MD_CAN_REDIRECT_BRANCH: Misc.
! * MD_EXEC_PREFIX: Driver.
! * MD_FALLBACK_FRAME_STATE_FOR: Exception Handling.
! * MD_HANDLE_UNWABI: Exception Handling.
! * MD_STARTFILE_PREFIX: Driver.
! * MD_STARTFILE_PREFIX_1: Driver.
! * mem: Regs and Memory.
! * mem and /c: Flags.
! * mem and /f: Flags.
! * mem and /j: Flags.
! * mem and /s: Flags.
! * mem and /u: Flags.
! * mem and /v: Flags.
! * mem, RTL sharing: Sharing.
! * MEM_ALIAS_SET: Special Accessors.
! * MEM_ALIGN: Special Accessors.
! * MEM_EXPR: Special Accessors.
! * MEM_IN_STRUCT_P: Flags.
! * MEM_KEEP_ALIAS_SET_P: Flags.
! * MEM_NOTRAP_P: Flags.
! * MEM_OFFSET: Special Accessors.
! * MEM_SCALAR_P: Flags.
! * MEM_SIZE: Special Accessors.
! * MEM_VOLATILE_P: Flags.
! * MEMBER_TYPE_FORCES_BLK: Storage Layout.
! * memcpy, implicit usage: Library Calls.
! * memmove, implicit usage: Library Calls.
! * memory reference, nonoffsettable: Simple Constraints.
! * memory references in constraints: Simple Constraints.
! * MEMORY_MOVE_COST: Costs.
! * memset, implicit usage: Library Calls.
! * METHOD_TYPE: Types.
! * MIN_UNITS_PER_WORD: Storage Layout.
! * MINIMUM_ATOMIC_ALIGNMENT: Storage Layout.
! * minM3 instruction pattern: Standard Names.
! * minus: Arithmetic.
! * minus and attributes: Expressions.
* minus, canonicalization of: Insn Canonicalizations.
! * MINUS_EXPR: Expression trees.
! * MIPS coprocessor-definition macros: MIPS Coprocessors.
! * mod: Arithmetic.
! * mod and attributes: Expressions.
! * mode classes: Machine Modes.
! * mode switching: Mode Switching.
! * MODE_AFTER: Mode Switching.
! * MODE_BASE_REG_CLASS: Register Classes.
! * MODE_CC: Machine Modes.
! * MODE_COMPLEX_FLOAT: Machine Modes.
! * MODE_COMPLEX_INT: Machine Modes.
! * MODE_ENTRY: Mode Switching.
! * MODE_EXIT: Mode Switching.
! * MODE_FLOAT: Machine Modes.
! * MODE_FUNCTION: Machine Modes.
! * MODE_HAS_INFINITIES: Storage Layout.
! * MODE_HAS_NANS: Storage Layout.
! * MODE_HAS_SIGN_DEPENDENT_ROUNDING: Storage Layout.
! * MODE_HAS_SIGNED_ZEROS: Storage Layout.
! * MODE_INT: Machine Modes.
! * MODE_NEEDED: Mode Switching.
! * MODE_PARTIAL_INT: Machine Modes.
! * MODE_PRIORITY_TO_MODE: Mode Switching.
! * MODE_RANDOM: Machine Modes.
* MODES_TIEABLE_P: Values in Registers.
! * modifiers in constraints: Modifiers.
! * MODIFY_EXPR: Expression trees.
! * MODIFY_JNI_METHOD_CALL: Misc.
! * MODIFY_TARGET_NAME: Driver.
! * modM3 instruction pattern: Standard Names.
! * MOVE_BY_PIECES_P: Costs.
! * MOVE_MAX: Misc.
! * MOVE_MAX_PIECES: Costs.
! * MOVE_RATIO: Costs.
! * movM instruction pattern: Standard Names.
! * movMODEcc instruction pattern: Standard Names.
! * movstrictM instruction pattern: Standard Names.
! * movstrM instruction pattern: Standard Names.
! * mulhisi3 instruction pattern: Standard Names.
! * mulM3 instruction pattern: Standard Names.
! * mulqihi3 instruction pattern: Standard Names.
! * mulsidi3 instruction pattern: Standard Names.
! * mult: Arithmetic.
! * mult and attributes: Expressions.
* mult, canonicalization of: Insn Canonicalizations.
! * MULT_EXPR: Expression trees.
! * MULTILIB_DEFAULTS: Driver.
! * MULTILIB_DIRNAMES: Target Fragment.
! * MULTILIB_EXCEPTIONS: Target Fragment.
! * MULTILIB_EXTRA_OPTS: Target Fragment.
! * MULTILIB_MATCHES: Target Fragment.
! * MULTILIB_OPTIONS: Target Fragment.
! * multiple alternative constraints: Multi-Alternative.
! * MULTIPLE_SYMBOL_SPACES: Misc.
! * multiplication: Arithmetic.
! * MUST_PASS_IN_STACK: Register Arguments.
! * MUST_PASS_IN_STACK, and FUNCTION_ARG: Register Arguments.
* MUST_USE_SJLJ_EXCEPTIONS: Exception Region Output.
! * n in constraint: Simple Constraints.
! * N_REG_CLASSES: Register Classes.
! * name: Identifiers.
! * named patterns and conditions: Patterns.
! * names, pattern: Standard Names.
! * namespace: Namespaces.
! * namespace, class, scope: Scopes.
! * NAMESPACE_DECL <1>: Declarations.
! * NAMESPACE_DECL: Namespaces.
! * ne: Comparisons.
! * ne and attributes: Expressions.
! * NE_EXPR: Expression trees.
! * nearbyintM2 instruction pattern: Standard Names.
! * neg: Arithmetic.
! * neg and attributes: Expressions.
* neg, canonicalization of: Insn Canonicalizations.
! * NEGATE_EXPR: Expression trees.
! * negM2 instruction pattern: Standard Names.
! * nested functions, trampolines for: Trampolines.
! * next_cc0_user: Jump Patterns.
! * NEXT_INSN: Insns.
! * NEXT_OBJC_RUNTIME: Library Calls.
! * nil: RTL Objects.
! * NO_DBX_FUNCTION_END: DBX Hooks.
! * NO_DOLLAR_IN_LABEL: Misc.
! * NO_DOT_IN_LABEL: Misc.
! * NO_FUNCTION_CSE: Costs.
! * NO_IMPLICIT_EXTERN_C: Misc.
! * no_new_pseudos: Standard Names.
! * NO_PROFILE_COUNTERS: Profiling.
! * NO_RECURSIVE_FUNCTION_CSE: Costs.
! * NO_REGS: Register Classes.
! * NON_SAVING_SETJMP: Register Basics.
* nondeterministic finite state automaton: Automaton pipeline description.
! * nonlocal_goto instruction pattern: Standard Names.
* nonlocal_goto_receiver instruction pattern: Standard Names.
! * nonoffsettable memory reference: Simple Constraints.
! * nop instruction pattern: Standard Names.
! * NOP_EXPR: Expression trees.
! * not: Arithmetic.
! * not and attributes: Expressions.
! * not equal: Comparisons.
* not, canonicalization of: Insn Canonicalizations.
! * note: Insns.
! * note and /i: Flags.
! * note and /v: Flags.
! * NOTE_INSN_BLOCK_BEG: Insns.
! * NOTE_INSN_BLOCK_END: Insns.
! * NOTE_INSN_DELETED: Insns.
! * NOTE_INSN_DELETED_LABEL: Insns.
! * NOTE_INSN_EH_REGION_BEG: Insns.
! * NOTE_INSN_EH_REGION_END: Insns.
! * NOTE_INSN_FUNCTION_END: Insns.
! * NOTE_INSN_LOOP_BEG: Insns.
! * NOTE_INSN_LOOP_CONT: Insns.
! * NOTE_INSN_LOOP_END: Insns.
! * NOTE_INSN_LOOP_VTOP: Insns.
! * NOTE_INSN_SETJMP: Insns.
! * NOTE_LINE_NUMBER: Insns.
! * NOTE_SOURCE_FILE: Insns.
! * NOTICE_UPDATE_CC: Condition Code.
! * NUM_MACHINE_MODES: Machine Modes.
! * NUM_MODES_FOR_MODE_SWITCHING: Mode Switching.
! * o in constraint: Simple Constraints.
! * OBJC_GEN_METHOD_LABEL: Label Output.
* OBJECT_FORMAT_COFF: Macros for Initialization.
! * OFFSET_TYPE: Types.
! * offsettable address: Simple Constraints.
! * OImode: Machine Modes.
* old pipeline description <1>: Comparison of the two descriptions.
* old pipeline description: Old pipeline description.
! * one_cmplM2 instruction pattern: Standard Names.
! * operand access: Accessors.
! * operand constraints: Constraints.
! * operand substitution: Output Template.
! * operands: Patterns.
! * OPTIMIZATION_OPTIONS: Run-time Target.
! * OPTIMIZE_MODE_SWITCHING: Mode Switching.
! * OPTION_DEFAULT_SPECS: Driver.
! * optional hardware or system features: Run-time Target.
! * options, directory search: Including Patterns.
! * order of register allocation: Allocation Order.
! * ORDER_REGS_FOR_LOCAL_ALLOC: Allocation Order.
! * Ordering of Patterns: Pattern Ordering.
! * ORIGINAL_REGNO: Special Accessors.
! * other register constraints: Simple Constraints.
! * OUTGOING_REG_PARM_STACK_SPACE: Stack Arguments.
! * OUTGOING_REGNO: Register Basics.
! * output of assembler code: File Framework.
! * output statements: Output Statement.
! * output templates: Output Template.
! * OUTPUT_ADDR_CONST_EXTRA: Data Output.
! * output_asm_insn: Output Statement.
! * OUTPUT_QUOTED_STRING: File Framework.
! * OVERLOAD: Functions.
! * OVERRIDE_OPTIONS: Run-time Target.
! * OVL_CURRENT: Functions.
! * OVL_NEXT: Functions.
! * p in constraint: Simple Constraints.
! * PAD_VARARGS_DOWN: Register Arguments.
! * parallel: Side Effects.
! * param_is: GTY Options.
! * parameters, miscellaneous: Misc.
! * parameters, precompiled headers: PCH Target.
! * paramN_is: GTY Options.
! * parity: Arithmetic.
! * parityM2 instruction pattern: Standard Names.
! * PARM_BOUNDARY: Storage Layout.
! * PARM_DECL: Declarations.
* PARSE_LDD_OUTPUT: Macros for Initialization.
! * parsing pass: Passes.
! * passes and files of the compiler: Passes.
! * passing arguments: Interface.
! * PATH_SEPARATOR: Filesystem.
! * PATTERN: Insns.
! * pattern conditions: Patterns.
! * pattern names: Standard Names.
! * Pattern Ordering: Pattern Ordering.
! * patterns: Patterns.
! * pc: Regs and Memory.
! * pc and attributes: Insn Lengths.
! * pc, RTL sharing: Sharing.
! * PC_REGNUM: Register Basics.
! * pc_rtx: Regs and Memory.
! * PCC_BITFIELD_TYPE_MATTERS: Storage Layout.
! * PCC_STATIC_STRUCT_RETURN: Aggregate Return.
! * PDImode: Machine Modes.
! * peephole optimization: Passes.
! * peephole optimization, RTL representation: Side Effects.
* peephole optimizer definitions: Peephole Definitions.
! * per-function data: Per-Function Data.
! * percent sign: Output Template.
! * PIC: PIC.
! * PIC_OFFSET_TABLE_REG_CALL_CLOBBERED: PIC.
! * PIC_OFFSET_TABLE_REGNUM: PIC.
* pipeline hazard recognizer <1>: Comparison of the two descriptions.
* pipeline hazard recognizer <2>: Automaton pipeline description.
* pipeline hazard recognizer: Processor pipeline description.
! * plus: Arithmetic.
! * plus and attributes: Expressions.
* plus, canonicalization of: Insn Canonicalizations.
! * PLUS_EXPR: Expression trees.
! * Pmode: Misc.
! * pointer: Types.
! * POINTER_SIZE: Storage Layout.
! * POINTER_TYPE: Types.
! * POINTERS_EXTEND_UNSIGNED: Storage Layout.
! * popcount: Arithmetic.
! * popcountM2 instruction pattern: Standard Names.
! * portability: Portability.
! * position independent code: PIC.
! * post_dec: Incdec.
! * post_inc: Incdec.
! * post_modify: Incdec.
! * POWI_MAX_MULTS: Misc.
! * powM3 instruction pattern: Standard Names.
! * pragma: Misc.
! * pre_dec: Incdec.
! * PRE_GCC3_DWARF_FRAME_REGISTERS: Frame Registers.
! * pre_inc: Incdec.
! * pre_modify: Incdec.
! * predefined macros: Run-time Target.
! * PREDICATE_CODES: Misc.
* predication: Conditional Execution.
! * PREFERRED_DEBUGGING_TYPE: All Debuggers.
! * PREFERRED_OUTPUT_RELOAD_CLASS: Register Classes.
! * PREFERRED_RELOAD_CLASS: Register Classes.
! * PREFERRED_STACK_BOUNDARY: Storage Layout.
! * prefetch: Side Effects.
! * prefetch instruction pattern: Standard Names.
* presence_set: Automaton pipeline description.
! * prev_active_insn: define_peephole.
! * prev_cc0_setter: Jump Patterns.
! * PREV_INSN: Insns.
! * PRINT_OPERAND: Instruction Output.
! * PRINT_OPERAND_ADDRESS: Instruction Output.
! * PRINT_OPERAND_PUNCT_VALID_P: Instruction Output.
* processor functional units <1>: Comparison of the two descriptions.
* processor functional units <2>: Automaton pipeline description.
* processor functional units: Processor pipeline description.
* processor pipeline description: Processor pipeline description.
! * product: Arithmetic.
! * PROFILE_BEFORE_PROLOGUE: Profiling.
! * PROFILE_HOOK: Profiling.
! * profiling, code generation: Profiling.
! * program counter: Regs and Memory.
! * prologue: Function Entry.
! * prologue instruction pattern: Standard Names.
! * PROMOTE_FOR_CALL_ONLY: Storage Layout.
! * PROMOTE_MODE: Storage Layout.
! * pseudo registers: Regs and Memory.
! * PSImode: Machine Modes.
! * PTRDIFF_TYPE: Type Layout.
! * PTRMEM_CST: Expression trees.
! * PTRMEM_CST_CLASS: Expression trees.
! * PTRMEM_CST_MEMBER: Expression trees.
! * push address instruction: Simple Constraints.
! * PUSH_ARGS: Stack Arguments.
! * PUSH_ARGS_REVERSED: Stack Arguments.
! * push_reload: Addressing Modes.
! * PUSH_ROUNDING: Stack Arguments.
* PUSH_ROUNDING, interaction with PREFERRED_STACK_BOUNDARY: Storage Layout.
! * pushM instruction pattern: Standard Names.
! * PUT_CODE: RTL Objects.
! * PUT_MODE: Machine Modes.
! * PUT_REG_NOTE_KIND: Insns.
! * PUT_SDB_: SDB and DWARF.
! * QCmode: Machine Modes.
! * QFmode: Machine Modes.
! * QImode: Machine Modes.
! * QImode, in insn: Insns.
! * qualified type: Types.
* querying function unit reservations: Automaton pipeline description.
! * question mark: Multi-Alternative.
! * quotient: Arithmetic.
! * r in constraint: Simple Constraints.
! * RANGE_TEST_NON_SHORT_CIRCUIT: Costs.
! * RDIV_EXPR: Expression trees.
! * READONLY_DATA_SECTION: Sections.
! * READONLY_DATA_SECTION_ASM_OP: Sections.
! * REAL_ARITHMETIC: Floating Point.
! * REAL_CST: Expression trees.
* REAL_NM_FILE_NAME: Macros for Initialization.
! * REAL_TYPE: Types.
! * REAL_VALUE_ABS: Floating Point.
! * REAL_VALUE_ATOF: Floating Point.
! * REAL_VALUE_FIX: Floating Point.
! * REAL_VALUE_FROM_INT: Floating Point.
! * REAL_VALUE_ISINF: Floating Point.
! * REAL_VALUE_ISNAN: Floating Point.
! * REAL_VALUE_NEGATE: Floating Point.
! * REAL_VALUE_NEGATIVE: Floating Point.
! * REAL_VALUE_TO_INT: Floating Point.
! * REAL_VALUE_TO_TARGET_DOUBLE: Data Output.
! * REAL_VALUE_TO_TARGET_LONG_DOUBLE: Data Output.
! * REAL_VALUE_TO_TARGET_SINGLE: Data Output.
! * REAL_VALUE_TRUNCATE: Floating Point.
! * REAL_VALUE_TYPE: Floating Point.
! * REAL_VALUE_UNSIGNED_FIX: Floating Point.
! * REAL_VALUES_EQUAL: Floating Point.
! * REAL_VALUES_LESS: Floating Point.
! * REALPART_EXPR: Expression trees.
! * recog_data.operand: Instruction Output.
! * recognizing insns: RTL Template.
! * RECORD_TYPE <1>: Classes.
! * RECORD_TYPE: Types.
! * reference: Types.
! * REFERENCE_TYPE: Types.
! * reg: Regs and Memory.
! * reg and /f: Flags.
! * reg and /i: Flags.
! * reg and /s: Flags.
! * reg and /u: Flags.
! * reg and /v: Flags.
! * reg, RTL sharing: Sharing.
! * REG_ALLOC_ORDER: Allocation Order.
! * REG_BR_PRED: Insns.
! * REG_BR_PROB: Insns.
! * REG_CC_SETTER: Insns.
! * REG_CC_USER: Insns.
! * REG_CLASS_CONTENTS: Register Classes.
! * reg_class_contents: Register Basics.
! * REG_CLASS_FROM_CONSTRAINT: Register Classes.
! * REG_CLASS_FROM_LETTER: Register Classes.
! * REG_CLASS_NAMES: Register Classes.
! * REG_DEAD: Insns.
! * REG_DEP_ANTI: Insns.
! * REG_DEP_OUTPUT: Insns.
! * REG_EQUAL: Insns.
! * REG_EQUIV: Insns.
! * REG_EXPR: Special Accessors.
! * REG_FRAME_RELATED_EXPR: Insns.
! * REG_FUNCTION_VALUE_P: Flags.
! * REG_INC: Insns.
! * REG_LABEL: Insns.
! * reg_label and /v: Flags.
! * REG_LIBCALL: Insns.
! * REG_LOOP_TEST_P: Flags.
! * REG_MODE_OK_FOR_BASE_P: Addressing Modes.
! * reg_names <1>: Instruction Output.
! * reg_names: Register Basics.
! * REG_NO_CONFLICT: Insns.
! * REG_NONNEG: Insns.
! * REG_NOTE_KIND: Insns.
! * REG_NOTES: Insns.
! * REG_OFFSET: Special Accessors.
! * REG_OK_FOR_BASE_P: Addressing Modes.
! * REG_OK_FOR_INDEX_P: Addressing Modes.
! * REG_OK_STRICT: Addressing Modes.
! * REG_PARM_STACK_SPACE: Stack Arguments.
* REG_PARM_STACK_SPACE, and FUNCTION_ARG: Register Arguments.
! * REG_POINTER: Flags.
! * REG_RETVAL: Insns.
! * REG_UNUSED: Insns.
! * REG_USERVAR_P: Flags.
! * register allocation: Passes.
! * register allocation order: Allocation Order.
! * register class definitions: Register Classes.
! * register class preference constraints: Class Preferences.
! * register class preference pass: Passes.
! * register movement: Passes.
* register pairs: Values in Registers.
! * Register Transfer Language (RTL): RTL.
! * register usage: Registers.
! * register use analysis: Passes.
! * register-to-stack conversion: Passes.
! * REGISTER_MOVE_COST: Costs.
! * REGISTER_NAMES: Instruction Output.
! * register_operand: RTL Template.
! * REGISTER_PREFIX: Instruction Output.
! * REGISTER_TARGET_PRAGMAS: Misc.
! * registers arguments: Register Arguments.
! * registers in constraints: Simple Constraints.
* REGMODE_NATURAL_SIZE: Values in Registers.
! * REGNO_MODE_OK_FOR_BASE_P: Register Classes.
! * REGNO_OK_FOR_BASE_P: Register Classes.
! * REGNO_OK_FOR_INDEX_P: Register Classes.
! * REGNO_REG_CLASS: Register Classes.
! * regs_ever_live: Function Entry.
* regular expressions <1>: Automaton pipeline description.
* regular expressions: Processor pipeline description.
! * relative costs: Costs.
! * RELATIVE_PREFIX_NOT_LINKDIR: Driver.
! * reload pass: Regs and Memory.
! * reload_completed: Standard Names.
! * reload_in instruction pattern: Standard Names.
! * reload_in_progress: Standard Names.
! * reload_out instruction pattern: Standard Names.
! * reloading: Passes.
! * remainder: Arithmetic.
! * reorder: GTY Options.
! * reordering, block: Passes.
! * representation of RTL: RTL.
* reservation delays: Processor pipeline description.
! * rest_of_compilation: Passes.
! * rest_of_decl_compilation: Passes.
! * restore_stack_block instruction pattern: Standard Names.
* restore_stack_function instruction pattern: Standard Names.
* restore_stack_nonlocal instruction pattern: Standard Names.
! * RESULT_DECL: Declarations.
! * return: Side Effects.
! * return instruction pattern: Standard Names.
! * return values in registers: Scalar Return.
! * RETURN_ADDR_IN_PREVIOUS_FRAME: Frame Layout.
! * RETURN_ADDR_OFFSET: Exception Handling.
! * RETURN_ADDR_RTX: Frame Layout.
! * RETURN_ADDRESS_POINTER_REGNUM: Frame Registers.
! * RETURN_EXPR: Function Bodies.
! * RETURN_INIT: Function Bodies.
! * RETURN_POPS_ARGS: Stack Arguments.
! * RETURN_STMT: Function Bodies.
! * returning aggregate values: Aggregate Return.
! * returning structures and unions: Interface.
! * REVERSE_CONDEXEC_PREDICATES_P: Condition Code.
! * REVERSE_CONDITION: Condition Code.
! * REVERSIBLE_CC_MODE: Condition Code.
! * right rotate: Arithmetic.
! * right shift: Arithmetic.
* RISC <1>: Automaton pipeline description.
* RISC: Processor pipeline description.
! * roots, marking: GGC Roots.
! * rotate: Arithmetic.
! * rotatert: Arithmetic.
! * rotlM3 instruction pattern: Standard Names.
! * rotrM3 instruction pattern: Standard Names.
! * ROUND_TOWARDS_ZERO: Storage Layout.
! * ROUND_TYPE_ALIGN: Storage Layout.
! * roundM2 instruction pattern: Standard Names.
! * RSHIFT_EXPR: Expression trees.
! * RTL addition: Arithmetic.
! * RTL addition with signed saturation: Arithmetic.
! * RTL addition with unsigned saturation: Arithmetic.
! * RTL classes: RTL Classes.
! * RTL comparison: Arithmetic.
! * RTL comparison operations: Comparisons.
! * RTL constant expression types: Constants.
! * RTL constants: Constants.
! * RTL declarations: RTL Declarations.
! * RTL difference: Arithmetic.
! * RTL expression: RTL Objects.
! * RTL expressions for arithmetic: Arithmetic.
! * RTL format: RTL Classes.
! * RTL format characters: RTL Classes.
! * RTL function-call insns: Calls.
! * RTL generation: Passes.
! * RTL insn template: RTL Template.
! * RTL integers: RTL Objects.
! * RTL memory expressions: Regs and Memory.
! * RTL object types: RTL Objects.
! * RTL postdecrement: Incdec.
! * RTL postincrement: Incdec.
! * RTL predecrement: Incdec.
! * RTL preincrement: Incdec.
! * RTL register expressions: Regs and Memory.
! * RTL representation: RTL.
! * RTL side effect expressions: Side Effects.
! * RTL strings: RTL Objects.
! * RTL structure sharing assumptions: Sharing.
! * RTL subtraction: Arithmetic.
! * RTL sum: Arithmetic.
! * RTL vectors: RTL Objects.
! * RTX (See RTL): RTL Objects.
! * RTX codes, classes of: RTL Classes.
! * RTX_FRAME_RELATED_P: Flags.
! * RTX_INTEGRATED_P: Flags.
! * RTX_UNCHANGING_P: Flags.
! * run-time conventions: Interface.
! * run-time target specification: Run-time Target.
! * s in constraint: Simple Constraints.
! * same_type_p: Types.
! * save_stack_block instruction pattern: Standard Names.
! * save_stack_function instruction pattern: Standard Names.
! * save_stack_nonlocal instruction pattern: Standard Names.
! * scalars, returned as values: Scalar Return.
! * SCHED_GROUP_P: Flags.
! * scheduling, delayed branch: Passes.
! * scheduling, instruction: Passes.
! * SCmode: Machine Modes.
! * sCOND instruction pattern: Standard Names.
! * SCOPE_BEGIN_P: Function Bodies.
! * SCOPE_END_P: Function Bodies.
! * SCOPE_NULLIFIED_P: Function Bodies.
! * SCOPE_STMT: Function Bodies.
! * scratch: Regs and Memory.
! * scratch operands: Regs and Memory.
! * scratch, RTL sharing: Sharing.
! * SDB_ALLOW_FORWARD_REFERENCES: SDB and DWARF.
! * SDB_ALLOW_UNKNOWN_REFERENCES: SDB and DWARF.
! * SDB_DEBUGGING_INFO: SDB and DWARF.
! * SDB_DELIM: SDB and DWARF.
! * SDB_GENERATE_FAKE: SDB and DWARF.
! * search options: Including Patterns.
! * SECONDARY_INPUT_RELOAD_CLASS: Register Classes.
! * SECONDARY_MEMORY_NEEDED: Register Classes.
! * SECONDARY_MEMORY_NEEDED_MODE: Register Classes.
! * SECONDARY_MEMORY_NEEDED_RTX: Register Classes.
! * SECONDARY_OUTPUT_RELOAD_CLASS: Register Classes.
! * SECONDARY_RELOAD_CLASS: Register Classes.
! * SELECT_CC_MODE: Condition Code.
! * sequence: Side Effects.
! * set: Side Effects.
! * set and /f: Flags.
! * SET_ASM_OP: Label Output.
! * set_attr: Tagging Insns.
! * set_attr_alternative: Tagging Insns.
! * SET_DEST: Side Effects.
! * SET_IS_RETURN_P: Flags.
! * SET_LABEL_KIND: Insns.
! * set_optab_libfunc: Library Calls.
! * SET_SRC: Side Effects.
! * SETUP_FRAME_ADDRESSES: Frame Layout.
! * SFmode: Machine Modes.
! * SHARED_SECTION_ASM_OP: Sections.
! * sharing of RTL components: Sharing.
! * shift: Arithmetic.
! * SHIFT_COUNT_TRUNCATED: Misc.
! * SHORT_IMMEDIATES_SIGN_EXTEND: Misc.
! * SHORT_TYPE_SIZE: Type Layout.
! * sibcall_epilogue instruction pattern: Standard Names.
! * sibling call optimization: Passes.
! * SIBLING_CALL_P: Flags.
! * sign_extend: Conversions.
! * sign_extract: Bit-Fields.
* sign_extract, canonicalization of: Insn Canonicalizations.
! * signed division: Arithmetic.
! * signed maximum: Arithmetic.
! * signed minimum: Arithmetic.
! * SImode: Machine Modes.
! * simple constraints: Simple Constraints.
! * simplifications, arithmetic: Passes.
! * sinM2 instruction pattern: Standard Names.
! * SIZE_ASM_OP: Label Output.
! * SIZE_TYPE: Type Layout.
! * skip: GTY Options.
! * SLOW_BYTE_ACCESS: Costs.
! * SLOW_UNALIGNED_ACCESS: Costs.
! * SMALL_ARG_MAX: Host Misc.
! * SMALL_REGISTER_CLASSES: Register Classes.
! * smax: Arithmetic.
! * smaxM3 instruction pattern: Standard Names.
! * smin: Arithmetic.
! * sminM3 instruction pattern: Standard Names.
! * smulM3_highpart instruction pattern: Standard Names.
* soft float library: Soft float library routines.
! * special: GTY Options.
! * SPECIAL_MODE_PREDICATES: Misc.
! * SPECS: Target Fragment.
! * speed of instructions: Costs.
! * splitting instructions: Insn Splitting.
! * sqrt: Arithmetic.
! * sqrtM2 instruction pattern: Standard Names.
! * square root: Arithmetic.
! * ss_minus: Arithmetic.
! * ss_plus: Arithmetic.
! * ss_truncate: Conversions.
! * stack arguments: Stack Arguments.
! * stack frame layout: Frame Layout.
! * STACK_ALIGNMENT_NEEDED: Frame Layout.
! * STACK_BOUNDARY: Storage Layout.
! * STACK_CHECK_BUILTIN: Stack Checking.
! * STACK_CHECK_FIXED_FRAME_SIZE: Stack Checking.
! * STACK_CHECK_MAX_FRAME_SIZE: Stack Checking.
! * STACK_CHECK_MAX_VAR_SIZE: Stack Checking.
! * STACK_CHECK_PROBE_INTERVAL: Stack Checking.
! * STACK_CHECK_PROBE_LOAD: Stack Checking.
! * STACK_CHECK_PROTECT: Stack Checking.
! * STACK_DYNAMIC_OFFSET: Frame Layout.
* STACK_DYNAMIC_OFFSET and virtual registers: Regs and Memory.
! * STACK_GROWS_DOWNWARD: Frame Layout.
! * STACK_PARMS_IN_REG_PARM_AREA: Stack Arguments.
! * STACK_POINTER_OFFSET: Frame Layout.
* STACK_POINTER_OFFSET and virtual registers: Regs and Memory.
! * STACK_POINTER_REGNUM: Frame Registers.
* STACK_POINTER_REGNUM and virtual registers: Regs and Memory.
! * stack_pointer_rtx: Frame Registers.
! * STACK_PUSH_CODE: Frame Layout.
! * STACK_REGS: Stack Registers.
! * STACK_SAVEAREA_MODE: Storage Layout.
! * STACK_SIZE_MODE: Storage Layout.
! * standard pattern names: Standard Names.
! * STANDARD_INCLUDE_COMPONENT: Driver.
! * STANDARD_INCLUDE_DIR: Driver.
! * STANDARD_STARTFILE_PREFIX: Driver.
! * STARTFILE_SPEC: Driver.
! * STARTING_FRAME_OFFSET: Frame Layout.
* STARTING_FRAME_OFFSET and virtual registers: Regs and Memory.
! * statements: Function Bodies.
! * STATIC_CHAIN: Frame Registers.
! * STATIC_CHAIN_INCOMING: Frame Registers.
! * STATIC_CHAIN_INCOMING_REGNUM: Frame Registers.
! * STATIC_CHAIN_REGNUM: Frame Registers.
! * stdarg.h and register arguments: Register Arguments.
! * STDC_0_IN_SYSTEM_HEADERS: Misc.
! * STMT_EXPR: Expression trees.
! * STMT_IS_FULL_EXPR_P: Function Bodies.
! * STMT_LINENO: Function Bodies.
! * storage layout: Storage Layout.
! * STORE_BY_PIECES_P: Costs.
! * STORE_FLAG_VALUE: Misc.
! * store_multiple instruction pattern: Standard Names.
! * strcpy: Storage Layout.
! * strength-reduction: Passes.
! * STRICT_ALIGNMENT: Storage Layout.
! * strict_low_part: RTL Declarations.
! * strict_memory_address_p: Addressing Modes.
! * STRING_CST: Expression trees.
! * STRING_POOL_ADDRESS_P: Flags.
! * strlenM instruction pattern: Standard Names.
! * structure value address: Aggregate Return.
! * STRUCTURE_SIZE_BOUNDARY: Storage Layout.
! * structures, returning: Interface.
! * subM3 instruction pattern: Standard Names.
! * SUBOBJECT: Function Bodies.
! * SUBOBJECT_CLEANUP: Function Bodies.
! * subreg: Regs and Memory.
! * subreg and /s: Flags.
! * subreg and /u: Flags.
! * subreg and /u and /v: Flags.
! * subreg, in strict_low_part: RTL Declarations.
! * subreg, special reload handling: Regs and Memory.
! * SUBREG_BYTE: Regs and Memory.
! * SUBREG_PROMOTED_UNSIGNED_P: Flags.
! * SUBREG_PROMOTED_UNSIGNED_SET: Flags.
! * SUBREG_PROMOTED_VAR_P: Flags.
! * SUBREG_REG: Regs and Memory.
! * SUCCESS_EXIT_CODE: Host Misc.
* SUPPORTS_INIT_PRIORITY: Macros for Initialization.
! * SUPPORTS_ONE_ONLY: Label Output.
! * SUPPORTS_WEAK: Label Output.
! * SWITCH_BODY: Function Bodies.
! * SWITCH_COND: Function Bodies.
! * SWITCH_CURTAILS_COMPILATION: Driver.
! * SWITCH_STMT: Function Bodies.
! * SWITCH_TAKES_ARG: Driver.
! * SWITCHES_NEED_SPACES: Driver.
! * SYMBOL_FLAG_EXTERNAL: Special Accessors.
! * SYMBOL_FLAG_FUNCTION: Special Accessors.
! * SYMBOL_FLAG_LOCAL: Special Accessors.
! * SYMBOL_FLAG_SMALL: Special Accessors.
! * SYMBOL_FLAG_TLS_SHIFT: Special Accessors.
! * symbol_ref: Constants.
! * symbol_ref and /f: Flags.
! * symbol_ref and /i: Flags.
! * symbol_ref and /u: Flags.
! * symbol_ref and /v: Flags.
! * symbol_ref, RTL sharing: Sharing.
! * SYMBOL_REF_DECL: Special Accessors.
! * SYMBOL_REF_EXTERNAL_P: Special Accessors.
! * SYMBOL_REF_FLAG: Flags.
! * SYMBOL_REF_FLAG, in TARGET_ENCODE_SECTION_INFO: Sections.
! * SYMBOL_REF_FLAGS: Special Accessors.
! * SYMBOL_REF_FUNCTION_P: Special Accessors.
! * SYMBOL_REF_LOCAL_P: Special Accessors.
! * SYMBOL_REF_SMALL_P: Special Accessors.
! * SYMBOL_REF_TLS_MODEL: Special Accessors.
! * SYMBOL_REF_USED: Flags.
! * SYMBOL_REF_WEAK: Flags.
! * symbolic label: Sharing.
! * SYSROOT_HEADERS_SUFFIX_SPEC: Driver.
! * SYSROOT_SUFFIX_SPEC: Driver.
! * SYSTEM_INCLUDE_DIR: Driver.
! * t-TARGET: Target Fragment.
! * tablejump instruction pattern: Standard Names.
! * tag: GTY Options.
! * tagging insns: Tagging Insns.
! * tail calls: Tail Calls.
! * tail recursion optimization: Passes.
! * target attributes: Target Attributes.
! * target description macros: Target Macros.
! * target functions: Target Structure.
! * target hooks: Target Structure.
! * target makefile fragment: Target Fragment.
! * target specifications: Run-time Target.
! * target-parameter-dependent code: Passes.
! * TARGET_: Run-time Target.
! * TARGET_ADDRESS_COST: Costs.
! * TARGET_ASM_ALIGNED_DI_OP: Data Output.
! * TARGET_ASM_ALIGNED_HI_OP: Data Output.
! * TARGET_ASM_ALIGNED_SI_OP: Data Output.
! * TARGET_ASM_ALIGNED_TI_OP: Data Output.
! * TARGET_ASM_ASSEMBLE_VISIBILITY: Label Output.
! * TARGET_ASM_BYTE_OP: Data Output.
! * TARGET_ASM_CAN_OUTPUT_MI_THUNK: Function Entry.
! * TARGET_ASM_CLOSE_PAREN: Data Output.
* TARGET_ASM_CONSTRUCTOR: Macros for Initialization.
* TARGET_ASM_DESTRUCTOR: Macros for Initialization.
* TARGET_ASM_EH_FRAME_SECTION: Exception Region Output.
* TARGET_ASM_EXCEPTION_SECTION: Exception Region Output.
! * TARGET_ASM_EXTERNAL_LIBCALL: Label Output.
! * TARGET_ASM_FILE_END: File Framework.
! * TARGET_ASM_FILE_START: File Framework.
! * TARGET_ASM_FILE_START_APP_OFF: File Framework.
! * TARGET_ASM_FILE_START_FILE_DIRECTIVE: File Framework.
! * TARGET_ASM_FUNCTION_BEGIN_EPILOGUE: Function Entry.
! * TARGET_ASM_FUNCTION_END_PROLOGUE: Function Entry.
! * TARGET_ASM_FUNCTION_EPILOGUE: Function Entry.
! * TARGET_ASM_FUNCTION_EPILOGUE and trampolines: Trampolines.
! * TARGET_ASM_FUNCTION_PROLOGUE: Function Entry.
! * TARGET_ASM_FUNCTION_PROLOGUE and trampolines: Trampolines.
! * TARGET_ASM_GLOBALIZE_LABEL: Label Output.
! * TARGET_ASM_INTEGER: Data Output.
! * TARGET_ASM_INTERNAL_LABEL: Label Output.
! * TARGET_ASM_NAMED_SECTION: File Framework.
! * TARGET_ASM_OPEN_PAREN: Data Output.
! * TARGET_ASM_OUTPUT_MI_THUNK: Function Entry.
! * TARGET_ASM_SELECT_RTX_SECTION: Sections.
! * TARGET_ASM_SELECT_SECTION: Sections.
! * TARGET_ASM_UNALIGNED_DI_OP: Data Output.
! * TARGET_ASM_UNALIGNED_HI_OP: Data Output.
! * TARGET_ASM_UNALIGNED_SI_OP: Data Output.
! * TARGET_ASM_UNALIGNED_TI_OP: Data Output.
! * TARGET_ASM_UNIQUE_SECTION: Sections.
! * TARGET_ATTRIBUTE_TABLE: Target Attributes.
! * TARGET_BELL: Escape Sequences.
! * TARGET_BINDS_LOCAL_P: Sections.
! * TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED: Misc.
! * TARGET_BRANCH_TARGET_REGISTER_CLASS: Misc.
! * TARGET_C99_FUNCTIONS: Library Calls.
! * TARGET_CANNOT_MODIFY_JUMPS_P: Misc.
! * TARGET_COMP_TYPE_ATTRIBUTES: Target Attributes.
! * TARGET_CPU_CPP_BUILTINS: Run-time Target.
! * TARGET_CR: Escape Sequences.
! * TARGET_DEFERRED_OUTPUT_DEFS: Label Output.
! * TARGET_DLLIMPORT_DECL_ATTRIBUTES: Target Attributes.
* TARGET_DWARF_REGISTER_SPAN: Exception Region Output.
! * TARGET_EDOM: Library Calls.
! * TARGET_ENCODE_SECTION_INFO: Sections.
* TARGET_ENCODE_SECTION_INFO and address validation: Addressing Modes.
! * TARGET_ENCODE_SECTION_INFO usage: Instruction Output.
! * TARGET_ESC: Escape Sequences.
! * TARGET_EXECUTABLE_SUFFIX: Misc.
! * TARGET_EXPAND_BUILTIN: Misc.
! * TARGET_EXPAND_BUILTIN_SAVEREGS: Varargs.
! * TARGET_FF: Escape Sequences.
! * TARGET_FIXED_CONDITION_CODE_REGS: Condition Code.
! * target_flags: Run-time Target.
! * TARGET_FLOAT_FORMAT: Storage Layout.
! * TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL: Library Calls.
! * TARGET_FLT_EVAL_METHOD: Type Layout.
! * TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P: Target Attributes.
! * TARGET_FUNCTION_OK_FOR_SIBCALL: Tail Calls.
! * TARGET_HAS_F_SETLKW: Misc.
* TARGET_HAVE_CTORS_DTORS: Macros for Initialization.
! * TARGET_HAVE_NAMED_SECTIONS: File Framework.
! * TARGET_IN_SMALL_DATA_P: Sections.
! * TARGET_INIT_BUILTINS: Misc.
! * TARGET_INIT_LIBFUNCS: Library Calls.
! * TARGET_INSERT_ATTRIBUTES: Target Attributes.
! * TARGET_MACHINE_DEPENDENT_REORG: Misc.
! * TARGET_MANGLE_FUNDAMENTAL_TYPE: Storage Layout.
! * TARGET_MEM_FUNCTIONS: Library Calls.
! * TARGET_MERGE_DECL_ATTRIBUTES: Target Attributes.
! * TARGET_MERGE_TYPE_ATTRIBUTES: Target Attributes.
! * TARGET_MS_BITFIELD_LAYOUT_P: Storage Layout.
! * TARGET_NEWLINE: Escape Sequences.
! * TARGET_OBJECT_SUFFIX: Misc.
! * TARGET_OBJFMT_CPP_BUILTINS: Run-time Target.
! * TARGET_OPTION_TRANSLATE_TABLE: Driver.
! * TARGET_OPTIONS: Run-time Target.
! * TARGET_OS_CPP_BUILTINS: Run-time Target.
! * TARGET_PRETEND_OUTGOING_VARARGS_NAMED: Varargs.
! * TARGET_PROMOTE_FUNCTION_ARGS: Storage Layout.
! * TARGET_PROMOTE_FUNCTION_RETURN: Storage Layout.
! * TARGET_PROMOTE_PROTOTYPES: Stack Arguments.
! * TARGET_PTRMEMFUNC_VBIT_LOCATION: Type Layout.
! * TARGET_RETURN_IN_MEMORY: Aggregate Return.
! * TARGET_RETURN_IN_MSB: Scalar Return.
! * TARGET_RTX_COSTS: Costs.
! * TARGET_SCHED_ADJUST_COST: Scheduling.
! * TARGET_SCHED_ADJUST_PRIORITY: Scheduling.
! * TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK: Scheduling.
! * TARGET_SCHED_DFA_BUBBLE: Scheduling.
! * TARGET_SCHED_DFA_NEW_CYCLE: Scheduling.
! * TARGET_SCHED_DFA_POST_CYCLE_INSN: Scheduling.
! * TARGET_SCHED_DFA_PRE_CYCLE_INSN: Scheduling.
! * TARGET_SCHED_FINISH: Scheduling.
* TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD: Scheduling.
* TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD: Scheduling.
! * TARGET_SCHED_INIT: Scheduling.
! * TARGET_SCHED_INIT_DFA_BUBBLES: Scheduling.
! * TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN: Scheduling.
! * TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN: Scheduling.
! * TARGET_SCHED_ISSUE_RATE: Scheduling.
! * TARGET_SCHED_REORDER: Scheduling.
! * TARGET_SCHED_REORDER2: Scheduling.
! * TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE: Scheduling.
! * TARGET_SCHED_VARIABLE_ISSUE: Scheduling.
! * TARGET_SECTION_TYPE_FLAGS: File Framework.
! * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES: Target Attributes.
! * TARGET_SETUP_INCOMING_VARARGS: Varargs.
! * TARGET_SPLIT_COMPLEX_ARG: Register Arguments.
! * TARGET_STRICT_ARGUMENT_NAMING: Varargs.
! * TARGET_STRUCT_VALUE_RTX: Aggregate Return.
! * TARGET_SWITCHES: Run-time Target.
! * TARGET_TAB: Escape Sequences.
! * TARGET_VECTOR_OPAQUE_P: Storage Layout.
! * TARGET_VERSION: Run-time Target.
! * TARGET_VT: Escape Sequences.
! * TARGET_VTABLE_DATA_ENTRY_DISTANCE: Type Layout.
! * TARGET_VTABLE_ENTRY_ALIGN: Type Layout.
! * TARGET_VTABLE_USES_DESCRIPTORS: Type Layout.
! * targetm: Target Structure.
! * targets, makefile: Makefile.
! * TCmode: Machine Modes.
! * TEMPLATE_DECL: Declarations.
! * termination routines: Initialization.
! * text_section: Sections.
! * TEXT_SECTION_ASM_OP: Sections.
! * TFmode: Machine Modes.
! * THEN_CLAUSE: Function Bodies.
! * THREAD_MODEL_SPEC: Driver.
! * THROW_EXPR: Expression trees.
! * THUNK_DECL: Declarations.
! * THUNK_DELTA: Declarations.
! * TImode: Machine Modes.
! * TImode, in insn: Insns.
! * tm.h macros: Target Macros.
! * top level of compiler: Passes.
! * TQFmode: Machine Modes.
! * TRADITIONAL_PIPELINE_INTERFACE: Scheduling.
! * TRAMPOLINE_ADJUST_ADDRESS: Trampolines.
! * TRAMPOLINE_ALIGNMENT: Trampolines.
! * TRAMPOLINE_SECTION: Trampolines.
! * TRAMPOLINE_SIZE: Trampolines.
! * TRAMPOLINE_TEMPLATE: Trampolines.
! * trampolines for nested functions: Trampolines.
! * TRANSFER_FROM_TRAMPOLINE: Trampolines.
! * trap instruction pattern: Standard Names.
* tree <1>: Macros and Functions.
! * tree: Tree overview.
! * Tree optimization: Passes.
! * TREE_CODE: Tree overview.
! * tree_int_cst_equal: Expression trees.
! * TREE_INT_CST_HIGH: Expression trees.
! * TREE_INT_CST_LOW: Expression trees.
! * tree_int_cst_lt: Expression trees.
! * TREE_LIST: Containers.
! * TREE_OPERAND: Expression trees.
! * TREE_PUBLIC: Function Basics.
! * TREE_PURPOSE: Containers.
! * TREE_STRING_LENGTH: Expression trees.
! * TREE_STRING_POINTER: Expression trees.
! * TREE_TYPE <1>: Expression trees.
! * TREE_TYPE <2>: Function Basics.
! * TREE_TYPE <3>: Declarations.
! * TREE_TYPE: Types.
! * TREE_VALUE: Containers.
! * TREE_VEC: Containers.
! * TREE_VEC_ELT: Containers.
! * TREE_VEC_LENGTH: Containers.
! * TREE_VIA_PRIVATE: Classes.
! * TREE_VIA_PROTECTED: Classes.
! * TREE_VIA_PUBLIC: Classes.
! * Trees: Trees.
! * TRULY_NOOP_TRUNCATION: Misc.
! * TRUNC_DIV_EXPR: Expression trees.
! * TRUNC_MOD_EXPR: Expression trees.
! * truncate: Conversions.
! * truncM2 instruction pattern: Standard Names.
! * truncMN2 instruction pattern: Standard Names.
! * TRUTH_AND_EXPR: Expression trees.
! * TRUTH_ANDIF_EXPR: Expression trees.
! * TRUTH_NOT_EXPR: Expression trees.
! * TRUTH_OR_EXPR: Expression trees.
! * TRUTH_ORIF_EXPR: Expression trees.
! * TRUTH_XOR_EXPR: Expression trees.
! * TRY_BLOCK: Function Bodies.
! * TRY_HANDLERS: Function Bodies.
! * TRY_STMTS: Function Bodies.
! * tstM instruction pattern: Standard Names.
! * type: Types.
! * type declaration: Declarations.
! * TYPE_ALIGN: Types.
! * TYPE_ARG_TYPES: Types.
! * TYPE_ASM_OP: Label Output.
! * TYPE_ATTRIBUTES: Attributes.
! * TYPE_BINFO: Classes.
! * TYPE_BUILT_IN: Types.
! * TYPE_CONTEXT: Types.
! * TYPE_DECL: Declarations.
! * TYPE_FIELDS <1>: Classes.
! * TYPE_FIELDS: Types.
! * TYPE_HAS_ARRAY_NEW_OPERATOR: Classes.
! * TYPE_HAS_DEFAULT_CONSTRUCTOR: Classes.
! * TYPE_HAS_MUTABLE_P: Classes.
! * TYPE_HAS_NEW_OPERATOR: Classes.
! * TYPE_MAIN_VARIANT: Types.
! * TYPE_MAX_VALUE: Types.
! * TYPE_METHOD_BASETYPE: Types.
! * TYPE_METHODS: Classes.
! * TYPE_MIN_VALUE: Types.
! * TYPE_NAME: Types.
! * TYPE_NOTHROW_P: Function Basics.
! * TYPE_OFFSET_BASETYPE: Types.
! * TYPE_OPERAND_FMT: Label Output.
! * TYPE_OVERLOADS_ARRAY_REF: Classes.
! * TYPE_OVERLOADS_ARROW: Classes.
! * TYPE_OVERLOADS_CALL_EXPR: Classes.
! * TYPE_POLYMORPHIC_P: Classes.
! * TYPE_PRECISION: Types.
! * TYPE_PTR_P: Types.
! * TYPE_PTRFN_P: Types.
! * TYPE_PTRMEM_P: Types.
! * TYPE_PTROB_P: Types.
! * TYPE_PTROBV_P: Types.
! * TYPE_QUAL_CONST: Types.
! * TYPE_QUAL_RESTRICT: Types.
! * TYPE_QUAL_VOLATILE: Types.
! * TYPE_RAISES_EXCEPTIONS: Function Basics.
! * TYPE_SIZE: Types.
! * TYPE_UNQUALIFIED: Types.
! * TYPE_VFIELD: Classes.
! * TYPENAME_TYPE: Types.
! * TYPENAME_TYPE_FULLNAME: Types.
! * TYPEOF_TYPE: Types.
! * udiv: Arithmetic.
! * udivM3 instruction pattern: Standard Names.
! * udivmodM4 instruction pattern: Standard Names.
! * UINTMAX_TYPE: Type Layout.
! * umax: Arithmetic.
! * umaxM3 instruction pattern: Standard Names.
! * umin: Arithmetic.
! * uminM3 instruction pattern: Standard Names.
! * umod: Arithmetic.
! * umodM3 instruction pattern: Standard Names.
! * umulhisi3 instruction pattern: Standard Names.
! * umulM3_highpart instruction pattern: Standard Names.
! * umulqihi3 instruction pattern: Standard Names.
! * umulsidi3 instruction pattern: Standard Names.
! * unchanging: Flags.
! * unchanging, in call_insn: Flags.
! * unchanging, in jump_insn, call_insn and insn: Flags.
! * unchanging, in reg and mem: Flags.
! * unchanging, in subreg: Flags.
! * unchanging, in symbol_ref: Flags.
! * UNION_TYPE <1>: Classes.
! * UNION_TYPE: Types.
! * unions, returning: Interface.
! * UNITS_PER_WORD: Storage Layout.
! * UNKNOWN_TYPE: Types.
! * UNLIKELY_EXECUTED_TEXT_SECTION_NAME: Sections.
! * unreachable code: Passes.
! * unshare_all_rtl: Sharing.
! * unsigned division: Arithmetic.
! * unsigned greater than: Comparisons.
! * unsigned less than: Comparisons.
! * unsigned minimum and maximum: Arithmetic.
! * unsigned_fix: Conversions.
! * unsigned_float: Conversions.
! * unspec: Side Effects.
! * unspec_volatile: Side Effects.
! * untyped_call instruction pattern: Standard Names.
! * untyped_return instruction pattern: Standard Names.
! * UPDATE_PATH_HOST_CANONICALIZE (PATH): Filesystem.
* US Software GOFAST, floating point emulation library: Library Calls.
! * us_minus: Arithmetic.
! * us_plus: Arithmetic.
! * US_SOFTWARE_GOFAST: Library Calls.
! * us_truncate: Conversions.
! * use: Side Effects.
! * USE_C_ALLOCA: Host Misc.
! * USE_LD_AS_NEEDED: Driver.
! * USE_LOAD_POST_DECREMENT: Costs.
! * USE_LOAD_POST_INCREMENT: Costs.
! * USE_LOAD_PRE_DECREMENT: Costs.
! * USE_LOAD_PRE_INCREMENT: Costs.
! * use_param: GTY Options.
! * use_paramN: GTY Options.
! * use_params: GTY Options.
! * USE_STORE_POST_DECREMENT: Costs.
! * USE_STORE_POST_INCREMENT: Costs.
! * USE_STORE_PRE_DECREMENT: Costs.
! * USE_STORE_PRE_INCREMENT: Costs.
! * used: Flags.
! * used, in symbol_ref: Flags.
! * USER_LABEL_PREFIX: Instruction Output.
! * USING_DECL: Declarations.
! * USING_STMT: Function Bodies.
! * V in constraint: Simple Constraints.
! * VA_ARG_EXPR: Expression trees.
! * values, returned by functions: Scalar Return.
! * VAR_DECL <1>: Expression trees.
! * VAR_DECL: Declarations.
! * varargs implementation: Varargs.
! * variable: Declarations.
! * VAX_FLOAT_FORMAT: Storage Layout.
! * vec_concat: Vector Operations.
! * vec_duplicate: Vector Operations.
! * vec_merge: Vector Operations.
! * vec_select: Vector Operations.
! * vector: Containers.
! * vector operations: Vector Operations.
! * VECTOR_CST: Expression trees.
! * VECTOR_MODE_SUPPORTED_P: Storage Layout.
! * VIRTUAL_INCOMING_ARGS_REGNUM: Regs and Memory.
! * VIRTUAL_OUTGOING_ARGS_REGNUM: Regs and Memory.
! * VIRTUAL_STACK_DYNAMIC_REGNUM: Regs and Memory.
! * VIRTUAL_STACK_VARS_REGNUM: Regs and Memory.
* VLIW <1>: Automaton pipeline description.
* VLIW: Processor pipeline description.
! * VMS: Filesystem.
! * VMS_DEBUGGING_INFO: VMS Debug.
! * VOID_TYPE: Types.
! * VOIDmode: Machine Modes.
! * volatil: Flags.
* volatil, in insn, call_insn, jump_insn, code_label, barrier, and note: Flags.
! * volatil, in label_ref and reg_label: Flags.
! * volatil, in mem, asm_operands, and asm_input: Flags.
! * volatil, in reg: Flags.
! * volatil, in subreg: Flags.
! * volatil, in symbol_ref: Flags.
! * volatile memory references: Flags.
! * voting between constraint alternatives: Class Preferences.
! * VTABLE_REF: Expression trees.
! * WCHAR_TYPE: Type Layout.
! * WCHAR_TYPE_SIZE: Type Layout.
! * web construction: Passes.
! * which_alternative: Output Statement.
! * WHILE_BODY: Function Bodies.
! * WHILE_COND: Function Bodies.
! * WHILE_STMT: Function Bodies.
! * WIDEST_HARDWARE_FP_SIZE: Type Layout.
! * WINT_TYPE: Type Layout.
! * word_mode: Machine Modes.
! * WORD_REGISTER_OPERATIONS: Misc.
! * WORD_SWITCH_TAKES_ARG: Driver.
! * WORDS_BIG_ENDIAN: Storage Layout.
! * WORDS_BIG_ENDIAN, effect on subreg: Regs and Memory.
! * X in constraint: Simple Constraints.
! * x-HOST: Host Fragment.
! * XCmode: Machine Modes.
! * XCOFF_DEBUGGING_INFO: DBX Options.
! * XEXP: Accessors.
! * XFmode: Machine Modes.
! * XINT: Accessors.
! * xm-MACHINE.h <1>: Host Misc.
! * xm-MACHINE.h: Filesystem.
! * xor: Arithmetic.
* xor, canonicalization of: Insn Canonicalizations.
! * xorM3 instruction pattern: Standard Names.
! * XSTR: Accessors.
! * XVEC: Accessors.
! * XVECEXP: Accessors.
! * XVECLEN: Accessors.
! * XWINT: Accessors.
! * zero_extend: Conversions.
! * zero_extendMN2 instruction pattern: Standard Names.
! * zero_extract: Bit-Fields.
* zero_extract, canonicalization of: Insn Canonicalizations.
Tag Table:
! Node: Top1206
! Node: Contributing4687
! Node: Portability5429
! Node: Interface7219
! Node: Libgcc10637
! Node: Integer library routines12391
! Node: Soft float library routines18973
! Node: Exception handling routines28229
! Node: Miscellaneous routines29319
! Node: Languages29681
! Node: Source Tree31231
! Node: Configure Terms31848
! Node: Top Level34814
! Node: gcc Directory36936
! Node: Subdirectories37900
! Node: Configuration40200
! Node: Config Fragments40911
! Node: System Config42242
! Node: Configuration Files43173
! Node: Build45848
! Node: Makefile46251
! Node: Library Files50420
! Node: Headers50973
! Node: Documentation52951
! Node: Texinfo Manuals53744
! Node: Man Page Generation55865
! Node: Miscellaneous Docs57773
! Node: Front End59117
! Node: Front End Directory62877
! Node: Front End Config68203
! Node: Back End70936
! Node: Testsuites74263
! Node: Test Idioms74992
! Node: Ada Tests78560
! Node: C Tests79840
! Node: libgcj Tests84187
! Node: gcov Testing85610
! Node: profopt Testing88598
! Node: compat Testing90037
! Node: Passes93379
! Node: Trees116944
! Node: Deficiencies119673
! Node: Tree overview119906
! Node: Macros and Functions124040
! Node: Identifiers124177
! Node: Containers125696
! Node: Types126843
! Node: Scopes139458
! Node: Namespaces140217
! Node: Classes143023
! Node: Declarations147623
! Node: Functions153680
! Node: Function Basics156085
! Node: Function Bodies162834
! Node: Attributes176722
! Node: Expression trees177958
! Node: RTL203846
! Node: RTL Objects205948
! Node: RTL Classes209836
! Node: Accessors214457
! Node: Special Accessors216852
! Node: Flags220715
! Node: Machine Modes237029
! Node: Constants245762
! Node: Regs and Memory251725
! Node: Arithmetic264773
! Node: Comparisons272472
! Node: Bit-Fields276600
! Node: Vector Operations278021
! Node: Conversions279637
! Node: RTL Declarations282947
! Node: Side Effects283759
! Node: Incdec299621
! Node: Assembler302958
! Node: Insns304483
! Node: Calls329715
! Node: Sharing332312
! Node: Reading RTL335416
! Node: Machine Desc336402
! Node: Overview338681
! Node: Patterns340723
! Node: Example344156
! Node: RTL Template345590
! Node: Output Template358057
! Node: Output Statement362042
! Node: Constraints366016
! Node: Simple Constraints366950
! Node: Multi-Alternative379333
! Node: Class Preferences382171
! Node: Modifiers383054
! Node: Machine Constraints386963
! Node: Standard Names409158
! Ref: prologue instruction pattern453741
! Ref: epilogue instruction pattern454234
! Node: Pattern Ordering456684
! Node: Dependent Patterns457914
! Node: Jump Patterns460732
! Node: Looping Patterns466482
! Node: Insn Canonicalizations471088
! Node: Expander Definitions474906
! Node: Insn Splitting483041
! Node: Including Patterns492675
! Node: Peephole Definitions494449
! Node: define_peephole495699
! Node: define_peephole2502048
! Node: Insn Attributes505112
! Node: Defining Attributes506209
! Node: Expressions508225
! Node: Tagging Insns514817
! Node: Attr Example519182
! Node: Insn Lengths521561
! Node: Constant Attributes524620
! Node: Delay Slots525783
! Node: Processor pipeline description529013
! Node: Old pipeline description532957
! Node: Automaton pipeline description538675
! Node: Comparison of the two descriptions553614
! Node: Conditional Execution555595
! Node: Constant Definitions558454
! Node: Target Macros560035
! Node: Target Structure562865
! Node: Driver564156
! Node: Run-time Target585770
! Node: Per-Function Data596352
! Node: Storage Layout599113
! Node: Type Layout623431
! Node: Escape Sequences634441
! Node: Registers635311
! Node: Register Basics636234
! Node: Allocation Order642097
! Node: Values in Registers643529
! Node: Leaf Functions648836
! Node: Stack Registers651641
! Node: Register Classes652745
! Node: Stack and Calling678077
! Node: Frame Layout678573
! Node: Exception Handling686539
! Node: Stack Checking692433
! Node: Frame Registers696046
! Node: Elimination702625
! Node: Stack Arguments706638
! Node: Register Arguments714582
! Node: Scalar Return727229
! Node: Aggregate Return731983
! Node: Caller Saves735306
! Node: Function Entry736467
! Node: Profiling749280
! Node: Tail Calls750919
! Node: Varargs751734
! Node: Trampolines759647
! Node: Library Calls766417
! Node: Addressing Modes770515
! Node: Condition Code781490
! Node: Costs789606
! Node: Scheduling801325
! Node: Sections817144
! Node: PIC827632
! Node: Assembler Format830465
! Node: File Framework831535
! Node: Data Output837579
! Node: Uninitialized Data844973
! Node: Label Output850481
! Node: Initialization870008
! Node: Macros for Initialization875989
! Node: Instruction Output882253
! Node: Dispatch Tables891221
! Node: Exception Region Output893840
! Node: Alignment Output898315
! Node: Debugging Info902432
! Node: All Debuggers903093
! Node: DBX Options905931
! Node: DBX Hooks911213
! Node: File Names and DBX914809
! Node: SDB and DWARF916117
! Node: VMS Debug919809
! Node: Floating Point920365
! Node: Mode Switching925168
! Node: Target Attributes929076
! Node: MIPS Coprocessors932936
! Node: PCH Target934513
! Node: Misc935757
! Node: Host Config970054
! Node: Host Common971113
! Node: Filesystem973279
! Node: Host Misc976827
! Node: Fragments979014
! Node: Target Fragment980209
! Node: Host Fragment985660
! Node: Collect2987096
! Node: Header Dirs989650
! Node: Type Information991077
! Node: GTY Options992132
! Node: GGC Roots1000581
! Node: Files1001282
! Node: Funding1004128
! Node: GNU Project1006639
! Node: Copying1007293
! Node: GNU Free Documentation License1026504
! Node: Contributors1048916
! Node: Option Index1076452
! Node: Index1078025
End Tag Table
--- 24412,27327 ----
Index
*****
+ [index ]
* Menu:
! * ! in constraint: Multi-Alternative. (line 47)
! * # in constraint: Modifiers. (line 64)
! * # in template: Output Template. (line 67)
! * #pragma: Misc. (line 331)
! * % in constraint: Modifiers. (line 45)
! * % in GTY option: GTY Options. (line 24)
! * % in template: Output Template. (line 6)
! * & in constraint: Modifiers. (line 25)
! * (nil): RTL Objects. (line 73)
! * * <1>: Host Common. (line 17)
! * *: PCH Target. (line 7)
! * * in constraint: Modifiers. (line 69)
! * * in template: Output Statement. (line 29)
! * + in constraint: Modifiers. (line 12)
! * /c in RTL dump: Flags. (line 241)
! * /f in RTL dump: Flags. (line 246)
! * /i in RTL dump: Flags. (line 297)
! * /j in RTL dump: Flags. (line 310)
! * /s in RTL dump: Flags. (line 261)
! * /u in RTL dump: Flags. (line 320)
! * /v in RTL dump: Flags. (line 352)
! * 0 in constraint: Simple Constraints. (line 118)
! * < in constraint: Simple Constraints. (line 46)
! * = in constraint: Modifiers. (line 8)
! * > in constraint: Simple Constraints. (line 50)
! * ? in constraint: Multi-Alternative. (line 41)
! * \: Output Template. (line 47)
* __absvdi2: Integer library routines.
+ (line 107)
* __absvsi2: Integer library routines.
+ (line 106)
* __adddf3: Soft float library routines.
+ (line 23)
* __addsf3: Soft float library routines.
+ (line 22)
* __addtf3: Soft float library routines.
+ (line 25)
* __addvdi3: Integer library routines.
+ (line 111)
* __addvsi3: Integer library routines.
+ (line 110)
* __addxf3: Soft float library routines.
+ (line 27)
* __ashldi3: Integer library routines.
+ (line 14)
* __ashlsi3: Integer library routines.
+ (line 13)
* __ashlti3: Integer library routines.
+ (line 15)
* __ashrdi3: Integer library routines.
+ (line 19)
* __ashrsi3: Integer library routines.
+ (line 18)
* __ashrti3: Integer library routines.
! (line 20)
! * __builtin_args_info: Varargs. (line 42)
! * __builtin_classify_type: Varargs. (line 76)
! * __builtin_next_arg: Varargs. (line 66)
! * __builtin_saveregs: Varargs. (line 24)
* __clear_cache: Miscellaneous routines.
+ (line 10)
* __clzdi2: Integer library routines.
+ (line 131)
* __clzsi2: Integer library routines.
+ (line 130)
* __clzti2: Integer library routines.
+ (line 132)
* __cmpdf2: Soft float library routines.
+ (line 145)
* __cmpdi2: Integer library routines.
+ (line 87)
* __cmpsf2: Soft float library routines.
+ (line 144)
* __cmptf2: Soft float library routines.
+ (line 146)
* __cmpti2: Integer library routines.
! (line 88)
! * __CTOR_LIST__: Initialization. (line 25)
* __ctzdi2: Integer library routines.
+ (line 138)
* __ctzsi2: Integer library routines.
+ (line 137)
* __ctzti2: Integer library routines.
+ (line 139)
* __divdf3: Soft float library routines.
+ (line 48)
* __divdi3: Integer library routines.
+ (line 25)
* __divsf3: Soft float library routines.
+ (line 47)
* __divsi3: Integer library routines.
+ (line 24)
* __divtf3: Soft float library routines.
+ (line 50)
* __divti3: Integer library routines.
+ (line 26)
* __divxf3: Soft float library routines.
! (line 52)
! * __DTOR_LIST__: Initialization. (line 25)
* __eqdf2: Soft float library routines.
+ (line 175)
* __eqsf2: Soft float library routines.
+ (line 174)
* __eqtf2: Soft float library routines.
+ (line 176)
* __extenddftf2: Soft float library routines.
+ (line 68)
* __extenddfxf2: Soft float library routines.
+ (line 69)
* __extendsfdf2: Soft float library routines.
+ (line 65)
* __extendsftf2: Soft float library routines.
+ (line 66)
* __extendsfxf2: Soft float library routines.
+ (line 67)
* __ffsdi2: Integer library routines.
+ (line 144)
* __ffsti2: Integer library routines.
+ (line 145)
* __fixdfdi: Soft float library routines.
+ (line 88)
* __fixdfsi: Soft float library routines.
+ (line 81)
* __fixdfti: Soft float library routines.
+ (line 94)
* __fixsfdi: Soft float library routines.
+ (line 87)
* __fixsfsi: Soft float library routines.
+ (line 80)
* __fixsfti: Soft float library routines.
+ (line 93)
* __fixtfdi: Soft float library routines.
+ (line 89)
* __fixtfsi: Soft float library routines.
+ (line 82)
* __fixtfti: Soft float library routines.
+ (line 95)
* __fixunsdfdi: Soft float library routines.
+ (line 108)
* __fixunsdfsi: Soft float library routines.
+ (line 101)
* __fixunsdfti: Soft float library routines.
+ (line 115)
* __fixunssfdi: Soft float library routines.
+ (line 107)
* __fixunssfsi: Soft float library routines.
+ (line 100)
* __fixunssfti: Soft float library routines.
+ (line 114)
* __fixunstfdi: Soft float library routines.
+ (line 109)
* __fixunstfsi: Soft float library routines.
+ (line 102)
* __fixunstfti: Soft float library routines.
+ (line 116)
* __fixunsxfdi: Soft float library routines.
+ (line 110)
* __fixunsxfsi: Soft float library routines.
+ (line 103)
* __fixunsxfti: Soft float library routines.
+ (line 117)
* __fixxfdi: Soft float library routines.
+ (line 90)
* __fixxfsi: Soft float library routines.
+ (line 83)
* __fixxfti: Soft float library routines.
+ (line 96)
* __floatdidf: Soft float library routines.
+ (line 128)
* __floatdisf: Soft float library routines.
+ (line 127)
* __floatditf: Soft float library routines.
+ (line 129)
* __floatdixf: Soft float library routines.
+ (line 130)
* __floatsidf: Soft float library routines.
+ (line 122)
* __floatsisf: Soft float library routines.
+ (line 121)
* __floatsitf: Soft float library routines.
+ (line 123)
* __floatsixf: Soft float library routines.
+ (line 124)
* __floattidf: Soft float library routines.
+ (line 134)
* __floattisf: Soft float library routines.
+ (line 133)
* __floattitf: Soft float library routines.
+ (line 135)
* __floattixf: Soft float library routines.
+ (line 136)
* __gedf2: Soft float library routines.
+ (line 187)
* __gesf2: Soft float library routines.
+ (line 186)
* __getf2: Soft float library routines.
+ (line 188)
* __gtdf2: Soft float library routines.
+ (line 205)
* __gtsf2: Soft float library routines.
+ (line 204)
* __gttf2: Soft float library routines.
+ (line 206)
* __ledf2: Soft float library routines.
+ (line 199)
* __lesf2: Soft float library routines.
+ (line 198)
* __letf2: Soft float library routines.
+ (line 200)
* __lshrdi3: Integer library routines.
+ (line 31)
* __lshrsi3: Integer library routines.
+ (line 30)
* __lshrti3: Integer library routines.
+ (line 32)
* __ltdf2: Soft float library routines.
+ (line 193)
* __ltsf2: Soft float library routines.
+ (line 192)
* __lttf2: Soft float library routines.
! (line 194)
! * __main: Collect2. (line 15)
* __moddi3: Integer library routines.
+ (line 37)
* __modsi3: Integer library routines.
+ (line 36)
* __modti3: Integer library routines.
+ (line 38)
* __muldf3: Soft float library routines.
+ (line 40)
* __muldi3: Integer library routines.
+ (line 43)
* __mulsf3: Soft float library routines.
+ (line 39)
* __mulsi3: Integer library routines.
+ (line 42)
* __multf3: Soft float library routines.
+ (line 42)
* __multi3: Integer library routines.
+ (line 44)
* __mulvdi3: Integer library routines.
+ (line 115)
* __mulvsi3: Integer library routines.
+ (line 114)
* __mulxf3: Soft float library routines.
+ (line 44)
* __nedf2: Soft float library routines.
+ (line 181)
* __negdf2: Soft float library routines.
+ (line 56)
* __negdi2: Integer library routines.
+ (line 47)
* __negsf2: Soft float library routines.
+ (line 55)
* __negtf2: Soft float library routines.
+ (line 57)
* __negti2: Integer library routines.
+ (line 48)
* __negvdi2: Integer library routines.
+ (line 119)
* __negvsi2: Integer library routines.
+ (line 118)
* __negxf2: Soft float library routines.
+ (line 58)
* __nesf2: Soft float library routines.
+ (line 180)
* __netf2: Soft float library routines.
+ (line 182)
* __paritydi2: Integer library routines.
+ (line 151)
* __paritysi2: Integer library routines.
+ (line 150)
* __parityti2: Integer library routines.
+ (line 152)
* __popcountdi2: Integer library routines.
+ (line 157)
* __popcountsi2: Integer library routines.
+ (line 156)
* __popcountti2: Integer library routines.
+ (line 158)
* __subdf3: Soft float library routines.
+ (line 31)
* __subsf3: Soft float library routines.
+ (line 30)
* __subtf3: Soft float library routines.
+ (line 33)
* __subvdi3: Integer library routines.
+ (line 123)
* __subvsi3: Integer library routines.
+ (line 122)
* __subxf3: Soft float library routines.
+ (line 35)
* __truncdfsf2: Soft float library routines.
+ (line 76)
* __trunctfdf2: Soft float library routines.
+ (line 73)
* __trunctfsf2: Soft float library routines.
+ (line 75)
* __truncxfdf2: Soft float library routines.
+ (line 72)
* __truncxfsf2: Soft float library routines.
+ (line 74)
* __ucmpdi2: Integer library routines.
+ (line 93)
* __ucmpti2: Integer library routines.
+ (line 95)
* __udivdi3: Integer library routines.
+ (line 54)
* __udivmoddi3: Integer library routines.
+ (line 61)
* __udivsi3: Integer library routines.
+ (line 52)
* __udivti3: Integer library routines.
+ (line 56)
* __umoddi3: Integer library routines.
+ (line 71)
* __umodsi3: Integer library routines.
+ (line 69)
* __umodti3: Integer library routines.
+ (line 73)
* __unorddf2: Soft float library routines.
+ (line 154)
* __unordsf2: Soft float library routines.
+ (line 153)
* __unordtf2: Soft float library routines.
! (line 155)
! * abort: Portability. (line 21)
! * abs: Arithmetic. (line 165)
! * abs and attributes: Expressions. (line 64)
! * ABS_EXPR: Expression trees. (line 6)
* absence_set: Automaton pipeline description.
! (line 172)
! * absM2 instruction pattern: Standard Names. (line 231)
! * absolute value: Arithmetic. (line 165)
! * access to operands: Accessors. (line 6)
! * access to special operands: Special Accessors. (line 6)
! * accessors: Accessors. (line 6)
! * ACCUMULATE_OUTGOING_ARGS: Stack Arguments. (line 46)
! * ACCUMULATE_OUTGOING_ARGS and stack frames: Function Entry. (line 135)
! * ADA_LONG_TYPE_SIZE: Type Layout. (line 26)
! * ADDITIONAL_REGISTER_NAMES: Instruction Output. (line 15)
! * addM3 instruction pattern: Standard Names. (line 161)
! * addMODEcc instruction pattern: Standard Names. (line 546)
! * addr_diff_vec: Side Effects. (line 295)
! * addr_diff_vec, length of: Insn Lengths. (line 26)
! * ADDR_EXPR: Expression trees. (line 6)
! * addr_vec: Side Effects. (line 290)
! * addr_vec, length of: Insn Lengths. (line 26)
! * address constraints: Simple Constraints. (line 152)
! * address_operand: Simple Constraints. (line 156)
! * addressing modes: Addressing Modes. (line 6)
! * addressof: Regs and Memory. (line 260)
! * ADJUST_FIELD_ALIGN: Storage Layout. (line 186)
! * ADJUST_INSN_LENGTH: Insn Lengths. (line 35)
! * aggregates as return values: Aggregate Return. (line 6)
! * ALL_COP_ADDITIONAL_REGISTER_NAMES: MIPS Coprocessors. (line 32)
! * ALL_REGS: Register Classes. (line 17)
! * ALLOCATE_INITIAL_VALUE: Misc. (line 607)
! * allocate_stack instruction pattern: Standard Names. (line 868)
! * alternate entry points: Insns. (line 146)
! * analysis, data flow: Passes. (line 251)
! * and: Arithmetic. (line 132)
! * and and attributes: Expressions. (line 50)
* and, canonicalization of: Insn Canonicalizations.
! (line 48)
! * andM3 instruction pattern: Standard Names. (line 167)
! * APPLY_RESULT_SIZE: Scalar Return. (line 85)
! * ARG_POINTER_CFA_OFFSET: Frame Layout. (line 162)
! * ARG_POINTER_REGNUM: Frame Registers. (line 41)
! * ARG_POINTER_REGNUM and virtual registers: Regs and Memory. (line 65)
! * arg_pointer_rtx: Frame Registers. (line 85)
! * ARGS_GROW_DOWNWARD: Frame Layout. (line 35)
! * argument passing: Interface. (line 36)
! * arguments in registers: Register Arguments. (line 6)
! * arguments on stack: Stack Arguments. (line 6)
* arithmetic library: Soft float library routines.
! (line 6)
! * arithmetic shift: Arithmetic. (line 147)
! * arithmetic simplifications: Passes. (line 79)
! * arithmetic, in RTL: Arithmetic. (line 6)
! * ARITHMETIC_TYPE_P: Types. (line 77)
! * array: Types. (line 6)
! * ARRAY_REF: Expression trees. (line 6)
! * ARRAY_TYPE: Types. (line 6)
! * AS_NEEDS_DASH_FOR_PIPED_INPUT: Driver. (line 151)
! * ashift: Arithmetic. (line 147)
! * ashift and attributes: Expressions. (line 64)
! * ashiftrt: Arithmetic. (line 155)
! * ashiftrt and attributes: Expressions. (line 64)
! * ashlM3 instruction pattern: Standard Names. (line 217)
! * ashrM3 instruction pattern: Standard Names. (line 224)
! * ASM_APP_OFF: File Framework. (line 61)
! * ASM_APP_ON: File Framework. (line 54)
! * ASM_CLOBBERS: Function Bodies. (line 6)
! * ASM_COMMENT_START: File Framework. (line 49)
! * ASM_CV_QUAL: Function Bodies. (line 6)
! * ASM_DECLARE_CLASS_REFERENCE: Label Output. (line 392)
! * ASM_DECLARE_CONSTANT_NAME: Label Output. (line 122)
! * ASM_DECLARE_FUNCTION_NAME: Label Output. (line 81)
! * ASM_DECLARE_FUNCTION_SIZE: Label Output. (line 95)
! * ASM_DECLARE_OBJECT_NAME: Label Output. (line 108)
! * ASM_DECLARE_REGISTER_GLOBAL: Label Output. (line 137)
! * ASM_DECLARE_UNRESOLVED_REFERENCE: Label Output. (line 398)
! * ASM_FINAL_SPEC: Driver. (line 144)
! * ASM_FINISH_DECLARE_OBJECT: Label Output. (line 145)
! * ASM_FORMAT_PRIVATE_NAME: Label Output. (line 310)
! * asm_fprintf: Instruction Output. (line 123)
! * ASM_FPRINTF_EXTENSIONS: Instruction Output. (line 134)
! * ASM_GENERATE_INTERNAL_LABEL: Label Output. (line 294)
! * asm_input: Side Effects. (line 277)
! * asm_input and /v: Flags. (line 88)
! * ASM_INPUTS: Function Bodies. (line 6)
! * ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX: Exception Handling. (line 82)
! * ASM_NO_SKIP_IN_TEXT: Alignment Output. (line 72)
! * asm_noperands: Insns. (line 276)
! * asm_operands and /v: Flags. (line 88)
! * asm_operands, RTL sharing: Sharing. (line 45)
! * asm_operands, usage: Assembler. (line 6)
! * ASM_OUTPUT_ADDR_DIFF_ELT: Dispatch Tables. (line 9)
! * ASM_OUTPUT_ADDR_VEC_ELT: Dispatch Tables. (line 26)
! * ASM_OUTPUT_ALIGN: Alignment Output. (line 79)
! * ASM_OUTPUT_ALIGN_WITH_NOP: Alignment Output. (line 84)
! * ASM_OUTPUT_ALIGNED_BSS: Uninitialized Data. (line 64)
! * ASM_OUTPUT_ALIGNED_COMMON: Uninitialized Data. (line 23)
! * ASM_OUTPUT_ALIGNED_DECL_COMMON: Uninitialized Data. (line 31)
! * ASM_OUTPUT_ALIGNED_DECL_LOCAL: Uninitialized Data. (line 100)
! * ASM_OUTPUT_ALIGNED_LOCAL: Uninitialized Data. (line 92)
! * ASM_OUTPUT_ASCII: Data Output. (line 50)
! * ASM_OUTPUT_BSS: Uninitialized Data. (line 44)
! * ASM_OUTPUT_CASE_END: Dispatch Tables. (line 51)
! * ASM_OUTPUT_CASE_LABEL: Dispatch Tables. (line 38)
! * ASM_OUTPUT_COMMON: Uninitialized Data. (line 10)
! * ASM_OUTPUT_DEBUG_LABEL: Label Output. (line 282)
! * ASM_OUTPUT_DEF: Label Output. (line 331)
! * ASM_OUTPUT_DEF_FROM_DECLS: Label Output. (line 339)
! * ASM_OUTPUT_DWARF_DELTA: SDB and DWARF. (line 42)
! * ASM_OUTPUT_DWARF_OFFSET: SDB and DWARF. (line 46)
! * ASM_OUTPUT_DWARF_PCREL: SDB and DWARF. (line 51)
! * ASM_OUTPUT_EXTERNAL: Label Output. (line 225)
! * ASM_OUTPUT_FDESC: Data Output. (line 59)
! * ASM_OUTPUT_IDENT: File Framework. (line 93)
! * ASM_OUTPUT_LABEL: Label Output. (line 9)
! * ASM_OUTPUT_LABEL_REF: Label Output. (line 255)
! * ASM_OUTPUT_LABELREF: Label Output. (line 241)
! * ASM_OUTPUT_LOCAL: Uninitialized Data. (line 79)
! * ASM_OUTPUT_MAX_SKIP_ALIGN: Alignment Output. (line 88)
! * ASM_OUTPUT_MEASURED_SIZE: Label Output. (line 35)
! * ASM_OUTPUT_OPCODE: Instruction Output. (line 21)
! * ASM_OUTPUT_POOL_EPILOGUE: Data Output. (line 109)
! * ASM_OUTPUT_POOL_PROLOGUE: Data Output. (line 72)
! * ASM_OUTPUT_REG_POP: Instruction Output. (line 178)
! * ASM_OUTPUT_REG_PUSH: Instruction Output. (line 173)
! * ASM_OUTPUT_SHARED_BSS: Uninitialized Data. (line 74)
! * ASM_OUTPUT_SHARED_COMMON: Uninitialized Data. (line 39)
! * ASM_OUTPUT_SHARED_LOCAL: Uninitialized Data. (line 108)
! * ASM_OUTPUT_SIZE_DIRECTIVE: Label Output. (line 29)
! * ASM_OUTPUT_SKIP: Alignment Output. (line 66)
! * ASM_OUTPUT_SOURCE_FILENAME: File Framework. (line 68)
! * ASM_OUTPUT_SOURCE_LINE: File Framework. (line 83)
! * ASM_OUTPUT_SPECIAL_POOL_ENTRY: Data Output. (line 84)
! * ASM_OUTPUT_SYMBOL_REF: Label Output. (line 248)
! * ASM_OUTPUT_TYPE_DIRECTIVE: Label Output. (line 71)
! * ASM_OUTPUT_WEAK_ALIAS: Label Output. (line 357)
! * ASM_OUTPUTS: Function Bodies. (line 6)
! * ASM_PREFERRED_EH_DATA_FORMAT: Exception Handling. (line 67)
! * ASM_SPEC: Driver. (line 136)
! * ASM_STABD_OP: DBX Options. (line 36)
! * ASM_STABN_OP: DBX Options. (line 43)
! * ASM_STABS_OP: DBX Options. (line 29)
! * ASM_STMT: Function Bodies. (line 6)
! * ASM_STRING: Function Bodies. (line 6)
! * ASM_WEAKEN_DECL: Label Output. (line 180)
! * ASM_WEAKEN_LABEL: Label Output. (line 167)
! * assemble_name: Label Output. (line 8)
! * assembler format: File Framework. (line 6)
! * assembler instructions in RTL: Assembler. (line 6)
! * ASSEMBLER_DIALECT: Instruction Output. (line 146)
! * assigning attribute values to insns: Tagging Insns. (line 6)
! * assignment operator: Function Basics. (line 6)
! * asterisk in template: Output Statement. (line 29)
! * atan2M3 instruction pattern: Standard Names. (line 283)
! * attr <1>: Tagging Insns. (line 54)
! * attr: Expressions. (line 154)
! * attr_flag: Expressions. (line 119)
! * attribute expressions: Expressions. (line 6)
! * attribute specifications: Attr Example. (line 6)
! * attribute specifications example: Attr Example. (line 6)
! * attributes: Attributes. (line 6)
* attributes, defining: Defining Attributes.
! (line 6)
! * attributes, target-specific: Target Attributes. (line 6)
! * autoincrement addressing, availability: Portability. (line 21)
! * autoincrement/decrement addressing: Simple Constraints. (line 28)
! * autoincrement/decrement analysis: Passes. (line 257)
* automata_option: Automaton pipeline description.
+ (line 253)
* automaton based pipeline description <1>: Comparison of the two descriptions.
+ (line 6)
* automaton based pipeline description <2>: Automaton pipeline description.
+ (line 6)
* automaton based pipeline description: Processor pipeline description.
+ (line 6)
* automaton based scheduler: Processor pipeline description.
+ (line 6)
* AVOID_CCMODE_COPIES: Values in Registers.
! (line 107)
! * backslash: Output Template. (line 47)
! * barrier: Insns. (line 166)
! * barrier and /f: Flags. (line 120)
! * barrier and /i: Flags. (line 147)
! * barrier and /v: Flags. (line 33)
! * BASE_REG_CLASS: Register Classes. (line 107)
! * basic block reordering: Passes. (line 372)
! * basic blocks: Passes. (line 251)
! * bCOND instruction pattern: Standard Names. (line 583)
! * bcopy, implicit usage: Library Calls. (line 66)
! * BIGGEST_ALIGNMENT: Storage Layout. (line 168)
! * BIGGEST_FIELD_ALIGNMENT: Storage Layout. (line 179)
! * BImode: Machine Modes. (line 22)
! * BIND_EXPR: Expression trees. (line 6)
! * BINFO_TYPE: Classes. (line 6)
! * bit-fields: Bit-Fields. (line 6)
! * BIT_AND_EXPR: Expression trees. (line 6)
! * BIT_IOR_EXPR: Expression trees. (line 6)
! * BIT_NOT_EXPR: Expression trees. (line 6)
! * BIT_XOR_EXPR: Expression trees. (line 6)
! * BITFIELD_NBYTES_LIMITED: Storage Layout. (line 324)
! * BITS_BIG_ENDIAN: Storage Layout. (line 12)
! * BITS_BIG_ENDIAN, effect on sign_extract: Bit-Fields. (line 11)
! * BITS_PER_UNIT: Storage Layout. (line 52)
! * BITS_PER_WORD: Storage Layout. (line 57)
! * bitwise complement: Arithmetic. (line 128)
! * bitwise exclusive-or: Arithmetic. (line 142)
! * bitwise inclusive-or: Arithmetic. (line 137)
! * bitwise logical-and: Arithmetic. (line 132)
! * BLKmode: Machine Modes. (line 97)
! * BLKmode, and function return values: Calls. (line 23)
! * BLOCK_REG_PADDING: Register Arguments. (line 211)
* bool <1>: Exception Region Output.
! (line 79)
! * bool: Sections. (line 202)
! * BOOL_TYPE_SIZE: Type Layout. (line 51)
! * BOOLEAN_TYPE: Types. (line 6)
! * branch shortening: Passes. (line 393)
! * BRANCH_COST: Costs. (line 52)
! * break_out_memory_refs: Addressing Modes. (line 148)
! * BREAK_STMT: Function Bodies. (line 6)
! * BSS_SECTION_ASM_OP: Sections. (line 59)
! * builtin_longjmp instruction pattern: Standard Names. (line 954)
! * BUILTIN_SETJMP_FRAME_VALUE: Frame Layout. (line 100)
* builtin_setjmp_receiver instruction pattern: Standard Names.
! (line 944)
! * builtin_setjmp_setup instruction pattern: Standard Names. (line 933)
! * byte_mode: Machine Modes. (line 223)
! * BYTES_BIG_ENDIAN: Storage Layout. (line 24)
! * BYTES_BIG_ENDIAN, effect on subreg: Regs and Memory. (line 136)
! * bzero, implicit usage: Library Calls. (line 66)
! * C statements for assembler output: Output Statement. (line 6)
! * C/C++ Internal Representation: Trees. (line 6)
! * C4X_FLOAT_FORMAT: Storage Layout. (line 399)
! * C99 math functions, implicit usage: Library Calls. (line 71)
! * c_register_pragma: Misc. (line 353)
! * call <1>: Side Effects. (line 82)
! * call: Flags. (line 241)
! * call instruction pattern: Standard Names. (line 610)
! * call usage: Calls. (line 10)
! * call, in mem: Flags. (line 93)
! * call-clobbered register: Register Basics. (line 35)
! * call-saved register: Register Basics. (line 35)
! * call-used register: Register Basics. (line 35)
! * CALL_EXPR: Expression trees. (line 6)
! * call_insn: Insns. (line 94)
! * call_insn and /f: Flags. (line 120)
! * call_insn and /i: Flags. (line 147)
! * call_insn and /j: Flags. (line 186)
! * call_insn and /s: Flags. (line 38)
! * call_insn and /u: Flags. (line 19)
! * call_insn and /v: Flags. (line 33)
! * CALL_INSN_FUNCTION_USAGE: Insns. (line 100)
! * call_pop instruction pattern: Standard Names. (line 638)
! * CALL_POPS_ARGS: Stack Arguments. (line 155)
! * CALL_REALLY_USED_REGISTERS: Register Basics. (line 46)
! * CALL_USED_REGISTERS: Register Basics. (line 35)
! * call_used_regs: Register Basics. (line 59)
! * call_value instruction pattern: Standard Names. (line 630)
! * call_value_pop instruction pattern: Standard Names. (line 638)
! * CALLER_SAVE_PROFITABLE: Caller Saves. (line 11)
! * calling conventions: Stack and Calling. (line 6)
! * calling functions in RTL: Calls. (line 6)
! * CAN_DEBUG_WITHOUT_FP: Run-time Target. (line 222)
! * CAN_ELIMINATE: Elimination. (line 71)
! * canadian: Configure Terms. (line 6)
! * CANNOT_CHANGE_MODE_CLASS: Register Classes. (line 382)
* canonicalization of instructions: Insn Canonicalizations.
! (line 6)
! * CANONICALIZE_COMPARISON: Condition Code. (line 84)
* canonicalize_funcptr_for_compare instruction pattern: Standard Names.
! (line 799)
! * CASE_DROPS_THROUGH: Misc. (line 67)
! * CASE_USE_BIT_TESTS: Misc. (line 79)
! * CASE_VALUES_THRESHOLD: Misc. (line 72)
! * CASE_VECTOR_MODE: Misc. (line 47)
! * CASE_VECTOR_PC_RELATIVE: Misc. (line 60)
! * CASE_VECTOR_SHORTEN_MODE: Misc. (line 51)
! * casesi instruction pattern: Standard Names. (line 718)
! * cc0: Regs and Memory. (line 182)
! * cc0, RTL sharing: Sharing. (line 27)
! * cc0_rtx: Regs and Memory. (line 208)
! * CC1_SPEC: Driver. (line 118)
! * CC1PLUS_SPEC: Driver. (line 126)
! * cc_status: Condition Code. (line 8)
! * CC_STATUS_MDEP: Condition Code. (line 19)
! * CC_STATUS_MDEP_INIT: Condition Code. (line 25)
! * CCmode: Machine Modes. (line 90)
! * CDImode: Machine Modes. (line 116)
! * ceilM2 instruction pattern: Standard Names. (line 317)
! * chain_next: GTY Options. (line 165)
! * chain_prev: GTY Options. (line 165)
! * change_address: Standard Names. (line 47)
! * char <1>: PCH Target. (line 16)
! * char: Sections. (line 194)
! * CHAR_TYPE_SIZE: Type Layout. (line 46)
! * check_stack instruction pattern: Standard Names. (line 886)
! * CHImode: Machine Modes. (line 116)
! * class: Classes. (line 6)
! * class definitions, register: Register Classes. (line 6)
! * class preference constraints: Class Preferences. (line 6)
! * CLASS_LIKELY_SPILLED_P: Register Classes. (line 353)
! * CLASS_MAX_NREGS: Register Classes. (line 370)
! * CLASS_TYPE_P: Types. (line 81)
! * classes of RTX codes: RTL Classes. (line 6)
! * CLASSTYPE_DECLARED_CLASS: Classes. (line 6)
! * CLASSTYPE_HAS_MUTABLE: Classes. (line 78)
! * CLASSTYPE_NON_POD_P: Classes. (line 83)
! * CLEANUP_DECL: Function Bodies. (line 6)
! * CLEANUP_EXPR: Function Bodies. (line 6)
! * CLEANUP_POINT_EXPR: Expression trees. (line 6)
! * CLEANUP_STMT: Function Bodies. (line 6)
! * CLEAR_BY_PIECES_P: Costs. (line 124)
! * CLEAR_INSN_CACHE: Trampolines. (line 101)
! * CLEAR_RATIO: Costs. (line 115)
! * clobber: Side Effects. (line 96)
! * clrstrM instruction pattern: Standard Names. (line 418)
! * clz: Arithmetic. (line 178)
! * CLZ_DEFINED_VALUE_AT_ZERO: Misc. (line 271)
! * clzM2 instruction pattern: Standard Names. (line 343)
! * cmpM instruction pattern: Standard Names. (line 372)
! * cmpmemM instruction pattern: Standard Names. (line 443)
! * cmpstrM instruction pattern: Standard Names. (line 431)
* code generation RTL sequences: Expander Definitions.
! (line 6)
! * code motion: Passes. (line 204)
! * code_label: Insns. (line 125)
! * code_label and /i: Flags. (line 53)
! * code_label and /v: Flags. (line 33)
! * CODE_LABEL_NUMBER: Insns. (line 125)
! * codes, RTL expression: RTL Objects. (line 47)
! * COImode: Machine Modes. (line 116)
! * COLLECT2_HOST_INITIALIZATION: Host Misc. (line 32)
! * COLLECT_EXPORT_LIST: Misc. (line 635)
* COLLECT_PARSE_FLAG: Macros for Initialization.
+ (line 106)
* COLLECT_SHARED_FINI_FUNC: Macros for Initialization.
+ (line 44)
* COLLECT_SHARED_INIT_FUNC: Macros for Initialization.
! (line 33)
! * combiner pass: Regs and Memory. (line 148)
! * common subexpression elimination: Passes. (line 171)
! * compare: Arithmetic. (line 42)
* compare, canonicalization of: Insn Canonicalizations.
! (line 31)
! * compiler passes and files: Passes. (line 6)
! * complement, bitwise: Arithmetic. (line 128)
! * COMPLEX_CST: Expression trees. (line 6)
! * COMPLEX_EXPR: Expression trees. (line 6)
! * COMPLEX_TYPE: Types. (line 6)
! * COMPONENT_REF: Expression trees. (line 6)
! * COMPOUND_BODY: Function Bodies. (line 6)
! * COMPOUND_EXPR: Expression trees. (line 6)
! * COMPOUND_LITERAL_EXPR: Expression trees. (line 6)
! * COMPOUND_LITERAL_EXPR_DECL: Expression trees. (line 470)
! * COMPOUND_LITERAL_EXPR_DECL_STMT: Expression trees. (line 470)
! * COMPOUND_STMT: Function Bodies. (line 6)
! * computing the length of an insn: Insn Lengths. (line 6)
! * concat and /u: Flags. (line 153)
! * cond: Comparisons. (line 87)
! * cond and attributes: Expressions. (line 37)
! * cond_exec: Side Effects. (line 241)
! * COND_EXPR: Expression trees. (line 6)
! * condition code register: Regs and Memory. (line 182)
! * condition code status: Condition Code. (line 6)
! * condition codes: Comparisons. (line 17)
* conditional execution: Conditional Execution.
! (line 6)
! * CONDITIONAL_REGISTER_USAGE: Register Basics. (line 60)
! * conditional_trap instruction pattern: Standard Names. (line 1020)
! * conditions, in patterns: Patterns. (line 44)
! * configuration file <1>: Host Misc. (line 6)
! * configuration file: Filesystem. (line 6)
! * configure terms: Configure Terms. (line 6)
! * CONJ_EXPR: Expression trees. (line 6)
! * const and /i: Flags. (line 147)
! * CONST0_RTX: Constants. (line 70)
! * const0_rtx: Constants. (line 13)
! * CONST1_RTX: Constants. (line 70)
! * const1_rtx: Constants. (line 13)
! * CONST2_RTX: Constants. (line 70)
! * const2_rtx: Constants. (line 13)
! * CONST_DECL: Declarations. (line 6)
! * const_double: Constants. (line 29)
! * const_double, RTL sharing: Sharing. (line 29)
! * CONST_DOUBLE_CHAIN: Constants. (line 48)
! * CONST_DOUBLE_LOW: Constants. (line 57)
! * CONST_DOUBLE_MEM: Constants. (line 48)
! * CONST_DOUBLE_OK_FOR_CONSTRAINT_P: Register Classes. (line 429)
! * CONST_DOUBLE_OK_FOR_LETTER_P: Register Classes. (line 414)
! * const_int: Constants. (line 8)
! * const_int and attribute tests: Expressions. (line 47)
! * const_int and attributes: Expressions. (line 10)
! * const_int, RTL sharing: Sharing. (line 23)
! * CONST_OK_FOR_CONSTRAINT_P: Register Classes. (line 409)
! * CONST_OK_FOR_LETTER_P: Register Classes. (line 400)
! * CONST_OR_PURE_CALL_P: Flags. (line 19)
! * const_string: Constants. (line 79)
! * const_string and attributes: Expressions. (line 20)
! * const_true_rtx: Constants. (line 23)
! * const_vector: Constants. (line 36)
! * const_vector, RTL sharing: Sharing. (line 32)
* constant attributes: Constant Attributes.
+ (line 6)
* constant definitions: Constant Definitions.
! (line 6)
! * constant folding: Passes. (line 79)
! * constant propagation: Passes. (line 171)
! * CONSTANT_ADDRESS_P: Addressing Modes. (line 29)
! * CONSTANT_ALIGNMENT: Storage Layout. (line 213)
! * CONSTANT_P: Addressing Modes. (line 35)
! * CONSTANT_POOL_ADDRESS_P: Flags. (line 10)
! * CONSTANT_POOL_BEFORE_FUNCTION: Data Output. (line 64)
! * constants in constraints: Simple Constraints. (line 58)
! * constm1_rtx: Constants. (line 13)
! * constraint modifier characters: Modifiers. (line 6)
! * constraint, matching: Simple Constraints. (line 130)
! * CONSTRAINT_LEN: Register Classes. (line 124)
! * constraints: Constraints. (line 6)
* constraints, machine specific: Machine Constraints.
! (line 6)
! * CONSTRUCTOR: Expression trees. (line 6)
! * constructor: Function Basics. (line 6)
! * constructors, automatic calls: Collect2. (line 15)
! * constructors, output of: Initialization. (line 6)
! * container: Containers. (line 6)
! * CONTINUE_STMT: Function Bodies. (line 6)
! * contributors: Contributors. (line 6)
! * controlling register usage: Register Basics. (line 76)
! * controlling the compilation driver: Driver. (line 6)
! * conventions, run-time: Interface. (line 6)
! * conversions: Conversions. (line 6)
! * CONVERT_EXPR: Expression trees. (line 6)
! * copy constructor: Function Basics. (line 6)
! * copy propagation: Passes. (line 181)
! * copy_rtx: Addressing Modes. (line 200)
! * copy_rtx_if_shared: Sharing. (line 64)
! * cosM2 instruction pattern: Standard Names. (line 242)
! * costs of instructions: Costs. (line 6)
! * CP_INTEGRAL_TYPE: Types. (line 73)
! * cp_namespace_decls: Namespaces. (line 44)
! * CP_TYPE_CONST_NON_VOLATILE_P: Types. (line 46)
! * CP_TYPE_CONST_P: Types. (line 37)
! * CP_TYPE_QUALS: Types. (line 6)
! * CP_TYPE_RESTRICT_P: Types. (line 43)
! * CP_TYPE_VOLATILE_P: Types. (line 40)
! * CPLUSPLUS_CPP_SPEC: Driver. (line 113)
! * CPP_SPEC: Driver. (line 106)
! * CQImode: Machine Modes. (line 116)
! * cross compilation and floating point: Floating Point. (line 6)
! * CRT_CALL_STATIC_FUNCTION: Sections. (line 80)
! * CRTSTUFF_T_CFLAGS: Target Fragment. (line 35)
! * CRTSTUFF_T_CFLAGS_S: Target Fragment. (line 39)
! * CSImode: Machine Modes. (line 116)
! * CTImode: Machine Modes. (line 116)
! * ctz: Arithmetic. (line 186)
! * CTZ_DEFINED_VALUE_AT_ZERO: Misc. (line 272)
! * ctzM2 instruction pattern: Standard Names. (line 350)
! * CUMULATIVE_ARGS: Register Arguments. (line 124)
! * current_function_epilogue_delay_list: Function Entry. (line 186)
! * current_function_is_leaf: Leaf Functions. (line 51)
! * current_function_outgoing_args_size: Stack Arguments. (line 45)
! * current_function_pops_args: Function Entry. (line 106)
! * current_function_pretend_args_size: Function Entry. (line 112)
! * current_function_uses_only_leaf_regs: Leaf Functions. (line 51)
* current_insn_predicate: Conditional Execution.
+ (line 26)
* data bypass <1>: Comparison of the two descriptions.
+ (line 6)
* data bypass: Automaton pipeline description.
+ (line 63)
* data dependence delays: Processor pipeline description.
! (line 6)
! * data flow analysis: Passes. (line 251)
! * data structures: Per-Function Data. (line 6)
! * DATA_ALIGNMENT: Storage Layout. (line 200)
! * data_section: Sections. (line 101)
! * DATA_SECTION_ASM_OP: Sections. (line 33)
! * DBR_OUTPUT_SEQEND: Instruction Output. (line 107)
! * dbr_sequence_length: Instruction Output. (line 106)
! * DBX_BLOCKS_FUNCTION_RELATIVE: DBX Options. (line 107)
! * DBX_CONTIN_CHAR: DBX Options. (line 66)
! * DBX_CONTIN_LENGTH: DBX Options. (line 56)
! * DBX_DEBUGGING_INFO: DBX Options. (line 9)
! * DBX_FUNCTION_FIRST: DBX Options. (line 101)
! * DBX_MEMPARM_STABS_LETTER: DBX Options. (line 97)
! * DBX_NO_XREFS: DBX Options. (line 50)
! * DBX_OUTPUT_FUNCTION_END: DBX Hooks. (line 22)
! * DBX_OUTPUT_LBRAC: DBX Hooks. (line 9)
! * DBX_OUTPUT_MAIN_SOURCE_DIRECTORY: File Names and DBX. (line 18)
! * DBX_OUTPUT_MAIN_SOURCE_FILE_END: File Names and DBX. (line 26)
! * DBX_OUTPUT_MAIN_SOURCE_FILENAME: File Names and DBX. (line 9)
! * DBX_OUTPUT_NFUN: DBX Hooks. (line 18)
! * DBX_OUTPUT_RBRAC: DBX Hooks. (line 15)
! * DBX_OUTPUT_STANDARD_TYPES: DBX Hooks. (line 29)
! * DBX_REGISTER_NUMBER: All Debuggers. (line 9)
! * DBX_REGPARM_STABS_CODE: DBX Options. (line 87)
! * DBX_REGPARM_STABS_LETTER: DBX Options. (line 92)
! * DBX_STATIC_CONST_VAR_CODE: DBX Options. (line 82)
! * DBX_STATIC_STAB_DATA_SECTION: DBX Options. (line 73)
! * DBX_TYPE_DECL_STABS_CODE: DBX Options. (line 78)
! * DBX_USE_BINCL: DBX Options. (line 112)
! * DCmode: Machine Modes. (line 111)
* De Morgan's law: Insn Canonicalizations.
! (line 48)
! * dead code: Passes. (line 139)
! * dead_or_set_p: define_peephole. (line 65)
! * DEBUG_SYMS_TEXT: DBX Options. (line 25)
! * DEBUGGER_ARG_OFFSET: All Debuggers. (line 37)
! * DEBUGGER_AUTO_OFFSET: All Debuggers. (line 28)
! * debugging information generation: Passes. (line 421)
! * DECL_ALIGN: Declarations. (line 6)
! * DECL_ANTICIPATED: Function Basics. (line 41)
! * DECL_ARGUMENTS: Function Basics. (line 156)
! * DECL_ARRAY_DELETE_OPERATOR_P: Function Basics. (line 177)
! * DECL_ARTIFICIAL <1>: Function Basics. (line 6)
! * DECL_ARTIFICIAL: Declarations. (line 29)
! * DECL_ASSEMBLER_NAME: Function Basics. (line 6)
! * DECL_ATTRIBUTES: Attributes. (line 22)
! * DECL_BASE_CONSTRUCTOR_P: Function Basics. (line 87)
! * DECL_CLASS_SCOPE_P: Declarations. (line 46)
! * DECL_COMPLETE_CONSTRUCTOR_P: Function Basics. (line 83)
! * DECL_COMPLETE_DESTRUCTOR_P: Function Basics. (line 97)
! * DECL_CONST_MEMFUNC_P: Function Basics. (line 70)
! * DECL_CONSTRUCTOR_P: Function Basics. (line 6)
! * DECL_CONTEXT: Namespaces. (line 26)
! * DECL_CONV_FN_P: Function Basics. (line 6)
! * DECL_COPY_CONSTRUCTOR_P: Function Basics. (line 91)
! * DECL_DESTRUCTOR_P: Function Basics. (line 6)
! * DECL_EXTERN_C_FUNCTION_P: Function Basics. (line 45)
! * DECL_EXTERNAL <1>: Function Basics. (line 31)
! * DECL_EXTERNAL: Declarations. (line 6)
! * DECL_FUNCTION_MEMBER_P: Function Basics. (line 6)
! * DECL_FUNCTION_SCOPE_P: Declarations. (line 49)
! * DECL_GLOBAL_CTOR_P: Function Basics. (line 6)
! * DECL_GLOBAL_DTOR_P: Function Basics. (line 6)
! * DECL_INITIAL: Declarations. (line 6)
! * DECL_LINKONCE_P: Function Basics. (line 6)
! * DECL_LOCAL_FUNCTION_P: Function Basics. (line 37)
! * DECL_MAIN_P: Function Basics. (line 7)
! * DECL_NAME <1>: Function Basics. (line 6)
! * DECL_NAME <2>: Declarations. (line 12)
! * DECL_NAME: Namespaces. (line 15)
! * DECL_NAMESPACE_ALIAS: Namespaces. (line 30)
! * DECL_NAMESPACE_SCOPE_P: Declarations. (line 42)
! * DECL_NAMESPACE_STD_P: Namespaces. (line 40)
! * DECL_NON_THUNK_FUNCTION_P: Function Basics. (line 137)
! * DECL_NONCONVERTING_P: Function Basics. (line 79)
! * DECL_NONSTATIC_MEMBER_FUNCTION_P: Function Basics. (line 67)
! * DECL_OVERLOADED_OPERATOR_P: Function Basics. (line 6)
! * DECL_RESULT: Function Basics. (line 161)
! * DECL_SIZE: Declarations. (line 6)
! * DECL_SOURCE_FILE: Declarations. (line 19)
! * DECL_SOURCE_LINE: Declarations. (line 25)
! * DECL_STATIC_FUNCTION_P: Function Basics. (line 64)
! * DECL_STMT: Function Bodies. (line 6)
! * DECL_STMT_DECL: Function Bodies. (line 6)
! * DECL_THUNK_P: Function Basics. (line 115)
! * DECL_VOLATILE_MEMFUNC_P: Function Basics. (line 73)
! * declaration: Declarations. (line 6)
! * declarations, RTL: RTL Declarations. (line 6)
! * DECLARE_LIBRARY_RENAMES: Library Calls. (line 9)
* decrement_and_branch_until_zero instruction pattern: Standard Names.
! (line 761)
! * default: GTY Options. (line 75)
! * default_file_start: File Framework. (line 9)
! * DEFAULT_GDB_EXTENSIONS: DBX Options. (line 18)
! * DEFAULT_MAIN_RETURN: Misc. (line 441)
! * DEFAULT_PCC_STRUCT_RETURN: Aggregate Return. (line 34)
! * DEFAULT_SHORT_ENUMS: Type Layout. (line 96)
! * DEFAULT_SIGNED_CHAR: Type Layout. (line 90)
! * define_asm_attributes: Tagging Insns. (line 73)
* define_attr: Defining Attributes.
+ (line 6)
* define_automaton: Automaton pipeline description.
+ (line 10)
* define_bypass: Automaton pipeline description.
+ (line 154)
* define_cond_exec: Conditional Execution.
+ (line 13)
* define_constants: Constant Definitions.
+ (line 6)
* define_cpu_unit: Automaton pipeline description.
! (line 25)
! * define_delay: Delay Slots. (line 25)
* define_expand: Expander Definitions.
+ (line 11)
* define_function_unit: Old pipeline description.
! (line 33)
! * define_insn: Patterns. (line 6)
! * define_insn example: Example. (line 6)
! * define_insn_and_split: Insn Splitting. (line 170)
* define_insn_reservation: Automaton pipeline description.
! (line 63)
! * define_peephole: define_peephole. (line 6)
! * define_peephole2: define_peephole2. (line 6)
* define_query_cpu_unit: Automaton pipeline description.
+ (line 47)
* define_reservation: Automaton pipeline description.
! (line 143)
! * define_split: Insn Splitting. (line 32)
* defining attributes and their values: Defining Attributes.
! (line 6)
! * defining jump instruction patterns: Jump Patterns. (line 6)
! * defining looping instruction patterns: Looping Patterns. (line 6)
* defining peephole optimizers: Peephole Definitions.
+ (line 6)
* defining RTL sequences for code generation: Expander Definitions.
! (line 6)
! * delay slots, defining: Delay Slots. (line 6)
! * DELAY_SLOTS_FOR_EPILOGUE: Function Entry. (line 168)
! * delayed branch scheduling: Passes. (line 384)
! * deletable: GTY Options. (line 137)
! * Dependent Patterns: Dependent Patterns. (line 6)
! * desc: GTY Options. (line 75)
! * destructor: Function Basics. (line 6)
! * destructors, output of: Initialization. (line 6)
* deterministic finite state automaton <1>: Automaton pipeline description.
+ (line 253)
* deterministic finite state automaton: Processor pipeline description.
! (line 6)
! * DFA_PIPELINE_INTERFACE: Scheduling. (line 275)
! * DFmode: Machine Modes. (line 73)
! * digits in constraint: Simple Constraints. (line 118)
! * DImode: Machine Modes. (line 45)
! * DIR_SEPARATOR: Filesystem. (line 18)
! * DIR_SEPARATOR_2: Filesystem. (line 19)
! * directory options .md: Including Patterns. (line 44)
! * disabling certain registers: Register Basics. (line 76)
! * dispatch table: Dispatch Tables. (line 8)
! * div: Arithmetic. (line 99)
! * div and attributes: Expressions. (line 64)
! * division: Arithmetic. (line 99)
! * divM3 instruction pattern: Standard Names. (line 167)
! * divmodM4 instruction pattern: Standard Names. (line 197)
! * DO_BODY: Function Bodies. (line 6)
! * DO_COND: Function Bodies. (line 6)
! * DO_STMT: Function Bodies. (line 6)
! * DOLLARS_IN_IDENTIFIERS: Misc. (line 423)
! * doloop_begin instruction pattern: Standard Names. (line 792)
! * doloop_end instruction pattern: Standard Names. (line 771)
* DONE: Expander Definitions.
! (line 74)
! * DOUBLE_TYPE_SIZE: Type Layout. (line 60)
! * driver: Driver. (line 6)
! * DRIVER_SELF_SPECS: Driver. (line 71)
! * DUMPFILE_FORMAT: Filesystem. (line 67)
! * DWARF2_ASM_LINE_DEBUG_INFO: SDB and DWARF. (line 36)
! * DWARF2_DEBUGGING_INFO: SDB and DWARF. (line 13)
! * DWARF2_FRAME_INFO: SDB and DWARF. (line 23)
! * DWARF2_FRAME_REG_OUT: Frame Registers. (line 133)
! * DWARF2_GENERATE_TEXT_SECTION_LABEL: SDB and DWARF. (line 29)
* DWARF2_UNWIND_INFO: Exception Region Output.
! (line 34)
! * DWARF_ALT_FRAME_RETURN_COLUMN: Frame Layout. (line 136)
* DWARF_CIE_DATA_ALIGNMENT: Exception Region Output.
! (line 55)
! * DWARF_FRAME_REGISTERS: Frame Registers. (line 93)
! * DWARF_FRAME_REGNUM: Frame Registers. (line 125)
! * DWARF_REG_TO_UNWIND_COLUMN: Frame Registers. (line 117)
! * DWARF_ZERO_REG: Frame Layout. (line 143)
! * DYNAMIC_CHAIN_ADDRESS: Frame Layout. (line 83)
! * E in constraint: Simple Constraints. (line 77)
! * earlyclobber operand: Modifiers. (line 25)
! * EDOM, implicit usage: Library Calls. (line 48)
* EH_FRAME_IN_DATA_SECTION: Exception Region Output.
+ (line 20)
* EH_FRAME_SECTION_NAME: Exception Region Output.
! (line 10)
! * eh_return instruction pattern: Standard Names. (line 960)
! * EH_RETURN_DATA_REGNO: Exception Handling. (line 7)
! * EH_RETURN_HANDLER_RTX: Exception Handling. (line 39)
! * EH_RETURN_STACKADJ_RTX: Exception Handling. (line 22)
! * EH_USES: Function Entry. (line 163)
! * ELIGIBLE_FOR_EPILOGUE_DELAY: Function Entry. (line 174)
! * ELIMINABLE_REGS: Elimination. (line 44)
! * ELSE_CLAUSE: Function Bodies. (line 6)
! * EMIT_MODE_SET: Mode Switching. (line 74)
! * EMPTY_CLASS_EXPR: Function Bodies. (line 6)
! * EMPTY_FIELD_BOUNDARY: Storage Layout. (line 237)
! * ENABLE_EXECUTE_STACK: Trampolines. (line 111)
! * ENDFILE_SPEC: Driver. (line 213)
! * endianness: Portability. (line 21)
! * enum machine_mode: Machine Modes. (line 6)
! * enum reg_class: Register Classes. (line 65)
! * ENUMERAL_TYPE: Types. (line 6)
! * epilogue: Function Entry. (line 6)
! * epilogue instruction pattern: Standard Names. (line 992)
! * EPILOGUE_USES: Function Entry. (line 157)
! * eq: Comparisons. (line 49)
! * eq and attributes: Expressions. (line 64)
! * eq_attr: Expressions. (line 85)
! * EQ_EXPR: Expression trees. (line 6)
! * equal: Comparisons. (line 49)
! * errno, implicit usage: Library Calls. (line 60)
! * escape sequences: Escape Sequences. (line 6)
! * exception handling: Exception Handling. (line 6)
! * exception_receiver instruction pattern: Standard Names. (line 924)
! * exclamation point: Multi-Alternative. (line 47)
* exclusion_set: Automaton pipeline description.
! (line 172)
! * exclusive-or, bitwise: Arithmetic. (line 142)
! * EXIT_EXPR: Expression trees. (line 6)
! * EXIT_IGNORE_STACK: Function Entry. (line 145)
* expander definitions: Expander Definitions.
! (line 6)
! * expM2 instruction pattern: Standard Names. (line 258)
! * expr_list: Insns. (line 530)
! * EXPR_STMT: Function Bodies. (line 6)
! * EXPR_STMT_EXPR: Function Bodies. (line 6)
! * expression: Expression trees. (line 6)
! * expression codes: RTL Objects. (line 47)
! * extendMN2 instruction pattern: Standard Names. (line 497)
! * extensible constraints: Simple Constraints. (line 161)
! * EXTRA_ADDRESS_CONSTRAINT: Register Classes. (line 483)
! * EXTRA_CONSTRAINT: Register Classes. (line 434)
! * EXTRA_CONSTRAINT_STR: Register Classes. (line 455)
! * EXTRA_MEMORY_CONSTRAINT: Register Classes. (line 460)
! * EXTRA_SECTION_FUNCTIONS: Sections. (line 102)
! * EXTRA_SECTIONS: Sections. (line 97)
! * EXTRA_SPECS: Driver. (line 240)
! * extv instruction pattern: Standard Names. (line 506)
! * extzv instruction pattern: Standard Names. (line 520)
! * F in constraint: Simple Constraints. (line 82)
* FAIL: Expander Definitions.
! (line 80)
! * FATAL_EXIT_CODE: Host Misc. (line 6)
* FDL, GNU Free Documentation License: GNU Free Documentation License.
+ (line 6)
* features, optional, in system conventions: Run-time Target.
! (line 54)
! * ffs: Arithmetic. (line 172)
! * ffsM2 instruction pattern: Standard Names. (line 333)
! * FIELD_DECL: Declarations. (line 6)
! * file_end_indicate_exec_stack: File Framework. (line 41)
! * FILE_STMT: Function Bodies. (line 6)
! * FILE_STMT_FILENAME: Function Bodies. (line 6)
! * files and passes of the compiler: Passes. (line 6)
! * files, generated: Files. (line 6)
! * final pass: Passes. (line 409)
* final_absence_set: Automaton pipeline description.
! (line 172)
! * FINAL_PRESCAN_INSN: Instruction Output. (line 46)
* final_presence_set: Automaton pipeline description.
! (line 172)
! * FINAL_REG_PARM_STACK_SPACE: Stack Arguments. (line 71)
! * final_scan_insn: Function Entry. (line 186)
! * final_sequence: Instruction Output. (line 117)
! * FINALIZE_PIC: PIC. (line 31)
! * FIND_BASE_TERM: Addressing Modes. (line 130)
! * FINI_SECTION_ASM_OP: Sections. (line 74)
* finite state automaton minimization: Automaton pipeline description.
! (line 253)
! * FIRST_PARM_OFFSET: Frame Layout. (line 67)
! * FIRST_PARM_OFFSET and virtual registers: Regs and Memory. (line 65)
! * FIRST_PSEUDO_REGISTER: Register Basics. (line 9)
! * FIRST_STACK_REG: Stack Registers. (line 23)
! * FIRST_VIRTUAL_REGISTER: Regs and Memory. (line 51)
! * fix: Conversions. (line 67)
! * FIX_TRUNC_EXPR: Expression trees. (line 6)
! * fix_truncMN2 instruction pattern: Standard Names. (line 484)
! * fixed register: Register Basics. (line 15)
! * FIXED_REGISTERS: Register Basics. (line 15)
! * fixed_regs: Register Basics. (line 59)
! * fixMN2 instruction pattern: Standard Names. (line 467)
! * FIXUNS_TRUNC_LIKE_FIX_TRUNC: Misc. (line 123)
! * fixuns_truncMN2 instruction pattern: Standard Names. (line 488)
! * fixunsMN2 instruction pattern: Standard Names. (line 473)
! * flags in RTL expression: Flags. (line 6)
! * float: Conversions. (line 59)
! * FLOAT_EXPR: Expression trees. (line 6)
! * float_extend: Conversions. (line 34)
! * FLOAT_STORE_FLAG_VALUE: Misc. (line 264)
! * float_truncate: Conversions. (line 54)
! * FLOAT_TYPE_SIZE: Type Layout. (line 56)
! * FLOAT_WORDS_BIG_ENDIAN: Storage Layout. (line 43)
* FLOAT_WORDS_BIG_ENDIAN, (lack of) effect on subreg: Regs and Memory.
! (line 140)
! * floating point and cross compilation: Floating Point. (line 6)
! * Floating Point Emulation: Target Fragment. (line 15)
* floating point emulation library, US Software GOFAST: Library Calls.
! (line 34)
! * floatMN2 instruction pattern: Standard Names. (line 459)
! * floatunsMN2 instruction pattern: Standard Names. (line 463)
! * floorM2 instruction pattern: Standard Names. (line 293)
! * FOR_BODY: Function Bodies. (line 6)
! * FOR_COND: Function Bodies. (line 6)
! * FOR_EXPR: Function Bodies. (line 6)
! * FOR_INIT_STMT: Function Bodies. (line 6)
! * FOR_STMT: Function Bodies. (line 6)
! * FORCE_CODE_SECTION_ALIGN: Sections. (line 91)
! * FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN: Storage Layout. (line 155)
! * force_reg: Standard Names. (line 36)
! * frame layout: Frame Layout. (line 6)
! * FRAME_GROWS_DOWNWARD: Frame Layout. (line 31)
* FRAME_GROWS_DOWNWARD and virtual registers: Regs and Memory.
! (line 69)
! * frame_pointer_needed: Function Entry. (line 34)
! * FRAME_POINTER_REGNUM: Frame Registers. (line 14)
* FRAME_POINTER_REGNUM and virtual registers: Regs and Memory.
! (line 74)
! * FRAME_POINTER_REQUIRED: Elimination. (line 9)
! * frame_pointer_rtx: Frame Registers. (line 85)
! * frame_related: Flags. (line 246)
* frame_related, in insn, call_insn, jump_insn, barrier, and set: Flags.
! (line 120)
! * frame_related, in mem: Flags. (line 79)
! * frame_related, in reg: Flags. (line 107)
! * frame_related, in symbol_ref: Flags. (line 190)
! * ftruncM2 instruction pattern: Standard Names. (line 479)
! * function: Functions. (line 6)
! * function body: Function Bodies. (line 6)
! * function call conventions: Interface. (line 6)
! * function entry and exit: Function Entry. (line 6)
* function units, for scheduling: Old pipeline description.
! (line 6)
! * function-call insns: Calls. (line 6)
! * FUNCTION_ARG: Register Arguments. (line 11)
! * FUNCTION_ARG_ADVANCE: Register Arguments. (line 175)
! * FUNCTION_ARG_BOUNDARY: Register Arguments. (line 221)
! * FUNCTION_ARG_CALLEE_COPIES: Register Arguments. (line 113)
! * FUNCTION_ARG_PADDING: Register Arguments. (line 186)
! * FUNCTION_ARG_PARTIAL_NREGS: Register Arguments. (line 81)
! * FUNCTION_ARG_PASS_BY_REFERENCE: Register Arguments. (line 100)
! * FUNCTION_ARG_REGNO_P: Register Arguments. (line 226)
! * FUNCTION_BOUNDARY: Storage Layout. (line 165)
! * FUNCTION_DECL: Functions. (line 6)
! * FUNCTION_INCOMING_ARG: Register Arguments. (line 67)
! * FUNCTION_MODE: Misc. (line 301)
! * FUNCTION_OUTGOING_VALUE: Scalar Return. (line 36)
! * FUNCTION_PROFILER: Profiling. (line 9)
! * FUNCTION_TYPE: Types. (line 6)
! * FUNCTION_VALUE: Scalar Return. (line 10)
! * FUNCTION_VALUE_REGNO_P: Scalar Return. (line 70)
! * functions, leaf: Leaf Functions. (line 6)
! * fundamental type: Types. (line 6)
! * g in constraint: Simple Constraints. (line 108)
! * G in constraint: Simple Constraints. (line 86)
! * GCC and portability: Portability. (line 6)
! * GCC_DRIVER_HOST_INITIALIZATION: Host Misc. (line 36)
! * GCOV_TYPE_SIZE: Type Layout. (line 148)
! * ge: Comparisons. (line 69)
! * ge and attributes: Expressions. (line 64)
! * GE_EXPR: Expression trees. (line 6)
! * GEN_ERRNO_RTX: Library Calls. (line 61)
! * gencodes: Passes. (line 104)
! * genconfig: Passes. (line 445)
! * general_operand: RTL Template. (line 57)
! * GENERAL_REGS: Register Classes. (line 23)
! * generated files: Files. (line 6)
! * generating assembler output: Output Statement. (line 6)
! * generating insns: RTL Template. (line 6)
! * genflags: Passes. (line 104)
! * get_attr: Expressions. (line 80)
! * get_attr_length: Insn Lengths. (line 46)
! * GET_CLASS_NARROWEST_MODE: Machine Modes. (line 220)
! * GET_CODE: RTL Objects. (line 47)
! * get_frame_size: Elimination. (line 31)
! * get_insns: Insns. (line 34)
! * get_last_insn: Insns. (line 34)
! * GET_MODE: Machine Modes. (line 175)
! * GET_MODE_ALIGNMENT: Machine Modes. (line 207)
! * GET_MODE_BITSIZE: Machine Modes. (line 199)
! * GET_MODE_CLASS: Machine Modes. (line 189)
! * GET_MODE_MASK: Machine Modes. (line 202)
! * GET_MODE_NAME: Machine Modes. (line 186)
! * GET_MODE_NUNITS: Machine Modes. (line 216)
! * GET_MODE_SIZE: Machine Modes. (line 196)
! * GET_MODE_UNIT_SIZE: Machine Modes. (line 210)
! * GET_MODE_WIDER_MODE: Machine Modes. (line 192)
! * GET_RTX_CLASS: RTL Classes. (line 6)
! * GET_RTX_FORMAT: RTL Classes. (line 122)
! * GET_RTX_LENGTH: RTL Classes. (line 119)
! * geu: Comparisons. (line 69)
! * geu and attributes: Expressions. (line 64)
! * GGC: Type Information. (line 6)
! * global common subexpression elimination: Passes. (line 181)
! * global register allocation: Passes. (line 332)
! * GLOBAL_INIT_PRIORITY: Function Basics. (line 6)
! * global_regs: Register Basics. (line 59)
! * GO_IF_LEGITIMATE_ADDRESS: Addressing Modes. (line 48)
! * GO_IF_MODE_DEPENDENT_ADDRESS: Addressing Modes. (line 208)
! * GOFAST, floating point emulation library: Library Calls. (line 34)
! * gofast_maybe_init_libfuncs: Library Calls. (line 34)
! * GOTO_DESTINATION: Function Bodies. (line 6)
! * GOTO_FAKE_P: Function Bodies. (line 6)
! * GOTO_STMT: Function Bodies. (line 6)
! * graph coloring register allocation: Passes. (line 336)
! * greater than: Comparisons. (line 57)
! * gt: Comparisons. (line 57)
! * gt and attributes: Expressions. (line 64)
! * GT_EXPR: Expression trees. (line 6)
! * gtu: Comparisons. (line 61)
! * gtu and attributes: Expressions. (line 64)
! * GTY: Type Information. (line 6)
! * H in constraint: Simple Constraints. (line 86)
! * HANDLE_PRAGMA_PACK_PUSH_POP: Misc. (line 412)
! * HANDLE_SYSV_PRAGMA: Misc. (line 383)
! * HANDLER: Function Bodies. (line 6)
! * HANDLER_BODY: Function Bodies. (line 6)
! * HANDLER_PARMS: Function Bodies. (line 6)
! * hard registers: Regs and Memory. (line 9)
! * HARD_FRAME_POINTER_REGNUM: Frame Registers. (line 20)
! * HARD_REGNO_CALL_PART_CLOBBERED: Register Basics. (line 53)
! * HARD_REGNO_CALLER_SAVE_MODE: Caller Saves. (line 20)
* HARD_REGNO_MODE_OK: Values in Registers.
+ (line 31)
* HARD_REGNO_NREGS: Values in Registers.
+ (line 11)
* HAS_INIT_SECTION: Macros for Initialization.
! (line 19)
! * HAVE_DOS_BASED_FILE_SYSTEM: Filesystem. (line 11)
! * HAVE_POST_DECREMENT: Addressing Modes. (line 12)
! * HAVE_POST_INCREMENT: Addressing Modes. (line 11)
! * HAVE_POST_MODIFY_DISP: Addressing Modes. (line 18)
! * HAVE_POST_MODIFY_REG: Addressing Modes. (line 24)
! * HAVE_PRE_DECREMENT: Addressing Modes. (line 10)
! * HAVE_PRE_INCREMENT: Addressing Modes. (line 9)
! * HAVE_PRE_MODIFY_DISP: Addressing Modes. (line 17)
! * HAVE_PRE_MODIFY_REG: Addressing Modes. (line 23)
! * HCmode: Machine Modes. (line 111)
! * HFmode: Machine Modes. (line 58)
! * high: Constants. (line 114)
! * HImode: Machine Modes. (line 29)
! * HImode, in insn: Insns. (line 241)
! * host configuration: Host Config. (line 6)
! * host functions: Host Common. (line 6)
! * host hooks: Host Common. (line 6)
! * host makefile fragment: Host Fragment. (line 6)
! * HOST_BIT_BUCKET: Filesystem. (line 51)
! * HOST_EXECUTABLE_SUFFIX: Filesystem. (line 45)
! * HOST_HOOKS_EXTRA_SIGNALS: Host Common. (line 12)
! * HOST_HOOKS_GT_PCH_USE_ADDRESS: Host Common. (line 26)
! * HOST_OBJECT_SUFFIX: Filesystem. (line 40)
! * HOT_TEXT_SECTION_NAME: Sections. (line 23)
! * I in constraint: Simple Constraints. (line 69)
! * i in constraint: Simple Constraints. (line 58)
! * IBM_FLOAT_FORMAT: Storage Layout. (line 396)
! * identifier: Identifiers. (line 6)
! * IDENTIFIER_LENGTH: Identifiers. (line 20)
! * IDENTIFIER_NODE: Identifiers. (line 6)
! * IDENTIFIER_OPNAME_P: Identifiers. (line 25)
! * IDENTIFIER_POINTER: Identifiers. (line 15)
! * IDENTIFIER_TYPENAME_P: Identifiers. (line 31)
! * IEEE_FLOAT_FORMAT: Storage Layout. (line 386)
! * if conversion: Passes. (line 277)
! * IF_COND: Function Bodies. (line 6)
! * if_marked: GTY Options. (line 143)
! * IF_STMT: Function Bodies. (line 6)
! * if_then_else: Comparisons. (line 77)
! * if_then_else and attributes: Expressions. (line 32)
! * if_then_else usage: Side Effects. (line 52)
! * IFCVT_EXTRA_FIELDS: Misc. (line 553)
! * IFCVT_INIT_EXTRA_FIELDS: Misc. (line 548)
! * IFCVT_MODIFY_CANCEL: Misc. (line 542)
! * IFCVT_MODIFY_FINAL: Misc. (line 536)
! * IFCVT_MODIFY_INSN: Misc. (line 530)
! * IFCVT_MODIFY_MULTIPLE_TESTS: Misc. (line 523)
! * IFCVT_MODIFY_TESTS: Misc. (line 512)
! * IMAGPART_EXPR: Expression trees. (line 6)
! * immediate_operand: RTL Template. (line 72)
! * IMMEDIATE_PREFIX: Instruction Output. (line 127)
! * in_data: Sections. (line 96)
! * in_struct: Flags. (line 261)
! * in_struct, in code_label and note: Flags. (line 53)
! * in_struct, in insn: Flags. (line 29)
! * in_struct, in insn and jump_insn and call_insn: Flags. (line 38)
! * in_struct, in insn, jump_insn and call_insn: Flags. (line 173)
! * in_struct, in label_ref: Flags. (line 48)
! * in_struct, in mem: Flags. (line 64)
! * in_struct, in reg: Flags. (line 102)
! * in_struct, in subreg: Flags. (line 212)
! * in_text: Sections. (line 96)
! * include: Including Patterns. (line 6)
! * INCLUDE_DEFAULTS: Driver. (line 420)
! * inclusive-or, bitwise: Arithmetic. (line 137)
! * INCOMING_FRAME_SP_OFFSET: Frame Layout. (line 151)
! * INCOMING_REGNO: Register Basics. (line 98)
! * INCOMING_RETURN_ADDR_RTX: Frame Layout. (line 123)
! * INDEX_REG_CLASS: Register Classes. (line 118)
! * indirect_jump instruction pattern: Standard Names. (line 714)
! * INDIRECT_REF: Expression trees. (line 6)
! * INIT_CUMULATIVE_ARGS: Register Arguments. (line 138)
! * INIT_CUMULATIVE_INCOMING_ARGS: Register Arguments. (line 166)
! * INIT_CUMULATIVE_LIBCALL_ARGS: Register Arguments. (line 159)
! * INIT_ENVIRONMENT: Driver. (line 359)
! * INIT_EXPANDERS: Per-Function Data. (line 39)
! * INIT_EXPR: Expression trees. (line 6)
! * init_machine_status: Per-Function Data. (line 45)
! * init_one_libfunc: Library Calls. (line 15)
* INIT_SECTION_ASM_OP <1>: Macros for Initialization.
! (line 10)
! * INIT_SECTION_ASM_OP: Sections. (line 68)
! * INITIAL_ELIMINATION_OFFSET: Elimination. (line 79)
! * INITIAL_FRAME_POINTER_OFFSET: Elimination. (line 32)
! * initialization routines: Initialization. (line 6)
! * INITIALIZE_TRAMPOLINE: Trampolines. (line 56)
! * inline on rtx, automatic: Passes. (line 113)
! * inline on trees, automatic: Passes. (line 73)
! * inlining: Target Attributes. (line 69)
! * insn: Insns. (line 64)
! * insn and /f: Flags. (line 120)
! * insn and /i: Flags. (line 147)
! * insn and /j: Flags. (line 182)
! * insn and /s: Flags. (line 29)
! * insn and /u: Flags. (line 24)
! * insn and /v: Flags. (line 33)
! * insn attributes: Insn Attributes. (line 6)
* insn canonicalization: Insn Canonicalizations.
! (line 6)
! * insn includes: Including Patterns. (line 6)
! * insn lengths, computing: Insn Lengths. (line 6)
! * insn splitting: Insn Splitting. (line 6)
* insn-attr.h: Defining Attributes.
! (line 24)
! * INSN_ANNULLED_BRANCH_P: Flags. (line 24)
! * INSN_CODE: Insns. (line 267)
! * INSN_DEAD_CODE_P: Flags. (line 29)
! * INSN_DELETED_P: Flags. (line 33)
! * INSN_FROM_TARGET_P: Flags. (line 38)
! * insn_list: Insns. (line 530)
! * insn_list and /i: Flags. (line 147)
! * INSN_REFERENCES_ARE_DELAYED: Misc. (line 461)
! * INSN_SETS_ARE_DELAYED: Misc. (line 450)
! * INSN_UID: Insns. (line 23)
! * insns: Insns. (line 6)
! * insns, generating: RTL Template. (line 6)
! * insns, recognizing: RTL Template. (line 6)
! * instruction attributes: Insn Attributes. (line 6)
! * instruction combination: Passes. (line 266)
* instruction latency time <1>: Comparison of the two descriptions.
+ (line 6)
* instruction latency time <2>: Automaton pipeline description.
+ (line 63)
* instruction latency time: Processor pipeline description.
! (line 6)
! * instruction patterns: Patterns. (line 6)
! * instruction recognizer: Passes. (line 450)
! * instruction scheduling: Passes. (line 296)
! * instruction splitting: Insn Splitting. (line 6)
! * insv instruction pattern: Standard Names. (line 523)
! * INT_TYPE_SIZE: Type Layout. (line 12)
! * INTEGER_CST: Expression trees. (line 6)
! * INTEGER_TYPE: Types. (line 6)
! * INTEGRATE_THRESHOLD: Misc. (line 306)
! * integrated: Flags. (line 297)
* integrated, in insn, call_insn, jump_insn, barrier, code_label, insn_list, const, and note: Flags.
! (line 147)
! * integrated, in reg: Flags. (line 97)
! * integrated, in symbol_ref: Flags. (line 227)
! * Interdependence of Patterns: Dependent Patterns. (line 6)
! * interfacing to GCC output: Interface. (line 6)
* interlock delays <1>: Comparison of the two descriptions.
+ (line 6)
* interlock delays: Processor pipeline description.
! (line 6)
! * INTMAX_TYPE: Type Layout. (line 164)
! * introduction: Top. (line 6)
* INVOKE__main: Macros for Initialization.
! (line 51)
! * ior: Arithmetic. (line 137)
! * ior and attributes: Expressions. (line 50)
* ior, canonicalization of: Insn Canonicalizations.
! (line 48)
! * iorM3 instruction pattern: Standard Names. (line 167)
! * IS_ASM_LOGICAL_LINE_SEPARATOR: Data Output. (line 120)
! * IS_COSTLY_DEPENDENCE: Scheduling. (line 240)
! * jump: Flags. (line 310)
! * jump bypassing: Passes. (line 223)
! * jump instruction pattern: Standard Names. (line 605)
! * jump instruction patterns: Jump Patterns. (line 6)
! * jump instructions and set: Side Effects. (line 52)
! * jump optimization: Passes. (line 139)
! * jump threading: Passes. (line 165)
! * jump, in call_insn: Flags. (line 186)
! * jump, in insn: Flags. (line 182)
! * jump, in mem: Flags. (line 73)
! * JUMP_ALIGN: Alignment Output. (line 9)
! * jump_insn: Insns. (line 74)
! * jump_insn and /f: Flags. (line 120)
! * jump_insn and /i: Flags. (line 147)
! * jump_insn and /s: Flags. (line 38)
! * jump_insn and /u: Flags. (line 24)
! * jump_insn and /v: Flags. (line 33)
! * JUMP_LABEL: Insns. (line 80)
! * JUMP_TABLES_IN_TEXT_SECTION: Sections. (line 108)
! * LABEL_ALIGN: Alignment Output. (line 52)
! * LABEL_ALIGN_AFTER_BARRIER: Alignment Output. (line 22)
! * LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP: Alignment Output. (line 30)
! * LABEL_ALIGN_MAX_SKIP: Alignment Output. (line 62)
! * LABEL_ALT_ENTRY_P: Insns. (line 146)
! * LABEL_DECL: Declarations. (line 6)
! * LABEL_KIND: Insns. (line 146)
! * LABEL_NUSES: Insns. (line 142)
! * LABEL_OUTSIDE_LOOP_P: Flags. (line 48)
! * LABEL_PRESERVE_P: Flags. (line 53)
! * label_ref: Constants. (line 94)
! * label_ref and /s: Flags. (line 48)
! * label_ref and /v: Flags. (line 59)
! * label_ref, RTL sharing: Sharing. (line 35)
! * LABEL_REF_NONLOCAL_P: Flags. (line 59)
! * LABEL_STMT: Function Bodies. (line 6)
! * LABEL_STMT_LABEL: Function Bodies. (line 6)
! * large return values: Aggregate Return. (line 6)
! * LARGEST_EXPONENT_IS_NORMAL: Storage Layout. (line 472)
! * LAST_STACK_REG: Stack Registers. (line 27)
! * LAST_VIRTUAL_REGISTER: Regs and Memory. (line 51)
* LD_FINI_SWITCH: Macros for Initialization.
+ (line 29)
* LD_INIT_SWITCH: Macros for Initialization.
+ (line 25)
* LDD_SUFFIX: Macros for Initialization.
! (line 121)
! * le: Comparisons. (line 73)
! * le and attributes: Expressions. (line 64)
! * LE_EXPR: Expression trees. (line 6)
! * leaf functions: Leaf Functions. (line 6)
! * leaf_function_p: Standard Names. (line 676)
! * LEAF_REG_REMAP: Leaf Functions. (line 39)
! * LEAF_REGISTERS: Leaf Functions. (line 25)
! * left rotate: Arithmetic. (line 160)
! * left shift: Arithmetic. (line 147)
! * LEGITIMATE_CONSTANT_P: Addressing Modes. (line 223)
! * LEGITIMATE_PIC_OPERAND_P: PIC. (line 47)
! * LEGITIMIZE_ADDRESS: Addressing Modes. (line 140)
! * LEGITIMIZE_RELOAD_ADDRESS: Addressing Modes. (line 163)
! * length: GTY Options. (line 43)
! * less than: Comparisons. (line 65)
! * less than or equal: Comparisons. (line 73)
! * leu: Comparisons. (line 73)
! * leu and attributes: Expressions. (line 64)
! * LIB2FUNCS_EXTRA: Target Fragment. (line 11)
! * LIB_SPEC: Driver. (line 170)
! * LIBCALL_VALUE: Scalar Return. (line 53)
! * libgcc.a: Library Calls. (line 6)
! * LIBGCC2_CFLAGS: Target Fragment. (line 8)
! * LIBGCC2_WORDS_BIG_ENDIAN: Storage Layout. (line 36)
! * LIBGCC_SPEC: Driver. (line 178)
! * library subroutine names: Library Calls. (line 6)
! * LIBRARY_PATH_ENV: Misc. (line 492)
! * LIMIT_RELOAD_CLASS: Register Classes. (line 213)
! * LINK_COMMAND_SPEC: Driver. (line 303)
! * LINK_EH_SPEC: Driver. (line 200)
! * LINK_ELIMINATE_DUPLICATE_LDIRECTORIES: Driver. (line 313)
! * LINK_GCC_C_SEQUENCE_SPEC: Driver. (line 299)
! * LINK_LIBGCC_SPECIAL: Driver. (line 285)
! * LINK_LIBGCC_SPECIAL_1: Driver. (line 292)
! * LINK_SPEC: Driver. (line 163)
! * linkage: Function Basics. (line 6)
! * list: Containers. (line 6)
! * lo_sum: Arithmetic. (line 18)
! * load address instruction: Simple Constraints. (line 152)
! * LOAD_EXTEND_OP: Misc. (line 94)
! * load_multiple instruction pattern: Standard Names. (line 125)
! * local register allocation: Passes. (line 322)
! * LOCAL_ALIGNMENT: Storage Layout. (line 226)
! * LOCAL_CLASS_P: Classes. (line 66)
! * LOCAL_INCLUDE_DIR: Driver. (line 366)
! * LOCAL_LABEL_PREFIX: Instruction Output. (line 125)
! * LOCAL_REGNO: Register Basics. (line 112)
! * LOG_LINKS: Insns. (line 286)
! * logical-and, bitwise: Arithmetic. (line 132)
! * logM2 instruction pattern: Standard Names. (line 266)
! * LONG_DOUBLE_TYPE_SIZE: Type Layout. (line 65)
! * LONG_LONG_TYPE_SIZE: Type Layout. (line 40)
! * LONG_TYPE_SIZE: Type Layout. (line 22)
! * longjmp and automatic variables: Interface. (line 52)
! * loop optimization: Passes. (line 204)
! * LOOP_ALIGN: Alignment Output. (line 35)
! * LOOP_ALIGN_MAX_SKIP: Alignment Output. (line 48)
! * LOOP_EXPR: Expression trees. (line 6)
! * looping instruction patterns: Looping Patterns. (line 6)
! * LSHIFT_EXPR: Expression trees. (line 6)
! * lshiftrt: Arithmetic. (line 155)
! * lshiftrt and attributes: Expressions. (line 64)
! * lshrM3 instruction pattern: Standard Names. (line 224)
! * lt: Comparisons. (line 65)
! * lt and attributes: Expressions. (line 64)
! * LT_EXPR: Expression trees. (line 6)
! * ltu: Comparisons. (line 65)
! * m in constraint: Simple Constraints. (line 17)
! * machine attributes: Target Attributes. (line 6)
! * machine description macros: Target Macros. (line 6)
! * machine descriptions: Machine Desc. (line 6)
! * machine mode conversions: Conversions. (line 6)
! * machine modes: Machine Modes. (line 6)
* machine specific constraints: Machine Constraints.
! (line 6)
! * machine_mode: Condition Code. (line 155)
! * macros, target description: Target Macros. (line 6)
! * MAKE_DECL_ONE_ONLY: Label Output. (line 198)
* make_safe_from: Expander Definitions.
! (line 148)
! * makefile fragment: Fragments. (line 6)
! * makefile targets: Makefile. (line 6)
! * marking roots: GGC Roots. (line 6)
* MASK_RETURN_ADDR: Exception Region Output.
! (line 29)
! * match_dup <1>: define_peephole2. (line 28)
! * match_dup: RTL Template. (line 94)
! * match_dup and attributes: Insn Lengths. (line 16)
! * match_insn: RTL Template. (line 244)
! * match_insn2: RTL Template. (line 253)
! * match_op_dup: RTL Template. (line 184)
! * match_operand: RTL Template. (line 16)
! * match_operand and attributes: Expressions. (line 55)
! * match_operator: RTL Template. (line 116)
! * match_par_dup: RTL Template. (line 240)
! * match_parallel: RTL Template. (line 193)
! * match_scratch <1>: define_peephole2. (line 28)
! * match_scratch: RTL Template. (line 79)
! * matching constraint: Simple Constraints. (line 130)
! * matching operands: Output Template. (line 50)
* math library: Soft float library routines.
! (line 6)
! * math, in RTL: Arithmetic. (line 6)
! * MATH_LIBRARY: Misc. (line 485)
! * matherr: Library Calls. (line 48)
! * MAX_BITS_PER_WORD: Storage Layout. (line 61)
! * MAX_CONDITIONAL_EXECUTE: Misc. (line 506)
! * MAX_DFA_ISSUE_RATE: Scheduling. (line 283)
! * MAX_FIXED_MODE_SIZE: Storage Layout. (line 350)
! * MAX_LONG_DOUBLE_TYPE_SIZE: Type Layout. (line 70)
! * MAX_LONG_TYPE_SIZE: Type Layout. (line 33)
! * MAX_MOVE_MAX: Misc. (line 133)
! * MAX_OFILE_ALIGNMENT: Storage Layout. (line 194)
! * MAX_REGS_PER_ADDRESS: Addressing Modes. (line 42)
! * MAX_WCHAR_TYPE_SIZE: Type Layout. (line 141)
! * maxM3 instruction pattern: Standard Names. (line 171)
! * MAYBE_REG_PARM_STACK_SPACE: Stack Arguments. (line 70)
! * maybe_undef: GTY Options. (line 158)
! * mcount: Profiling. (line 12)
! * MD_ASM_CLOBBERS: Misc. (line 481)
! * MD_CAN_REDIRECT_BRANCH: Misc. (line 599)
! * MD_EXEC_PREFIX: Driver. (line 334)
! * MD_FALLBACK_FRAME_STATE_FOR: Exception Handling. (line 94)
! * MD_HANDLE_UNWABI: Exception Handling. (line 112)
! * MD_STARTFILE_PREFIX: Driver. (line 348)
! * MD_STARTFILE_PREFIX_1: Driver. (line 354)
! * mem: Regs and Memory. (line 249)
! * mem and /c: Flags. (line 93)
! * mem and /f: Flags. (line 79)
! * mem and /j: Flags. (line 73)
! * mem and /s: Flags. (line 64)
! * mem and /u: Flags. (line 153)
! * mem and /v: Flags. (line 88)
! * mem, RTL sharing: Sharing. (line 40)
! * MEM_ALIAS_SET: Special Accessors. (line 9)
! * MEM_ALIGN: Special Accessors. (line 36)
! * MEM_EXPR: Special Accessors. (line 20)
! * MEM_IN_STRUCT_P: Flags. (line 64)
! * MEM_KEEP_ALIAS_SET_P: Flags. (line 73)
! * MEM_NOTRAP_P: Flags. (line 93)
! * MEM_OFFSET: Special Accessors. (line 28)
! * MEM_SCALAR_P: Flags. (line 79)
! * MEM_SIZE: Special Accessors. (line 31)
! * MEM_VOLATILE_P: Flags. (line 88)
! * MEMBER_TYPE_FORCES_BLK: Storage Layout. (line 328)
! * memcpy, implicit usage: Library Calls. (line 66)
! * memmove, implicit usage: Library Calls. (line 66)
! * memory reference, nonoffsettable: Simple Constraints. (line 251)
! * memory references in constraints: Simple Constraints. (line 17)
! * MEMORY_MOVE_COST: Costs. (line 29)
! * memset, implicit usage: Library Calls. (line 66)
! * METHOD_TYPE: Types. (line 6)
! * MIN_UNITS_PER_WORD: Storage Layout. (line 70)
! * MINIMUM_ATOMIC_ALIGNMENT: Storage Layout. (line 172)
! * minM3 instruction pattern: Standard Names. (line 171)
! * minus: Arithmetic. (line 27)
! * minus and attributes: Expressions. (line 64)
* minus, canonicalization of: Insn Canonicalizations.
! (line 21)
! * MINUS_EXPR: Expression trees. (line 6)
! * MIPS coprocessor-definition macros: MIPS Coprocessors. (line 6)
! * mod: Arithmetic. (line 113)
! * mod and attributes: Expressions. (line 64)
! * mode classes: Machine Modes. (line 134)
! * mode switching: Mode Switching. (line 6)
! * MODE_AFTER: Mode Switching. (line 49)
! * MODE_BASE_REG_CLASS: Register Classes. (line 112)
! * MODE_CC: Machine Modes. (line 163)
! * MODE_COMPLEX_FLOAT: Machine Modes. (line 155)
! * MODE_COMPLEX_INT: Machine Modes. (line 152)
! * MODE_ENTRY: Mode Switching. (line 54)
! * MODE_EXIT: Mode Switching. (line 60)
! * MODE_FLOAT: Machine Modes. (line 148)
! * MODE_FUNCTION: Machine Modes. (line 159)
! * MODE_HAS_INFINITIES: Storage Layout. (line 420)
! * MODE_HAS_NANS: Storage Layout. (line 410)
! * MODE_HAS_SIGN_DEPENDENT_ROUNDING: Storage Layout. (line 442)
! * MODE_HAS_SIGNED_ZEROS: Storage Layout. (line 426)
! * MODE_INT: Machine Modes. (line 140)
! * MODE_NEEDED: Mode Switching. (line 42)
! * MODE_PARTIAL_INT: Machine Modes. (line 144)
! * MODE_PRIORITY_TO_MODE: Mode Switching. (line 66)
! * MODE_RANDOM: Machine Modes. (line 168)
* MODES_TIEABLE_P: Values in Registers.
! (line 92)
! * modifiers in constraints: Modifiers. (line 6)
! * MODIFY_EXPR: Expression trees. (line 6)
! * MODIFY_JNI_METHOD_CALL: Misc. (line 642)
! * MODIFY_TARGET_NAME: Driver. (line 375)
! * modM3 instruction pattern: Standard Names. (line 167)
! * MOVE_BY_PIECES_P: Costs. (line 104)
! * MOVE_MAX: Misc. (line 128)
! * MOVE_MAX_PIECES: Costs. (line 110)
! * MOVE_RATIO: Costs. (line 91)
! * movM instruction pattern: Standard Names. (line 11)
! * movMODEcc instruction pattern: Standard Names. (line 533)
! * movstrictM instruction pattern: Standard Names. (line 119)
! * movstrM instruction pattern: Standard Names. (line 390)
! * mulhisi3 instruction pattern: Standard Names. (line 178)
! * mulM3 instruction pattern: Standard Names. (line 167)
! * mulqihi3 instruction pattern: Standard Names. (line 182)
! * mulsidi3 instruction pattern: Standard Names. (line 182)
! * mult: Arithmetic. (line 84)
! * mult and attributes: Expressions. (line 64)
* mult, canonicalization of: Insn Canonicalizations.
! (line 21)
! * MULT_EXPR: Expression trees. (line 6)
! * MULTILIB_DEFAULTS: Driver. (line 319)
! * MULTILIB_DIRNAMES: Target Fragment. (line 64)
! * MULTILIB_EXCEPTIONS: Target Fragment. (line 84)
! * MULTILIB_EXTRA_OPTS: Target Fragment. (line 96)
! * MULTILIB_MATCHES: Target Fragment. (line 77)
! * MULTILIB_OPTIONS: Target Fragment. (line 44)
! * multiple alternative constraints: Multi-Alternative. (line 6)
! * MULTIPLE_SYMBOL_SPACES: Misc. (line 474)
! * multiplication: Arithmetic. (line 84)
! * MUST_PASS_IN_STACK: Register Arguments. (line 61)
! * MUST_PASS_IN_STACK, and FUNCTION_ARG: Register Arguments. (line 52)
* MUST_USE_SJLJ_EXCEPTIONS: Exception Region Output.
! (line 49)
! * n in constraint: Simple Constraints. (line 63)
! * N_REG_CLASSES: Register Classes. (line 76)
! * name: Identifiers. (line 6)
! * named patterns and conditions: Patterns. (line 48)
! * names, pattern: Standard Names. (line 6)
! * namespace: Namespaces. (line 6)
! * namespace, class, scope: Scopes. (line 6)
! * NAMESPACE_DECL <1>: Declarations. (line 6)
! * NAMESPACE_DECL: Namespaces. (line 6)
! * ne: Comparisons. (line 53)
! * ne and attributes: Expressions. (line 64)
! * NE_EXPR: Expression trees. (line 6)
! * nearbyintM2 instruction pattern: Standard Names. (line 325)
! * neg: Arithmetic. (line 80)
! * neg and attributes: Expressions. (line 64)
* neg, canonicalization of: Insn Canonicalizations.
! (line 21)
! * NEGATE_EXPR: Expression trees. (line 6)
! * negM2 instruction pattern: Standard Names. (line 228)
! * nested functions, trampolines for: Trampolines. (line 6)
! * next_cc0_user: Jump Patterns. (line 64)
! * NEXT_INSN: Insns. (line 30)
! * NEXT_OBJC_RUNTIME: Library Calls. (line 80)
! * nil: RTL Objects. (line 73)
! * NO_DBX_FUNCTION_END: DBX Hooks. (line 80)
! * NO_DOLLAR_IN_LABEL: Misc. (line 429)
! * NO_DOT_IN_LABEL: Misc. (line 435)
! * NO_FUNCTION_CSE: Costs. (line 178)
! * NO_IMPLICIT_EXTERN_C: Misc. (line 326)
! * no_new_pseudos: Standard Names. (line 77)
! * NO_PROFILE_COUNTERS: Profiling. (line 28)
! * NO_RECURSIVE_FUNCTION_CSE: Costs. (line 182)
! * NO_REGS: Register Classes. (line 17)
! * NON_SAVING_SETJMP: Register Basics. (line 91)
* nondeterministic finite state automaton: Automaton pipeline description.
! (line 253)
! * nonlocal_goto instruction pattern: Standard Names. (line 896)
* nonlocal_goto_receiver instruction pattern: Standard Names.
! (line 913)
! * nonoffsettable memory reference: Simple Constraints. (line 251)
! * nop instruction pattern: Standard Names. (line 709)
! * NOP_EXPR: Expression trees. (line 6)
! * not: Arithmetic. (line 128)
! * not and attributes: Expressions. (line 50)
! * not equal: Comparisons. (line 53)
* not, canonicalization of: Insn Canonicalizations.
! (line 21)
! * note: Insns. (line 174)
! * note and /i: Flags. (line 53)
! * note and /v: Flags. (line 33)
! * NOTE_INSN_BLOCK_BEG: Insns. (line 199)
! * NOTE_INSN_BLOCK_END: Insns. (line 199)
! * NOTE_INSN_DELETED: Insns. (line 189)
! * NOTE_INSN_DELETED_LABEL: Insns. (line 194)
! * NOTE_INSN_EH_REGION_BEG: Insns. (line 205)
! * NOTE_INSN_EH_REGION_END: Insns. (line 205)
! * NOTE_INSN_FUNCTION_END: Insns. (line 229)
! * NOTE_INSN_LOOP_BEG: Insns. (line 213)
! * NOTE_INSN_LOOP_CONT: Insns. (line 219)
! * NOTE_INSN_LOOP_END: Insns. (line 213)
! * NOTE_INSN_LOOP_VTOP: Insns. (line 223)
! * NOTE_INSN_SETJMP: Insns. (line 235)
! * NOTE_LINE_NUMBER: Insns. (line 174)
! * NOTE_SOURCE_FILE: Insns. (line 174)
! * NOTICE_UPDATE_CC: Condition Code. (line 33)
! * NUM_MACHINE_MODES: Machine Modes. (line 181)
! * NUM_MODES_FOR_MODE_SWITCHING: Mode Switching. (line 30)
! * o in constraint: Simple Constraints. (line 21)
! * OBJC_GEN_METHOD_LABEL: Label Output. (line 367)
* OBJECT_FORMAT_COFF: Macros for Initialization.
! (line 97)
! * OFFSET_TYPE: Types. (line 6)
! * offsettable address: Simple Constraints. (line 21)
! * OImode: Machine Modes. (line 51)
* old pipeline description <1>: Comparison of the two descriptions.
+ (line 6)
* old pipeline description: Old pipeline description.
! (line 6)
! * one_cmplM2 instruction pattern: Standard Names. (line 369)
! * operand access: Accessors. (line 6)
! * operand constraints: Constraints. (line 6)
! * operand substitution: Output Template. (line 6)
! * operands: Patterns. (line 54)
! * OPTIMIZATION_OPTIONS: Run-time Target. (line 201)
! * OPTIMIZE_MODE_SWITCHING: Mode Switching. (line 9)
! * OPTION_DEFAULT_SPECS: Driver. (line 88)
! * optional hardware or system features: Run-time Target. (line 54)
! * options, directory search: Including Patterns. (line 44)
! * order of register allocation: Allocation Order. (line 6)
! * ORDER_REGS_FOR_LOCAL_ALLOC: Allocation Order. (line 23)
! * Ordering of Patterns: Pattern Ordering. (line 6)
! * ORIGINAL_REGNO: Special Accessors. (line 40)
! * other register constraints: Simple Constraints. (line 161)
! * OUTGOING_REG_PARM_STACK_SPACE: Stack Arguments. (line 98)
! * OUTGOING_REGNO: Register Basics. (line 105)
! * output of assembler code: File Framework. (line 6)
! * output statements: Output Statement. (line 6)
! * output templates: Output Template. (line 6)
! * OUTPUT_ADDR_CONST_EXTRA: Data Output. (line 39)
! * output_asm_insn: Output Statement. (line 53)
! * OUTPUT_QUOTED_STRING: File Framework. (line 76)
! * OVERLOAD: Functions. (line 6)
! * OVERRIDE_OPTIONS: Run-time Target. (line 191)
! * OVL_CURRENT: Functions. (line 6)
! * OVL_NEXT: Functions. (line 6)
! * p in constraint: Simple Constraints. (line 152)
! * PAD_VARARGS_DOWN: Register Arguments. (line 203)
! * parallel: Side Effects. (line 197)
! * param_is: GTY Options. (line 107)
! * parameters, miscellaneous: Misc. (line 6)
! * parameters, precompiled headers: PCH Target. (line 6)
! * paramN_is: GTY Options. (line 119)
! * parity: Arithmetic. (line 198)
! * parityM2 instruction pattern: Standard Names. (line 363)
! * PARM_BOUNDARY: Storage Layout. (line 134)
! * PARM_DECL: Declarations. (line 6)
* PARSE_LDD_OUTPUT: Macros for Initialization.
! (line 126)
! * parsing pass: Passes. (line 13)
! * passes and files of the compiler: Passes. (line 6)
! * passing arguments: Interface. (line 36)
! * PATH_SEPARATOR: Filesystem. (line 31)
! * PATTERN: Insns. (line 257)
! * pattern conditions: Patterns. (line 44)
! * pattern names: Standard Names. (line 6)
! * Pattern Ordering: Pattern Ordering. (line 6)
! * patterns: Patterns. (line 6)
! * pc: Regs and Memory. (line 236)
! * pc and attributes: Insn Lengths. (line 20)
! * pc, RTL sharing: Sharing. (line 25)
! * PC_REGNUM: Register Basics. (line 119)
! * pc_rtx: Regs and Memory. (line 241)
! * PCC_BITFIELD_TYPE_MATTERS: Storage Layout. (line 256)
! * PCC_STATIC_STRUCT_RETURN: Aggregate Return. (line 60)
! * PDImode: Machine Modes. (line 40)
! * peephole optimization: Passes. (line 409)
! * peephole optimization, RTL representation: Side Effects. (line 231)
* peephole optimizer definitions: Peephole Definitions.
! (line 6)
! * per-function data: Per-Function Data. (line 6)
! * percent sign: Output Template. (line 6)
! * PIC: PIC. (line 6)
! * PIC_OFFSET_TABLE_REG_CALL_CLOBBERED: PIC. (line 26)
! * PIC_OFFSET_TABLE_REGNUM: PIC. (line 16)
* pipeline hazard recognizer <1>: Comparison of the two descriptions.
+ (line 6)
* pipeline hazard recognizer <2>: Automaton pipeline description.
+ (line 10)
* pipeline hazard recognizer: Processor pipeline description.
! (line 6)
! * plus: Arithmetic. (line 14)
! * plus and attributes: Expressions. (line 64)
* plus, canonicalization of: Insn Canonicalizations.
! (line 21)
! * PLUS_EXPR: Expression trees. (line 6)
! * Pmode: Misc. (line 289)
! * pointer: Types. (line 6)
! * POINTER_SIZE: Storage Layout. (line 76)
! * POINTER_TYPE: Types. (line 6)
! * POINTERS_EXTEND_UNSIGNED: Storage Layout. (line 82)
! * popcount: Arithmetic. (line 194)
! * popcountM2 instruction pattern: Standard Names. (line 357)
! * portability: Portability. (line 6)
! * position independent code: PIC. (line 6)
! * post_dec: Incdec. (line 25)
! * post_inc: Incdec. (line 30)
! * post_modify: Incdec. (line 33)
! * POWI_MAX_MULTS: Misc. (line 690)
! * powM3 instruction pattern: Standard Names. (line 274)
! * pragma: Misc. (line 331)
! * pre_dec: Incdec. (line 8)
! * PRE_GCC3_DWARF_FRAME_REGISTERS: Frame Registers. (line 110)
! * pre_inc: Incdec. (line 22)
! * pre_modify: Incdec. (line 51)
! * predefined macros: Run-time Target. (line 6)
! * PREDICATE_CODES: Misc. (line 9)
* predication: Conditional Execution.
! (line 6)
! * PREFERRED_DEBUGGING_TYPE: All Debuggers. (line 42)
! * PREFERRED_OUTPUT_RELOAD_CLASS: Register Classes. (line 208)
! * PREFERRED_RELOAD_CLASS: Register Classes. (line 181)
! * PREFERRED_STACK_BOUNDARY: Storage Layout. (line 148)
! * prefetch: Side Effects. (line 305)
! * prefetch instruction pattern: Standard Names. (line 1033)
* presence_set: Automaton pipeline description.
! (line 172)
! * prev_active_insn: define_peephole. (line 60)
! * prev_cc0_setter: Jump Patterns. (line 64)
! * PREV_INSN: Insns. (line 26)
! * PRINT_OPERAND: Instruction Output. (line 68)
! * PRINT_OPERAND_ADDRESS: Instruction Output. (line 96)
! * PRINT_OPERAND_PUNCT_VALID_P: Instruction Output. (line 89)
* processor functional units <1>: Comparison of the two descriptions.
+ (line 6)
* processor functional units <2>: Automaton pipeline description.
+ (line 25)
* processor functional units: Processor pipeline description.
+ (line 6)
* processor pipeline description: Processor pipeline description.
! (line 6)
! * product: Arithmetic. (line 84)
! * PROFILE_BEFORE_PROLOGUE: Profiling. (line 35)
! * PROFILE_HOOK: Profiling. (line 23)
! * profiling, code generation: Profiling. (line 6)
! * program counter: Regs and Memory. (line 237)
! * prologue: Function Entry. (line 6)
! * prologue instruction pattern: Standard Names. (line 979)
! * PROMOTE_FOR_CALL_ONLY: Storage Layout. (line 127)
! * PROMOTE_MODE: Storage Layout. (line 92)
! * pseudo registers: Regs and Memory. (line 9)
! * PSImode: Machine Modes. (line 32)
! * PTRDIFF_TYPE: Type Layout. (line 120)
! * PTRMEM_CST: Expression trees. (line 6)
! * PTRMEM_CST_CLASS: Expression trees. (line 6)
! * PTRMEM_CST_MEMBER: Expression trees. (line 6)
! * push address instruction: Simple Constraints. (line 152)
! * PUSH_ARGS: Stack Arguments. (line 18)
! * PUSH_ARGS_REVERSED: Stack Arguments. (line 26)
! * push_reload: Addressing Modes. (line 187)
! * PUSH_ROUNDING: Stack Arguments. (line 32)
* PUSH_ROUNDING, interaction with PREFERRED_STACK_BOUNDARY: Storage Layout.
! (line 159)
! * pushM instruction pattern: Standard Names. (line 154)
! * PUT_CODE: RTL Objects. (line 47)
! * PUT_MODE: Machine Modes. (line 178)
! * PUT_REG_NOTE_KIND: Insns. (line 323)
! * PUT_SDB_: SDB and DWARF. (line 56)
! * QCmode: Machine Modes. (line 111)
! * QFmode: Machine Modes. (line 54)
! * QImode: Machine Modes. (line 25)
! * QImode, in insn: Insns. (line 241)
! * qualified type: Types. (line 6)
* querying function unit reservations: Automaton pipeline description.
! (line 47)
! * question mark: Multi-Alternative. (line 41)
! * quotient: Arithmetic. (line 99)
! * r in constraint: Simple Constraints. (line 54)
! * RANGE_TEST_NON_SHORT_CIRCUIT: Costs. (line 187)
! * RDIV_EXPR: Expression trees. (line 6)
! * READONLY_DATA_SECTION: Sections. (line 43)
! * READONLY_DATA_SECTION_ASM_OP: Sections. (line 38)
! * REAL_ARITHMETIC: Floating Point. (line 67)
! * REAL_CST: Expression trees. (line 6)
* REAL_NM_FILE_NAME: Macros for Initialization.
! (line 111)
! * REAL_TYPE: Types. (line 6)
! * REAL_VALUE_ABS: Floating Point. (line 83)
! * REAL_VALUE_ATOF: Floating Point. (line 51)
! * REAL_VALUE_FIX: Floating Point. (line 42)
! * REAL_VALUE_FROM_INT: Floating Point. (line 100)
! * REAL_VALUE_ISINF: Floating Point. (line 60)
! * REAL_VALUE_ISNAN: Floating Point. (line 63)
! * REAL_VALUE_NEGATE: Floating Point. (line 80)
! * REAL_VALUE_NEGATIVE: Floating Point. (line 57)
! * REAL_VALUE_TO_INT: Floating Point. (line 94)
! * REAL_VALUE_TO_TARGET_DOUBLE: Data Output. (line 138)
! * REAL_VALUE_TO_TARGET_LONG_DOUBLE: Data Output. (line 139)
! * REAL_VALUE_TO_TARGET_SINGLE: Data Output. (line 137)
! * REAL_VALUE_TRUNCATE: Floating Point. (line 87)
! * REAL_VALUE_TYPE: Floating Point. (line 27)
! * REAL_VALUE_UNSIGNED_FIX: Floating Point. (line 46)
! * REAL_VALUES_EQUAL: Floating Point. (line 33)
! * REAL_VALUES_LESS: Floating Point. (line 39)
! * REALPART_EXPR: Expression trees. (line 6)
! * recog_data.operand: Instruction Output. (line 39)
! * recognizing insns: RTL Template. (line 6)
! * RECORD_TYPE <1>: Classes. (line 6)
! * RECORD_TYPE: Types. (line 6)
! * reference: Types. (line 6)
! * REFERENCE_TYPE: Types. (line 6)
! * reg: Regs and Memory. (line 9)
! * reg and /f: Flags. (line 107)
! * reg and /i: Flags. (line 97)
! * reg and /s: Flags. (line 102)
! * reg and /u: Flags. (line 153)
! * reg and /v: Flags. (line 111)
! * reg, RTL sharing: Sharing. (line 17)
! * REG_ALLOC_ORDER: Allocation Order. (line 9)
! * REG_BR_PRED: Insns. (line 516)
! * REG_BR_PROB: Insns. (line 510)
! * REG_CC_SETTER: Insns. (line 485)
! * REG_CC_USER: Insns. (line 485)
! * REG_CLASS_CONTENTS: Register Classes. (line 86)
! * reg_class_contents: Register Basics. (line 59)
! * REG_CLASS_FROM_CONSTRAINT: Register Classes. (line 147)
! * REG_CLASS_FROM_LETTER: Register Classes. (line 139)
! * REG_CLASS_NAMES: Register Classes. (line 81)
! * REG_DEAD: Insns. (line 334)
! * REG_DEP_ANTI: Insns. (line 500)
! * REG_DEP_OUTPUT: Insns. (line 503)
! * REG_EQUAL: Insns. (line 390)
! * REG_EQUIV: Insns. (line 390)
! * REG_EXPR: Special Accessors. (line 46)
! * REG_FRAME_RELATED_EXPR: Insns. (line 522)
! * REG_FUNCTION_VALUE_P: Flags. (line 97)
! * REG_INC: Insns. (line 350)
! * REG_LABEL: Insns. (line 380)
! * reg_label and /v: Flags. (line 59)
! * REG_LIBCALL: Insns. (line 478)
! * REG_LOOP_TEST_P: Flags. (line 102)
! * REG_MODE_OK_FOR_BASE_P: Addressing Modes. (line 109)
! * reg_names <1>: Instruction Output. (line 80)
! * reg_names: Register Basics. (line 59)
! * REG_NO_CONFLICT: Insns. (line 364)
! * REG_NONNEG: Insns. (line 356)
! * REG_NOTE_KIND: Insns. (line 323)
! * REG_NOTES: Insns. (line 291)
! * REG_OFFSET: Special Accessors. (line 50)
! * REG_OK_FOR_BASE_P: Addressing Modes. (line 100)
! * REG_OK_FOR_INDEX_P: Addressing Modes. (line 117)
! * REG_OK_STRICT: Addressing Modes. (line 67)
! * REG_PARM_STACK_SPACE: Stack Arguments. (line 56)
* REG_PARM_STACK_SPACE, and FUNCTION_ARG: Register Arguments.
! (line 52)
! * REG_POINTER: Flags. (line 107)
! * REG_RETVAL: Insns. (line 462)
! * REG_UNUSED: Insns. (line 343)
! * REG_USERVAR_P: Flags. (line 111)
! * register allocation: Passes. (line 312)
! * register allocation order: Allocation Order. (line 6)
! * register class definitions: Register Classes. (line 6)
! * register class preference constraints: Class Preferences. (line 6)
! * register class preference pass: Passes. (line 318)
! * register movement: Passes. (line 286)
* register pairs: Values in Registers.
! (line 42)
! * Register Transfer Language (RTL): RTL. (line 6)
! * register usage: Registers. (line 6)
! * register use analysis: Passes. (line 161)
! * register-to-stack conversion: Passes. (line 400)
! * REGISTER_MOVE_COST: Costs. (line 10)
! * REGISTER_NAMES: Instruction Output. (line 9)
! * register_operand: RTL Template. (line 62)
! * REGISTER_PREFIX: Instruction Output. (line 124)
! * REGISTER_TARGET_PRAGMAS: Misc. (line 332)
! * registers arguments: Register Arguments. (line 6)
! * registers in constraints: Simple Constraints. (line 54)
* REGMODE_NATURAL_SIZE: Values in Registers.
! (line 23)
! * REGNO_MODE_OK_FOR_BASE_P: Register Classes. (line 158)
! * REGNO_OK_FOR_BASE_P: Register Classes. (line 152)
! * REGNO_OK_FOR_INDEX_P: Register Classes. (line 166)
! * REGNO_REG_CLASS: Register Classes. (line 101)
! * regs_ever_live: Function Entry. (line 21)
* regular expressions <1>: Automaton pipeline description.
+ (line 63)
* regular expressions: Processor pipeline description.
! (line 6)
! * relative costs: Costs. (line 6)
! * RELATIVE_PREFIX_NOT_LINKDIR: Driver. (line 329)
! * reload pass: Regs and Memory. (line 148)
! * reload_completed: Standard Names. (line 676)
! * reload_in instruction pattern: Standard Names. (line 101)
! * reload_in_progress: Standard Names. (line 57)
! * reload_out instruction pattern: Standard Names. (line 101)
! * reloading: Passes. (line 344)
! * remainder: Arithmetic. (line 113)
! * reorder: GTY Options. (line 175)
! * reordering, block: Passes. (line 372)
! * representation of RTL: RTL. (line 6)
* reservation delays: Processor pipeline description.
! (line 6)
! * rest_of_compilation: Passes. (line 22)
! * rest_of_decl_compilation: Passes. (line 22)
! * restore_stack_block instruction pattern: Standard Names. (line 815)
* restore_stack_function instruction pattern: Standard Names.
+ (line 815)
* restore_stack_nonlocal instruction pattern: Standard Names.
! (line 815)
! * RESULT_DECL: Declarations. (line 6)
! * return: Side Effects. (line 68)
! * return instruction pattern: Standard Names. (line 663)
! * return values in registers: Scalar Return. (line 6)
! * RETURN_ADDR_IN_PREVIOUS_FRAME: Frame Layout. (line 119)
! * RETURN_ADDR_OFFSET: Exception Handling. (line 60)
! * RETURN_ADDR_RTX: Frame Layout. (line 108)
! * RETURN_ADDRESS_POINTER_REGNUM: Frame Registers. (line 51)
! * RETURN_EXPR: Function Bodies. (line 6)
! * RETURN_INIT: Function Bodies. (line 6)
! * RETURN_POPS_ARGS: Stack Arguments. (line 115)
! * RETURN_STMT: Function Bodies. (line 6)
! * returning aggregate values: Aggregate Return. (line 6)
! * returning structures and unions: Interface. (line 10)
! * REVERSE_CONDEXEC_PREDICATES_P: Condition Code. (line 129)
! * REVERSE_CONDITION: Condition Code. (line 116)
! * REVERSIBLE_CC_MODE: Condition Code. (line 102)
! * right rotate: Arithmetic. (line 160)
! * right shift: Arithmetic. (line 155)
* RISC <1>: Automaton pipeline description.
+ (line 172)
* RISC: Processor pipeline description.
! (line 6)
! * roots, marking: GGC Roots. (line 6)
! * rotate: Arithmetic. (line 160)
! * rotatert: Arithmetic. (line 160)
! * rotlM3 instruction pattern: Standard Names. (line 224)
! * rotrM3 instruction pattern: Standard Names. (line 224)
! * ROUND_TOWARDS_ZERO: Storage Layout. (line 451)
! * ROUND_TYPE_ALIGN: Storage Layout. (line 341)
! * roundM2 instruction pattern: Standard Names. (line 309)
! * RSHIFT_EXPR: Expression trees. (line 6)
! * RTL addition: Arithmetic. (line 14)
! * RTL addition with signed saturation: Arithmetic. (line 30)
! * RTL addition with unsigned saturation: Arithmetic. (line 33)
! * RTL classes: RTL Classes. (line 6)
! * RTL comparison: Arithmetic. (line 42)
! * RTL comparison operations: Comparisons. (line 6)
! * RTL constant expression types: Constants. (line 6)
! * RTL constants: Constants. (line 6)
! * RTL declarations: RTL Declarations. (line 6)
! * RTL difference: Arithmetic. (line 27)
! * RTL expression: RTL Objects. (line 6)
! * RTL expressions for arithmetic: Arithmetic. (line 6)
! * RTL format: RTL Classes. (line 63)
! * RTL format characters: RTL Classes. (line 68)
! * RTL function-call insns: Calls. (line 6)
! * RTL generation: Passes. (line 83)
! * RTL insn template: RTL Template. (line 6)
! * RTL integers: RTL Objects. (line 6)
! * RTL memory expressions: Regs and Memory. (line 6)
! * RTL object types: RTL Objects. (line 6)
! * RTL postdecrement: Incdec. (line 6)
! * RTL postincrement: Incdec. (line 6)
! * RTL predecrement: Incdec. (line 6)
! * RTL preincrement: Incdec. (line 6)
! * RTL register expressions: Regs and Memory. (line 6)
! * RTL representation: RTL. (line 6)
! * RTL side effect expressions: Side Effects. (line 6)
! * RTL strings: RTL Objects. (line 6)
! * RTL structure sharing assumptions: Sharing. (line 6)
! * RTL subtraction: Arithmetic. (line 27)
! * RTL sum: Arithmetic. (line 14)
! * RTL vectors: RTL Objects. (line 6)
! * RTX (See RTL): RTL Objects. (line 6)
! * RTX codes, classes of: RTL Classes. (line 6)
! * RTX_FRAME_RELATED_P: Flags. (line 120)
! * RTX_INTEGRATED_P: Flags. (line 147)
! * RTX_UNCHANGING_P: Flags. (line 153)
! * run-time conventions: Interface. (line 6)
! * run-time target specification: Run-time Target. (line 6)
! * s in constraint: Simple Constraints. (line 90)
! * same_type_p: Types. (line 103)
! * save_stack_block instruction pattern: Standard Names. (line 815)
! * save_stack_function instruction pattern: Standard Names. (line 815)
! * save_stack_nonlocal instruction pattern: Standard Names. (line 815)
! * scalars, returned as values: Scalar Return. (line 6)
! * SCHED_GROUP_P: Flags. (line 173)
! * scheduling, delayed branch: Passes. (line 384)
! * scheduling, instruction: Passes. (line 296)
! * SCmode: Machine Modes. (line 111)
! * sCOND instruction pattern: Standard Names. (line 553)
! * SCOPE_BEGIN_P: Function Bodies. (line 6)
! * SCOPE_END_P: Function Bodies. (line 6)
! * SCOPE_NULLIFIED_P: Function Bodies. (line 6)
! * SCOPE_STMT: Function Bodies. (line 6)
! * scratch: Regs and Memory. (line 173)
! * scratch operands: Regs and Memory. (line 173)
! * scratch, RTL sharing: Sharing. (line 35)
! * SDB_ALLOW_FORWARD_REFERENCES: SDB and DWARF. (line 79)
! * SDB_ALLOW_UNKNOWN_REFERENCES: SDB and DWARF. (line 74)
! * SDB_DEBUGGING_INFO: SDB and DWARF. (line 9)
! * SDB_DELIM: SDB and DWARF. (line 62)
! * SDB_GENERATE_FAKE: SDB and DWARF. (line 69)
! * search options: Including Patterns. (line 44)
! * SECONDARY_INPUT_RELOAD_CLASS: Register Classes. (line 230)
! * SECONDARY_MEMORY_NEEDED: Register Classes. (line 292)
! * SECONDARY_MEMORY_NEEDED_MODE: Register Classes. (line 311)
! * SECONDARY_MEMORY_NEEDED_RTX: Register Classes. (line 302)
! * SECONDARY_OUTPUT_RELOAD_CLASS: Register Classes. (line 231)
! * SECONDARY_RELOAD_CLASS: Register Classes. (line 229)
! * SELECT_CC_MODE: Condition Code. (line 68)
! * sequence: Side Effects. (line 247)
! * set: Side Effects. (line 15)
! * set and /f: Flags. (line 120)
! * SET_ASM_OP: Label Output. (line 334)
! * set_attr: Tagging Insns. (line 31)
! * set_attr_alternative: Tagging Insns. (line 49)
! * SET_DEST: Side Effects. (line 65)
! * SET_IS_RETURN_P: Flags. (line 182)
! * SET_LABEL_KIND: Insns. (line 146)
! * set_optab_libfunc: Library Calls. (line 15)
! * SET_SRC: Side Effects. (line 65)
! * SETUP_FRAME_ADDRESSES: Frame Layout. (line 93)
! * SFmode: Machine Modes. (line 66)
! * SHARED_SECTION_ASM_OP: Sections. (line 53)
! * sharing of RTL components: Sharing. (line 6)
! * shift: Arithmetic. (line 147)
! * SHIFT_COUNT_TRUNCATED: Misc. (line 140)
! * SHORT_IMMEDIATES_SIGN_EXTEND: Misc. (line 119)
! * SHORT_TYPE_SIZE: Type Layout. (line 16)
! * sibcall_epilogue instruction pattern: Standard Names. (line 1005)
! * sibling call optimization: Passes. (line 128)
! * SIBLING_CALL_P: Flags. (line 186)
! * sign_extend: Conversions. (line 24)
! * sign_extract: Bit-Fields. (line 11)
* sign_extract, canonicalization of: Insn Canonicalizations.
! (line 87)
! * signed division: Arithmetic. (line 99)
! * signed maximum: Arithmetic. (line 118)
! * signed minimum: Arithmetic. (line 118)
! * SImode: Machine Modes. (line 37)
! * simple constraints: Simple Constraints. (line 6)
! * simplifications, arithmetic: Passes. (line 79)
! * sinM2 instruction pattern: Standard Names. (line 250)
! * SIZE_ASM_OP: Label Output. (line 17)
! * SIZE_TYPE: Type Layout. (line 104)
! * skip: GTY Options. (line 70)
! * SLOW_BYTE_ACCESS: Costs. (line 60)
! * SLOW_UNALIGNED_ACCESS: Costs. (line 75)
! * SMALL_ARG_MAX: Host Misc. (line 41)
! * SMALL_REGISTER_CLASSES: Register Classes. (line 334)
! * smax: Arithmetic. (line 118)
! * smaxM3 instruction pattern: Standard Names. (line 167)
! * smin: Arithmetic. (line 118)
! * sminM3 instruction pattern: Standard Names. (line 167)
! * smulM3_highpart instruction pattern: Standard Names. (line 189)
* soft float library: Soft float library routines.
! (line 6)
! * special: GTY Options. (line 193)
! * SPECIAL_MODE_PREDICATES: Misc. (line 34)
! * SPECS: Target Fragment. (line 103)
! * speed of instructions: Costs. (line 6)
! * splitting instructions: Insn Splitting. (line 6)
! * sqrt: Arithmetic. (line 168)
! * sqrtM2 instruction pattern: Standard Names. (line 234)
! * square root: Arithmetic. (line 168)
! * ss_minus: Arithmetic. (line 36)
! * ss_plus: Arithmetic. (line 30)
! * ss_truncate: Conversions. (line 44)
! * stack arguments: Stack Arguments. (line 6)
! * stack frame layout: Frame Layout. (line 6)
! * STACK_ALIGNMENT_NEEDED: Frame Layout. (line 48)
! * STACK_BOUNDARY: Storage Layout. (line 140)
! * STACK_CHECK_BUILTIN: Stack Checking. (line 29)
! * STACK_CHECK_FIXED_FRAME_SIZE: Stack Checking. (line 64)
! * STACK_CHECK_MAX_FRAME_SIZE: Stack Checking. (line 55)
! * STACK_CHECK_MAX_VAR_SIZE: Stack Checking. (line 71)
! * STACK_CHECK_PROBE_INTERVAL: Stack Checking. (line 37)
! * STACK_CHECK_PROBE_LOAD: Stack Checking. (line 44)
! * STACK_CHECK_PROTECT: Stack Checking. (line 50)
! * STACK_DYNAMIC_OFFSET: Frame Layout. (line 75)
* STACK_DYNAMIC_OFFSET and virtual registers: Regs and Memory.
! (line 83)
! * STACK_GROWS_DOWNWARD: Frame Layout. (line 9)
! * STACK_PARMS_IN_REG_PARM_AREA: Stack Arguments. (line 106)
! * STACK_POINTER_OFFSET: Frame Layout. (line 58)
* STACK_POINTER_OFFSET and virtual registers: Regs and Memory.
! (line 93)
! * STACK_POINTER_REGNUM: Frame Registers. (line 9)
* STACK_POINTER_REGNUM and virtual registers: Regs and Memory.
! (line 83)
! * stack_pointer_rtx: Frame Registers. (line 85)
! * STACK_PUSH_CODE: Frame Layout. (line 17)
! * STACK_REGS: Stack Registers. (line 20)
! * STACK_SAVEAREA_MODE: Storage Layout. (line 362)
! * STACK_SIZE_MODE: Storage Layout. (line 374)
! * standard pattern names: Standard Names. (line 6)
! * STANDARD_INCLUDE_COMPONENT: Driver. (line 415)
! * STANDARD_INCLUDE_DIR: Driver. (line 407)
! * STANDARD_STARTFILE_PREFIX: Driver. (line 341)
! * STARTFILE_SPEC: Driver. (line 205)
! * STARTING_FRAME_OFFSET: Frame Layout. (line 39)
* STARTING_FRAME_OFFSET and virtual registers: Regs and Memory.
! (line 74)
! * statements: Function Bodies. (line 6)
! * STATIC_CHAIN: Frame Registers. (line 77)
! * STATIC_CHAIN_INCOMING: Frame Registers. (line 78)
! * STATIC_CHAIN_INCOMING_REGNUM: Frame Registers. (line 64)
! * STATIC_CHAIN_REGNUM: Frame Registers. (line 63)
! * stdarg.h and register arguments: Register Arguments. (line 47)
! * STDC_0_IN_SYSTEM_HEADERS: Misc. (line 315)
! * STMT_EXPR: Expression trees. (line 6)
! * STMT_IS_FULL_EXPR_P: Function Bodies. (line 35)
! * STMT_LINENO: Function Bodies. (line 23)
! * storage layout: Storage Layout. (line 6)
! * STORE_BY_PIECES_P: Costs. (line 130)
! * STORE_FLAG_VALUE: Misc. (line 179)
! * store_multiple instruction pattern: Standard Names. (line 148)
! * strcpy: Storage Layout. (line 207)
! * strength-reduction: Passes. (line 204)
! * STRICT_ALIGNMENT: Storage Layout. (line 251)
! * strict_low_part: RTL Declarations. (line 9)
! * strict_memory_address_p: Addressing Modes. (line 197)
! * STRING_CST: Expression trees. (line 6)
! * STRING_POOL_ADDRESS_P: Flags. (line 190)
! * strlenM instruction pattern: Standard Names. (line 452)
! * structure value address: Aggregate Return. (line 6)
! * STRUCTURE_SIZE_BOUNDARY: Storage Layout. (line 243)
! * structures, returning: Interface. (line 10)
! * subM3 instruction pattern: Standard Names. (line 167)
! * SUBOBJECT: Function Bodies. (line 6)
! * SUBOBJECT_CLEANUP: Function Bodies. (line 6)
! * subreg: Regs and Memory. (line 97)
! * subreg and /s: Flags. (line 212)
! * subreg and /u: Flags. (line 205)
! * subreg and /u and /v: Flags. (line 195)
! * subreg, in strict_low_part: RTL Declarations. (line 9)
! * subreg, special reload handling: Regs and Memory. (line 148)
! * SUBREG_BYTE: Regs and Memory. (line 169)
! * SUBREG_PROMOTED_UNSIGNED_P: Flags. (line 195)
! * SUBREG_PROMOTED_UNSIGNED_SET: Flags. (line 205)
! * SUBREG_PROMOTED_VAR_P: Flags. (line 212)
! * SUBREG_REG: Regs and Memory. (line 169)
! * SUCCESS_EXIT_CODE: Host Misc. (line 12)
* SUPPORTS_INIT_PRIORITY: Macros for Initialization.
! (line 58)
! * SUPPORTS_ONE_ONLY: Label Output. (line 207)
! * SUPPORTS_WEAK: Label Output. (line 188)
! * SWITCH_BODY: Function Bodies. (line 6)
! * SWITCH_COND: Function Bodies. (line 6)
! * SWITCH_CURTAILS_COMPILATION: Driver. (line 33)
! * SWITCH_STMT: Function Bodies. (line 6)
! * SWITCH_TAKES_ARG: Driver. (line 9)
! * SWITCHES_NEED_SPACES: Driver. (line 47)
! * SYMBOL_FLAG_EXTERNAL: Special Accessors. (line 80)
! * SYMBOL_FLAG_FUNCTION: Special Accessors. (line 73)
! * SYMBOL_FLAG_LOCAL: Special Accessors. (line 76)
! * SYMBOL_FLAG_SMALL: Special Accessors. (line 85)
! * SYMBOL_FLAG_TLS_SHIFT: Special Accessors. (line 89)
! * symbol_ref: Constants. (line 84)
! * symbol_ref and /f: Flags. (line 190)
! * symbol_ref and /i: Flags. (line 227)
! * symbol_ref and /u: Flags. (line 10)
! * symbol_ref and /v: Flags. (line 231)
! * symbol_ref, RTL sharing: Sharing. (line 20)
! * SYMBOL_REF_DECL: Special Accessors. (line 55)
! * SYMBOL_REF_EXTERNAL_P: Special Accessors. (line 80)
! * SYMBOL_REF_FLAG: Flags. (line 231)
! * SYMBOL_REF_FLAG, in TARGET_ENCODE_SECTION_INFO: Sections. (line 181)
! * SYMBOL_REF_FLAGS: Special Accessors. (line 67)
! * SYMBOL_REF_FUNCTION_P: Special Accessors. (line 73)
! * SYMBOL_REF_LOCAL_P: Special Accessors. (line 76)
! * SYMBOL_REF_SMALL_P: Special Accessors. (line 85)
! * SYMBOL_REF_TLS_MODEL: Special Accessors. (line 89)
! * SYMBOL_REF_USED: Flags. (line 222)
! * SYMBOL_REF_WEAK: Flags. (line 227)
! * symbolic label: Sharing. (line 20)
! * SYSROOT_HEADERS_SUFFIX_SPEC: Driver. (line 234)
! * SYSROOT_SUFFIX_SPEC: Driver. (line 229)
! * SYSTEM_INCLUDE_DIR: Driver. (line 398)
! * t-TARGET: Target Fragment. (line 6)
! * tablejump instruction pattern: Standard Names. (line 743)
! * tag: GTY Options. (line 75)
! * tagging insns: Tagging Insns. (line 6)
! * tail calls: Tail Calls. (line 6)
! * tail recursion optimization: Passes. (line 92)
! * target attributes: Target Attributes. (line 6)
! * target description macros: Target Macros. (line 6)
! * target functions: Target Structure. (line 6)
! * target hooks: Target Structure. (line 6)
! * target makefile fragment: Target Fragment. (line 6)
! * target specifications: Run-time Target. (line 6)
! * target-parameter-dependent code: Passes. (line 86)
! * TARGET_: Run-time Target. (line 55)
! * TARGET_ADDRESS_COST: Costs. (line 212)
! * TARGET_ASM_ALIGNED_DI_OP: Data Output. (line 10)
! * TARGET_ASM_ALIGNED_HI_OP: Data Output. (line 8)
! * TARGET_ASM_ALIGNED_SI_OP: Data Output. (line 9)
! * TARGET_ASM_ALIGNED_TI_OP: Data Output. (line 11)
! * TARGET_ASM_ASSEMBLE_VISIBILITY: Label Output. (line 219)
! * TARGET_ASM_BYTE_OP: Data Output. (line 7)
! * TARGET_ASM_CAN_OUTPUT_MI_THUNK: Function Entry. (line 242)
! * TARGET_ASM_CLOSE_PAREN: Data Output. (line 128)
* TARGET_ASM_CONSTRUCTOR: Macros for Initialization.
+ (line 69)
* TARGET_ASM_DESTRUCTOR: Macros for Initialization.
+ (line 83)
* TARGET_ASM_EH_FRAME_SECTION: Exception Region Output.
+ (line 72)
* TARGET_ASM_EXCEPTION_SECTION: Exception Region Output.
! (line 64)
! * TARGET_ASM_EXTERNAL_LIBCALL: Label Output. (line 235)
! * TARGET_ASM_FILE_END: File Framework. (line 37)
! * TARGET_ASM_FILE_START: File Framework. (line 9)
! * TARGET_ASM_FILE_START_APP_OFF: File Framework. (line 17)
! * TARGET_ASM_FILE_START_FILE_DIRECTIVE: File Framework. (line 31)
! * TARGET_ASM_FUNCTION_BEGIN_EPILOGUE: Function Entry. (line 61)
! * TARGET_ASM_FUNCTION_END_PROLOGUE: Function Entry. (line 55)
! * TARGET_ASM_FUNCTION_EPILOGUE: Function Entry. (line 68)
! * TARGET_ASM_FUNCTION_EPILOGUE and trampolines: Trampolines. (line 71)
! * TARGET_ASM_FUNCTION_PROLOGUE: Function Entry. (line 11)
! * TARGET_ASM_FUNCTION_PROLOGUE and trampolines: Trampolines. (line 71)
! * TARGET_ASM_GLOBALIZE_LABEL: Label Output. (line 159)
! * TARGET_ASM_INTEGER: Data Output. (line 27)
! * TARGET_ASM_INTERNAL_LABEL: Label Output. (line 265)
! * TARGET_ASM_NAMED_SECTION: File Framework. (line 99)
! * TARGET_ASM_OPEN_PAREN: Data Output. (line 127)
! * TARGET_ASM_OUTPUT_MI_THUNK: Function Entry. (line 200)
! * TARGET_ASM_SELECT_RTX_SECTION: Sections. (line 144)
! * TARGET_ASM_SELECT_SECTION: Sections. (line 118)
! * TARGET_ASM_UNALIGNED_DI_OP: Data Output. (line 14)
! * TARGET_ASM_UNALIGNED_HI_OP: Data Output. (line 12)
! * TARGET_ASM_UNALIGNED_SI_OP: Data Output. (line 13)
! * TARGET_ASM_UNALIGNED_TI_OP: Data Output. (line 15)
! * TARGET_ASM_UNIQUE_SECTION: Sections. (line 131)
! * TARGET_ATTRIBUTE_TABLE: Target Attributes. (line 11)
! * TARGET_BELL: Escape Sequences. (line 11)
! * TARGET_BINDS_LOCAL_P: Sections. (line 206)
! * TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED: Misc. (line 676)
! * TARGET_BRANCH_TARGET_REGISTER_CLASS: Misc. (line 668)
! * TARGET_C99_FUNCTIONS: Library Calls. (line 72)
! * TARGET_CANNOT_MODIFY_JUMPS_P: Misc. (line 655)
! * TARGET_COMP_TYPE_ATTRIBUTES: Target Attributes. (line 19)
! * TARGET_CPU_CPP_BUILTINS: Run-time Target. (line 9)
! * TARGET_CR: Escape Sequences. (line 11)
! * TARGET_DEFERRED_OUTPUT_DEFS: Label Output. (line 349)
! * TARGET_DLLIMPORT_DECL_ATTRIBUTES: Target Attributes. (line 47)
* TARGET_DWARF_REGISTER_SPAN: Exception Region Output.
! (line 85)
! * TARGET_EDOM: Library Calls. (line 49)
! * TARGET_ENCODE_SECTION_INFO: Sections. (line 157)
* TARGET_ENCODE_SECTION_INFO and address validation: Addressing Modes.
! (line 91)
! * TARGET_ENCODE_SECTION_INFO usage: Instruction Output. (line 100)
! * TARGET_ESC: Escape Sequences. (line 11)
! * TARGET_EXECUTABLE_SUFFIX: Misc. (line 629)
! * TARGET_EXPAND_BUILTIN: Misc. (line 590)
! * TARGET_EXPAND_BUILTIN_SAVEREGS: Varargs. (line 92)
! * TARGET_FF: Escape Sequences. (line 11)
! * TARGET_FIXED_CONDITION_CODE_REGS: Condition Code. (line 140)
! * target_flags: Run-time Target. (line 52)
! * TARGET_FLOAT_FORMAT: Storage Layout. (line 383)
! * TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL: Library Calls. (line 25)
! * TARGET_FLT_EVAL_METHOD: Type Layout. (line 77)
! * TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P: Target Attributes. (line 69)
! * TARGET_FUNCTION_OK_FOR_SIBCALL: Tail Calls. (line 8)
! * TARGET_HAS_F_SETLKW: Misc. (line 499)
* TARGET_HAVE_CTORS_DTORS: Macros for Initialization.
! (line 64)
! * TARGET_HAVE_NAMED_SECTIONS: File Framework. (line 109)
! * TARGET_IN_SMALL_DATA_P: Sections. (line 198)
! * TARGET_INIT_BUILTINS: Misc. (line 573)
! * TARGET_INIT_LIBFUNCS: Library Calls. (line 16)
! * TARGET_INSERT_ATTRIBUTES: Target Attributes. (line 56)
! * TARGET_MACHINE_DEPENDENT_REORG: Misc. (line 558)
! * TARGET_MANGLE_FUNDAMENTAL_TYPE: Storage Layout. (line 518)
! * TARGET_MEM_FUNCTIONS: Library Calls. (line 67)
! * TARGET_MERGE_DECL_ATTRIBUTES: Target Attributes. (line 39)
! * TARGET_MERGE_TYPE_ATTRIBUTES: Target Attributes. (line 31)
! * TARGET_MS_BITFIELD_LAYOUT_P: Storage Layout. (line 491)
! * TARGET_NEWLINE: Escape Sequences. (line 11)
! * TARGET_OBJECT_SUFFIX: Misc. (line 624)
! * TARGET_OBJFMT_CPP_BUILTINS: Run-time Target. (line 46)
! * TARGET_OPTION_TRANSLATE_TABLE: Driver. (line 53)
! * TARGET_OPTIONS: Run-time Target. (line 115)
! * TARGET_OS_CPP_BUILTINS: Run-time Target. (line 42)
! * TARGET_PRETEND_OUTGOING_VARARGS_NAMED: Varargs. (line 152)
! * TARGET_PROMOTE_FUNCTION_ARGS: Storage Layout. (line 115)
! * TARGET_PROMOTE_FUNCTION_RETURN: Storage Layout. (line 119)
! * TARGET_PROMOTE_PROTOTYPES: Stack Arguments. (line 11)
! * TARGET_PTRMEMFUNC_VBIT_LOCATION: Type Layout. (line 186)
! * TARGET_RETURN_IN_MEMORY: Aggregate Return. (line 16)
! * TARGET_RETURN_IN_MSB: Scalar Return. (line 90)
! * TARGET_RTX_COSTS: Costs. (line 193)
! * TARGET_SCHED_ADJUST_COST: Scheduling. (line 40)
! * TARGET_SCHED_ADJUST_PRIORITY: Scheduling. (line 55)
! * TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK: Scheduling. (line 92)
! * TARGET_SCHED_DFA_BUBBLE: Scheduling. (line 230)
! * TARGET_SCHED_DFA_NEW_CYCLE: Scheduling. (line 193)
! * TARGET_SCHED_DFA_POST_CYCLE_INSN: Scheduling. (line 146)
! * TARGET_SCHED_DFA_PRE_CYCLE_INSN: Scheduling. (line 134)
! * TARGET_SCHED_FINISH: Scheduling. (line 112)
* TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD: Scheduling.
+ (line 156)
* TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD: Scheduling.
! (line 184)
! * TARGET_SCHED_INIT: Scheduling. (line 102)
! * TARGET_SCHED_INIT_DFA_BUBBLES: Scheduling. (line 206)
! * TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN: Scheduling. (line 151)
! * TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN: Scheduling. (line 143)
! * TARGET_SCHED_ISSUE_RATE: Scheduling. (line 12)
! * TARGET_SCHED_REORDER: Scheduling. (line 63)
! * TARGET_SCHED_REORDER2: Scheduling. (line 80)
! * TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE: Scheduling. (line 120)
! * TARGET_SCHED_VARIABLE_ISSUE: Scheduling. (line 27)
! * TARGET_SECTION_TYPE_FLAGS: File Framework. (line 114)
! * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES: Target Attributes. (line 26)
! * TARGET_SETUP_INCOMING_VARARGS: Varargs. (line 101)
! * TARGET_SPLIT_COMPLEX_ARG: Register Arguments. (line 234)
! * TARGET_STRICT_ARGUMENT_NAMING: Varargs. (line 137)
! * TARGET_STRUCT_VALUE_RTX: Aggregate Return. (line 44)
! * TARGET_SWITCHES: Run-time Target. (line 79)
! * TARGET_TAB: Escape Sequences. (line 11)
! * TARGET_VECTOR_OPAQUE_P: Storage Layout. (line 484)
! * TARGET_VERSION: Run-time Target. (line 178)
! * TARGET_VT: Escape Sequences. (line 11)
! * TARGET_VTABLE_DATA_ENTRY_DISTANCE: Type Layout. (line 239)
! * TARGET_VTABLE_ENTRY_ALIGN: Type Layout. (line 233)
! * TARGET_VTABLE_USES_DESCRIPTORS: Type Layout. (line 222)
! * targetm: Target Structure. (line 7)
! * targets, makefile: Makefile. (line 6)
! * TCmode: Machine Modes. (line 111)
! * TEMPLATE_DECL: Declarations. (line 6)
! * termination routines: Initialization. (line 6)
! * text_section: Sections. (line 101)
! * TEXT_SECTION_ASM_OP: Sections. (line 18)
! * TFmode: Machine Modes. (line 84)
! * THEN_CLAUSE: Function Bodies. (line 6)
! * THREAD_MODEL_SPEC: Driver. (line 220)
! * THROW_EXPR: Expression trees. (line 6)
! * THUNK_DECL: Declarations. (line 6)
! * THUNK_DELTA: Declarations. (line 6)
! * TImode: Machine Modes. (line 48)
! * TImode, in insn: Insns. (line 241)
! * tm.h macros: Target Macros. (line 6)
! * top level of compiler: Passes. (line 6)
! * TQFmode: Machine Modes. (line 62)
! * TRADITIONAL_PIPELINE_INTERFACE: Scheduling. (line 267)
! * TRAMPOLINE_ADJUST_ADDRESS: Trampolines. (line 63)
! * TRAMPOLINE_ALIGNMENT: Trampolines. (line 50)
! * TRAMPOLINE_SECTION: Trampolines. (line 40)
! * TRAMPOLINE_SIZE: Trampolines. (line 46)
! * TRAMPOLINE_TEMPLATE: Trampolines. (line 29)
! * trampolines for nested functions: Trampolines. (line 6)
! * TRANSFER_FROM_TRAMPOLINE: Trampolines. (line 125)
! * trap instruction pattern: Standard Names. (line 1015)
* tree <1>: Macros and Functions.
! (line 6)
! * tree: Tree overview. (line 6)
! * Tree optimization: Passes. (line 70)
! * TREE_CODE: Tree overview. (line 6)
! * tree_int_cst_equal: Expression trees. (line 6)
! * TREE_INT_CST_HIGH: Expression trees. (line 6)
! * TREE_INT_CST_LOW: Expression trees. (line 6)
! * tree_int_cst_lt: Expression trees. (line 6)
! * TREE_LIST: Containers. (line 6)
! * TREE_OPERAND: Expression trees. (line 6)
! * TREE_PUBLIC: Function Basics. (line 6)
! * TREE_PURPOSE: Containers. (line 6)
! * TREE_STRING_LENGTH: Expression trees. (line 6)
! * TREE_STRING_POINTER: Expression trees. (line 6)
! * TREE_TYPE <1>: Expression trees. (line 17)
! * TREE_TYPE <2>: Function Basics. (line 164)
! * TREE_TYPE <3>: Declarations. (line 16)
! * TREE_TYPE: Types. (line 6)
! * TREE_VALUE: Containers. (line 6)
! * TREE_VEC: Containers. (line 6)
! * TREE_VEC_ELT: Containers. (line 6)
! * TREE_VEC_LENGTH: Containers. (line 6)
! * TREE_VIA_PRIVATE: Classes. (line 6)
! * TREE_VIA_PROTECTED: Classes. (line 6)
! * TREE_VIA_PUBLIC: Classes. (line 6)
! * Trees: Trees. (line 6)
! * TRULY_NOOP_TRUNCATION: Misc. (line 166)
! * TRUNC_DIV_EXPR: Expression trees. (line 6)
! * TRUNC_MOD_EXPR: Expression trees. (line 6)
! * truncate: Conversions. (line 39)
! * truncM2 instruction pattern: Standard Names. (line 301)
! * truncMN2 instruction pattern: Standard Names. (line 492)
! * TRUTH_AND_EXPR: Expression trees. (line 6)
! * TRUTH_ANDIF_EXPR: Expression trees. (line 6)
! * TRUTH_NOT_EXPR: Expression trees. (line 6)
! * TRUTH_OR_EXPR: Expression trees. (line 6)
! * TRUTH_ORIF_EXPR: Expression trees. (line 6)
! * TRUTH_XOR_EXPR: Expression trees. (line 6)
! * TRY_BLOCK: Function Bodies. (line 6)
! * TRY_HANDLERS: Function Bodies. (line 6)
! * TRY_STMTS: Function Bodies. (line 6)
! * tstM instruction pattern: Standard Names. (line 379)
! * type: Types. (line 6)
! * type declaration: Declarations. (line 6)
! * TYPE_ALIGN: Types. (line 6)
! * TYPE_ARG_TYPES: Types. (line 6)
! * TYPE_ASM_OP: Label Output. (line 49)
! * TYPE_ATTRIBUTES: Attributes. (line 25)
! * TYPE_BINFO: Classes. (line 6)
! * TYPE_BUILT_IN: Types. (line 84)
! * TYPE_CONTEXT: Types. (line 6)
! * TYPE_DECL: Declarations. (line 6)
! * TYPE_FIELDS <1>: Classes. (line 6)
! * TYPE_FIELDS: Types. (line 6)
! * TYPE_HAS_ARRAY_NEW_OPERATOR: Classes. (line 89)
! * TYPE_HAS_DEFAULT_CONSTRUCTOR: Classes. (line 74)
! * TYPE_HAS_MUTABLE_P: Classes. (line 79)
! * TYPE_HAS_NEW_OPERATOR: Classes. (line 86)
! * TYPE_MAIN_VARIANT: Types. (line 6)
! * TYPE_MAX_VALUE: Types. (line 6)
! * TYPE_METHOD_BASETYPE: Types. (line 6)
! * TYPE_METHODS: Classes. (line 6)
! * TYPE_MIN_VALUE: Types. (line 6)
! * TYPE_NAME: Types. (line 6)
! * TYPE_NOTHROW_P: Function Basics. (line 173)
! * TYPE_OFFSET_BASETYPE: Types. (line 6)
! * TYPE_OPERAND_FMT: Label Output. (line 60)
! * TYPE_OVERLOADS_ARRAY_REF: Classes. (line 97)
! * TYPE_OVERLOADS_ARROW: Classes. (line 100)
! * TYPE_OVERLOADS_CALL_EXPR: Classes. (line 93)
! * TYPE_POLYMORPHIC_P: Classes. (line 70)
! * TYPE_PRECISION: Types. (line 6)
! * TYPE_PTR_P: Types. (line 90)
! * TYPE_PTRFN_P: Types. (line 94)
! * TYPE_PTRMEM_P: Types. (line 6)
! * TYPE_PTROB_P: Types. (line 97)
! * TYPE_PTROBV_P: Types. (line 6)
! * TYPE_QUAL_CONST: Types. (line 6)
! * TYPE_QUAL_RESTRICT: Types. (line 6)
! * TYPE_QUAL_VOLATILE: Types. (line 6)
! * TYPE_RAISES_EXCEPTIONS: Function Basics. (line 168)
! * TYPE_SIZE: Types. (line 6)
! * TYPE_UNQUALIFIED: Types. (line 6)
! * TYPE_VFIELD: Classes. (line 6)
! * TYPENAME_TYPE: Types. (line 6)
! * TYPENAME_TYPE_FULLNAME: Types. (line 6)
! * TYPEOF_TYPE: Types. (line 6)
! * udiv: Arithmetic. (line 110)
! * udivM3 instruction pattern: Standard Names. (line 167)
! * udivmodM4 instruction pattern: Standard Names. (line 214)
! * UINTMAX_TYPE: Type Layout. (line 175)
! * umax: Arithmetic. (line 123)
! * umaxM3 instruction pattern: Standard Names. (line 167)
! * umin: Arithmetic. (line 123)
! * uminM3 instruction pattern: Standard Names. (line 167)
! * umod: Arithmetic. (line 113)
! * umodM3 instruction pattern: Standard Names. (line 167)
! * umulhisi3 instruction pattern: Standard Names. (line 185)
! * umulM3_highpart instruction pattern: Standard Names. (line 194)
! * umulqihi3 instruction pattern: Standard Names. (line 185)
! * umulsidi3 instruction pattern: Standard Names. (line 185)
! * unchanging: Flags. (line 320)
! * unchanging, in call_insn: Flags. (line 19)
! * unchanging, in jump_insn, call_insn and insn: Flags. (line 24)
! * unchanging, in reg and mem: Flags. (line 153)
! * unchanging, in subreg: Flags. (line 195)
! * unchanging, in symbol_ref: Flags. (line 10)
! * UNION_TYPE <1>: Classes. (line 6)
! * UNION_TYPE: Types. (line 6)
! * unions, returning: Interface. (line 10)
! * UNITS_PER_WORD: Storage Layout. (line 67)
! * UNKNOWN_TYPE: Types. (line 6)
! * UNLIKELY_EXECUTED_TEXT_SECTION_NAME: Sections. (line 29)
! * unreachable code: Passes. (line 139)
! * unshare_all_rtl: Sharing. (line 58)
! * unsigned division: Arithmetic. (line 110)
! * unsigned greater than: Comparisons. (line 61)
! * unsigned less than: Comparisons. (line 65)
! * unsigned minimum and maximum: Arithmetic. (line 123)
! * unsigned_fix: Conversions. (line 73)
! * unsigned_float: Conversions. (line 63)
! * unspec: Side Effects. (line 280)
! * unspec_volatile: Side Effects. (line 280)
! * untyped_call instruction pattern: Standard Names. (line 648)
! * untyped_return instruction pattern: Standard Names. (line 698)
! * UPDATE_PATH_HOST_CANONICALIZE (PATH): Filesystem. (line 59)
* US Software GOFAST, floating point emulation library: Library Calls.
! (line 34)
! * us_minus: Arithmetic. (line 39)
! * us_plus: Arithmetic. (line 33)
! * US_SOFTWARE_GOFAST: Library Calls. (line 35)
! * us_truncate: Conversions. (line 49)
! * use: Side Effects. (line 155)
! * USE_C_ALLOCA: Host Misc. (line 19)
! * USE_LD_AS_NEEDED: Driver. (line 193)
! * USE_LOAD_POST_DECREMENT: Costs. (line 143)
! * USE_LOAD_POST_INCREMENT: Costs. (line 138)
! * USE_LOAD_PRE_DECREMENT: Costs. (line 153)
! * USE_LOAD_PRE_INCREMENT: Costs. (line 148)
! * use_param: GTY Options. (line 107)
! * use_paramN: GTY Options. (line 119)
! * use_params: GTY Options. (line 127)
! * USE_STORE_POST_DECREMENT: Costs. (line 163)
! * USE_STORE_POST_INCREMENT: Costs. (line 158)
! * USE_STORE_PRE_DECREMENT: Costs. (line 173)
! * USE_STORE_PRE_INCREMENT: Costs. (line 168)
! * used: Flags. (line 338)
! * used, in symbol_ref: Flags. (line 222)
! * USER_LABEL_PREFIX: Instruction Output. (line 126)
! * USING_DECL: Declarations. (line 6)
! * USING_STMT: Function Bodies. (line 6)
! * V in constraint: Simple Constraints. (line 41)
! * VA_ARG_EXPR: Expression trees. (line 6)
! * values, returned by functions: Scalar Return. (line 6)
! * VAR_DECL <1>: Expression trees. (line 6)
! * VAR_DECL: Declarations. (line 6)
! * varargs implementation: Varargs. (line 6)
! * variable: Declarations. (line 6)
! * VAX_FLOAT_FORMAT: Storage Layout. (line 391)
! * vec_concat: Vector Operations. (line 25)
! * vec_duplicate: Vector Operations. (line 30)
! * vec_merge: Vector Operations. (line 11)
! * vec_select: Vector Operations. (line 19)
! * vector: Containers. (line 6)
! * vector operations: Vector Operations. (line 6)
! * VECTOR_CST: Expression trees. (line 6)
! * VECTOR_MODE_SUPPORTED_P: Storage Layout. (line 357)
! * VIRTUAL_INCOMING_ARGS_REGNUM: Regs and Memory. (line 59)
! * VIRTUAL_OUTGOING_ARGS_REGNUM: Regs and Memory. (line 87)
! * VIRTUAL_STACK_DYNAMIC_REGNUM: Regs and Memory. (line 78)
! * VIRTUAL_STACK_VARS_REGNUM: Regs and Memory. (line 69)
* VLIW <1>: Automaton pipeline description.
+ (line 172)
* VLIW: Processor pipeline description.
! (line 6)
! * VMS: Filesystem. (line 37)
! * VMS_DEBUGGING_INFO: VMS Debug. (line 9)
! * VOID_TYPE: Types. (line 6)
! * VOIDmode: Machine Modes. (line 104)
! * volatil: Flags. (line 352)
* volatil, in insn, call_insn, jump_insn, code_label, barrier, and note: Flags.
! (line 33)
! * volatil, in label_ref and reg_label: Flags. (line 59)
! * volatil, in mem, asm_operands, and asm_input: Flags. (line 88)
! * volatil, in reg: Flags. (line 111)
! * volatil, in subreg: Flags. (line 195)
! * volatil, in symbol_ref: Flags. (line 231)
! * volatile memory references: Flags. (line 353)
! * voting between constraint alternatives: Class Preferences. (line 6)
! * VTABLE_REF: Expression trees. (line 6)
! * WCHAR_TYPE: Type Layout. (line 128)
! * WCHAR_TYPE_SIZE: Type Layout. (line 136)
! * web construction: Passes. (line 233)
! * which_alternative: Output Statement. (line 59)
! * WHILE_BODY: Function Bodies. (line 6)
! * WHILE_COND: Function Bodies. (line 6)
! * WHILE_STMT: Function Bodies. (line 6)
! * WIDEST_HARDWARE_FP_SIZE: Type Layout. (line 83)
! * WINT_TYPE: Type Layout. (line 156)
! * word_mode: Machine Modes. (line 223)
! * WORD_REGISTER_OPERATIONS: Misc. (line 88)
! * WORD_SWITCH_TAKES_ARG: Driver. (line 20)
! * WORDS_BIG_ENDIAN: Storage Layout. (line 29)
! * WORDS_BIG_ENDIAN, effect on subreg: Regs and Memory. (line 132)
! * X in constraint: Simple Constraints. (line 112)
! * x-HOST: Host Fragment. (line 6)
! * XCmode: Machine Modes. (line 111)
! * XCOFF_DEBUGGING_INFO: DBX Options. (line 13)
! * XEXP: Accessors. (line 6)
! * XFmode: Machine Modes. (line 79)
! * XINT: Accessors. (line 6)
! * xm-MACHINE.h <1>: Host Misc. (line 6)
! * xm-MACHINE.h: Filesystem. (line 6)
! * xor: Arithmetic. (line 142)
* xor, canonicalization of: Insn Canonicalizations.
! (line 75)
! * xorM3 instruction pattern: Standard Names. (line 167)
! * XSTR: Accessors. (line 6)
! * XVEC: Accessors. (line 41)
! * XVECEXP: Accessors. (line 48)
! * XVECLEN: Accessors. (line 44)
! * XWINT: Accessors. (line 6)
! * zero_extend: Conversions. (line 29)
! * zero_extendMN2 instruction pattern: Standard Names. (line 502)
! * zero_extract: Bit-Fields. (line 30)
* zero_extract, canonicalization of: Insn Canonicalizations.
+ (line 87)
Tag Table:
! Node: Top2069
! Node: Contributing4677
! Node: Portability5420
! Node: Interface7211
! Node: Libgcc10630
! Node: Integer library routines12385
! Node: Soft float library routines19070
! Node: Exception handling routines28534
! Node: Miscellaneous routines29629
! Node: Languages30012
! Node: Source Tree31563
! Node: Configure Terms32181
! Node: Top Level35151
! Node: gcc Directory37278
! Node: Subdirectories38247
! Node: Configuration40556
! Node: Config Fragments41276
! Node: System Config42620
! Node: Configuration Files43564
! Node: Build46252
! Node: Makefile46664
! Node: Library Files50846
! Node: Headers51408
! Node: Documentation53395
! Node: Texinfo Manuals54196
! Node: Man Page Generation56330
! Node: Miscellaneous Docs58251
! Node: Front End59608
! Node: Front End Directory63377
! Node: Front End Config68716
! Node: Back End71463
! Node: Testsuites74799
! Node: Test Idioms75533
! Node: Ada Tests79110
! Node: C Tests80399
! Node: libgcj Tests84756
! Node: gcov Testing86188
! Node: profopt Testing89185
! Node: compat Testing90633
! Node: Passes93984
! Node: Trees117550
! Node: Deficiencies120280
! Node: Tree overview120517
! Node: Macros and Functions124662
! Node: Identifiers124808
! Node: Containers126337
! Node: Types127493
! Node: Scopes140116
! Node: Namespaces140880
! Node: Classes143696
! Node: Declarations148306
! Node: Functions154369
! Node: Function Basics156781
! Node: Function Bodies163540
! Node: Attributes177442
! Node: Expression trees178685
! Node: RTL204579
! Node: RTL Objects206682
! Node: RTL Classes210575
! Node: Accessors215201
! Node: Special Accessors217601
! Node: Flags221469
! Node: Machine Modes237788
! Node: Constants246526
! Node: Regs and Memory252494
! Node: Arithmetic265547
! Node: Comparisons273251
! Node: Bit-Fields277386
! Node: Vector Operations278814
! Node: Conversions280438
! Node: RTL Declarations283755
! Node: Side Effects284574
! Node: Incdec300443
! Node: Assembler303787
! Node: Insns305319
! Node: Calls330558
! Node: Sharing333162
! Node: Reading RTL336272
! Node: Machine Desc337265
! Node: Overview339547
! Node: Patterns341596
! Node: Example345036
! Node: RTL Template346477
! Node: Output Template358952
! Node: Output Statement362944
! Node: Constraints366925
! Node: Simple Constraints367866
! Node: Multi-Alternative380255
! Node: Class Preferences383104
! Node: Modifiers383998
! Node: Machine Constraints387918
! Node: Standard Names410132
! Ref: prologue instruction pattern454724
! Ref: epilogue instruction pattern455217
! Node: Pattern Ordering457668
! Node: Dependent Patterns458904
! Node: Jump Patterns461726
! Node: Looping Patterns467485
! Node: Insn Canonicalizations472100
! Node: Expander Definitions475927
! Node: Insn Splitting484071
! Node: Including Patterns493694
! Node: Peephole Definitions495490
! Node: define_peephole496749
! Node: define_peephole2503111
! Node: Insn Attributes506188
! Node: Defining Attributes507294
! Node: Expressions509323
! Node: Tagging Insns515927
! Node: Attr Example520295
! Node: Insn Lengths522677
! Node: Constant Attributes525750
! Node: Delay Slots526921
! Node: Processor pipeline description530159
! Node: Old pipeline description534115
! Node: Automaton pipeline description539850
! Node: Comparison of the two descriptions554761
! Node: Conditional Execution556759
! Node: Constant Definitions559622
! Node: Target Macros561207
! Node: Target Structure564040
! Node: Driver565309
! Node: Run-time Target586953
! Node: Per-Function Data597543
! Node: Storage Layout600313
! Node: Type Layout624667
! Node: Escape Sequences635713
! Node: Registers636590
! Node: Register Basics637520
! Node: Allocation Order643405
! Node: Values in Registers644850
! Node: Leaf Functions650173
! Node: Stack Registers652991
! Node: Register Classes654109
! Node: Stack and Calling679485
! Node: Frame Layout679990
! Node: Exception Handling687988
! Node: Stack Checking693906
! Node: Frame Registers697539
! Node: Elimination704145
! Node: Stack Arguments708176
! Node: Register Arguments716145
! Node: Scalar Return728822
! Node: Aggregate Return733595
! Node: Caller Saves736935
! Node: Function Entry738113
! Node: Profiling750952
! Node: Tail Calls752610
! Node: Varargs753444
! Node: Trampolines761384
! Node: Library Calls768172
! Node: Addressing Modes772288
! Node: Condition Code783292
! Node: Costs791427
! Node: Scheduling803179
! Node: Sections819030
! Node: PIC829551
! Node: Assembler Format832397
! Node: File Framework833476
! Node: Data Output839548
! Node: Uninitialized Data846981
! Node: Label Output852513
! Node: Initialization872089
! Node: Macros for Initialization878083
! Node: Instruction Output884376
! Node: Dispatch Tables893372
! Node: Exception Region Output896008
! Node: Alignment Output900506
! Node: Debugging Info904650
! Node: All Debuggers905320
! Node: DBX Options908175
! Node: DBX Hooks913489
! Node: File Names and DBX917104
! Node: SDB and DWARF918428
! Node: VMS Debug922146
! Node: Floating Point922716
! Node: Mode Switching927543
! Node: Target Attributes931468
! Node: MIPS Coprocessors935363
! Node: PCH Target936945
! Node: Misc938203
! Node: Host Config972570
! Node: Host Common973632
! Node: Filesystem975703
! Node: Host Misc979258
! Node: Fragments981455
! Node: Target Fragment982654
! Node: Host Fragment988082
! Node: Collect2989526
! Node: Header Dirs992083
! Node: Type Information993513
! Node: GTY Options994571
! Node: GGC Roots1003024
! Node: Files1003733
! Node: Funding1006585
! Node: GNU Project1009093
! Node: Copying1009744
! Node: GNU Free Documentation License1028923
! Node: Contributors1051328
! Node: Option Index1078861
! Node: Index1081044
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/gcj.1 gcc-3.4.5/gcc/doc/gcj.1
*** gcc-3.4.4/gcc/doc/gcj.1 2005-05-19 10:02:20.000000000 +0000
--- gcc-3.4.5/gcc/doc/gcj.1 2005-12-01 03:57:08.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GCJ 1"
! .TH GCJ 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gcj \- Ahead\-of\-time compiler for the Java language
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GCJ 1"
! .TH GCJ 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gcj \- Ahead\-of\-time compiler for the Java language
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/gcjh.1 gcc-3.4.5/gcc/doc/gcjh.1
*** gcc-3.4.4/gcc/doc/gcjh.1 2005-05-19 10:02:20.000000000 +0000
--- gcc-3.4.5/gcc/doc/gcjh.1 2005-12-01 03:57:08.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GCJH 1"
! .TH GCJH 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gcjh \- generate header files from Java class files
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GCJH 1"
! .TH GCJH 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gcjh \- generate header files from Java class files
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/gcj.info gcc-3.4.5/gcc/doc/gcj.info
*** gcc-3.4.4/gcc/doc/gcj.info 2005-05-19 10:02:14.000000000 +0000
--- gcc-3.4.5/gcc/doc/gcj.info 2005-12-01 03:56:58.000000000 +0000
***************
*** 1,7 ****
! This is doc/gcj.info, produced by makeinfo version 4.2 from
! /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/java/gcj.texi.
! Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
--- 1,7 ----
! This is doc/gcj.info, produced by makeinfo version 4.8 from
! /home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/java/gcj.texi.
! Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
*************** texts being (a) (see below), and with th
*** 19,25 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* Gcj: (gcj). Ahead-of-time compiler for the Java language
--- 19,26 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
!
INFO-DIR-SECTION Programming
START-INFO-DIR-ENTRY
* Gcj: (gcj). Ahead-of-time compiler for the Java language
*************** START-INFO-DIR-ENTRY
*** 42,48 ****
The remote object registry.
END-INFO-DIR-ENTRY
! Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
--- 43,49 ----
The remote object registry.
END-INFO-DIR-ENTRY
! Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
*************** texts being (a) (see below), and with th
*** 60,74 ****
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
File: gcj.info, Node: Top, Next: Copying, Up: (dir)
Introduction
************
! This manual describes how to use `gcj', the GNU compiler for the
! Java programming language. `gcj' can generate both `.class' files and
object files, and it can read both Java source code and `.class' files.
* Menu:
--- 61,76 ----
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
! funds for GNU development.
!
File: gcj.info, Node: Top, Next: Copying, Up: (dir)
Introduction
************
! This manual describes how to use `gcj', the GNU compiler for the Java
! programming language. `gcj' can generate both `.class' files and
object files, and it can read both Java source code and `.class' files.
* Menu:
*************** GNU GENERAL PUBLIC LICENSE
*** 96,113 ****
**************************
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your
! freedom to share and change it. By contrast, the GNU General Public
! License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
--- 98,116 ----
**************************
Version 2, June 1991
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
! The licenses for most software are designed to take away your freedom
! to share and change it. By contrast, the GNU General Public License is
! intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
*************** modification follow.
*** 360,366 ****
and reuse of software generally.
NO WARRANTY
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
--- 363,368 ----
*************** modification follow.
*** 384,394 ****
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
-
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
--- 386,395 ----
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
! If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
*************** the "copyright" line and a pointer to wh
*** 400,416 ****
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--- 401,417 ----
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YEAR NAME OF AUTHOR
!
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
!
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
!
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*************** if necessary. Here is a sample; alter t
*** 439,445 ****
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
--- 440,446 ----
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
!
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
*************** GNU Free Documentation License
*** 456,464 ****
******************************
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
--- 457,466 ----
******************************
Version 1.2, November 2002
+
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
!
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 852,858 ****
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
--- 854,860 ----
ADDENDUM: How to use this License for your documents
====================================================
! To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
*************** permit their use in free software.
*** 883,892 ****
File: gcj.info, Node: Invoking gcj, Next: Compatibility, Prev: GNU Free Documentation License, Up: Top
! Invoking gcj
! ************
! As `gcj' is just another front end to `gcc', it supports many of the
same options as gcc. *Note Option Summary: (gcc)Option Summary. This
manual only documents the options specific to `gcj'.
--- 885,894 ----
File: gcj.info, Node: Invoking gcj, Next: Compatibility, Prev: GNU Free Documentation License, Up: Top
! 1 Invoking gcj
! **************
! As `gcj' is just another front end to `gcc', it supports many of the
same options as gcc. *Note Option Summary: (gcc)Option Summary. This
manual only documents the options specific to `gcj'.
*************** manual only documents the options specif
*** 902,911 ****
File: gcj.info, Node: Input and output files, Next: Input Options, Up: Invoking gcj
! Input and output files
! ======================
! A `gcj' command is like a `gcc' command, in that it consists of a
number of options and file names. The following kinds of input file
names are supported:
--- 904,913 ----
File: gcj.info, Node: Input and output files, Next: Input Options, Up: Invoking gcj
! 1.1 Input and output files
! ==========================
! A `gcj' command is like a `gcc' command, in that it consists of a
number of options and file names. The following kinds of input file
names are supported:
*************** to fix this.)
*** 945,954 ****
File: gcj.info, Node: Input Options, Next: Encodings, Prev: Input and output files, Up: Invoking gcj
! Input Options
! =============
! `gcj' has options to control where it looks to find files it needs.
For instance, `gcj' might need to load a class that is referenced by
the file it has been asked to compile. Like other compilers for the
Java language, `gcj' has a notion of a "class path". There are several
--- 947,956 ----
File: gcj.info, Node: Input Options, Next: Encodings, Prev: Input and output files, Up: Invoking gcj
! 1.2 Input Options
! =================
! `gcj' has options to control where it looks to find files it needs.
For instance, `gcj' might need to load a class that is referenced by
the file it has been asked to compile. Like other compilers for the
Java language, `gcj' has a notion of a "class path". There are several
*************** in this particular case.)
*** 1021,1031 ****
File: gcj.info, Node: Encodings, Next: Warnings, Prev: Input Options, Up: Invoking gcj
! Encodings
! =========
! The Java programming language uses Unicode throughout. In an effort
! to integrate well with other locales, `gcj' allows `.java' files to be
written using almost any encoding. `gcj' knows how to convert these
encodings into its internal encoding at compile time.
--- 1023,1033 ----
File: gcj.info, Node: Encodings, Next: Warnings, Prev: Input Options, Up: Invoking gcj
! 1.3 Encodings
! =============
! The Java programming language uses Unicode throughout. In an effort to
! integrate well with other locales, `gcj' allows `.java' files to be
written using almost any encoding. `gcj' knows how to convert these
encodings into its internal encoding at compile time.
*************** every host.
*** 1048,1057 ****
File: gcj.info, Node: Warnings, Next: Code Generation, Prev: Encodings, Up: Invoking gcj
! Warnings
! ========
! `gcj' implements several warnings. As with other generic `gcc'
warnings, if an option of the form `-Wfoo' enables a warning, then
`-Wno-foo' will disable it. Here we've chosen to document the form of
the warning which will have an effect - the default being the opposite
--- 1050,1059 ----
File: gcj.info, Node: Warnings, Next: Code Generation, Prev: Encodings, Up: Invoking gcj
! 1.4 Warnings
! ============
! `gcj' implements several warnings. As with other generic `gcc'
warnings, if an option of the form `-Wfoo' enables a warning, then
`-Wno-foo' will disable it. Here we've chosen to document the form of
the warning which will have an effect - the default being the opposite
*************** of what is listed.
*** 1083,1092 ****
File: gcj.info, Node: Code Generation, Next: Configure-time Options, Prev: Warnings, Up: Invoking gcj
! Code Generation
! ===============
! In addition to the many `gcc' options controlling code generation,
`gcj' has several options specific to itself.
`--main=CLASSNAME'
--- 1085,1094 ----
File: gcj.info, Node: Code Generation, Next: Configure-time Options, Prev: Warnings, Up: Invoking gcj
! 1.5 Code Generation
! ===================
! In addition to the many `gcc' options controlling code generation,
`gcj' has several options specific to itself.
`--main=CLASSNAME'
*************** starting the application.
*** 1170,1179 ****
File: gcj.info, Node: Configure-time Options, Prev: Code Generation, Up: Invoking gcj
! Configure-time Options
! ======================
! Some `gcj' code generations options affect the resulting ABI, and so
can only be meaningfully given when `libgcj', the runtime package, is
configured. `libgcj' puts the appropriate options from this group into
a `spec' file which is read by `gcj'. These options are listed here
--- 1172,1181 ----
File: gcj.info, Node: Configure-time Options, Prev: Code Generation, Up: Invoking gcj
! 1.6 Configure-time Options
! ==========================
! Some `gcj' code generations options affect the resulting ABI, and so
can only be meaningfully given when `libgcj', the runtime package, is
configured. `libgcj' puts the appropriate options from this group into
a `spec' file which is read by `gcj'. These options are listed here
*************** touch these options.
*** 1205,1217 ****
File: gcj.info, Node: Compatibility, Next: Invoking gcjh, Prev: Invoking gcj, Up: Top
! Compatibility with the Java Platform
! ************************************
! As we believe it is important that the Java platform not be
! fragmented, `gcj' and `libgcj' try to conform to the relevant Java
! specifications. However, limited manpower and incomplete and unclear
! documentation work against us. So, there are caveats to using `gcj'.
* Menu:
--- 1207,1219 ----
File: gcj.info, Node: Compatibility, Next: Invoking gcjh, Prev: Invoking gcj, Up: Top
! 2 Compatibility with the Java Platform
! **************************************
! As we believe it is important that the Java platform not be fragmented,
! `gcj' and `libgcj' try to conform to the relevant Java specifications.
! However, limited manpower and incomplete and unclear documentation work
! against us. So, there are caveats to using `gcj'.
* Menu:
*************** documentation work against us. So, ther
*** 1221,1230 ****
File: gcj.info, Node: Limitations, Next: Extensions, Up: Compatibility
! Standard features not yet supported
! ===================================
! This list of compatibility issues is by no means complete.
* `gcj' implements the JDK 1.2 language. It supports inner classes
and the new 1.4 `assert' keyword. It does not yet support the
--- 1223,1232 ----
File: gcj.info, Node: Limitations, Next: Extensions, Up: Compatibility
! 2.1 Standard features not yet supported
! =======================================
! This list of compatibility issues is by no means complete.
* `gcj' implements the JDK 1.2 language. It supports inner classes
and the new 1.4 `assert' keyword. It does not yet support the
*************** Standard features not yet supported
*** 1255,1264 ****
File: gcj.info, Node: Extensions, Prev: Limitations, Up: Compatibility
! Extra features unique to gcj
! ============================
! The main feature of `gcj' is that it can compile programs written in
the Java programming language to native code. Most extensions that
have been added are to facilitate this functionality.
--- 1257,1266 ----
File: gcj.info, Node: Extensions, Prev: Limitations, Up: Compatibility
! 2.2 Extra features unique to gcj
! ================================
! The main feature of `gcj' is that it can compile programs written in
the Java programming language to native code. Most extensions that
have been added are to facilitate this functionality.
*************** have been added are to facilitate this f
*** 1300,1316 ****
particular `GCJ_PROPERTIES' holds a list of assignments to global
properties, such as would be set with the `-D' option to `java'.
For instance, `java.compiler=gcj' is a valid (but currently
! meaningless) setting.
File: gcj.info, Node: Invoking gcjh, Next: Invoking jv-scan, Prev: Compatibility, Up: Top
! Invoking gcjh
! *************
! The `gcjh' program is used to generate header files from class
! files. It can generate both CNI and JNI header files, as well as stub
implementation files which can be used as a basis for implementing the
required native methods.
--- 1302,1318 ----
particular `GCJ_PROPERTIES' holds a list of assignments to global
properties, such as would be set with the `-D' option to `java'.
For instance, `java.compiler=gcj' is a valid (but currently
! meaningless) setting.
File: gcj.info, Node: Invoking gcjh, Next: Invoking jv-scan, Prev: Compatibility, Up: Top
! 3 Invoking gcjh
! ***************
! The `gcjh' program is used to generate header files from class files.
! It can generate both CNI and JNI header files, as well as stub
implementation files which can be used as a basis for implementing the
required native methods.
*************** required native methods.
*** 1380,1389 ****
File: gcj.info, Node: Invoking jv-scan, Next: Invoking jcf-dump, Prev: Invoking gcjh, Up: Top
! Invoking jv-scan
! ****************
! The `jv-scan' program can be used to print information about a Java
source file (`.java' file).
`--no-assert'
--- 1382,1391 ----
File: gcj.info, Node: Invoking jv-scan, Next: Invoking jcf-dump, Prev: Invoking gcjh, Up: Top
! 4 Invoking jv-scan
! ******************
! The `jv-scan' program can be used to print information about a Java
source file (`.java' file).
`--no-assert'
*************** source file (`.java' file).
*** 1420,1429 ****
File: gcj.info, Node: Invoking jcf-dump, Next: Invoking gij, Prev: Invoking jv-scan, Up: Top
! Invoking jcf-dump
! *****************
! This is a class file examiner, similar to `javap'. It will print
information about a number of classes, which are specified by class name
or file name.
--- 1422,1431 ----
File: gcj.info, Node: Invoking jcf-dump, Next: Invoking gij, Prev: Invoking jv-scan, Up: Top
! 5 Invoking jcf-dump
! *******************
! This is a class file examiner, similar to `javap'. It will print
information about a number of classes, which are specified by class name
or file name.
*************** or file name.
*** 1453,1464 ****
File: gcj.info, Node: Invoking gij, Next: Invoking jv-convert, Prev: Invoking jcf-dump, Up: Top
! Invoking gij
! ************
! `gij' is a Java bytecode interpreter included with `libgcj'. `gij'
! is not available on every platform; porting it requires a small amount
! of assembly programming which has not been done for all the targets
supported by `gcj'.
The primary argument to `gij' is the name of a class or, with
--- 1455,1466 ----
File: gcj.info, Node: Invoking gij, Next: Invoking jv-convert, Prev: Invoking jcf-dump, Up: Top
! 6 Invoking gij
! **************
! `gij' is a Java bytecode interpreter included with `libgcj'. `gij' is
! not available on every platform; porting it requires a small amount of
! assembly programming which has not been done for all the targets
supported by `gcj'.
The primary argument to `gij' is the name of a class or, with
*************** been compiled and put into a shared libr
*** 1524,1533 ****
File: gcj.info, Node: Invoking jv-convert, Next: Invoking rmic, Prev: Invoking gij, Up: Top
! Invoking jv-convert
! *******************
! `jv-convert' [`OPTION'] ... [INPUTFILE [OUTPUTFILE]]
`jv-convert' is a utility included with `libgcj' which converts a
file from one encoding to another. It is similar to the Unix `iconv'
--- 1526,1535 ----
File: gcj.info, Node: Invoking jv-convert, Next: Invoking rmic, Prev: Invoking gij, Up: Top
! 7 Invoking jv-convert
! *********************
! `jv-convert' [`OPTION'] ... [INPUTFILE [OUTPUTFILE]]
`jv-convert' is a utility included with `libgcj' which converts a
file from one encoding to another. It is similar to the Unix `iconv'
*************** Currently there is no way to get a list
*** 1563,1572 ****
File: gcj.info, Node: Invoking rmic, Next: Invoking rmiregistry, Prev: Invoking jv-convert, Up: Top
! Invoking rmic
! *************
! `rmic' [`OPTION'] ... CLASS ...
`rmic' is a utility included with `libgcj' which generates stubs for
remote objects.
--- 1565,1574 ----
File: gcj.info, Node: Invoking rmic, Next: Invoking rmiregistry, Prev: Invoking jv-convert, Up: Top
! 8 Invoking rmic
! ***************
! `rmic' [`OPTION'] ... CLASS ...
`rmic' is a utility included with `libgcj' which generates stubs for
remote objects.
*************** instance, `--help' is accepted.
*** 1614,1623 ****
File: gcj.info, Node: Invoking rmiregistry, Next: About CNI, Prev: Invoking rmic, Up: Top
! Invoking rmiregistry
! ********************
! `rmic' [`OPTION'] ... [PORT]
`rmiregistry' starts a remote object registry on the current host.
If no port number is specified, then port 1099 is used.
--- 1616,1625 ----
File: gcj.info, Node: Invoking rmiregistry, Next: About CNI, Prev: Invoking rmic, Up: Top
! 9 Invoking rmiregistry
! **********************
! `rmic' [`OPTION'] ... [PORT]
`rmiregistry' starts a remote object registry on the current host.
If no port number is specified, then port 1099 is used.
*************** If no port number is specified, then por
*** 1631,1640 ****
File: gcj.info, Node: About CNI, Next: System properties, Prev: Invoking rmiregistry, Up: Top
! About CNI
! *********
! This documents CNI, the Compiled Native Interface, which is is a
convenient way to write Java native methods using C++. This is a more
efficient, more convenient, but less portable alternative to the
standard JNI (Java Native Interface).
--- 1633,1642 ----
File: gcj.info, Node: About CNI, Next: System properties, Prev: Invoking rmiregistry, Up: Top
! 10 About CNI
! ************
! This documents CNI, the Compiled Native Interface, which is is a
convenient way to write Java native methods using C++. This is a more
efficient, more convenient, but less portable alternative to the
standard JNI (Java Native Interface).
*************** standard JNI (Java Native Interface).
*** 1660,1678 ****
File: gcj.info, Node: Basic concepts, Next: Packages, Up: About CNI
! Basic concepts
! ==============
! In terms of languages features, Java is mostly a subset of C++.
! Java has a few important extensions, plus a powerful standard class
! library, but on the whole that does not change the basic similarity.
! Java is a hybrid object-oriented language, with a few native types, in
! addition to class types. It is class-based, where a class may have
! static as well as per-object fields, and static as well as instance
! methods. Non-static methods may be virtual, and may be overloaded.
! Overloading is resolved at compile time by matching the actual argument
! types against the parameter types. Virtual methods are implemented
! using indirect calls through a dispatch table (virtual function table).
Objects are allocated on the heap, and initialized using a constructor
method. Classes are organized in a package hierarchy.
--- 1662,1680 ----
File: gcj.info, Node: Basic concepts, Next: Packages, Up: About CNI
! 10.1 Basic concepts
! ===================
! In terms of languages features, Java is mostly a subset of C++. Java
! has a few important extensions, plus a powerful standard class library,
! but on the whole that does not change the basic similarity. Java is a
! hybrid object-oriented language, with a few native types, in addition
! to class types. It is class-based, where a class may have static as
! well as per-object fields, and static as well as instance methods.
! Non-static methods may be virtual, and may be overloaded. Overloading
! is resolved at compile time by matching the actual argument types
! against the parameter types. Virtual methods are implemented using
! indirect calls through a dispatch table (virtual function table).
Objects are allocated on the heap, and initialized using a constructor
method. Classes are organized in a package hierarchy.
*************** and we will try to come up with an alter
*** 1711,1721 ****
lists `_Jv_AllocBytes' as an example; CNI should instead provide a
`JvAllocBytes' function.)
! Limitations
! -----------
! Whilst a Java class is just a C++ class that doesn't mean that you
! are freed from the shackles of Java, a CNI C++ class must adhere to the
rules of the Java programming language.
For example: it is not possible to declare a method in a CNI class
--- 1713,1723 ----
lists `_Jv_AllocBytes' as an example; CNI should instead provide a
`JvAllocBytes' function.)
! 10.1.1 Limitations
! ------------------
! Whilst a Java class is just a C++ class that doesn't mean that you are
! freed from the shackles of Java, a CNI C++ class must adhere to the
rules of the Java programming language.
For example: it is not possible to declare a method in a CNI class
*************** member variable of some non-Java datatyp
*** 1725,1734 ****
File: gcj.info, Node: Packages, Next: Primitive types, Prev: Basic concepts, Up: About CNI
! Packages
! ========
! The only global names in Java are class names, and packages. A
"package" can contain zero or more classes, and also zero or more
sub-packages. Every class belongs to either an unnamed package or a
package that has a hierarchical and globally unique name.
--- 1727,1736 ----
File: gcj.info, Node: Packages, Next: Primitive types, Prev: Basic concepts, Up: About CNI
! 10.2 Packages
! =============
! The only global names in Java are class names, and packages. A
"package" can contain zero or more classes, and also zero or more
sub-packages. Every class belongs to either an unnamed package or a
package that has a hierarchical and globally unique name.
*************** Here is how you could express this:
*** 1749,1755 ****
...
}
}
!
class java::lang::String : public java::lang::Object
{
...
--- 1751,1757 ----
...
}
}
!
class java::lang::String : public java::lang::Object
{
...
*************** Here is how you could express this:
*** 1758,1772 ****
The `gcjh' tool automatically generates the necessary namespace
declarations.
! Leaving out package names
! -------------------------
! Always using the fully-qualified name of a java class can be
! tiresomely verbose. Using the full qualified name also ties the code
! to a single package making code changes necessary should the class move
! from one package to another. The Java `package' declaration specifies
! that the following class declarations are in the named package, without
! having to explicitly name the full package qualifiers. The `package'
declaration can be followed by zero or more `import' declarations, which
allows either a single class or all the classes in a package to be
named by a simple identifier. C++ provides something similar with the
--- 1760,1774 ----
The `gcjh' tool automatically generates the necessary namespace
declarations.
! 10.2.1 Leaving out package names
! --------------------------------
! Always using the fully-qualified name of a java class can be tiresomely
! verbose. Using the full qualified name also ties the code to a single
! package making code changes necessary should the class move from one
! package to another. The Java `package' declaration specifies that the
! following class declarations are in the named package, without having
! to explicitly name the full package qualifiers. The `package'
declaration can be followed by zero or more `import' declarations, which
allows either a single class or all the classes in a package to be
named by a simple identifier. C++ provides something similar with the
*************** The same effect can be achieved in C++ l
*** 1797,1806 ****
File: gcj.info, Node: Primitive types, Next: Interfaces, Prev: Packages, Up: About CNI
! Primitive types
! ===============
! Java provides 8 "primitives" types which represent integers, floats,
characters and booleans (and also the void type). C++ has its own very
similar concrete types. Such types in C++ however are not always
implemented in the same way (an int might be 16, 32 or 64 bits for
--- 1799,1808 ----
File: gcj.info, Node: Primitive types, Next: Interfaces, Prev: Packages, Up: About CNI
! 10.3 Primitive types
! ====================
! Java provides 8 "primitives" types which represent integers, floats,
characters and booleans (and also the void type). C++ has its own very
similar concrete types. Such types in C++ however are not always
implemented in the same way (an int might be 16, 32 or 64 bits for
*************** type:
*** 1821,1835 ****
When referring to a Java type You should always use these C++
typenames (e.g.: `jint') to avoid disappointment.
! Reference types associated with primitive types
! -----------------------------------------------
! In Java each primitive type has an associated reference type, e.g.:
`boolean' has an associated `java.lang.Boolean' class. In order to
make working with such classes easier GCJ provides the macro
`JvPrimClass':
! - macro: JvPrimClass type
Return a pointer to the `Class' object corresponding to the type
supplied.
--- 1823,1837 ----
When referring to a Java type You should always use these C++
typenames (e.g.: `jint') to avoid disappointment.
! 10.3.1 Reference types associated with primitive types
! ------------------------------------------------------
! In Java each primitive type has an associated reference type, e.g.:
`boolean' has an associated `java.lang.Boolean' class. In order to
make working with such classes easier GCJ provides the macro
`JvPrimClass':
! -- macro: JvPrimClass type
Return a pointer to the `Class' object corresponding to the type
supplied.
*************** make working with such classes easier GC
*** 1839,1849 ****
File: gcj.info, Node: Interfaces, Next: Objects and Classes, Prev: Primitive types, Up: About CNI
! Interfaces
! ==========
! A Java class can "implement" zero or more "interfaces", in addition
! to inheriting from a single base class.
CNI allows CNI code to implement methods of interfaces. You can
also call methods through interface references, with some limitations.
--- 1841,1851 ----
File: gcj.info, Node: Interfaces, Next: Objects and Classes, Prev: Primitive types, Up: About CNI
! 10.4 Interfaces
! ===============
! A Java class can "implement" zero or more "interfaces", in addition to
! inheriting from a single base class.
CNI allows CNI code to implement methods of interfaces. You can
also call methods through interface references, with some limitations.
*************** superinterface.
*** 1860,1866 ****
{
void a();
}
!
interface B extends A
{
void b();
--- 1862,1868 ----
{
void a();
}
!
interface B extends A
{
void b();
*************** unless you cast it to an `A' first.
*** 1872,1884 ****
File: gcj.info, Node: Objects and Classes, Next: Class Initialization, Prev: Interfaces, Up: About CNI
! Objects and Classes
! ===================
! Classes
! -------
! All Java classes are derived from `java.lang.Object'. C++ does not
have a unique root class, but we use the C++ class `java::lang::Object'
as the C++ version of the `java.lang.Object' Java class. All other
Java classes are mapped into corresponding C++ classes derived from
--- 1874,1886 ----
File: gcj.info, Node: Objects and Classes, Next: Class Initialization, Prev: Interfaces, Up: About CNI
! 10.5 Objects and Classes
! ========================
! 10.5.1 Classes
! --------------
! All Java classes are derived from `java.lang.Object'. C++ does not
have a unique root class, but we use the C++ class `java::lang::Object'
as the C++ version of the `java.lang.Object' Java class. All other
Java classes are mapped into corresponding C++ classes derived from
*************** Java classes are mapped into correspondi
*** 1887,1901 ****
Interface inheritance (the `implements' keyword) is currently not
reflected in the C++ mapping.
! Object fields
! -------------
! Each object contains an object header, followed by the instance
! fields of the class, in order. The object header consists of a single
! pointer to a dispatch or virtual function table. (There may be extra
! fields _in front of_ the object, for example for memory management, but
! this is invisible to the application, and the reference to the object
! points to the dispatch table pointer.)
The fields are laid out in the same order, alignment, and size as in
C++. Specifically, 8-bite and 16-bit native types (`byte', `short',
--- 1889,1903 ----
Interface inheritance (the `implements' keyword) is currently not
reflected in the C++ mapping.
! 10.5.2 Object fields
! --------------------
! Each object contains an object header, followed by the instance fields
! of the class, in order. The object header consists of a single pointer
! to a dispatch or virtual function table. (There may be extra fields
! _in front of_ the object, for example for memory management, but this
! is invisible to the application, and the reference to the object points
! to the dispatch table pointer.)
The fields are laid out in the same order, alignment, and size as in
C++. Specifically, 8-bite and 16-bit native types (`byte', `short',
*************** the following Java class:
*** 1918,1924 ****
#include ;
#include ;
!
Int*
mult (Int *p, jint k)
{
--- 1920,1926 ----
#include ;
#include ;
!
Int*
mult (Int *p, jint k)
{
*************** the following Java class:
*** 1927,1953 ****
return new Int(p->i * k);
}
! Access specifiers
! -----------------
! CNI does not strictly enforce the Java access specifiers, because
! Java permissions cannot be directly mapped into C++ permission.
! Private Java fields and methods are mapped to private C++ fields and
! methods, but other fields and methods are mapped to public fields and
! methods.
File: gcj.info, Node: Class Initialization, Next: Object allocation, Prev: Objects and Classes, Up: About CNI
! Class Initialization
! ====================
! Java requires that each class be automatically initialized at the
! time of the first active use. Initializing a class involves
! initializing the static fields, running code in class initializer
! methods, and initializing base classes. There may also be some
! implementation specific actions, such as allocating `String' objects
! corresponding to string literals in the code.
The GCJ compiler inserts calls to `JvInitClass' at appropriate
places to ensure that a class is initialized when required. The C++
--- 1929,1954 ----
return new Int(p->i * k);
}
! 10.5.3 Access specifiers
! ------------------------
! CNI does not strictly enforce the Java access specifiers, because Java
! permissions cannot be directly mapped into C++ permission. Private
! Java fields and methods are mapped to private C++ fields and methods,
! but other fields and methods are mapped to public fields and methods.
File: gcj.info, Node: Class Initialization, Next: Object allocation, Prev: Objects and Classes, Up: About CNI
! 10.6 Class Initialization
! =========================
! Java requires that each class be automatically initialized at the time
! of the first active use. Initializing a class involves initializing
! the static fields, running code in class initializer methods, and
! initializing base classes. There may also be some implementation
! specific actions, such as allocating `String' objects corresponding to
! string literals in the code.
The GCJ compiler inserts calls to `JvInitClass' at appropriate
places to ensure that a class is initialized when required. The C++
*************** a static field from C++.
*** 1985,1994 ****
File: gcj.info, Node: Object allocation, Next: Arrays, Prev: Class Initialization, Up: About CNI
! Object allocation
! =================
! New Java objects are allocated using a "class instance creation
expression", e.g.:
new TYPE ( ... )
--- 1986,1995 ----
File: gcj.info, Node: Object allocation, Next: Arrays, Prev: Class Initialization, Up: About CNI
! 10.7 Object allocation
! ======================
! New Java objects are allocated using a "class instance creation
expression", e.g.:
new TYPE ( ... )
*************** For example:
*** 2005,2011 ****
java::util::Hashtable *ht = new java::util::Hashtable(120);
! - Function: void* _Jv_AllocBytes (jsize SIZE)
Allocates SIZE bytes from the heap. The memory is not scanned by
the garbage collector but it freed if no references to it are
discovered.
--- 2006,2012 ----
java::util::Hashtable *ht = new java::util::Hashtable(120);
! -- Function: void* _Jv_AllocBytes (jsize SIZE)
Allocates SIZE bytes from the heap. The memory is not scanned by
the garbage collector but it freed if no references to it are
discovered.
*************** For example:
*** 2013,2024 ****
File: gcj.info, Node: Arrays, Next: Methods, Prev: Object allocation, Up: About CNI
! Arrays
! ======
! While in many ways Java is similar to C and C++, it is quite
! different in its treatment of arrays. C arrays are based on the idea
! of pointer arithmetic, which would be incompatible with Java's security
requirements. Java arrays are true objects (array types inherit from
`java.lang.Object'). An array-valued variable is one that contains a
reference (pointer) to an array object.
--- 2014,2025 ----
File: gcj.info, Node: Arrays, Next: Methods, Prev: Object allocation, Up: About CNI
! 10.8 Arrays
! ===========
! While in many ways Java is similar to C and C++, it is quite different
! in its treatment of arrays. C arrays are based on the idea of pointer
! arithmetic, which would be incompatible with Java's security
requirements. Java arrays are true objects (array types inherit from
`java.lang.Object'). An array-valued variable is one that contains a
reference (pointer) to an array object.
*************** template, which as defined as follows:
*** 2031,2037 ****
public:
int length;
};
!
template
class JArray : public __JArray
{
--- 2032,2038 ----
public:
int length;
};
!
template
class JArray : public __JArray
{
*************** type:
*** 2055,2061 ****
typedef JArray *jfloatArray;
typedef JArray *jdoubleArray;
! - Method on template: T* elements (JArray ARRAY)
This template function can be used to get a pointer to the
elements of the `array'. For instance, you can fetch a pointer to
the integers that make up an `int[]' like so:
--- 2056,2062 ----
typedef JArray *jfloatArray;
typedef JArray *jdoubleArray;
! -- Method on template: T* elements (JArray ARRAY)
This template function can be used to get a pointer to the
elements of the `array'. For instance, you can fetch a pointer to
the integers that make up an `int[]' like so:
*************** type:
*** 2065,2081 ****
The name of this function may change in the future.
! - Function: jobjectArray JvNewObjectArray (jsize LENGTH, jclass KLASS,
! jobject INIT)
Here `klass' is the type of elements of the array and `init' is
the initial value put into every slot in the array.
! Creating arrays
! ---------------
! For each primitive type there is a function which can be used to
! create a new array of that type. The name of the function is of the
! form:
JvNewTYPEArray
--- 2066,2081 ----
The name of this function may change in the future.
! -- Function: jobjectArray JvNewObjectArray (jsize LENGTH, jclass
! KLASS, jobject INIT)
Here `klass' is the type of elements of the array and `init' is
the initial value put into every slot in the array.
! 10.8.1 Creating arrays
! ----------------------
! For each primitive type there is a function which can be used to create
! a new array of that type. The name of the function is of the form:
JvNewTYPEArray
*************** can be used to create an array of Java p
*** 2088,2119 ****
The following function definition is the template for all such
functions:
! - Function: jbooleanArray JvNewBooleanArray (jint LENGTH)
Create's an array LENGTH indices long.
! - Function: jsize JvGetArrayLength (jarray ARRAY)
Returns the length of the ARRAY.
File: gcj.info, Node: Methods, Next: Strings, Prev: Arrays, Up: About CNI
! Methods
! =======
! Java methods are mapped directly into C++ methods. The header files
generated by `gcjh' include the appropriate method definitions.
Basically, the generated methods have the same names and
_corresponding_ types as the Java methods, and are called in the
natural manner.
! Overloading
! -----------
! Both Java and C++ provide method overloading, where multiple methods
! in a class have the same name, and the correct one is chosen (at
! compile time) depending on the argument types. The rules for choosing
! the correct method are (as expected) more complicated in C++ than in
! Java, but given a set of overloaded methods generated by `gcjh' the C++
compiler will choose the expected one.
Common assemblers and linkers are not aware of C++ overloading, so
--- 2088,2119 ----
The following function definition is the template for all such
functions:
! -- Function: jbooleanArray JvNewBooleanArray (jint LENGTH)
Create's an array LENGTH indices long.
! -- Function: jsize JvGetArrayLength (jarray ARRAY)
Returns the length of the ARRAY.
File: gcj.info, Node: Methods, Next: Strings, Prev: Arrays, Up: About CNI
! 10.9 Methods
! ============
! Java methods are mapped directly into C++ methods. The header files
generated by `gcjh' include the appropriate method definitions.
Basically, the generated methods have the same names and
_corresponding_ types as the Java methods, and are called in the
natural manner.
! 10.9.1 Overloading
! ------------------
! Both Java and C++ provide method overloading, where multiple methods in
! a class have the same name, and the correct one is chosen (at compile
! time) depending on the argument types. The rules for choosing the
! correct method are (as expected) more complicated in C++ than in Java,
! but given a set of overloaded methods generated by `gcjh' the C++
compiler will choose the expected one.
Common assemblers and linkers are not aware of C++ overloading, so
*************** mechanism is used to implement Java over
*** 2124,2134 ****
interoperability, it is important that both the Java and C++ compilers
use the _same_ encoding scheme.
! Static methods
! --------------
! Static Java methods are invoked in CNI using the standard C++
! syntax, using the `::' operator rather than the `.' operator.
For example:
--- 2124,2134 ----
interoperability, it is important that both the Java and C++ compilers
use the _same_ encoding scheme.
! 10.9.2 Static methods
! ---------------------
! Static Java methods are invoked in CNI using the standard C++ syntax,
! using the `::' operator rather than the `.' operator.
For example:
*************** For example:
*** 2144,2154 ****
...
}
! Object Constructors
! -------------------
! Constructors are called implicitly as part of object allocation
! using the `new' operator.
For example:
--- 2144,2154 ----
...
}
! 10.9.3 Object Constructors
! --------------------------
! Constructors are called implicitly as part of object allocation using
! the `new' operator.
For example:
*************** For example:
*** 2158,2168 ****
limitation can be coded round however because a constructor can _call_
a native method.
! Instance methods
! ----------------
! Calling a Java instance method from a C++ CNI method is done using
! the standard C++ syntax, e.g.:
// First create the Java object.
java::lang::Integer *x = new java::lang::Integer(234);
--- 2158,2168 ----
limitation can be coded round however because a constructor can _call_
a native method.
! 10.9.4 Instance methods
! -----------------------
! Calling a Java instance method from a C++ CNI method is done using the
! standard C++ syntax, e.g.:
// First create the Java object.
java::lang::Integer *x = new java::lang::Integer(234);
*************** the standard C++ syntax, e.g.:
*** 2174,2225 ****
Defining a Java native instance method is also done the natural way:
#include
!
jdouble
java::lang:Integer::doubleValue()
{
return (jdouble) value;
}
! Interface methods
! -----------------
! In Java you can call a method using an interface reference. This is
supported, but not completely. *Note Interfaces::.
File: gcj.info, Node: Strings, Next: Mixing with C++, Prev: Methods, Up: About CNI
! Strings
! =======
! CNI provides a number of utility functions for working with Java
! Java `String' objects. The names and interfaces are analogous to those
! of JNI.
! - Function: jstring JvNewString (const char* CHARS, jsize LEN)
Returns a Java `String' object with characters from the C string
CHARS up to the index LEN in that array.
! - Function: jstring JvNewStringLatin1 (const char* BYTES, jsize LEN)
Returns a Java `String' made up of LEN bytes from BYTES.
! - Function: jstring JvNewStringLatin1 (const char* BYTES)
As above but the length of the `String' is `strlen(BYTES)'.
! - Function: jstring JvNewStringUTF (const char* BYTES)
Returns a `String' which is made up of the UTF encoded characters
present in the C string BYTES.
! - Function: jchar* JvGetStringChars (jstring STR)
Returns a pointer to an array of characters making up the `String'
STR.
! - Function: int JvGetStringUTFLength (jstring STR)
Returns the number of bytes required to encode the contents of the
`String' STR in UTF-8.
! - Function: jsize JvGetStringUTFRegion (jstring STR, jsize START,
jsize LEN, char* BUF)
Puts the UTF-8 encoding of a region of the `String' STR into the
buffer `buf'. The region to fetch is marked by START and LEN.
--- 2174,2225 ----
Defining a Java native instance method is also done the natural way:
#include
!
jdouble
java::lang:Integer::doubleValue()
{
return (jdouble) value;
}
! 10.9.5 Interface methods
! ------------------------
! In Java you can call a method using an interface reference. This is
supported, but not completely. *Note Interfaces::.
File: gcj.info, Node: Strings, Next: Mixing with C++, Prev: Methods, Up: About CNI
! 10.10 Strings
! =============
! CNI provides a number of utility functions for working with Java Java
! `String' objects. The names and interfaces are analogous to those of
! JNI.
! -- Function: jstring JvNewString (const char* CHARS, jsize LEN)
Returns a Java `String' object with characters from the C string
CHARS up to the index LEN in that array.
! -- Function: jstring JvNewStringLatin1 (const char* BYTES, jsize LEN)
Returns a Java `String' made up of LEN bytes from BYTES.
! -- Function: jstring JvNewStringLatin1 (const char* BYTES)
As above but the length of the `String' is `strlen(BYTES)'.
! -- Function: jstring JvNewStringUTF (const char* BYTES)
Returns a `String' which is made up of the UTF encoded characters
present in the C string BYTES.
! -- Function: jchar* JvGetStringChars (jstring STR)
Returns a pointer to an array of characters making up the `String'
STR.
! -- Function: int JvGetStringUTFLength (jstring STR)
Returns the number of bytes required to encode the contents of the
`String' STR in UTF-8.
! -- Function: jsize JvGetStringUTFRegion (jstring STR, jsize START,
jsize LEN, char* BUF)
Puts the UTF-8 encoding of a region of the `String' STR into the
buffer `buf'. The region to fetch is marked by START and LEN.
*************** of JNI.
*** 2230,2240 ****
File: gcj.info, Node: Mixing with C++, Next: Exception Handling, Prev: Strings, Up: About CNI
! Interoperating with C/C++
! =========================
! Because CNI is designed to represent Java classes and methods it
! cannot be mixed readily with C/C++ types.
One important restriction is that Java classes cannot have non-Java
type instance or static variables and cannot have methods which take
--- 2230,2240 ----
File: gcj.info, Node: Mixing with C++, Next: Exception Handling, Prev: Strings, Up: About CNI
! 10.11 Interoperating with C/C++
! ===============================
! Because CNI is designed to represent Java classes and methods it cannot
! be mixed readily with C/C++ types.
One important restriction is that Java classes cannot have non-Java
type instance or static variables and cannot have methods which take
*************** None of the following is possible with C
*** 2247,2254 ****
{
char* variable; // char* is not a valid Java type.
}
!
!
uint
::SomeClass::someMethod (char *arg)
{
--- 2247,2254 ----
{
char* variable; // char* is not a valid Java type.
}
!
!
uint
::SomeClass::someMethod (char *arg)
{
*************** Here are some examples:
*** 2282,2305 ****
class ::MyClass : public java::lang::Object
{
gnu.gcj.RawData string;
!
MyClass ();
gnu.gcj.RawData getText ();
void printText ();
}
!
::MyClass::MyClass ()
{
char* text = ...
string = text;
}
!
gnu.gcj.RawData
::MyClass::getText ()
{
return string;
}
!
void
::MyClass::printText ()
{
--- 2282,2305 ----
class ::MyClass : public java::lang::Object
{
gnu.gcj.RawData string;
!
MyClass ();
gnu.gcj.RawData getText ();
void printText ();
}
!
::MyClass::MyClass ()
{
char* text = ...
string = text;
}
!
gnu.gcj.RawData
::MyClass::getText ()
{
return string;
}
!
void
::MyClass::printText ()
{
*************** Here are some examples:
*** 2309,2321 ****
File: gcj.info, Node: Exception Handling, Next: Synchronization, Prev: Mixing with C++, Up: About CNI
! Exception Handling
! ==================
! While C++ and Java share a common exception handling framework,
! things are not yet perfectly integrated. The main issue is that the
! run-time type information facilities of the two languages are not
! integrated.
Still, things work fairly well. You can throw a Java exception from
C++ using the ordinary `throw' construct, and this exception can be
--- 2309,2320 ----
File: gcj.info, Node: Exception Handling, Next: Synchronization, Prev: Mixing with C++, Up: About CNI
! 10.12 Exception Handling
! ========================
! While C++ and Java share a common exception handling framework, things
! are not yet perfectly integrated. The main issue is that the run-time
! type information facilities of the two languages are not integrated.
Still, things work fairly well. You can throw a Java exception from
C++ using the ordinary `throw' construct, and this exception can be
*************** exceptions are thrown through it, GCC wi
*** 2334,2342 ****
problematic code:
struct S { ~S(); };
!
extern void bar(); // Is implemented in Java and may throw exceptions.
!
void foo()
{
S s;
--- 2333,2341 ----
problematic code:
struct S { ~S(); };
!
extern void bar(); // Is implemented in Java and may throw exceptions.
!
void foo()
{
S s;
*************** destructors when exceptions are thrown t
*** 2355,2364 ****
File: gcj.info, Node: Synchronization, Next: Invocation, Prev: Exception Handling, Up: About CNI
! Synchronization
! ===============
! Each Java object has an implicit monitor. The Java VM uses the
instruction `monitorenter' to acquire and lock a monitor, and
`monitorexit' to release it.
--- 2354,2363 ----
File: gcj.info, Node: Synchronization, Next: Invocation, Prev: Exception Handling, Up: About CNI
! 10.13 Synchronization
! =====================
! Each Java object has an implicit monitor. The Java VM uses the
instruction `monitorenter' to acquire and lock a monitor, and
`monitorexit' to release it.
*************** manually add `JvSynchronize' in a `nativ
*** 2411,2424 ****
File: gcj.info, Node: Invocation, Next: Reflection, Prev: Synchronization, Up: About CNI
! Invocation
! ==========
! CNI permits C++ applications to make calls into Java classes, in
addition to allowing Java code to call into C++. Several functions,
known as the "invocation API", are provided to support this.
! - Function: jint JvCreateJavaVM (void* VM_ARGS)
Initializes the Java runtime. This function performs essential
initialization of the threads interface, garbage collector,
exception handling and other key aspects of the runtime. It must
--- 2410,2423 ----
File: gcj.info, Node: Invocation, Next: Reflection, Prev: Synchronization, Up: About CNI
! 10.14 Invocation
! ================
! CNI permits C++ applications to make calls into Java classes, in
addition to allowing Java code to call into C++. Several functions,
known as the "invocation API", are provided to support this.
! -- Function: jint JvCreateJavaVM (void* VM_ARGS)
Initializes the Java runtime. This function performs essential
initialization of the threads interface, garbage collector,
exception handling and other key aspects of the runtime. It must
*************** known as the "invocation API", are provi
*** 2433,2439 ****
_Note:_ In GCJ 3.1, the `vm_args' parameter is ignored. It may be
used in a future release.
! - Function: java::lang::Thread* JvAttachCurrentThread (jstring NAME,
java::lang::ThreadGroup* GROUP)
Registers an existing thread with the Java runtime. This must be
called once from each thread, before that thread makes any other
--- 2432,2438 ----
_Note:_ In GCJ 3.1, the `vm_args' parameter is ignored. It may be
used in a future release.
! -- Function: java::lang::Thread* JvAttachCurrentThread (jstring NAME,
java::lang::ThreadGroup* GROUP)
Registers an existing thread with the Java runtime. This must be
called once from each thread, before that thread makes any other
*************** known as the "invocation API", are provi
*** 2447,2453 ****
the thread is already attached, the call is ignored and the current
thread object is returned.
! - Function: jint JvDetachCurrentThread ()
Unregisters a thread from the Java runtime. This should be called
by threads that were attached using `JvAttachCurrentThread()',
after they have finished making calls to Java code. This ensures
--- 2446,2452 ----
the thread is already attached, the call is ignored and the current
thread object is returned.
! -- Function: jint JvDetachCurrentThread ()
Unregisters a thread from the Java runtime. This should be called
by threads that were attached using `JvAttachCurrentThread()',
after they have finished making calls to Java code. This ensures
*************** known as the "invocation API", are provi
*** 2455,2479 ****
garbage collection. This function returns `0' upon success, or
`-1' if the current thread is not attached.
! Handling uncaught exceptions
! ----------------------------
! If an exception is thrown from Java code called using the invocation
API, and no handler for the exception can be found, the runtime will
abort the application. In order to make the application more robust, it
is recommended that code which uses the invocation API be wrapped by a
top-level try/catch block that catches all Java exceptions.
! Example
! -------
! The following code demonstrates the use of the invocation API. In
! this example, the C++ application initializes the Java runtime and
! attaches itself. The `java.lang.System' class is initialized in order to
! access its `out' field, and a Java string is printed. Finally, the
! thread is detached from the runtime once it has finished making Java
! calls. Everything is wrapped with a try/catch block to provide a
! default handler for any uncaught exceptions.
The example can be compiled with `c++ test.cc -lgcj'.
--- 2454,2478 ----
garbage collection. This function returns `0' upon success, or
`-1' if the current thread is not attached.
! 10.14.1 Handling uncaught exceptions
! ------------------------------------
! If an exception is thrown from Java code called using the invocation
API, and no handler for the exception can be found, the runtime will
abort the application. In order to make the application more robust, it
is recommended that code which uses the invocation API be wrapped by a
top-level try/catch block that catches all Java exceptions.
! 10.14.2 Example
! ---------------
! The following code demonstrates the use of the invocation API. In this
! example, the C++ application initializes the Java runtime and attaches
! itself. The `java.lang.System' class is initialized in order to access
! its `out' field, and a Java string is printed. Finally, the thread is
! detached from the runtime once it has finished making Java calls.
! Everything is wrapped with a try/catch block to provide a default
! handler for any uncaught exceptions.
The example can be compiled with `c++ test.cc -lgcj'.
*************** default handler for any uncaught excepti
*** 2482,2501 ****
#include
#include
#include
!
int main(int argc, char *argv)
{
using namespace java::lang;
!
try
{
JvCreateJavaVM(NULL);
JvAttachCurrentThread(NULL, NULL);
!
String *message = JvNewStringLatin1("Hello from C++");
JvInitClass(&System::class$);
System::out->println(message);
!
JvDetachCurrentThread();
}
catch (Throwable *t)
--- 2481,2500 ----
#include
#include
#include
!
int main(int argc, char *argv)
{
using namespace java::lang;
!
try
{
JvCreateJavaVM(NULL);
JvAttachCurrentThread(NULL, NULL);
!
String *message = JvNewStringLatin1("Hello from C++");
JvInitClass(&System::class$);
System::out->println(message);
!
JvDetachCurrentThread();
}
catch (Throwable *t)
*************** default handler for any uncaught excepti
*** 2508,2518 ****
File: gcj.info, Node: Reflection, Prev: Invocation, Up: About CNI
! Reflection
! ==========
! Reflection is possible with CNI code, it functions similarly to how
! it functions with JNI.
The types `jfieldID' and `jmethodID' are as in JNI.
--- 2507,2517 ----
File: gcj.info, Node: Reflection, Prev: Invocation, Up: About CNI
! 10.15 Reflection
! ================
! Reflection is possible with CNI code, it functions similarly to how it
! functions with JNI.
The types `jfieldID' and `jmethodID' are as in JNI.
*************** will be added shortly, as will other fun
*** 2531,2543 ****
File: gcj.info, Node: System properties, Next: Resources, Prev: About CNI, Up: Top
! System properties
! *****************
! The runtime behavior of the `libgcj' library can be modified by
! setting certain system properties. These properties can be compiled
! into the program using the `-DNAME[=VALUE]' option to `gcj' or by
! setting them explicitly in the program by calling the
`java.lang.System.setProperty()' method. Some system properties are
only used for informational purposes (like giving a version number or a
user name). A program can inspect the current value of a property by
--- 2530,2542 ----
File: gcj.info, Node: System properties, Next: Resources, Prev: About CNI, Up: Top
! 11 System properties
! ********************
! The runtime behavior of the `libgcj' library can be modified by setting
! certain system properties. These properties can be compiled into the
! program using the `-DNAME[=VALUE]' option to `gcj' or by setting them
! explicitly in the program by calling the
`java.lang.System.setProperty()' method. Some system properties are
only used for informational purposes (like giving a version number or a
user name). A program can inspect the current value of a property by
*************** calling the `java.lang.System.getPropert
*** 2552,2562 ****
File: gcj.info, Node: Standard Properties, Next: GNU Classpath Properties, Up: System properties
! Standard Properties
! ===================
! The following properties are normally found in all implementations
! of the core libraries for the Java language.
`java.version'
The `libgcj' version number.
--- 2551,2561 ----
File: gcj.info, Node: Standard Properties, Next: GNU Classpath Properties, Up: System properties
! 11.1 Standard Properties
! ========================
! The following properties are normally found in all implementations of
! the core libraries for the Java language.
`java.version'
The `libgcj' version number.
*************** of the core libraries for the Java langu
*** 2703,2718 ****
`http.proxyPort'
Port number to use when a proxy host is in use.
File: gcj.info, Node: GNU Classpath Properties, Next: libgcj Runtime Properties, Prev: Standard Properties, Up: System properties
! GNU Classpath Properties
! ========================
! `libgcj' is based on the GNU Classpath (Essential Libraries for
! Java) a GNU project to create free core class libraries for use with
! virtual machines and compilers for the Java language. The following
! properties are common to libraries based on GNU Classpath.
`gcj.dumpobject'
Enables printing serialization debugging by the
--- 2702,2718 ----
`http.proxyPort'
Port number to use when a proxy host is in use.
+
File: gcj.info, Node: GNU Classpath Properties, Next: libgcj Runtime Properties, Prev: Standard Properties, Up: System properties
! 11.2 GNU Classpath Properties
! =============================
! `libgcj' is based on the GNU Classpath (Essential Libraries for Java) a
! GNU project to create free core class libraries for use with virtual
! machines and compilers for the Java language. The following properties
! are common to libraries based on GNU Classpath.
`gcj.dumpobject'
Enables printing serialization debugging by the
*************** properties are common to libraries based
*** 2729,2743 ****
`classpath.security'). By default this is a `file:' URL pointing
to the `lib' directory under `java.home'.
File: gcj.info, Node: libgcj Runtime Properties, Prev: GNU Classpath Properties, Up: System properties
! libgcj Runtime Properties
! =========================
! The following properties are specific to the `libgcj' runtime and
! will normally not be found in other core libraries for the java
! language.
`java.fullversion'
The combination of `java.vm.name' and `java.vm.version'.
--- 2729,2743 ----
`classpath.security'). By default this is a `file:' URL pointing
to the `lib' directory under `java.home'.
+
File: gcj.info, Node: libgcj Runtime Properties, Prev: GNU Classpath Properties, Up: System properties
! 11.3 libgcj Runtime Properties
! ==============================
! The following properties are specific to the `libgcj' runtime and will
! normally not be found in other core libraries for the java language.
`java.fullversion'
The combination of `java.vm.name' and `java.vm.version'.
*************** language.
*** 2789,2802 ****
not tried again. If this property is set to `never', then lookups
are never done. For more information, *Note Extensions::.
File: gcj.info, Node: Resources, Prev: System properties, Up: Top
! Resources
! *********
! While writing `gcj' and `libgcj' we have, of course, relied heavily
! on documentation from Sun Microsystems. In particular we have used The
Java Language Specification (both first and second editions), the Java
Class Libraries (volumes one and two), and the Java Virtual Machine
Specification. In addition we've used the online documentation at
--- 2789,2803 ----
not tried again. If this property is set to `never', then lookups
are never done. For more information, *Note Extensions::.
+
File: gcj.info, Node: Resources, Prev: System properties, Up: Top
! 12 Resources
! ************
! While writing `gcj' and `libgcj' we have, of course, relied heavily on
! documentation from Sun Microsystems. In particular we have used The
Java Language Specification (both first and second editions), the Java
Class Libraries (volumes one and two), and the Java Virtual Machine
Specification. In addition we've used the online documentation at
*************** for more information.
*** 2814,2860 ****
Tag Table:
! Node: Top1804
! Node: Copying3734
! Node: GNU Free Documentation License22934
! Node: Invoking gcj45343
! Node: Input and output files45994
! Node: Input Options47515
! Node: Encodings50658
! Node: Warnings51859
! Node: Code Generation52975
! Ref: Code Generation-Footnote-156635
! Node: Configure-time Options56944
! Node: Compatibility58362
! Node: Limitations58842
! Node: Extensions60419
! Node: Invoking gcjh63010
! Node: Invoking jv-scan65066
! Node: Invoking jcf-dump66106
! Node: Invoking gij66878
! Node: Invoking jv-convert69312
! Node: Invoking rmic70382
! Node: Invoking rmiregistry71757
! Node: About CNI72161
! Node: Basic concepts73454
! Node: Packages76437
! Node: Primitive types78752
! Node: Interfaces80401
! Node: Objects and Classes81310
! Node: Class Initialization83471
! Node: Object allocation85807
! Node: Arrays86782
! Node: Methods89369
! Node: Strings92121
! Node: Mixing with C++93589
! Node: Exception Handling95472
! Node: Synchronization97107
! Node: Invocation99088
! Node: Reflection103158
! Node: System properties103610
! Node: Standard Properties104484
! Node: GNU Classpath Properties108941
! Node: libgcj Runtime Properties109979
! Node: Resources112450
End Tag Table
--- 2815,2861 ----
Tag Table:
! Node: Top2564
! Node: Copying3720
! Node: GNU Free Documentation License22888
! Node: Invoking gcj45290
! Node: Input and output files45942
! Node: Input Options47468
! Node: Encodings50616
! Node: Warnings51822
! Node: Code Generation52943
! Ref: Code Generation-Footnote-156608
! Node: Configure-time Options56917
! Node: Compatibility58340
! Node: Limitations58820
! Node: Extensions60402
! Node: Invoking gcjh63000
! Node: Invoking jv-scan65056
! Node: Invoking jcf-dump66097
! Node: Invoking gij66870
! Node: Invoking jv-convert69305
! Node: Invoking rmic70376
! Node: Invoking rmiregistry71752
! Node: About CNI72157
! Node: Basic concepts73453
! Node: Packages76456
! Node: Primitive types78784
! Node: Interfaces80452
! Node: Objects and Classes81363
! Node: Class Initialization83563
! Node: Object allocation85906
! Node: Arrays86889
! Node: Methods89493
! Node: Strings92302
! Node: Mixing with C++93786
! Node: Exception Handling95648
! Node: Synchronization97282
! Node: Invocation99272
! Node: Reflection103360
! Node: System properties103821
! Node: Standard Properties104698
! Node: GNU Classpath Properties109163
! Node: libgcj Runtime Properties110209
! Node: Resources112688
End Tag Table
diff -Nrcpad gcc-3.4.4/gcc/doc/gcov.1 gcc-3.4.5/gcc/doc/gcov.1
*** gcc-3.4.4/gcc/doc/gcov.1 2005-05-19 10:02:15.000000000 +0000
--- gcc-3.4.5/gcc/doc/gcov.1 2005-12-01 03:56:58.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GCOV 1"
! .TH GCOV 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gcov \- coverage testing tool
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GCOV 1"
! .TH GCOV 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gcov \- coverage testing tool
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/gfdl.7 gcc-3.4.5/gcc/doc/gfdl.7
*** gcc-3.4.4/gcc/doc/gfdl.7 2005-05-19 10:02:19.000000000 +0000
--- gcc-3.4.5/gcc/doc/gfdl.7 2005-12-01 03:57:06.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GFDL 7"
! .TH GFDL 7 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gfdl \- GNU Free Documentation License
.SH "DESCRIPTION"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GFDL 7"
! .TH GFDL 7 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gfdl \- GNU Free Documentation License
.SH "DESCRIPTION"
diff -Nrcpad gcc-3.4.4/gcc/doc/gij.1 gcc-3.4.5/gcc/doc/gij.1
*** gcc-3.4.4/gcc/doc/gij.1 2005-05-19 10:02:21.000000000 +0000
--- gcc-3.4.5/gcc/doc/gij.1 2005-12-01 03:57:09.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GIJ 1"
! .TH GIJ 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gij \- GNU interpreter for Java bytecode
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GIJ 1"
! .TH GIJ 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gij \- GNU interpreter for Java bytecode
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/gpl.7 gcc-3.4.5/gcc/doc/gpl.7
*** gcc-3.4.4/gcc/doc/gpl.7 2005-05-19 10:02:19.000000000 +0000
--- gcc-3.4.5/gcc/doc/gpl.7 2005-12-01 03:57:06.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "GPL 7"
! .TH GPL 7 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
gpl \- GNU General Public License
.SH "DESCRIPTION"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "GPL 7"
! .TH GPL 7 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
gpl \- GNU General Public License
.SH "DESCRIPTION"
diff -Nrcpad gcc-3.4.4/gcc/doc/hostconfig.texi gcc-3.4.5/gcc/doc/hostconfig.texi
*** gcc-3.4.4/gcc/doc/hostconfig.texi 2003-07-29 23:36:47.000000000 +0000
--- gcc-3.4.5/gcc/doc/hostconfig.texi 2005-08-02 19:03:45.000000000 +0000
*************** This host hook is used to set up handlin
*** 42,76 ****
common thing to do in this hook is to detect stack overflow.
@end deftypefn
! @deftypefn {Host Hook} void * HOST_HOOKS_GT_PCH_GET_ADDRESS (size_t @var{size})
! This host hook returns the address of some space in which a PCH may be
! loaded with @samp{HOST_HOOKS_PCH_LOAD_PCH}. The space will need to
! have @var{size} bytes. If insufficient space is available,
! @samp{NULL} may be returned; the PCH machinery will try to find a
! suitable address using a heuristic.
!
! The memory does not have to be available now. In fact, usually
! @samp{HOST_HOOKS_PCH_LOAD_PCH} will already have been called. The memory
! need only be available in future invocations of GCC.
@end deftypefn
! @deftypefn {Host Hook} bool HOST_HOOKS_GT_PCH_USE_ADDRESS (size_t @var{size}, void * @var{address})
! This host hook is called when a PCH file is about to be loaded. If
! @var{address} is the address that would have been returned by
! @samp{HOST_HOOKS_PCH_MEMORY_ADDRESS}, and @var{size} is smaller than
! the maximum than @samp{HOST_HOOKS_PCH_MEMORY_ADDRESS} would have
! accepted, return true, otherwise return false.
!
! In addition, free any address space reserved that isn't needed to hold
! @var{size} bytes (whether or not true is returned). The PCH machinery will
! use @samp{mmap} with @samp{MAP_FIXED} to load the PCH if @samp{HAVE_MMAP_FILE},
! or will use @samp{fread} otherwise.
! If no PCH will be loaded, this hook may be called with @var{size}
! zero, in which case all reserved address space should be freed.
Do not try to handle values of @var{address} that could not have been
! returned by this executable; just return false. Such values usually
indicate an out-of-date PCH file (built by some other GCC executable),
and such a PCH file won't work.
@end deftypefn
--- 42,72 ----
common thing to do in this hook is to detect stack overflow.
@end deftypefn
! @deftypefn {Host Hook} void * HOST_HOOKS_GT_PCH_GET_ADDRESS (size_t @var{size}, int @var{fd})
! This host hook returns the address of some space that is likely to be
! free in some subsequent invocation of the compiler. We intend to load
! the PCH data at this address such that the data need not be relocated.
! The area should be able to hold @var{size} bytes. If the host uses
! @code{mmap}, @var{fd} is an open file descriptor that can be used for
! probing.
@end deftypefn
! @deftypefn {Host Hook} int HOST_HOOKS_GT_PCH_USE_ADDRESS (void * @var{address}, size_t @var{size}, int @var{fd}, size_t @var{offset})
! This host hook is called when a PCH file is about to be loaded.
! We want to load @var{size} bytes from @var{fd} at @var{offset}
! into memory at @var{address}. The given address will be the result of
! a previous invocation of @code{HOST_HOOKS_GT_PCH_GET_ADDRESS}.
! Return @minus{}1 if we couldn't allocate @var{size} bytes at @var{address}.
! Return 0 if the memory is allocated but the data is not loaded. Return 1
! if the hook has performed everything.
! If the implementation uses reserved address space, free any reserved
! space beyond @var{size}, regardless of the return value. If no PCH will
! be loaded, this hook may be called with @var{size} zero, in which case
! all reserved address space should be freed.
Do not try to handle values of @var{address} that could not have been
! returned by this executable; just return @minus{}1. Such values usually
indicate an out-of-date PCH file (built by some other GCC executable),
and such a PCH file won't work.
@end deftypefn
diff -Nrcpad gcc-3.4.4/gcc/doc/install.texi gcc-3.4.5/gcc/doc/install.texi
*** gcc-3.4.4/gcc/doc/install.texi 2005-05-01 18:50:39.000000000 +0000
--- gcc-3.4.5/gcc/doc/install.texi 2005-08-04 10:10:19.000000000 +0000
*************** specifying @var{list}; the categories of
*** 1085,1091 ****
@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl}, @samp{rtlflag},
@samp{fold}, @samp{gcac} and @samp{valgrind}. The check @samp{valgrind}
requires the external @command{valgrind} simulator, available from
! @uref{http://valgrind.kde.org/}. The default when @var{list} is
not specified is @samp{misc,tree,gc,rtlflag}; the checks @samp{rtl},
@samp{gcac} and @samp{valgrind} are very expensive.
--- 1085,1091 ----
@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl}, @samp{rtlflag},
@samp{fold}, @samp{gcac} and @samp{valgrind}. The check @samp{valgrind}
requires the external @command{valgrind} simulator, available from
! @uref{http://valgrind.org/}. The default when @var{list} is
not specified is @samp{misc,tree,gc,rtlflag}; the checks @samp{rtl},
@samp{gcac} and @samp{valgrind} are very expensive.
*************** Development Tools for the Renesas H8/300
*** 2030,2036 ****
HP-UX:
@itemize
@item
! @uref{http://hpux.cae.wisc.edu/,,HP-UX Porting Center};
@item
@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
--- 2030,2036 ----
HP-UX:
@itemize
@item
! @uref{http://hpux.cs.utah.edu/,,HP-UX Porting Center};
@item
@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
*************** Development Tools for the Motorola 68HC1
*** 2045,2053 ****
OpenServer/Unixware}.
@item
- Sinix/Reliant Unix---@uref{ftp://ftp.fujitsu-siemens.com/pub/pd/gnu/gcc/,,Siemens}.
-
- @item
Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
@item
--- 2045,2050 ----
*************** number of platforms.
*** 2079,2085 ****
In addition to those specific offerings, you can get a binary
distribution CD-ROM from the
! @uref{http://www.fsf.org/order/order.html,,Free Software Foundation}.
It contains binaries for a number of platforms, and
includes not only GCC, but other stuff as well. The current CD does
not contain the latest version of GCC, but it should allow
--- 2076,2082 ----
In addition to those specific offerings, you can get a binary
distribution CD-ROM from the
! @uref{http://www.gnu.org/order/order.html,,Free Software Foundation}.
It contains binaries for a number of platforms, and
includes not only GCC, but other stuff as well. The current CD does
not contain the latest version of GCC, but it should allow
*************** can also be obtained from:
*** 2427,2433 ****
@itemize @bullet
@item
! @uref{http://www.openavr.org,,http://www.openavr.org}
@item
@uref{http://home.overta.ru/users/denisc/,,http://home.overta.ru/users/denisc/}
@item
--- 2424,2430 ----
@itemize @bullet
@item
! @uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/}
@item
@uref{http://home.overta.ru/users/denisc/,,http://home.overta.ru/users/denisc/}
@item
*************** failure in form of a miscompilation of t
*** 3543,3553 ****
compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
! 32-bit code on Solaris 7 and later. If you are using the Sun
! assembler, this change apparently runs afoul of Sun bug 4910101, for
! which (as of 2004-05-23) there is no fix. A symptom of the problem is
! that you cannot compile C++ programs like @command{groff} 1.19.1
! without getting messages similar to the following:
@smallexample
ld: warning: relocation error: R_SPARC_UA32: @dots{}
--- 3540,3550 ----
compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
! 32-bit code on Solaris 7 and later. If you use the Sun assembler, this
! change apparently runs afoul of Sun bug 4910101 (which is referenced as
! a x86-only problem by Sun, probably because they do not use DWARF-2).
! A symptom of the problem is that you cannot compile C++ programs like
! @command{groff} 1.19.1 without getting messages similar to the following:
@smallexample
ld: warning: relocation error: R_SPARC_UA32: @dots{}
*************** GCC does not currently support OS/2. Ho
*** 3780,3789 ****
working on a generic OS/2 port with pgcc. The current code can be found
at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
- An older copy of GCC 2.8.1 is included with the EMX tools available at
- @uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,,
- ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}.
-
@html
@end html
--- 3777,3782 ----
diff -Nrcpad gcc-3.4.4/gcc/doc/invoke.texi gcc-3.4.5/gcc/doc/invoke.texi
*** gcc-3.4.4/gcc/doc/invoke.texi 2005-04-22 06:49:59.000000000 +0000
--- gcc-3.4.5/gcc/doc/invoke.texi 2005-10-08 00:22:20.000000000 +0000
*************** invoking @option{-O2} on programs that u
*** 3651,3657 ****
@opindex O3
Optimize yet more. @option{-O3} turns on all optimizations specified by
@option{-O2} and also turns on the @option{-finline-functions},
! @option{-fweb} and @option{-frename-registers} options.
@item -O0
@opindex O0
--- 3651,3658 ----
@opindex O3
Optimize yet more. @option{-O3} turns on all optimizations specified by
@option{-O2} and also turns on the @option{-finline-functions},
! @option{-fweb}, @option{-frename-registers} and @option{-funswitch-loops}
! options.
@item -O0
@opindex O0
*************** have any affect on which ld is called, i
*** 8691,8697 ****
are passed to that ld. The ld that is called is determined by the
@option{--with-ld} configure option, GCC's program search path, and
finally by the user's @env{PATH}. The linker used by GCC can be printed
! using @samp{which `gcc -print-prog-name=ld`}.
@item -mhp-ld
@opindex hp-ld
--- 8692,8699 ----
are passed to that ld. The ld that is called is determined by the
@option{--with-ld} configure option, GCC's program search path, and
finally by the user's @env{PATH}. The linker used by GCC can be printed
! using @samp{which `gcc -print-prog-name=ld`}. This option is only available
! on the 64 bit HP-UX GCC, i.e. configured with @samp{hppa*64*-*-hpux*}.
@item -mhp-ld
@opindex hp-ld
*************** which ld is called, it only changes what
*** 8703,8709 ****
ld. The ld that is called is determined by the @option{--with-ld}
configure option, GCC's program search path, and finally by the user's
@env{PATH}. The linker used by GCC can be printed using @samp{which
! `gcc -print-prog-name=ld`}.
@item -mlong-calls
@opindex mno-long-calls
--- 8705,8712 ----
ld. The ld that is called is determined by the @option{--with-ld}
configure option, GCC's program search path, and finally by the user's
@env{PATH}. The linker used by GCC can be printed using @samp{which
! `gcc -print-prog-name=ld`}. This option is only available on the 64 bit
! HP-UX GCC, i.e. configured with @samp{hppa*64*-*-hpux*}.
@item -mlong-calls
@opindex mno-long-calls
*************** specified separated by a comma.
*** 10075,10082 ****
Specify bit size of immediate TLS offsets. Valid values are 14, 22, and
64.
! @item -mtune-arch=@var{cpu-type}
! @opindex mtune-arch
Tune the instruction scheduling for a particular CPU, Valid values are
itanium, itanium1, merced, itanium2, and mckinley.
--- 10078,10085 ----
Specify bit size of immediate TLS offsets. Valid values are 14, 22, and
64.
! @item -mtune=@var{cpu-type}
! @opindex mtune
Tune the instruction scheduling for a particular CPU, Valid values are
itanium, itanium1, merced, itanium2, and mckinley.
diff -Nrcpad gcc-3.4.4/gcc/doc/jcf-dump.1 gcc-3.4.5/gcc/doc/jcf-dump.1
*** gcc-3.4.4/gcc/doc/jcf-dump.1 2005-05-19 10:02:21.000000000 +0000
--- gcc-3.4.5/gcc/doc/jcf-dump.1 2005-12-01 03:57:09.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "JCF-DUMP 1"
! .TH JCF-DUMP 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
jcf\-dump \- print information about Java class files
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "JCF-DUMP 1"
! .TH JCF-DUMP 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
jcf\-dump \- print information about Java class files
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/jv-convert.1 gcc-3.4.5/gcc/doc/jv-convert.1
*** gcc-3.4.4/gcc/doc/jv-convert.1 2005-05-19 10:02:21.000000000 +0000
--- gcc-3.4.5/gcc/doc/jv-convert.1 2005-12-01 03:57:09.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "JV-CONVERT 1"
! .TH JV-CONVERT 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
jv\-convert \- Convert file from one encoding to another
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "JV-CONVERT 1"
! .TH JV-CONVERT 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
jv\-convert \- Convert file from one encoding to another
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/jv-scan.1 gcc-3.4.5/gcc/doc/jv-scan.1
*** gcc-3.4.4/gcc/doc/jv-scan.1 2005-05-19 10:02:20.000000000 +0000
--- gcc-3.4.5/gcc/doc/jv-scan.1 2005-12-01 03:57:09.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "JV-SCAN 1"
! .TH JV-SCAN 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
jv\-scan \- print information about Java source file
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "JV-SCAN 1"
! .TH JV-SCAN 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
jv\-scan \- print information about Java source file
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/rmic.1 gcc-3.4.5/gcc/doc/rmic.1
*** gcc-3.4.4/gcc/doc/rmic.1 2005-05-19 10:02:21.000000000 +0000
--- gcc-3.4.5/gcc/doc/rmic.1 2005-12-01 03:57:10.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "RMIC 1"
! .TH RMIC 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
rmic \- Generate stubs for Remote Method Invocation
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "RMIC 1"
! .TH RMIC 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
rmic \- Generate stubs for Remote Method Invocation
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/doc/rmiregistry.1 gcc-3.4.5/gcc/doc/rmiregistry.1
*** gcc-3.4.4/gcc/doc/rmiregistry.1 2005-05-19 10:02:21.000000000 +0000
--- gcc-3.4.5/gcc/doc/rmiregistry.1 2005-12-01 03:57:10.000000000 +0000
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
***************
*** 129,135 ****
.\" ========================================================================
.\"
.IX Title "RMIREGISTRY 1"
! .TH RMIREGISTRY 1 "2005-05-19" "gcc-3.4.4" "GNU"
.SH "NAME"
rmiregistry \- Remote object registry
.SH "SYNOPSIS"
--- 129,135 ----
.\" ========================================================================
.\"
.IX Title "RMIREGISTRY 1"
! .TH RMIREGISTRY 1 "2005-12-01" "gcc-3.4.5" "GNU"
.SH "NAME"
rmiregistry \- Remote object registry
.SH "SYNOPSIS"
diff -Nrcpad gcc-3.4.4/gcc/expmed.c gcc-3.4.5/gcc/expmed.c
*** gcc-3.4.4/gcc/expmed.c 2004-10-21 13:30:55.000000000 +0000
--- gcc-3.4.5/gcc/expmed.c 2005-11-23 12:05:41.000000000 +0000
*************** store_bit_field (rtx str_rtx, unsigned H
*** 389,413 ****
|| (offset * BITS_PER_UNIT % bitsize == 0
&& MEM_ALIGN (op0) % GET_MODE_BITSIZE (fieldmode) == 0))))
{
! if (GET_MODE (op0) != fieldmode)
! {
! if (GET_CODE (op0) == SUBREG)
! {
! if (GET_MODE (SUBREG_REG (op0)) == fieldmode
! || GET_MODE_CLASS (fieldmode) == MODE_INT
! || GET_MODE_CLASS (fieldmode) == MODE_PARTIAL_INT)
! op0 = SUBREG_REG (op0);
! else
! /* Else we've got some float mode source being extracted into
! a different float mode destination -- this combination of
! subregs results in Severe Tire Damage. */
! abort ();
! }
! if (GET_CODE (op0) == REG)
! op0 = gen_rtx_SUBREG (fieldmode, op0, byte_offset);
! else
! op0 = adjust_address (op0, fieldmode, offset);
! }
emit_move_insn (op0, value);
return value;
}
--- 389,399 ----
|| (offset * BITS_PER_UNIT % bitsize == 0
&& MEM_ALIGN (op0) % GET_MODE_BITSIZE (fieldmode) == 0))))
{
! if (GET_CODE (op0) == MEM)
! op0 = adjust_address (op0, fieldmode, offset);
! else if (GET_MODE (op0) != fieldmode)
! op0 = simplify_gen_subreg (fieldmode, op0, GET_MODE (op0),
! byte_offset);
emit_move_insn (op0, value);
return value;
}
*************** store_bit_field (rtx str_rtx, unsigned H
*** 622,627 ****
--- 608,614 ----
bestmode = GET_MODE (op0);
if (bestmode == VOIDmode
+ || GET_MODE_SIZE (bestmode) < GET_MODE_SIZE (fieldmode)
|| (SLOW_UNALIGNED_ACCESS (bestmode, MEM_ALIGN (op0))
&& GET_MODE_BITSIZE (bestmode) > MEM_ALIGN (op0)))
goto insv_loses;
*************** extract_bit_field (rtx str_rtx, unsigned
*** 1401,1406 ****
--- 1388,1398 ----
xbitpos = bitnum % unit;
xop0 = adjust_address (xop0, bestmode, xoffset);
+ /* Make sure register is big enough for the whole field. */
+ if (xoffset * BITS_PER_UNIT + unit
+ < offset * BITS_PER_UNIT + bitsize)
+ goto extzv_loses;
+
/* Fetch it to a register in that size. */
xop0 = force_reg (bestmode, xop0);
*************** extract_bit_field (rtx str_rtx, unsigned
*** 1531,1536 ****
--- 1523,1533 ----
xbitpos = bitnum % unit;
xop0 = adjust_address (xop0, bestmode, xoffset);
+ /* Make sure register is big enough for the whole field. */
+ if (xoffset * BITS_PER_UNIT + unit
+ < offset * BITS_PER_UNIT + bitsize)
+ goto extv_loses;
+
/* Fetch it to a register in that size. */
xop0 = force_reg (bestmode, xop0);
diff -Nrcpad gcc-3.4.4/gcc/fixinc/check.tpl gcc-3.4.5/gcc/fixinc/check.tpl
*** gcc-3.4.4/gcc/fixinc/check.tpl 2003-05-28 11:53:34.000000000 +0000
--- gcc-3.4.5/gcc/fixinc/check.tpl 2005-11-13 08:46:38.000000000 +0000
*************** echo $exitok`
*** 144,150 ****
cd $TESTBASE
find * -type f -print | \
! fgrep -v 'CVS/' > ${TESTDIR}/LIST
exitok=`
exec < ${TESTDIR}/LIST
--- 144,151 ----
cd $TESTBASE
find * -type f -print | \
! fgrep -v 'CVS/' | \
! fgrep -v '.svn/' > ${TESTDIR}/LIST
exitok=`
exec < ${TESTDIR}/LIST
diff -Nrcpad gcc-3.4.4/gcc/fixinc/fixincl.x gcc-3.4.5/gcc/fixinc/fixincl.x
*** gcc-3.4.4/gcc/fixinc/fixincl.x 2005-05-19 09:58:00.000000000 +0000
--- gcc-3.4.5/gcc/fixinc/fixincl.x 2005-11-07 22:47:55.000000000 +0000
***************
*** 2,12 ****
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
! * It has been AutoGen-ed Friday May 6, 2005 at 09:27:07 AM PDT
* From the definitions inclhack.def
* and the template file fixincl
*/
! /* DO NOT CVS-MERGE THIS FILE, EITHER Fri May 6 09:27:07 PDT 2005
*
* You must regenerate it. Use the ./genfixes script.
*
--- 2,12 ----
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
! * It has been AutoGen-ed Monday November 7, 2005 at 02:33:08 PM PST
* From the definitions inclhack.def
* and the template file fixincl
*/
! /* DO NOT CVS-MERGE THIS FILE, EITHER Mon Nov 7 14:33:08 PST 2005
*
* You must regenerate it. Use the ./genfixes script.
*
***************
*** 15,21 ****
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
! * This file contains 178 fixup descriptions.
*
* See README for more information.
*
--- 15,21 ----
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
! * This file contains 188 fixup descriptions.
*
* See README for more information.
*
***************
*** 26,32 ****
*
* You may redistribute it and/or modify it under the terms of the
* GNU General Public License, as published by the Free Software
! * Foundation; either version 2, or (at your option) any later version.
*
* inclhack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
--- 26,33 ----
*
* You may redistribute it and/or modify it under the terms of the
* GNU General Public License, as published by the Free Software
! * Foundation; either version 2 of the License, or (at your option)
! * any later version.
*
* inclhack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
***************
*** 34,43 ****
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
! * along with inclhack. See the file "COPYING". If not,
! * write to: The Free Software Foundation, Inc.,
! * 59 Temple Place - Suite 330,
! * Boston, MA 02111-1307, USA.
*/
/* * * * * * * * * * * * * * * * * * * * * * * * * *
--- 35,44 ----
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
! * along with inclhack. If not, write to:
! * The Free Software Foundation, Inc.,
! * 51 Franklin Street, Fifth Floor
! * Boston, MA 02110-1301, USA.
*/
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*************** tSCC zGnu_TypesList[] =
*** 1927,1933 ****
/*
* Machine/OS name selection pattern
*/
! #define apzGnu_TypesMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
--- 1928,1936 ----
/*
* Machine/OS name selection pattern
*/
! tSCC* apzGnu_TypesMachs[] = {
! "*-*-solaris2.1[0-9]*",
! (const char*)NULL };
/*
* content selection pattern - do fix if pattern found
*************** tSCC zSco_MathList[] =
*** 4378,4385 ****
tSCC zSco_MathSelect0[] =
"inline double abs";
! #define SCO_MATH_TEST_CT 1
static tTestDesc aSco_MathTests[] = {
{ TT_EGREP, zSco_MathSelect0, (regex_t*)NULL }, };
/*
--- 4381,4395 ----
tSCC zSco_MathSelect0[] =
"inline double abs";
! /*
! * content bypass pattern - skip fix if pattern found
! */
! tSCC zSco_MathBypass0[] =
! "__GNUG__";
!
! #define SCO_MATH_TEST_CT 2
static tTestDesc aSco_MathTests[] = {
+ { TT_NEGREP, zSco_MathBypass0, (regex_t*)NULL },
{ TT_EGREP, zSco_MathSelect0, (regex_t*)NULL }, };
/*
*************** static const char* apzSco_UtimePatch[] =
*** 4521,4526 ****
--- 4531,5002 ----
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Solaris_Math_1 fix
+ */
+ tSCC zSolaris_Math_1Name[] =
+ "solaris_math_1";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_1List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_1Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_1Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_1Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_1_TEST_CT 2
+ static tTestDesc aSolaris_Math_1Tests[] = {
+ { TT_NEGREP, zSolaris_Math_1Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_1Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_1
+ */
+ static const char* apzSolaris_Math_1Patch[] = {
+ "format",
+ "#define\tHUGE_VA%1\t(__builtin_huge_va%2())",
+ "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_2 fix
+ */
+ tSCC zSolaris_Math_2Name[] =
+ "solaris_math_2";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_2List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_2Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_2Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_2Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_2_TEST_CT 2
+ static tTestDesc aSolaris_Math_2Tests[] = {
+ { TT_NEGREP, zSolaris_Math_2Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_2Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_2
+ */
+ static const char* apzSolaris_Math_2Patch[] = {
+ "format",
+ "#define\tINFINITY\t(__builtin_inff())",
+ "^#define[ \t]+INFINITY[ \t]+__builtin_infinity",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_3 fix
+ */
+ tSCC zSolaris_Math_3Name[] =
+ "solaris_math_3";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_3List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_3Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_3Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_3Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_3_TEST_CT 2
+ static tTestDesc aSolaris_Math_3Tests[] = {
+ { TT_NEGREP, zSolaris_Math_3Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_3Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_3
+ */
+ static const char* apzSolaris_Math_3Patch[] = {
+ "format",
+ "#define\tNAN\t\t(__builtin_nanf(\"\"))",
+ "^#define[ \t]+NAN[ \t]+__builtin_nan",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_4 fix
+ */
+ tSCC zSolaris_Math_4Name[] =
+ "solaris_math_4";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_4List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_4Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_4Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_4Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_4_TEST_CT 2
+ static tTestDesc aSolaris_Math_4Tests[] = {
+ { TT_NEGREP, zSolaris_Math_4Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_4Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_4
+ */
+ static const char* apzSolaris_Math_4Patch[] = {
+ "format",
+ "#define\tfpclassify(x) \\\n\
+ __extension__ ({ __typeof(x) __x_fp = (x); \\\n\
+ \t\t isnan(__x_fp) \\\n\
+ \t\t ? FP_NAN \\\n\
+ \t\t : isinf(__x_fp) \\\n\
+ \t\t ? FP_INFINITE \\\n\
+ \t\t : isnormal(__x_fp) \\\n\
+ \t\t\t ? FP_NORMAL \\\n\
+ \t\t\t : __x_fp == 0.0 \\\n\
+ \t\t\t ? FP_ZERO \\\n\
+ \t\t\t : FP_SUBNORMAL; })",
+ "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_5 fix
+ */
+ tSCC zSolaris_Math_5Name[] =
+ "solaris_math_5";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_5List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_5Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_5Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_5Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_5_TEST_CT 2
+ static tTestDesc aSolaris_Math_5Tests[] = {
+ { TT_NEGREP, zSolaris_Math_5Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_5Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_5
+ */
+ static const char* apzSolaris_Math_5Patch[] = {
+ "format",
+ "#define\tisfinite(x) \\\n\
+ __extension__ ({ __typeof (x) __x_f = (x); \\\n\
+ \t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })",
+ "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_6 fix
+ */
+ tSCC zSolaris_Math_6Name[] =
+ "solaris_math_6";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_6List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_6Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_6Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_6Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_6_TEST_CT 2
+ static tTestDesc aSolaris_Math_6Tests[] = {
+ { TT_NEGREP, zSolaris_Math_6Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_6Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_6
+ */
+ static const char* apzSolaris_Math_6Patch[] = {
+ "format",
+ "#define\tisinf(x) \\\n\
+ __extension__ ({ __typeof (x) __x_i = (x); \\\n\
+ \t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })",
+ "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_6_1 fix
+ */
+ tSCC zSolaris_Math_6_1Name[] =
+ "solaris_math_6_1";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_6_1List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_6_1Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_6_1Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_6_1Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_6_1_TEST_CT 2
+ static tTestDesc aSolaris_Math_6_1Tests[] = {
+ { TT_NEGREP, zSolaris_Math_6_1Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_6_1Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_6_1
+ */
+ static const char* apzSolaris_Math_6_1Patch[] = {
+ "format",
+ "#define\tisnan(x) \\\n\
+ __extension__ ({ __typeof (x) __x_a = (x); \\\n\
+ \t\t __builtin_expect(__x_a != __x_a, 0); })",
+ "^#define[ \t]+isnan\\(x\\)[ \t]+__builtin_isnan\\(x\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_7 fix
+ */
+ tSCC zSolaris_Math_7Name[] =
+ "solaris_math_7";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_7List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_7Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_7Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_7Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_7_TEST_CT 2
+ static tTestDesc aSolaris_Math_7Tests[] = {
+ { TT_NEGREP, zSolaris_Math_7Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_7Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_7
+ */
+ static const char* apzSolaris_Math_7Patch[] = {
+ "format",
+ "#define\tisnormal(x) \\\n\
+ __extension__ ({ __typeof(x) __x_n = (x); \\\n\
+ \t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n\
+ \t\t __builtin_expect(isfinite(__x_n) \\\n\
+ \t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n\
+ \t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n\
+ \t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n\
+ \t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n\
+ \t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })",
+ "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_8 fix
+ */
+ tSCC zSolaris_Math_8Name[] =
+ "solaris_math_8";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_8List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_8Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_8Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_8Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_8_TEST_CT 2
+ static tTestDesc aSolaris_Math_8Tests[] = {
+ { TT_NEGREP, zSolaris_Math_8Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_8Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_8
+ */
+ static const char* apzSolaris_Math_8Patch[] = {
+ "format",
+ "#ifdef __sparc__\n\
+ #undef\tsignbit\n\
+ #define\tsignbit(x) \\\n\
+ (sizeof(x) == sizeof(float) \\\n\
+ ? ({ union { float f; unsigned int i[1]; } __s; \\\n\
+ \t__s.f = (x); __s.i[0] >> 31; }) \\\n\
+ : sizeof(x) == sizeof(long double) \\\n\
+ ? ({ union { long double f; unsigned int i[4]; } __s; \\\n\
+ \t __s.f = (x); __s.i[0] >> 31; }) \\\n\
+ : ({ union { double f; unsigned int i[2]; } __s; \\\n\
+ \t __s.f = (x); __s.i[0] >> 31; }))\n\
+ #endif /* __sparc__ */\n",
+ "^#undef[ \t]signbit\n\
+ ^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_9 fix
+ */
+ tSCC zSolaris_Math_9Name[] =
+ "solaris_math_9";
+
+ /*
+ * File name selection pattern
+ */
+ tSCC zSolaris_Math_9List[] =
+ "|iso/math_c99.h|";
+ /*
+ * Machine/OS name selection pattern
+ */
+ #define apzSolaris_Math_9Machs (const char**)NULL
+
+ /*
+ * content selection pattern - do fix if pattern found
+ */
+ tSCC zSolaris_Math_9Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+ /*
+ * content bypass pattern - skip fix if pattern found
+ */
+ tSCC zSolaris_Math_9Bypass0[] =
+ "__GNUC__";
+
+ #define SOLARIS_MATH_9_TEST_CT 2
+ static tTestDesc aSolaris_Math_9Tests[] = {
+ { TT_NEGREP, zSolaris_Math_9Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_9Select0, (regex_t*)NULL }, };
+
+ /*
+ * Fix Command Arguments for Solaris_Math_9
+ */
+ static const char* apzSolaris_Math_9Patch[] = {
+ "format",
+ "#define\t%1(x, y)%2__builtin_%1(x, y)",
+ "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)",
+ (char*)NULL };
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Solaris_Mutex_Init_1 fix
*/
tSCC zSolaris_Mutex_Init_1Name[] =
*************** tSCC zSolaris_Stdio_TagList[] =
*** 4653,4660 ****
tSCC zSolaris_Stdio_TagSelect0[] =
"__cplusplus < 54321L";
! #define SOLARIS_STDIO_TAG_TEST_CT 1
static tTestDesc aSolaris_Stdio_TagTests[] = {
{ TT_EGREP, zSolaris_Stdio_TagSelect0, (regex_t*)NULL }, };
/*
--- 5129,5143 ----
tSCC zSolaris_Stdio_TagSelect0[] =
"__cplusplus < 54321L";
! /*
! * content bypass pattern - skip fix if pattern found
! */
! tSCC zSolaris_Stdio_TagBypass0[] =
! "__GNUC__";
!
! #define SOLARIS_STDIO_TAG_TEST_CT 2
static tTestDesc aSolaris_Stdio_TagTests[] = {
+ { TT_NEGREP, zSolaris_Stdio_TagBypass0, (regex_t*)NULL },
{ TT_EGREP, zSolaris_Stdio_TagSelect0, (regex_t*)NULL }, };
/*
*************** tSCC zStdio_Stdarg_HList[] =
*** 4804,4810 ****
/*
* Machine/OS name selection pattern
*/
! #define apzStdio_Stdarg_HMachs (const char**)NULL
/*
* content bypass pattern - skip fix if pattern found
--- 5287,5295 ----
/*
* Machine/OS name selection pattern
*/
! tSCC* apzStdio_Stdarg_HMachs[] = {
! "*-*-solaris2.1[0-9]*",
! (const char*)NULL };
/*
* content bypass pattern - skip fix if pattern found
*************** tSCC zStdio_Va_ListList[] =
*** 4840,4846 ****
/*
* Machine/OS name selection pattern
*/
! #define apzStdio_Va_ListMachs (const char**)NULL
/*
* content bypass pattern - skip fix if pattern found
--- 5325,5333 ----
/*
* Machine/OS name selection pattern
*/
! tSCC* apzStdio_Va_ListMachs[] = {
! "*-*-solaris2.1[0-9]*",
! (const char*)NULL };
/*
* content bypass pattern - skip fix if pattern found
*************** tSCC zSysz_Stdlib_For_SunList[] =
*** 5662,5669 ****
tSCC zSysz_Stdlib_For_SunSelect0[] =
"char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
! #define SYSZ_STDLIB_FOR_SUN_TEST_CT 1
static tTestDesc aSysz_Stdlib_For_SunTests[] = {
{ TT_EGREP, zSysz_Stdlib_For_SunSelect0, (regex_t*)NULL }, };
/*
--- 6149,6163 ----
tSCC zSysz_Stdlib_For_SunSelect0[] =
"char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
! /*
! * content bypass pattern - skip fix if pattern found
! */
! tSCC zSysz_Stdlib_For_SunBypass0[] =
! "_CLASSIC_ANSI_TYPES";
!
! #define SYSZ_STDLIB_FOR_SUN_TEST_CT 2
static tTestDesc aSysz_Stdlib_For_SunTests[] = {
+ { TT_NEGREP, zSysz_Stdlib_For_SunBypass0, (regex_t*)NULL },
{ TT_EGREP, zSysz_Stdlib_For_SunSelect0, (regex_t*)NULL }, };
/*
*************** static const char* apzX11_SprintfPatch[]
*** 7059,7067 ****
*
* List of all fixes
*/
! #define REGEX_COUNT 200
#define MACH_LIST_SIZE_LIMIT 261
! #define FIX_COUNT 178
/*
* Enumerate the fixes
--- 7553,7561 ----
*
* List of all fixes
*/
! #define REGEX_COUNT 223
#define MACH_LIST_SIZE_LIMIT 261
! #define FIX_COUNT 188
/*
* Enumerate the fixes
*************** typedef enum {
*** 7179,7184 ****
--- 7673,7688 ----
SCO_REGSET_FIXIDX,
SCO_STATIC_FUNC_FIXIDX,
SCO_UTIME_FIXIDX,
+ SOLARIS_MATH_1_FIXIDX,
+ SOLARIS_MATH_2_FIXIDX,
+ SOLARIS_MATH_3_FIXIDX,
+ SOLARIS_MATH_4_FIXIDX,
+ SOLARIS_MATH_5_FIXIDX,
+ SOLARIS_MATH_6_FIXIDX,
+ SOLARIS_MATH_6_1_FIXIDX,
+ SOLARIS_MATH_7_FIXIDX,
+ SOLARIS_MATH_8_FIXIDX,
+ SOLARIS_MATH_9_FIXIDX,
SOLARIS_MUTEX_INIT_1_FIXIDX,
SOLARIS_MUTEX_INIT_2_FIXIDX,
SOLARIS_SOCKET_FIXIDX,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 7475,7481 ****
{ zGnu_TypesName, zGnu_TypesList,
apzGnu_TypesMachs,
! GNU_TYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aGnu_TypesTests, apzGnu_TypesPatch, 0 },
{ zHp_InlineName, zHp_InlineList,
--- 7979,7985 ----
{ zGnu_TypesName, zGnu_TypesList,
apzGnu_TypesMachs,
! GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE,
aGnu_TypesTests, apzGnu_TypesPatch, 0 },
{ zHp_InlineName, zHp_InlineList,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 7808,7813 ****
--- 8312,8367 ----
SCO_UTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSco_UtimeTests, apzSco_UtimePatch, 0 },
+ { zSolaris_Math_1Name, zSolaris_Math_1List,
+ apzSolaris_Math_1Machs,
+ SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_1Tests, apzSolaris_Math_1Patch, 0 },
+
+ { zSolaris_Math_2Name, zSolaris_Math_2List,
+ apzSolaris_Math_2Machs,
+ SOLARIS_MATH_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_2Tests, apzSolaris_Math_2Patch, 0 },
+
+ { zSolaris_Math_3Name, zSolaris_Math_3List,
+ apzSolaris_Math_3Machs,
+ SOLARIS_MATH_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_3Tests, apzSolaris_Math_3Patch, 0 },
+
+ { zSolaris_Math_4Name, zSolaris_Math_4List,
+ apzSolaris_Math_4Machs,
+ SOLARIS_MATH_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_4Tests, apzSolaris_Math_4Patch, 0 },
+
+ { zSolaris_Math_5Name, zSolaris_Math_5List,
+ apzSolaris_Math_5Machs,
+ SOLARIS_MATH_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_5Tests, apzSolaris_Math_5Patch, 0 },
+
+ { zSolaris_Math_6Name, zSolaris_Math_6List,
+ apzSolaris_Math_6Machs,
+ SOLARIS_MATH_6_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_6Tests, apzSolaris_Math_6Patch, 0 },
+
+ { zSolaris_Math_6_1Name, zSolaris_Math_6_1List,
+ apzSolaris_Math_6_1Machs,
+ SOLARIS_MATH_6_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_6_1Tests, apzSolaris_Math_6_1Patch, 0 },
+
+ { zSolaris_Math_7Name, zSolaris_Math_7List,
+ apzSolaris_Math_7Machs,
+ SOLARIS_MATH_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_7Tests, apzSolaris_Math_7Patch, 0 },
+
+ { zSolaris_Math_8Name, zSolaris_Math_8List,
+ apzSolaris_Math_8Machs,
+ SOLARIS_MATH_8_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_8Tests, apzSolaris_Math_8Patch, 0 },
+
+ { zSolaris_Math_9Name, zSolaris_Math_9List,
+ apzSolaris_Math_9Machs,
+ SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 },
+
{ zSolaris_Mutex_Init_1Name, zSolaris_Mutex_Init_1List,
apzSolaris_Mutex_Init_1Machs,
SOLARIS_MUTEX_INIT_1_TEST_CT, FD_MACH_ONLY,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 7845,7856 ****
{ zStdio_Stdarg_HName, zStdio_Stdarg_HList,
apzStdio_Stdarg_HMachs,
! STDIO_STDARG_H_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aStdio_Stdarg_HTests, apzStdio_Stdarg_HPatch, 0 },
{ zStdio_Va_ListName, zStdio_Va_ListList,
apzStdio_Va_ListMachs,
! STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY,
aStdio_Va_ListTests, apzStdio_Va_ListPatch, 0 },
{ zStrict_Ansi_NotName, zStrict_Ansi_NotList,
--- 8399,8410 ----
{ zStdio_Stdarg_HName, zStdio_Stdarg_HList,
apzStdio_Stdarg_HMachs,
! STDIO_STDARG_H_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE,
aStdio_Stdarg_HTests, apzStdio_Stdarg_HPatch, 0 },
{ zStdio_Va_ListName, zStdio_Va_ListList,
apzStdio_Va_ListMachs,
! STDIO_VA_LIST_TEST_CT, FD_MACH_IFNOT,
aStdio_Va_ListTests, apzStdio_Va_ListPatch, 0 },
{ zStrict_Ansi_NotName, zStrict_Ansi_NotList,
diff -Nrcpad gcc-3.4.4/gcc/fixinc/inclhack.def gcc-3.4.5/gcc/fixinc/inclhack.def
*** gcc-3.4.4/gcc/fixinc/inclhack.def 2005-05-06 16:30:20.000000000 +0000
--- gcc-3.4.5/gcc/fixinc/inclhack.def 2005-11-07 22:47:55.000000000 +0000
*************** fix = {
*** 1144,1149 ****
--- 1144,1152 ----
bypass = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
select = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
c_fix = gnu_type;
+ /* The Solaris 10 headers already define these types correctly. */
+ mach = '*-*-solaris2.1[0-9]*';
+ not_machine = true;
test_text = "typedef long int ptrdiff_t; /* long int */\n"
"typedef uint_t size_t; /* uint_t */\n"
*************** fix = {
*** 2419,2424 ****
--- 2422,2428 ----
files = ods_30_compat/math.h;
files = oldstyle/math.h;
select = "inline double abs";
+ bypass = "__GNUG__";
sed = "/#define.*__fp_class(a) \\\\/i\\\n"
"#ifndef __GNUC__\n";
sed =
*************** fix = {
*** 2528,2533 ****
--- 2532,2731 ----
test_text = "extern int utime(const char *, struct utimbuf *);";
};
+ /*
+ * Sun Solaris 10 defines several C99 math macros in terms of
+ * builtins specific to the Studio compiler, in particular not
+ * compatible with the GNU compiler.
+ */
+ fix = {
+ hackname = solaris_math_1;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())";
+ c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef HUGE_VAL\n"
+ "#define HUGE_VAL __builtin_huge_val\n"
+ "#undef HUGE_VALF\n"
+ "#define HUGE_VALF __builtin_huge_valf\n"
+ "#undef HUGE_VALL\n"
+ "#define HUGE_VALL __builtin_huge_vall";
+ };
+
+ fix = {
+ hackname = solaris_math_2;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
+ c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef INFINITY\n"
+ "#define INFINITY __builtin_infinity";
+ };
+
+ fix = {
+ hackname = solaris_math_3;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
+ c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef NAN\n"
+ "#define NAN __builtin_nan";
+ };
+
+ fix = {
+ hackname = solaris_math_4;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tfpclassify(x) \\\n"
+ " __extension__ ({ __typeof(x) __x_fp = (x); \\\n"
+ "\t\t isnan(__x_fp) \\\n"
+ "\t\t ? FP_NAN \\\n"
+ "\t\t : isinf(__x_fp) \\\n"
+ "\t\t ? FP_INFINITE \\\n"
+ "\t\t : isnormal(__x_fp) \\\n"
+ "\t\t\t ? FP_NORMAL \\\n"
+ "\t\t\t : __x_fp == 0.0 \\\n"
+ "\t\t\t ? FP_ZERO \\\n"
+ "\t\t\t : FP_SUBNORMAL; })";
+ c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef fpclassify\n"
+ "#define fpclassify(x) __builtin_fpclassify(x)";
+ };
+
+ fix = {
+ hackname = solaris_math_5;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisfinite(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_f = (x); \\\n"
+ "\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })";
+ c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isfinite\n"
+ "#define isfinite(x) __builtin_isfinite(x)";
+ };
+
+ fix = {
+ hackname = solaris_math_6;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisinf(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_i = (x); \\\n"
+ "\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })";
+ c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isinf\n"
+ "#define isinf(x) __builtin_isinf(x)";
+ };
+
+ fix = {
+ hackname = solaris_math_6_1;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisnan(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_a = (x); \\\n"
+ "\t\t __builtin_expect(__x_a != __x_a, 0); })";
+ c_fix_arg = "^#define[ \t]+isnan\\(x\\)[ \t]+__builtin_isnan\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isnan\n"
+ "#define isnan(x) __builtin_isnan(x)";
+ };
+
+ fix = {
+ hackname = solaris_math_7;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisnormal(x) \\\n"
+ " __extension__ ({ __typeof(x) __x_n = (x); \\\n"
+ "\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n"
+ "\t\t __builtin_expect(isfinite(__x_n) \\\n"
+ "\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n"
+ "\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n"
+ "\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n"
+ "\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n"
+ "\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })";
+ c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isnormal\n"
+ "#define isnormal(x) __builtin_isnormal(x)";
+ };
+
+ fix = {
+ hackname = solaris_math_8;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#ifdef __sparc__\n"
+ "#undef\tsignbit\n"
+ "#define\tsignbit(x) \\\n"
+ " (sizeof(x) == sizeof(float) \\\n"
+ " ? ({ union { float f; unsigned int i[1]; } __s; \\\n"
+ "\t__s.f = (x); __s.i[0] >> 31; }) \\\n"
+ " : sizeof(x) == sizeof(long double) \\\n"
+ " ? ({ union { long double f; unsigned int i[4]; } __s; \\\n"
+ "\t __s.f = (x); __s.i[0] >> 31; }) \\\n"
+ " : ({ union { double f; unsigned int i[2]; } __s; \\\n"
+ "\t __s.f = (x); __s.i[0] >> 31; }))\n"
+ "#endif /* __sparc__ */\n";
+ c_fix_arg = "^#undef[ \t]signbit\n"
+ "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef signbit\n"
+ "#define signbit(x) __builtin_signbit(x)";
+ };
+
+ fix = {
+ hackname = solaris_math_9;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
+ c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isgreater\n"
+ "#define isgreater(x, y) ((x) __builtin_isgreater(y))\n"
+ "#undef isgreaterequal\n"
+ "#define isgreaterequal(x, y) ((x) __builtin_isgreaterequal(y))\n"
+ "#undef isless\n"
+ "#define isless(x, y) ((x) __builtin_isless(y))\n"
+ "#undef islessequal\n"
+ "#define islessequal(x, y) ((x) __builtin_islessequal(y))\n"
+ "#undef islessgreater\n"
+ "#define islessgreater(x, y) ((x) __builtin_islessgreater(y))\n"
+ "#undef isunordered\n"
+ "#define isunordered(x, y) ((x) __builtin_isunordered(y))";
+ };
/*
* Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
*************** fix = {
*** 2607,2612 ****
--- 2805,2813 ----
files = stdio_tag.h;
select = '__cplusplus < 54321L';
+ /* In Solaris 10, the code in stdio_tag.h is conditionalized on
+ "!defined(__GNUC__)" so we no longer need to fix it. */
+ bypass = '__GNUC__';
sed = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
*************** fix = {
*** 2672,2677 ****
--- 2873,2884 ----
hackname = stdio_stdarg_h;
files = stdio.h;
bypass = "include.*(stdarg\.h|machine/ansi\.h)";
+ /*
+ * On Solaris 10, this fix is unnecessary; includes
+ * , which includes .
+ */
+ mach = '*-*-solaris2.1[0-9]*';
+ not_machine = true;
c_fix = wrap;
*************** fix = {
*** 2698,2703 ****
--- 2905,2917 ----
files = internal/stdio_core.h;
files = internal/wchar_core.h;
bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
+ /*
+ * On Solaris 10, the definition in
+ * is guarded appropriately by the _XPG4 feature macro;
+ * there is therefore no need for this fix there.
+ */
+ mach = '*-*-solaris2.1[0-9]*';
+ not_machine = true;
/*
* Use __gnuc_va_list in arg types in place of va_list.
*************** fix = {
*** 3455,3460 ****
--- 3669,3675 ----
fix = {
hackname = sysz_stdlib_for_sun;
files = stdlib.h;
+ bypass = "_CLASSIC_ANSI_TYPES";
select = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
c_fix = format;
diff -Nrcpad gcc-3.4.4/gcc/fixinc/tests/base/iso/math_c99.h gcc-3.4.5/gcc/fixinc/tests/base/iso/math_c99.h
*** gcc-3.4.4/gcc/fixinc/tests/base/iso/math_c99.h 1970-01-01 00:00:00.000000000 +0000
--- gcc-3.4.5/gcc/fixinc/tests/base/iso/math_c99.h 2005-05-29 20:45:43.000000000 +0000
***************
*** 0 ****
--- 1,128 ----
+ /* DO NOT EDIT THIS FILE.
+
+ It has been auto-edited by fixincludes from:
+
+ "fixinc/tests/inc/iso/math_c99.h"
+
+ This had to be done to correct non-standard usages in the
+ original, manufacturer supplied header file. */
+
+
+
+ #if defined( SOLARIS_MATH_1_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef HUGE_VAL
+ #define HUGE_VAL (__builtin_huge_val())
+ #undef HUGE_VALF
+ #define HUGE_VALF (__builtin_huge_valf())
+ #undef HUGE_VALL
+ #define HUGE_VALL (__builtin_huge_vall())
+ #endif /* SOLARIS_MATH_1_CHECK */
+
+
+ #if defined( SOLARIS_MATH_2_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef INFINITY
+ #define INFINITY (__builtin_inff())
+ #endif /* SOLARIS_MATH_2_CHECK */
+
+
+ #if defined( SOLARIS_MATH_3_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef NAN
+ #define NAN (__builtin_nanf(""))
+ #endif /* SOLARIS_MATH_3_CHECK */
+
+
+ #if defined( SOLARIS_MATH_4_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef fpclassify
+ #define fpclassify(x) \
+ __extension__ ({ __typeof(x) __x_fp = (x); \
+ isnan(__x_fp) \
+ ? FP_NAN \
+ : isinf(__x_fp) \
+ ? FP_INFINITE \
+ : isnormal(__x_fp) \
+ ? FP_NORMAL \
+ : __x_fp == 0.0 \
+ ? FP_ZERO \
+ : FP_SUBNORMAL; })
+ #endif /* SOLARIS_MATH_4_CHECK */
+
+
+ #if defined( SOLARIS_MATH_5_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef isfinite
+ #define isfinite(x) \
+ __extension__ ({ __typeof (x) __x_f = (x); \
+ __builtin_expect(!isnan(__x_f - __x_f), 1); })
+ #endif /* SOLARIS_MATH_5_CHECK */
+
+
+ #if defined( SOLARIS_MATH_6_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef isinf
+ #define isinf(x) \
+ __extension__ ({ __typeof (x) __x_i = (x); \
+ __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })
+ #endif /* SOLARIS_MATH_6_CHECK */
+
+
+ #if defined( SOLARIS_MATH_6_1_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef isnan
+ #define isnan(x) \
+ __extension__ ({ __typeof (x) __x_a = (x); \
+ __builtin_expect(__x_a != __x_a, 0); })
+ #endif /* SOLARIS_MATH_6_1_CHECK */
+
+
+ #if defined( SOLARIS_MATH_7_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef isnormal
+ #define isnormal(x) \
+ __extension__ ({ __typeof(x) __x_n = (x); \
+ if (__x_n < 0.0) __x_n = -__x_n; \
+ __builtin_expect(isfinite(__x_n) \
+ && (sizeof(__x_n) == sizeof(float) \
+ ? __x_n >= __FLT_MIN__ \
+ : sizeof(__x_n) == sizeof(long double) \
+ ? __x_n >= __LDBL_MIN__ \
+ : __x_n >= __DBL_MIN__), 1); })
+ #endif /* SOLARIS_MATH_7_CHECK */
+
+
+ #if defined( SOLARIS_MATH_8_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #ifdef __sparc__
+ #undef signbit
+ #define signbit(x) \
+ (sizeof(x) == sizeof(float) \
+ ? ({ union { float f; unsigned int i[1]; } __s; \
+ __s.f = (x); __s.i[0] >> 31; }) \
+ : sizeof(x) == sizeof(long double) \
+ ? ({ union { long double f; unsigned int i[4]; } __s; \
+ __s.f = (x); __s.i[0] >> 31; }) \
+ : ({ union { double f; unsigned int i[2]; } __s; \
+ __s.f = (x); __s.i[0] >> 31; }))
+ #endif /* __sparc__ */
+
+ #endif /* SOLARIS_MATH_8_CHECK */
+
+
+ #if defined( SOLARIS_MATH_9_CHECK )
+ #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+ #undef isgreater
+ #define isgreater(x, y) __builtin_isgreater(x, y)
+ #undef isgreaterequal
+ #define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+ #undef isless
+ #define isless(x, y) __builtin_isless(x, y)
+ #undef islessequal
+ #define islessequal(x, y) __builtin_islessequal(x, y)
+ #undef islessgreater
+ #define islessgreater(x, y) __builtin_islessgreater(x, y)
+ #undef isunordered
+ #define isunordered(x, y) __builtin_isunordered(x, y)
+ #endif /* SOLARIS_MATH_9_CHECK */
diff -Nrcpad gcc-3.4.4/gcc/flow.c gcc-3.4.5/gcc/flow.c
*** gcc-3.4.4/gcc/flow.c 2005-01-24 09:10:38.000000000 +0000
--- gcc-3.4.5/gcc/flow.c 2005-09-01 20:51:09.000000000 +0000
*************** Software Foundation, 59 Temple Place - S
*** 104,110 ****
life_analysis fills in certain vectors containing information about
register usage: REG_N_REFS, REG_N_DEATHS, REG_N_SETS, REG_LIVE_LENGTH,
! REG_N_CALLS_CROSSED and REG_BASIC_BLOCK.
life_analysis sets current_function_sp_is_unchanging if the function
doesn't modify the stack pointer. */
--- 104,110 ----
life_analysis fills in certain vectors containing information about
register usage: REG_N_REFS, REG_N_DEATHS, REG_N_SETS, REG_LIVE_LENGTH,
! REG_N_CALLS_CROSSED, REG_N_THROWING_CALLS_CROSSED and REG_BASIC_BLOCK.
life_analysis sets current_function_sp_is_unchanging if the function
doesn't modify the stack pointer. */
*************** allocate_reg_life_data (void)
*** 1470,1475 ****
--- 1470,1476 ----
REG_N_REFS (i) = 0;
REG_N_DEATHS (i) = 0;
REG_N_CALLS_CROSSED (i) = 0;
+ REG_N_THROWING_CALLS_CROSSED (i) = 0;
REG_LIVE_LENGTH (i) = 0;
REG_FREQ (i) = 0;
REG_BASIC_BLOCK (i) = REG_BLOCK_UNKNOWN;
*************** propagate_one_insn (struct propagate_blo
*** 1688,1695 ****
record this for them. */
if (GET_CODE (insn) == CALL_INSN && (flags & PROP_REG_INFO))
! EXECUTE_IF_SET_IN_REG_SET (pbi->reg_live, 0, i,
! { REG_N_CALLS_CROSSED (i)++; });
/* Record sets. Do this even for dead instructions, since they
would have killed the values if they hadn't been deleted. */
--- 1689,1701 ----
record this for them. */
if (GET_CODE (insn) == CALL_INSN && (flags & PROP_REG_INFO))
! {
! EXECUTE_IF_SET_IN_REG_SET (pbi->reg_live, 0, i,
! { REG_N_CALLS_CROSSED (i)++; });
! if (can_throw_internal (insn))
! EXECUTE_IF_SET_IN_REG_SET (pbi->reg_live, 0, i,
! { REG_N_THROWING_CALLS_CROSSED (i)++; });
! }
/* Record sets. Do this even for dead instructions, since they
would have killed the values if they hadn't been deleted. */
*************** attempt_auto_inc (struct propagate_block
*** 3365,3371 ****
that REGNO now crosses them. */
for (temp = insn; temp != incr; temp = NEXT_INSN (temp))
if (GET_CODE (temp) == CALL_INSN)
! REG_N_CALLS_CROSSED (regno)++;
/* Invalidate alias info for Q since we just changed its value. */
clear_reg_alias_info (q);
--- 3371,3381 ----
that REGNO now crosses them. */
for (temp = insn; temp != incr; temp = NEXT_INSN (temp))
if (GET_CODE (temp) == CALL_INSN)
! {
! REG_N_CALLS_CROSSED (regno)++;
! if (can_throw_internal (temp))
! REG_N_THROWING_CALLS_CROSSED (regno)++;
! }
/* Invalidate alias info for Q since we just changed its value. */
clear_reg_alias_info (q);
diff -Nrcpad gcc-3.4.4/gcc/fold-const.c gcc-3.4.5/gcc/fold-const.c
*** gcc-3.4.4/gcc/fold-const.c 2005-02-11 21:12:48.000000000 +0000
--- gcc-3.4.5/gcc/fold-const.c 2005-11-03 09:30:12.000000000 +0000
*************** const_binop (enum tree_code code, tree a
*** 1467,1499 ****
case RDIV_EXPR:
{
tree magsquared
= const_binop (PLUS_EXPR,
const_binop (MULT_EXPR, r2, r2, notrunc),
const_binop (MULT_EXPR, i2, i2, notrunc),
notrunc);
! t = build_complex (type,
! const_binop
! (INTEGRAL_TYPE_P (TREE_TYPE (r1))
! ? TRUNC_DIV_EXPR : RDIV_EXPR,
! const_binop (PLUS_EXPR,
! const_binop (MULT_EXPR, r1, r2,
! notrunc),
! const_binop (MULT_EXPR, i1, i2,
! notrunc),
! notrunc),
! magsquared, notrunc),
! const_binop
! (INTEGRAL_TYPE_P (TREE_TYPE (r1))
! ? TRUNC_DIV_EXPR : RDIV_EXPR,
! const_binop (MINUS_EXPR,
! const_binop (MULT_EXPR, i1, r2,
! notrunc),
! const_binop (MULT_EXPR, r1, i2,
! notrunc),
! notrunc),
! magsquared, notrunc));
}
break;
--- 1467,1502 ----
case RDIV_EXPR:
{
+ tree t1, t2, real, imag;
tree magsquared
= const_binop (PLUS_EXPR,
const_binop (MULT_EXPR, r2, r2, notrunc),
const_binop (MULT_EXPR, i2, i2, notrunc),
notrunc);
! t1 = const_binop (PLUS_EXPR,
! const_binop (MULT_EXPR, r1, r2, notrunc),
! const_binop (MULT_EXPR, i1, i2, notrunc),
! notrunc);
! t2 = const_binop (MINUS_EXPR,
! const_binop (MULT_EXPR, i1, r2, notrunc),
! const_binop (MULT_EXPR, r1, i2, notrunc),
! notrunc);
!
! if (INTEGRAL_TYPE_P (TREE_TYPE (r1)))
! {
! real = const_binop (TRUNC_DIV_EXPR, t1, magsquared, notrunc);
! imag = const_binop (TRUNC_DIV_EXPR, t2, magsquared, notrunc);
! }
! else
! {
! real = const_binop (RDIV_EXPR, t1, magsquared, notrunc);
! imag = const_binop (RDIV_EXPR, t2, magsquared, notrunc);
! if (!real || !imag)
! return NULL_TREE;
! }
!
! t = build_complex (type, real, imag);
}
break;
*************** fold (tree expr)
*** 7497,7502 ****
--- 7500,7507 ----
else if (TREE_CODE (TREE_TYPE (arg0)) == INTEGER_TYPE
&& TREE_CODE (arg0) == NOP_EXPR
&& (tem = get_unwidened (arg0, NULL_TREE)) != arg0
+ && (TYPE_PRECISION (TREE_TYPE (tem))
+ > TYPE_PRECISION (TREE_TYPE (arg0)))
&& (code == EQ_EXPR || code == NE_EXPR
|| TREE_UNSIGNED (TREE_TYPE (arg0))
== TREE_UNSIGNED (TREE_TYPE (tem)))
*************** fold (tree expr)
*** 8137,8143 ****
if (INTEGRAL_TYPE_P (type)
&& TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
! && TREE_CODE (arg2) == INTEGER_CST)
switch (comp_code)
{
case EQ_EXPR:
--- 8142,8153 ----
if (INTEGRAL_TYPE_P (type)
&& TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
! && TREE_CODE (arg2) == INTEGER_CST
! /* ??? We somehow can end up here with
! (unsigned int)1 == 1 ? 1U : 2U
! for which we won't make any progress but recurse
! indefinitely. Just stop here in this case. */
! && TREE_CODE (arg1) != INTEGER_CST)
switch (comp_code)
{
case EQ_EXPR:
*************** fold (tree expr)
*** 8194,8201 ****
/* If the second operand is simpler than the third, swap them
since that produces better jump optimization results. */
! if (tree_swap_operands_p (TREE_OPERAND (t, 1),
! TREE_OPERAND (t, 2), false))
{
/* See if this can be inverted. If it can't, possibly because
it was a floating-point inequality comparison, don't do
--- 8204,8212 ----
/* If the second operand is simpler than the third, swap them
since that produces better jump optimization results. */
! if (truth_value_p (TREE_CODE (arg0))
! && tree_swap_operands_p (TREE_OPERAND (t, 1),
! TREE_OPERAND (t, 2), false))
{
/* See if this can be inverted. If it can't, possibly because
it was a floating-point inequality comparison, don't do
diff -Nrcpad gcc-3.4.4/gcc/gcse.c gcc-3.4.5/gcc/gcse.c
*** gcc-3.4.4/gcc/gcse.c 2004-10-30 18:02:53.000000000 +0000
--- gcc-3.4.5/gcc/gcse.c 2005-07-21 06:56:24.000000000 +0000
*************** hoist_code (void)
*** 6445,6451 ****
insn_inserted_p = 0;
/* These tests should be the same as the tests above. */
! if (TEST_BIT (hoist_vbeout[bb->index], i))
{
/* We've found a potentially hoistable expression, now
we look at every block BB dominates to see if it
--- 6445,6451 ----
insn_inserted_p = 0;
/* These tests should be the same as the tests above. */
! if (TEST_BIT (hoist_exprs[bb->index], i))
{
/* We've found a potentially hoistable expression, now
we look at every block BB dominates to see if it
diff -Nrcpad gcc-3.4.4/gcc/gengtype-lex.c gcc-3.4.5/gcc/gengtype-lex.c
*** gcc-3.4.4/gcc/gengtype-lex.c 2005-05-19 09:59:14.000000000 +0000
--- gcc-3.4.5/gcc/gengtype-lex.c 2005-12-01 03:50:47.000000000 +0000
***************
*** 10,16 ****
#define YY_FLEX_MINOR_VERSION 5
#include
- #include
/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
--- 10,15 ----
***************
*** 24,29 ****
--- 23,29 ----
#ifdef __cplusplus
#include
+ #include
/* Use prototypes in function declarations. */
#define YY_USE_PROTOS
*************** static char *yy_last_accepting_cpos;
*** 1475,1481 ****
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
! #line 1 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
#define INITIAL 0
/* -*- indented-text -*- */
/* Process source files and output type information.
--- 1475,1481 ----
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
! #line 1 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
#define INITIAL 0
/* -*- indented-text -*- */
/* Process source files and output type information.
*************** You should have received a copy of the G
*** 1497,1503 ****
along with GCC; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
! #line 23 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
#include "bconfig.h"
#include "coretypes.h"
#include "system.h"
--- 1497,1503 ----
along with GCC; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
! #line 23 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
#include "bconfig.h"
#include "coretypes.h"
#include "system.h"
*************** YY_MALLOC_DECL
*** 1679,1688 ****
YY_DECL
{
register yy_state_type yy_current_state;
! register char *yy_cp = NULL, *yy_bp = NULL;
register int yy_act;
! #line 56 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
#line 1689 "gengtype-lex.c"
--- 1679,1688 ----
YY_DECL
{
register yy_state_type yy_current_state;
! register char *yy_cp, *yy_bp;
register int yy_act;
! #line 56 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
#line 1689 "gengtype-lex.c"
*************** do_action: /* This label is used only to
*** 1771,1777 ****
case 1:
YY_RULE_SETUP
! #line 58 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *tagstart;
size_t taglen;
--- 1771,1777 ----
case 1:
YY_RULE_SETUP
! #line 58 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *tagstart;
size_t taglen;
*************** YY_RULE_SETUP
*** 1806,1812 ****
YY_BREAK
case 2:
YY_RULE_SETUP
! #line 90 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *namestart;
--- 1806,1812 ----
YY_BREAK
case 2:
YY_RULE_SETUP
! #line 90 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *namestart;
*************** YY_RULE_SETUP
*** 1836,1842 ****
YY_BREAK
case 3:
YY_RULE_SETUP
! #line 117 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
--- 1836,1842 ----
YY_BREAK
case 3:
YY_RULE_SETUP
! #line 117 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
*************** YY_RULE_SETUP
*** 1855,1861 ****
YY_BREAK
case 4:
YY_RULE_SETUP
! #line 133 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
--- 1855,1861 ----
YY_BREAK
case 4:
YY_RULE_SETUP
! #line 133 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
*************** YY_RULE_SETUP
*** 1874,1880 ****
YY_BREAK
case 5:
YY_RULE_SETUP
! #line 149 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
--- 1874,1880 ----
YY_BREAK
case 5:
YY_RULE_SETUP
! #line 149 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
*************** YY_RULE_SETUP
*** 1893,1899 ****
YY_BREAK
case 6:
YY_RULE_SETUP
! #line 165 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
--- 1893,1899 ----
YY_BREAK
case 6:
YY_RULE_SETUP
! #line 165 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *namestart;
size_t namelen;
*************** case 7:
*** 1915,1921 ****
yy_c_buf_p = yy_cp -= 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 181 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
char *tagstart;
size_t taglen;
--- 1915,1921 ----
yy_c_buf_p = yy_cp -= 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 181 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
char *tagstart;
size_t taglen;
*************** case 8:
*** 1949,1955 ****
yy_c_buf_p = yy_cp -= 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 209 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
update_lineno (yytext, yyleng);
--- 1949,1955 ----
yy_c_buf_p = yy_cp -= 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 209 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
update_lineno (yytext, yyleng);
*************** case 9:
*** 1961,1967 ****
yy_c_buf_p = yy_cp -= 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 215 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
update_lineno (yytext, yyleng);
--- 1961,1967 ----
yy_c_buf_p = yy_cp -= 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 215 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
update_lineno (yytext, yyleng);
*************** YY_RULE_SETUP
*** 1971,1992 ****
case 10:
YY_RULE_SETUP
! #line 223 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ BEGIN(in_struct_comment); }
YY_BREAK
case 11:
YY_RULE_SETUP
! #line 225 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ BEGIN(in_yacc_escape); }
YY_BREAK
case 12:
YY_RULE_SETUP
! #line 227 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* Used for c-parse.in C/ObjC demarcation. */
YY_BREAK
case 13:
YY_RULE_SETUP
! #line 229 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ update_lineno (yytext, yyleng); }
YY_BREAK
case 14:
--- 1971,1992 ----
case 10:
YY_RULE_SETUP
! #line 223 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ BEGIN(in_struct_comment); }
YY_BREAK
case 11:
YY_RULE_SETUP
! #line 225 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ BEGIN(in_yacc_escape); }
YY_BREAK
case 12:
YY_RULE_SETUP
! #line 227 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* Used for c-parse.in C/ObjC demarcation. */
YY_BREAK
case 13:
YY_RULE_SETUP
! #line 229 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ update_lineno (yytext, yyleng); }
YY_BREAK
case 14:
*************** case 14:
*** 1994,2000 ****
yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 231 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* don't care */
YY_BREAK
case 15:
--- 1994,2000 ----
yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 231 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* don't care */
YY_BREAK
case 15:
*************** case 15:
*** 2002,2008 ****
yy_c_buf_p = yy_cp = yy_bp + 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 233 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return GTY_TOKEN; }
YY_BREAK
case 16:
--- 2002,2008 ----
yy_c_buf_p = yy_cp = yy_bp + 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 233 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return GTY_TOKEN; }
YY_BREAK
case 16:
*************** case 16:
*** 2010,2016 ****
yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 234 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return UNION; }
YY_BREAK
case 17:
--- 2010,2016 ----
yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 234 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return UNION; }
YY_BREAK
case 17:
*************** case 17:
*** 2018,2024 ****
yy_c_buf_p = yy_cp = yy_bp + 6;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 235 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return STRUCT; }
YY_BREAK
case 18:
--- 2018,2024 ----
yy_c_buf_p = yy_cp = yy_bp + 6;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 235 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return STRUCT; }
YY_BREAK
case 18:
*************** case 18:
*** 2026,2032 ****
yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 236 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return ENUM; }
YY_BREAK
case 19:
--- 2026,2032 ----
yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 236 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return ENUM; }
YY_BREAK
case 19:
*************** case 19:
*** 2034,2045 ****
yy_c_buf_p = yy_cp = yy_bp + 9;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 237 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return ALIAS; }
YY_BREAK
case 20:
YY_RULE_SETUP
! #line 238 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return NUM; }
YY_BREAK
case 21:
--- 2034,2045 ----
yy_c_buf_p = yy_cp = yy_bp + 9;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 237 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return ALIAS; }
YY_BREAK
case 20:
YY_RULE_SETUP
! #line 238 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return NUM; }
YY_BREAK
case 21:
*************** case 21:
*** 2047,2053 ****
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 239 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext, yyleng, yyleng+1);
return PARAM_IS;
--- 2047,2053 ----
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 239 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext, yyleng, yyleng+1);
return PARAM_IS;
*************** case 22:
*** 2057,2066 ****
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 245 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
case 23:
YY_RULE_SETUP
! #line 245 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
size_t len;
--- 2057,2066 ----
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 245 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
case 23:
YY_RULE_SETUP
! #line 245 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
size_t len;
*************** case 24:
*** 2077,2083 ****
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 256 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext, yyleng, yyleng+1);
return ID;
--- 2077,2083 ----
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 256 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext, yyleng, yyleng+1);
return ID;
*************** YY_RULE_SETUP
*** 2085,2091 ****
YY_BREAK
case 25:
YY_RULE_SETUP
! #line 261 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-2, yyleng-1);
return STRING;
--- 2085,2091 ----
YY_BREAK
case 25:
YY_RULE_SETUP
! #line 261 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-2, yyleng-1);
return STRING;
*************** YY_RULE_SETUP
*** 2093,2099 ****
YY_BREAK
case 26:
YY_RULE_SETUP
! #line 265 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-2, yyleng-1);
return ARRAY;
--- 2093,2099 ----
YY_BREAK
case 26:
YY_RULE_SETUP
! #line 265 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-2, yyleng-1);
return ARRAY;
*************** YY_RULE_SETUP
*** 2101,2107 ****
YY_BREAK
case 27:
YY_RULE_SETUP
! #line 269 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-1, yyleng);
return PERCENT_ID;
--- 2101,2107 ----
YY_BREAK
case 27:
YY_RULE_SETUP
! #line 269 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-1, yyleng);
return PERCENT_ID;
*************** YY_RULE_SETUP
*** 2109,2115 ****
YY_BREAK
case 28:
YY_RULE_SETUP
! #line 273 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-2, yyleng);
return CHAR;
--- 2109,2115 ----
YY_BREAK
case 28:
YY_RULE_SETUP
! #line 273 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
yylval.s = xmemdup (yytext+1, yyleng-2, yyleng);
return CHAR;
*************** YY_RULE_SETUP
*** 2117,2128 ****
YY_BREAK
case 29:
YY_RULE_SETUP
! #line 278 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ return yytext[0]; }
YY_BREAK
case 30:
YY_RULE_SETUP
! #line 280 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
if (lexer_toplevel_done)
{
--- 2117,2128 ----
YY_BREAK
case 29:
YY_RULE_SETUP
! #line 278 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ return yytext[0]; }
YY_BREAK
case 30:
YY_RULE_SETUP
! #line 280 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
if (lexer_toplevel_done)
{
*************** YY_RULE_SETUP
*** 2134,2140 ****
YY_BREAK
case 31:
YY_RULE_SETUP
! #line 289 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
BEGIN(INITIAL);
return PERCENTPERCENT;
--- 2134,2140 ----
YY_BREAK
case 31:
YY_RULE_SETUP
! #line 289 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
BEGIN(INITIAL);
return PERCENTPERCENT;
*************** YY_RULE_SETUP
*** 2142,2148 ****
YY_BREAK
case 32:
YY_RULE_SETUP
! #line 294 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line, "unexpected character `%s'", yytext);
}
--- 2142,2148 ----
YY_BREAK
case 32:
YY_RULE_SETUP
! #line 294 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line, "unexpected character `%s'", yytext);
}
*************** YY_RULE_SETUP
*** 2150,2175 ****
case 33:
YY_RULE_SETUP
! #line 299 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ BEGIN(in_comment); }
YY_BREAK
case 34:
YY_RULE_SETUP
! #line 300 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 35:
! #line 302 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
case 36:
! #line 303 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
case 37:
YY_RULE_SETUP
! #line 303 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 38:
YY_RULE_SETUP
! #line 304 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ update_lineno (yytext, yyleng); }
YY_BREAK
case 39:
--- 2150,2175 ----
case 33:
YY_RULE_SETUP
! #line 299 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ BEGIN(in_comment); }
YY_BREAK
case 34:
YY_RULE_SETUP
! #line 300 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 35:
! #line 302 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
case 36:
! #line 303 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
case 37:
YY_RULE_SETUP
! #line 303 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 38:
YY_RULE_SETUP
! #line 304 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ update_lineno (yytext, yyleng); }
YY_BREAK
case 39:
*************** case 39:
*** 2177,2196 ****
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 305 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 40:
YY_RULE_SETUP
! #line 308 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 41:
! #line 310 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
case 42:
YY_RULE_SETUP
! #line 310 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 43:
--- 2177,2196 ----
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 305 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 40:
YY_RULE_SETUP
! #line 308 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 41:
! #line 310 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
case 42:
YY_RULE_SETUP
! #line 310 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 43:
*************** case 43:
*** 2198,2228 ****
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 311 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 44:
YY_RULE_SETUP
! #line 313 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ BEGIN(INITIAL); }
YY_BREAK
case 45:
YY_RULE_SETUP
! #line 314 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ BEGIN(in_struct); }
YY_BREAK
case 46:
YY_RULE_SETUP
! #line 317 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 47:
! #line 319 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
case 48:
YY_RULE_SETUP
! #line 319 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 49:
--- 2198,2228 ----
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 311 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 44:
YY_RULE_SETUP
! #line 313 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ BEGIN(INITIAL); }
YY_BREAK
case 45:
YY_RULE_SETUP
! #line 314 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ BEGIN(in_struct); }
YY_BREAK
case 46:
YY_RULE_SETUP
! #line 317 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 47:
! #line 319 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
case 48:
YY_RULE_SETUP
! #line 319 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 49:
*************** case 49:
*** 2230,2246 ****
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 320 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 50:
YY_RULE_SETUP
! #line 321 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{ BEGIN(in_struct); }
YY_BREAK
case 51:
YY_RULE_SETUP
! #line 322 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line,
"unterminated %%{; unexpected EOF");
--- 2230,2246 ----
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
! #line 320 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 50:
YY_RULE_SETUP
! #line 321 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{ BEGIN(in_struct); }
YY_BREAK
case 51:
YY_RULE_SETUP
! #line 322 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line,
"unterminated %%{; unexpected EOF");
*************** YY_RULE_SETUP
*** 2248,2257 ****
YY_BREAK
case 52:
! #line 330 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
case 53:
YY_RULE_SETUP
! #line 330 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line,
"unterminated comment or string; unexpected EOF");
--- 2248,2257 ----
YY_BREAK
case 52:
! #line 330 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
case 53:
YY_RULE_SETUP
! #line 330 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line,
"unterminated comment or string; unexpected EOF");
*************** YY_RULE_SETUP
*** 2259,2265 ****
YY_BREAK
case 54:
YY_RULE_SETUP
! #line 335 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
#line 2266 "gengtype-lex.c"
--- 2259,2265 ----
YY_BREAK
case 54:
YY_RULE_SETUP
! #line 335 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
#line 2266 "gengtype-lex.c"
*************** YY_BUFFER_STATE b;
*** 2832,2837 ****
--- 2832,2842 ----
}
+ #ifndef YY_ALWAYS_INTERACTIVE
+ #ifndef YY_NEVER_INTERACTIVE
+ extern int isatty YY_PROTO(( int ));
+ #endif
+ #endif
#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
*************** int main()
*** 3149,3155 ****
return 0;
}
#endif
! #line 335 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-lex.l"
void
--- 3154,3160 ----
return 0;
}
#endif
! #line 335 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-lex.l"
void
diff -Nrcpad gcc-3.4.4/gcc/gengtype-yacc.c gcc-3.4.5/gcc/gengtype-yacc.c
*** gcc-3.4.4/gcc/gengtype-yacc.c 2005-05-19 09:59:14.000000000 +0000
--- gcc-3.4.5/gcc/gengtype-yacc.c 2005-12-01 03:50:48.000000000 +0000
***************
*** 1,273 ****
! /* A Bison parser, made from /scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y
! by GNU bison 1.35. */
!
! #define YYBISON 1 /* Identify Bison output. */
!
! # define ENT_TYPEDEF_STRUCT 257
! # define ENT_STRUCT 258
! # define ENT_EXTERNSTATIC 259
! # define ENT_YACCUNION 260
! # define GTY_TOKEN 261
! # define UNION 262
! # define STRUCT 263
! # define ENUM 264
! # define ALIAS 265
! # define PARAM_IS 266
! # define NUM 267
! # define PERCENTPERCENT 268
! # define SCALAR 269
! # define ID 270
! # define STRING 271
! # define ARRAY 272
! # define PERCENT_ID 273
! # define CHAR 274
!
! #line 22 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
!
! #include "bconfig.h"
! #include "system.h"
! #include "coretypes.h"
! #include "tm.h"
! #include "gengtype.h"
! #define YYERROR_VERBOSE
!
! #line 31 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! #ifndef YYSTYPE
! typedef union {
! type_p t;
! pair_p p;
! options_p o;
! const char *s;
! } yystype;
! # define YYSTYPE yystype
! # define YYSTYPE_IS_TRIVIAL 1
! #endif
! #ifndef YYDEBUG
! # define YYDEBUG 0
! #endif
!
!
!
! #define YYFINAL 112
! #define YYFLAG -32768
! #define YYNTBASE 32
!
! /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
! #define YYTRANSLATE(x) ((unsigned)(x) <= 274 ? yytranslate[x] : 52)
!
! /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
! static const char yytranslate[] =
! {
! 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 30, 31, 28, 2, 29, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 27, 23,
! 25, 24, 26, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 21, 2, 22, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
! 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
! 16, 17, 18, 19, 20
! };
!
! #if YYDEBUG
! static const short yyprhs[] =
! {
! 0, 0, 1, 4, 7, 10, 11, 20, 21, 29,
! 35, 42, 50, 52, 54, 56, 63, 64, 68, 75,
! 76, 79, 82, 83, 90, 97, 105, 106, 109, 112,
! 114, 116, 119, 125, 128, 134, 137, 140, 146, 147,
! 153, 157, 160, 161, 163, 170, 172, 174, 179, 184,
! 186, 190, 191
! };
! static const short yyrhs[] =
! {
! -1, 33, 32, 0, 36, 32, 0, 39, 32, 0,
! 0, 3, 47, 21, 42, 22, 16, 34, 23, 0,
! 0, 4, 47, 21, 42, 22, 35, 23, 0, 5,
! 47, 37, 16, 38, 0, 5, 47, 37, 16, 18,
! 38, 0, 5, 47, 37, 16, 18, 18, 38, 0,
! 44, 0, 23, 0, 24, 0, 6, 47, 42, 22,
! 40, 14, 0, 0, 40, 19, 41, 0, 40, 19,
! 25, 16, 26, 41, 0, 0, 41, 16, 0, 41,
! 20, 0, 0, 44, 46, 16, 43, 23, 42, 0,
! 44, 46, 16, 18, 23, 42, 0, 44, 46, 16,
! 18, 18, 23, 42, 0, 0, 27, 13, 0, 27,
! 16, 0, 15, 0, 16, 0, 44, 28, 0, 9,
! 16, 21, 42, 22, 0, 9, 16, 0, 8, 16,
! 21, 42, 22, 0, 8, 16, 0, 10, 16, 0,
! 10, 16, 21, 45, 22, 0, 0, 16, 24, 13,
! 29, 45, 0, 16, 29, 45, 0, 16, 45, 0,
! 0, 47, 0, 7, 30, 30, 51, 31, 31, 0,
! 11, 0, 12, 0, 48, 30, 44, 31, 0, 16,
! 30, 17, 31, 0, 49, 0, 50, 29, 49, 0,
! 0, 50, 0
! };
!
! #endif
!
! #if YYDEBUG
! /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
! static const short yyrline[] =
! {
! 0, 64, 65, 66, 67, 70, 70, 79, 79, 89,
! 94, 99, 107, 114, 115, 118, 125, 127, 140, 158,
! 160, 171, 184, 185, 195, 205, 217, 218, 219, 222,
! 224, 226, 228, 233, 235, 240, 242, 244, 248, 249,
! 251, 253, 257, 258, 261, 265, 267, 271, 278, 287,
! 292, 299, 300
! };
! #endif
!
!
! #if (YYDEBUG) || defined YYERROR_VERBOSE
!
! /* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
! static const char *const yytname[] =
! {
! "$", "error", "$undefined.", "ENT_TYPEDEF_STRUCT", "ENT_STRUCT",
! "ENT_EXTERNSTATIC", "ENT_YACCUNION", "GTY_TOKEN", "UNION", "STRUCT",
! "ENUM", "ALIAS", "PARAM_IS", "NUM", "\"%%\"", "SCALAR", "ID", "STRING",
! "ARRAY", "PERCENT_ID", "CHAR", "'{'", "'}'", "';'", "'='", "'<'", "'>'",
! "':'", "'*'", "','", "'('", "')'", "start", "typedef_struct", "@1",
! "@2", "externstatic", "lasttype", "semiequal", "yacc_union",
! "yacc_typematch", "yacc_ids", "struct_fields", "bitfieldopt", "type",
! "enum_items", "optionsopt", "options", "type_option", "option",
! "optionseq", "optionseqopt", 0
! };
! #endif
!
! /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
! static const short yyr1[] =
! {
! 0, 32, 32, 32, 32, 34, 33, 35, 33, 36,
! 36, 36, 37, 38, 38, 39, 40, 40, 40, 41,
! 41, 41, 42, 42, 42, 42, 43, 43, 43, 44,
! 44, 44, 44, 44, 44, 44, 44, 44, 45, 45,
! 45, 45, 46, 46, 47, 48, 48, 49, 49, 50,
! 50, 51, 51
! };
!
! /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
! static const short yyr2[] =
! {
! 0, 0, 2, 2, 2, 0, 8, 0, 7, 5,
! 6, 7, 1, 1, 1, 6, 0, 3, 6, 0,
! 2, 2, 0, 6, 6, 7, 0, 2, 2, 1,
! 1, 2, 5, 2, 5, 2, 2, 5, 0, 5,
! 3, 2, 0, 1, 6, 1, 1, 4, 4, 1,
! 3, 0, 1
! };
!
! /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
! doesn't specify something else to do. Zero means the default is an
! error. */
! static const short yydefact[] =
! {
! 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
! 0, 0, 22, 2, 3, 4, 0, 22, 22, 0,
! 0, 0, 29, 30, 0, 12, 0, 42, 51, 0,
! 0, 35, 33, 36, 0, 31, 16, 0, 43, 45,
! 46, 0, 0, 49, 52, 0, 0, 7, 22, 22,
! 38, 0, 13, 14, 9, 0, 26, 0, 0, 0,
! 0, 5, 0, 0, 0, 38, 0, 0, 10, 15,
! 19, 0, 0, 0, 0, 0, 50, 44, 0, 8,
! 34, 32, 0, 38, 41, 37, 11, 0, 17, 0,
! 22, 27, 28, 22, 48, 47, 6, 0, 40, 0,
! 20, 21, 22, 24, 23, 38, 19, 25, 39, 18,
! 0, 0, 0
! };
!
! static const short yydefgoto[] =
! {
! 13, 5, 78, 62, 6, 24, 54, 7, 55, 88,
! 26, 73, 27, 66, 37, 9, 42, 43, 44, 45
! };
!
! static const short yypact[] =
! {
! 54, 7, 7, 7, 7, 54, 54, 54, 8, 4,
! 9, 25, 25,-32768,-32768,-32768, 16, 25, 25, 37,
! 38, 46,-32768,-32768, 47, 40, 1, 0, 39, 43,
! 44, 48, 49, 50, 21,-32768,-32768, 51,-32768,-32768,
! -32768, 42, 45,-32768, 52, 53, 58,-32768, 25, 25,
! 61, 24,-32768,-32768,-32768, -3, -8, 62, 25, 39,
! 55,-32768, 57, 56, 60, -7, 65, 13,-32768,-32768,
! 63, -5, -1, 66, 59, 33,-32768,-32768, 68,-32768,
! -32768,-32768, 70, 61,-32768,-32768,-32768, 76, 36, 71,
! 25,-32768,-32768, 25,-32768,-32768,-32768, 64,-32768, 69,
! -32768,-32768, 25,-32768,-32768, 61,-32768,-32768,-32768, 36,
! 96, 97,-32768
! };
!
! static const short yypgoto[] =
! {
! 20,-32768,-32768,-32768,-32768,-32768, -43,-32768,-32768, -6,
! -17,-32768, -9, -62,-32768, 2,-32768, 67,-32768,-32768
! };
!
!
! #define YYLAST 126
!
!
! static const short yytable[] =
! {
! 29, 30, 25, 84, 10, 11, 12, 8, 68, 65,
! 71, 69, 91, 89, 8, 92, 70, 82, 90, 72,
! 110, 98, 83, 36, 86, 17, 14, 15, 35, 38,
! 18, 63, 64, 19, 20, 21, 52, 53, 16, 51,
! 22, 23, 67, 108, 52, 53, 28, 52, 53, 75,
! 39, 40, 100, 31, 32, 41, 101, 1, 2, 3,
! 4, 35, 33, 34, 95, 46, 47, 56, 35, 48,
! 49, 50, 57, 103, 61, 58, 104, 65, 80, 74,
! 79, 59, 81, 97, 60, 107, 77, 85, 87, 93,
! 94, 96, 99, 105, 102, 106, 111, 112, 0, 0,
! 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 0, 0, 76
! };
!
! static const short yycheck[] =
! {
! 17, 18, 11, 65, 2, 3, 4, 7, 51, 16,
! 18, 14, 13, 18, 7, 16, 19, 24, 23, 27,
! 0, 83, 29, 22, 67, 21, 6, 7, 28, 27,
! 21, 48, 49, 8, 9, 10, 23, 24, 30, 18,
! 15, 16, 18, 105, 23, 24, 30, 23, 24, 58,
! 11, 12, 16, 16, 16, 16, 20, 3, 4, 5,
! 6, 28, 16, 16, 31, 22, 22, 16, 28, 21,
! 21, 21, 30, 90, 16, 30, 93, 16, 22, 17,
! 23, 29, 22, 13, 31, 102, 31, 22, 25, 23,
! 31, 23, 16, 29, 23, 26, 0, 0, -1, -1,
! 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
! -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
! -1, -1, -1, -1, -1, -1, 59
! };
! /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
! #line 3 "/usr/share/bison/bison.simple"
!
! /* Skeleton output parser for bison,
! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
! Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
--- 1,7 ----
! /* A Bison parser, made by GNU Bison 1.875. */
! /* Skeleton parser for Yacc-like parsing with Bison,
! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*************** static const short yycheck[] =
*** 289,298 ****
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
! /* This is the parser code that is written into each bison parser when
! the %semantic_parser declaration is not specified in the grammar.
! It was written by Richard Stallman by simplifying the hairy parser
! used when %semantic_parser is specified. */
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
--- 23,30 ----
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
! /* Written by Richard Stallman by simplifying the original so called
! ``semantic'' parser. */
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
*************** static const short yycheck[] =
*** 301,307 ****
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
! #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
/* The parser invokes alloca or malloc; define the necessary symbols. */
--- 33,148 ----
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
! /* Identify Bison output. */
! #define YYBISON 1
!
! /* Skeleton name. */
! #define YYSKELETON_NAME "yacc.c"
!
! /* Pure parsers. */
! #define YYPURE 0
!
! /* Using locations. */
! #define YYLSP_NEEDED 0
!
!
!
! /* Tokens. */
! #ifndef YYTOKENTYPE
! # define YYTOKENTYPE
! /* Put the tokens into the symbol table, so that GDB and other debuggers
! know about them. */
! enum yytokentype {
! ENT_TYPEDEF_STRUCT = 258,
! ENT_STRUCT = 259,
! ENT_EXTERNSTATIC = 260,
! ENT_YACCUNION = 261,
! GTY_TOKEN = 262,
! UNION = 263,
! STRUCT = 264,
! ENUM = 265,
! ALIAS = 266,
! PARAM_IS = 267,
! NUM = 268,
! PERCENTPERCENT = 269,
! SCALAR = 270,
! ID = 271,
! STRING = 272,
! ARRAY = 273,
! PERCENT_ID = 274,
! CHAR = 275
! };
! #endif
! #define ENT_TYPEDEF_STRUCT 258
! #define ENT_STRUCT 259
! #define ENT_EXTERNSTATIC 260
! #define ENT_YACCUNION 261
! #define GTY_TOKEN 262
! #define UNION 263
! #define STRUCT 264
! #define ENUM 265
! #define ALIAS 266
! #define PARAM_IS 267
! #define NUM 268
! #define PERCENTPERCENT 269
! #define SCALAR 270
! #define ID 271
! #define STRING 272
! #define ARRAY 273
! #define PERCENT_ID 274
! #define CHAR 275
!
!
!
!
! /* Copy the first part of user declarations. */
! #line 22 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
!
! #include "bconfig.h"
! #include "system.h"
! #include "coretypes.h"
! #include "tm.h"
! #include "gengtype.h"
! #define YYERROR_VERBOSE
!
!
! /* Enabling traces. */
! #ifndef YYDEBUG
! # define YYDEBUG 0
! #endif
!
! /* Enabling verbose error messages. */
! #ifdef YYERROR_VERBOSE
! # undef YYERROR_VERBOSE
! # define YYERROR_VERBOSE 1
! #else
! # define YYERROR_VERBOSE 0
! #endif
!
! #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
! #line 31 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! typedef union YYSTYPE {
! type_p t;
! pair_p p;
! options_p o;
! const char *s;
! } YYSTYPE;
! /* Line 191 of yacc.c. */
! #line 131 "gengtype-yacc.c"
! # define yystype YYSTYPE /* obsolescent; will be withdrawn */
! # define YYSTYPE_IS_DECLARED 1
! # define YYSTYPE_IS_TRIVIAL 1
! #endif
!
!
!
! /* Copy the second part of user declarations. */
!
!
! /* Line 214 of yacc.c. */
! #line 143 "gengtype-yacc.c"
!
! #if ! defined (yyoverflow) || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
*************** static const short yycheck[] =
*** 330,366 ****
# define YYSTACK_ALLOC malloc
# define YYSTACK_FREE free
# endif
! #endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
#if (! defined (yyoverflow) \
&& (! defined (__cplusplus) \
! || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
{
short yyss;
YYSTYPE yyvs;
! # if YYLSP_NEEDED
! YYLTYPE yyls;
! # endif
! };
/* The size of the maximum gap between one aligned stack and the next. */
! # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
! # if YYLSP_NEEDED
! # define YYSTACK_BYTES(N) \
! ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
! + 2 * YYSTACK_GAP_MAX)
! # else
! # define YYSTACK_BYTES(N) \
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
! + YYSTACK_GAP_MAX)
! # endif
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
--- 171,198 ----
# define YYSTACK_ALLOC malloc
# define YYSTACK_FREE free
# endif
! #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
#if (! defined (yyoverflow) \
&& (! defined (__cplusplus) \
! || (YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
{
short yyss;
YYSTYPE yyvs;
! };
/* The size of the maximum gap between one aligned stack and the next. */
! # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
! # define YYSTACK_BYTES(N) \
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
! + YYSTACK_GAP_MAXIMUM)
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
*************** union yyalloc
*** 391,403 ****
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack, Stack, yysize); \
Stack = &yyptr->Stack; \
! yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
#endif
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
--- 223,502 ----
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack, Stack, yysize); \
Stack = &yyptr->Stack; \
! yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
#endif
+ #if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+ #else
+ typedef short yysigned_char;
+ #endif
+
+ /* YYFINAL -- State number of the termination state. */
+ #define YYFINAL 14
+ /* YYLAST -- Last index in YYTABLE. */
+ #define YYLAST 103
+
+ /* YYNTOKENS -- Number of terminals. */
+ #define YYNTOKENS 32
+ /* YYNNTS -- Number of nonterminals. */
+ #define YYNNTS 21
+ /* YYNRULES -- Number of rules. */
+ #define YYNRULES 53
+ /* YYNRULES -- Number of states. */
+ #define YYNSTATES 112
+
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+ #define YYUNDEFTOK 2
+ #define YYMAXUTOK 275
+
+ #define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+ static const unsigned char yytranslate[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 30, 31, 28, 2, 29, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 27, 23,
+ 25, 24, 26, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 21, 2, 22, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20
+ };
+
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+ static const unsigned char yyprhs[] =
+ {
+ 0, 0, 3, 4, 7, 10, 13, 14, 23, 24,
+ 32, 38, 45, 53, 55, 57, 59, 66, 67, 71,
+ 78, 79, 82, 85, 86, 93, 100, 108, 109, 112,
+ 115, 117, 119, 122, 128, 131, 137, 140, 143, 149,
+ 150, 156, 160, 163, 164, 166, 173, 175, 177, 182,
+ 187, 189, 193, 194
+ };
+
+ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
+ static const yysigned_char yyrhs[] =
+ {
+ 33, 0, -1, -1, 34, 33, -1, 37, 33, -1,
+ 40, 33, -1, -1, 3, 48, 21, 43, 22, 16,
+ 35, 23, -1, -1, 4, 48, 21, 43, 22, 36,
+ 23, -1, 5, 48, 38, 16, 39, -1, 5, 48,
+ 38, 16, 18, 39, -1, 5, 48, 38, 16, 18,
+ 18, 39, -1, 45, -1, 23, -1, 24, -1, 6,
+ 48, 43, 22, 41, 14, -1, -1, 41, 19, 42,
+ -1, 41, 19, 25, 16, 26, 42, -1, -1, 42,
+ 16, -1, 42, 20, -1, -1, 45, 47, 16, 44,
+ 23, 43, -1, 45, 47, 16, 18, 23, 43, -1,
+ 45, 47, 16, 18, 18, 23, 43, -1, -1, 27,
+ 13, -1, 27, 16, -1, 15, -1, 16, -1, 45,
+ 28, -1, 9, 16, 21, 43, 22, -1, 9, 16,
+ -1, 8, 16, 21, 43, 22, -1, 8, 16, -1,
+ 10, 16, -1, 10, 16, 21, 46, 22, -1, -1,
+ 16, 24, 13, 29, 46, -1, 16, 29, 46, -1,
+ 16, 46, -1, -1, 48, -1, 7, 30, 30, 52,
+ 31, 31, -1, 11, -1, 12, -1, 49, 30, 45,
+ 31, -1, 16, 30, 17, 31, -1, 50, -1, 51,
+ 29, 50, -1, -1, 51, -1
+ };
+
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+ static const unsigned short yyrline[] =
+ {
+ 0, 64, 64, 65, 66, 67, 71, 70, 80, 79,
+ 89, 94, 99, 107, 114, 115, 118, 126, 127, 140,
+ 159, 160, 171, 184, 185, 195, 205, 217, 218, 219,
+ 222, 224, 226, 228, 233, 235, 240, 242, 244, 248,
+ 249, 251, 253, 257, 258, 261, 265, 267, 271, 278,
+ 287, 292, 299, 300
+ };
+ #endif
+
+ #if YYDEBUG || YYERROR_VERBOSE
+ /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+ static const char *const yytname[] =
+ {
+ "$end", "error", "$undefined", "ENT_TYPEDEF_STRUCT", "ENT_STRUCT",
+ "ENT_EXTERNSTATIC", "ENT_YACCUNION", "GTY_TOKEN", "UNION", "STRUCT",
+ "ENUM", "ALIAS", "PARAM_IS", "NUM", "\"%%\"", "SCALAR", "ID", "STRING",
+ "ARRAY", "PERCENT_ID", "CHAR", "'{'", "'}'", "';'", "'='", "'<'", "'>'",
+ "':'", "'*'", "','", "'('", "')'", "$accept", "start", "typedef_struct",
+ "@1", "@2", "externstatic", "lasttype", "semiequal", "yacc_union",
+ "yacc_typematch", "yacc_ids", "struct_fields", "bitfieldopt", "type",
+ "enum_items", "optionsopt", "options", "type_option", "option",
+ "optionseq", "optionseqopt", 0
+ };
+ #endif
+
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+ static const unsigned short yytoknum[] =
+ {
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 123, 125, 59, 61, 60, 62, 58, 42, 44,
+ 40, 41
+ };
+ # endif
+
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+ static const unsigned char yyr1[] =
+ {
+ 0, 32, 33, 33, 33, 33, 35, 34, 36, 34,
+ 37, 37, 37, 38, 39, 39, 40, 41, 41, 41,
+ 42, 42, 42, 43, 43, 43, 43, 44, 44, 44,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 46,
+ 46, 46, 46, 47, 47, 48, 49, 49, 50, 50,
+ 51, 51, 52, 52
+ };
+
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+ static const unsigned char yyr2[] =
+ {
+ 0, 2, 0, 2, 2, 2, 0, 8, 0, 7,
+ 5, 6, 7, 1, 1, 1, 6, 0, 3, 6,
+ 0, 2, 2, 0, 6, 6, 7, 0, 2, 2,
+ 1, 1, 2, 5, 2, 5, 2, 2, 5, 0,
+ 5, 3, 2, 0, 1, 6, 1, 1, 4, 4,
+ 1, 3, 0, 1
+ };
+
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+ static const unsigned char yydefact[] =
+ {
+ 2, 0, 0, 0, 0, 0, 2, 2, 2, 0,
+ 0, 0, 0, 23, 1, 3, 4, 5, 0, 23,
+ 23, 0, 0, 0, 30, 31, 0, 13, 0, 43,
+ 52, 0, 0, 36, 34, 37, 0, 32, 17, 0,
+ 44, 46, 47, 0, 0, 50, 53, 0, 0, 8,
+ 23, 23, 39, 0, 14, 15, 10, 0, 27, 0,
+ 0, 0, 0, 6, 0, 0, 0, 39, 0, 0,
+ 11, 16, 20, 0, 0, 0, 0, 0, 51, 45,
+ 0, 9, 35, 33, 0, 39, 42, 38, 12, 0,
+ 18, 0, 23, 28, 29, 23, 49, 48, 7, 0,
+ 41, 0, 21, 22, 23, 25, 24, 39, 20, 26,
+ 40, 19
+ };
+
+ /* YYDEFGOTO[NTERM-NUM]. */
+ static const yysigned_char yydefgoto[] =
+ {
+ -1, 5, 6, 80, 64, 7, 26, 56, 8, 57,
+ 90, 28, 75, 29, 68, 39, 10, 44, 45, 46,
+ 47
+ };
+
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+ #define YYPACT_NINF -65
+ static const yysigned_char yypact[] =
+ {
+ 48, 5, 5, 5, 5, 19, 48, 48, 48, -2,
+ 39, 40, 7, 7, -65, -65, -65, -65, 15, 7,
+ 7, 11, 46, 47, -65, -65, 50, 36, 43, -3,
+ 25, 45, 52, 51, 54, 56, 6, -65, -65, 53,
+ -65, -65, -65, 38, 41, -65, 55, 57, 62, -65,
+ 7, 7, 63, 16, -65, -65, -65, -5, -7, 64,
+ 7, 25, 58, -65, 59, 61, 65, -11, 68, 35,
+ -65, -65, 66, 24, 22, 69, 67, 18, -65, -65,
+ 70, -65, -65, -65, 73, 63, -65, -65, -65, 78,
+ 28, 72, 7, -65, -65, 7, -65, -65, -65, 71,
+ -65, 44, -65, -65, 7, -65, -65, 63, -65, -65,
+ -65, 28
+ };
+
+ /* YYPGOTO[NTERM-NUM]. */
+ static const yysigned_char yypgoto[] =
+ {
+ -65, 49, -65, -65, -65, -65, -65, -43, -65, -65,
+ -28, -19, -65, -10, -64, -65, 4, -65, 42, -65,
+ -65
+ };
+
+ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+ #define YYTABLE_NINF -1
+ static const unsigned char yytable[] =
+ {
+ 31, 32, 27, 86, 9, 67, 11, 12, 13, 71,
+ 70, 73, 9, 84, 72, 21, 22, 23, 85, 14,
+ 74, 100, 24, 25, 53, 37, 88, 33, 18, 54,
+ 55, 65, 66, 40, 69, 93, 41, 42, 94, 54,
+ 55, 43, 91, 110, 102, 30, 37, 92, 103, 97,
+ 77, 1, 2, 3, 4, 15, 16, 17, 54, 55,
+ 19, 20, 34, 35, 37, 38, 36, 48, 59, 58,
+ 108, 60, 50, 105, 49, 51, 106, 52, 63, 67,
+ 111, 76, 81, 82, 61, 109, 99, 83, 62, 79,
+ 87, 89, 95, 98, 101, 104, 0, 0, 96, 0,
+ 107, 0, 0, 78
+ };
+
+ static const yysigned_char yycheck[] =
+ {
+ 19, 20, 12, 67, 7, 16, 2, 3, 4, 14,
+ 53, 18, 7, 24, 19, 8, 9, 10, 29, 0,
+ 27, 85, 15, 16, 18, 28, 69, 16, 30, 23,
+ 24, 50, 51, 29, 18, 13, 11, 12, 16, 23,
+ 24, 16, 18, 107, 16, 30, 28, 23, 20, 31,
+ 60, 3, 4, 5, 6, 6, 7, 8, 23, 24,
+ 21, 21, 16, 16, 28, 22, 16, 22, 30, 16,
+ 26, 30, 21, 92, 22, 21, 95, 21, 16, 16,
+ 108, 17, 23, 22, 29, 104, 13, 22, 31, 31,
+ 22, 25, 23, 23, 16, 23, -1, -1, 31, -1,
+ 29, -1, -1, 61
+ };
+
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+ static const unsigned char yystos[] =
+ {
+ 0, 3, 4, 5, 6, 33, 34, 37, 40, 7,
+ 48, 48, 48, 48, 0, 33, 33, 33, 30, 21,
+ 21, 8, 9, 10, 15, 16, 38, 45, 43, 45,
+ 30, 43, 43, 16, 16, 16, 16, 28, 22, 47,
+ 48, 11, 12, 16, 49, 50, 51, 52, 22, 22,
+ 21, 21, 21, 18, 23, 24, 39, 41, 16, 30,
+ 30, 29, 31, 16, 36, 43, 43, 16, 46, 18,
+ 39, 14, 19, 18, 27, 44, 17, 45, 50, 31,
+ 35, 23, 22, 22, 24, 29, 46, 22, 39, 25,
+ 42, 18, 23, 13, 16, 23, 31, 31, 23, 13,
+ 46, 16, 16, 20, 23, 43, 43, 29, 26, 43,
+ 46, 42
+ };
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
*************** union yyalloc
*** 417,445 ****
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
! #define YYEMPTY -2
#define YYEOF 0
#define YYACCEPT goto yyacceptlab
! #define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
#define YYFAIL goto yyerrlab
#define YYRECOVERING() (!!yyerrstatus)
#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
yylval = (Value); \
! yychar1 = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
! yyerror ("syntax error: cannot back up"); \
YYERROR; \
} \
while (0)
--- 516,549 ----
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
! #define YYEMPTY (-2)
#define YYEOF 0
+
#define YYACCEPT goto yyacceptlab
! #define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
+
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
+
#define YYFAIL goto yyerrlab
+
#define YYRECOVERING() (!!yyerrstatus)
+
#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
yylval = (Value); \
! yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
! yyerror ("syntax error: cannot back up");\
YYERROR; \
} \
while (0)
*************** while (0)
*** 447,487 ****
#define YYTERROR 1
#define YYERRCODE 256
-
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
! are run).
!
! When YYLLOC_DEFAULT is run, CURRENT is set the location of the
! first token. By default, to implement support for ranges, extend
! its range to the last symbol. */
#ifndef YYLLOC_DEFAULT
! # define YYLLOC_DEFAULT(Current, Rhs, N) \
! Current.last_line = Rhs[N].last_line; \
! Current.last_column = Rhs[N].last_column;
#endif
-
/* YYLEX -- calling `yylex' with the right arguments. */
! #if YYPURE
! # if YYLSP_NEEDED
! # ifdef YYLEX_PARAM
! # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
! # else
! # define YYLEX yylex (&yylval, &yylloc)
! # endif
! # else /* !YYLSP_NEEDED */
! # ifdef YYLEX_PARAM
! # define YYLEX yylex (&yylval, YYLEX_PARAM)
! # else
! # define YYLEX yylex (&yylval)
! # endif
! # endif /* !YYLSP_NEEDED */
! #else /* !YYPURE */
! # define YYLEX yylex ()
! #endif /* !YYPURE */
!
/* Enable debugging if requested. */
#if YYDEBUG
--- 551,574 ----
#define YYTERROR 1
#define YYERRCODE 256
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
! are run). */
#ifndef YYLLOC_DEFAULT
! # define YYLLOC_DEFAULT(Current, Rhs, N) \
! Current.first_line = Rhs[1].first_line; \
! Current.first_column = Rhs[1].first_column; \
! Current.last_line = Rhs[N].last_line; \
! Current.last_column = Rhs[N].last_column;
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
! #ifdef YYLEX_PARAM
! # define YYLEX yylex (YYLEX_PARAM)
! #else
! # define YYLEX yylex ()
! #endif
/* Enable debugging if requested. */
#if YYDEBUG
*************** do { \
*** 496,508 ****
--- 583,675 ----
if (yydebug) \
YYFPRINTF Args; \
} while (0)
+
+ # define YYDSYMPRINT(Args) \
+ do { \
+ if (yydebug) \
+ yysymprint Args; \
+ } while (0)
+
+ # define YYDSYMPRINTF(Title, Token, Value, Location) \
+ do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Token, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+ } while (0)
+
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (cinluded). |
+ `------------------------------------------------------------------*/
+
+ #if defined (__STDC__) || defined (__cplusplus)
+ static void
+ yy_stack_print (short *bottom, short *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+ short *bottom;
+ short *top;
+ #endif
+ {
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+ }
+
+ # define YY_STACK_PRINT(Bottom, Top) \
+ do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+ } while (0)
+
+
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced. |
+ `------------------------------------------------*/
+
+ #if defined (__STDC__) || defined (__cplusplus)
+ static void
+ yy_reduce_print (int yyrule)
+ #else
+ static void
+ yy_reduce_print (yyrule)
+ int yyrule;
+ #endif
+ {
+ int yyi;
+ unsigned int yylineno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+ yyrule - 1, yylineno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+ }
+
+ # define YY_REDUCE_PRINT(Rule) \
+ do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+ } while (0)
+
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
+ # define YYDSYMPRINT(Args)
+ # define YYDSYMPRINTF(Title, Token, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
+
/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
*************** int yydebug;
*** 522,529 ****
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
! #ifdef YYERROR_VERBOSE
# ifndef yystrlen
# if defined (__GLIBC__) && defined (_STRING_H)
--- 689,698 ----
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
+
!
! #if YYERROR_VERBOSE
# ifndef yystrlen
# if defined (__GLIBC__) && defined (_STRING_H)
*************** yystpcpy (yydest, yysrc)
*** 573,658 ****
}
# endif
# endif
! #endif
- #line 315 "/usr/share/bison/bison.simple"
! /* The user can define YYPARSE_PARAM as the name of an argument to be passed
! into yyparse. The argument should have type void *.
! It should actually point to an object.
! Grammar actions can access the variable by casting it
! to the proper pointer type. */
#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
! # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
! # define YYPARSE_PARAM_DECL
# else
! # define YYPARSE_PARAM_ARG YYPARSE_PARAM
! # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
# endif
! #else /* !YYPARSE_PARAM */
! # define YYPARSE_PARAM_ARG
! # define YYPARSE_PARAM_DECL
! #endif /* !YYPARSE_PARAM */
!
! /* Prevent warning if -Wstrict-prototypes. */
! #ifdef __GNUC__
! # ifdef YYPARSE_PARAM
! int yyparse (void *);
! # else
int yyparse (void);
! # endif
#endif
- /* YY_DECL_VARIABLES -- depending whether we use a pure parser,
- variables are global, or local to YYPARSE. */
- #define YY_DECL_NON_LSP_VARIABLES \
- /* The lookahead symbol. */ \
- int yychar; \
- \
- /* The semantic value of the lookahead symbol. */ \
- YYSTYPE yylval; \
- \
- /* Number of parse errors so far. */ \
- int yynerrs;
! #if YYLSP_NEEDED
! # define YY_DECL_VARIABLES \
! YY_DECL_NON_LSP_VARIABLES \
! \
! /* Location data for the lookahead symbol. */ \
! YYLTYPE yylloc;
! #else
! # define YY_DECL_VARIABLES \
! YY_DECL_NON_LSP_VARIABLES
! #endif
! /* If nonreentrant, generate the variables here. */
- #if !YYPURE
- YY_DECL_VARIABLES
- #endif /* !YYPURE */
int
! yyparse (YYPARSE_PARAM_ARG)
! YYPARSE_PARAM_DECL
! {
! /* If reentrant, generate the variables here. */
! #if YYPURE
! YY_DECL_VARIABLES
! #endif /* !YYPURE */
register int yystate;
register int yyn;
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */
! int yychar1 = 0;
/* Three stacks and their tools:
`yyss': related to states,
--- 742,875 ----
}
# endif
# endif
!
! #endif /* !YYERROR_VERBOSE */
!
+ #if YYDEBUG
+ /*--------------------------------.
+ | Print this symbol on YYOUTPUT. |
+ `--------------------------------*/
! #if defined (__STDC__) || defined (__cplusplus)
! static void
! yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
! #else
! static void
! yysymprint (yyoutput, yytype, yyvaluep)
! FILE *yyoutput;
! int yytype;
! YYSTYPE *yyvaluep;
! #endif
! {
! /* Pacify ``unused variable'' warnings. */
! (void) yyvaluep;
!
! if (yytype < YYNTOKENS)
! {
! YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
! # ifdef YYPRINT
! YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
! # endif
! }
! else
! YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
!
! switch (yytype)
! {
! default:
! break;
! }
! YYFPRINTF (yyoutput, ")");
! }
!
! #endif /* ! YYDEBUG */
! /*-----------------------------------------------.
! | Release the memory associated to this symbol. |
! `-----------------------------------------------*/
!
! #if defined (__STDC__) || defined (__cplusplus)
! static void
! yydestruct (int yytype, YYSTYPE *yyvaluep)
! #else
! static void
! yydestruct (yytype, yyvaluep)
! int yytype;
! YYSTYPE *yyvaluep;
! #endif
! {
! /* Pacify ``unused variable'' warnings. */
! (void) yyvaluep;
!
! switch (yytype)
! {
!
! default:
! break;
! }
! }
!
!
! /* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
! int yyparse (void *YYPARSE_PARAM);
# else
! int yyparse ();
# endif
! #else /* ! YYPARSE_PARAM */
! #if defined (__STDC__) || defined (__cplusplus)
int yyparse (void);
! #else
! int yyparse ();
#endif
+ #endif /* ! YYPARSE_PARAM */
! /* The lookahead symbol. */
! int yychar;
+ /* The semantic value of the lookahead symbol. */
+ YYSTYPE yylval;
! /* Number of syntax errors so far. */
! int yynerrs;
+
+ /*----------.
+ | yyparse. |
+ `----------*/
+
+ #ifdef YYPARSE_PARAM
+ # if defined (__STDC__) || defined (__cplusplus)
+ int yyparse (void *YYPARSE_PARAM)
+ # else
+ int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+ # endif
+ #else /* ! YYPARSE_PARAM */
+ #if defined (__STDC__) || defined (__cplusplus)
int
! yyparse (void)
! #else
! int
! yyparse ()
+ #endif
+ #endif
+ {
+
register int yystate;
register int yyn;
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */
! int yytoken = 0;
/* Three stacks and their tools:
`yyss': related to states,
*************** yyparse (YYPARSE_PARAM_ARG)
*** 662,668 ****
Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
! /* The state stack. */
short yyssa[YYINITDEPTH];
short *yyss = yyssa;
register short *yyssp;
--- 879,885 ----
Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
! /* The state stack. */
short yyssa[YYINITDEPTH];
short *yyss = yyssa;
register short *yyssp;
*************** yyparse (YYPARSE_PARAM_ARG)
*** 672,702 ****
YYSTYPE *yyvs = yyvsa;
register YYSTYPE *yyvsp;
- #if YYLSP_NEEDED
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
- #endif
- #if YYLSP_NEEDED
- # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
- #else
- # define YYPOPSTACK (yyvsp--, yyssp--)
- #endif
! YYSIZE_T yystacksize = YYINITDEPTH;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
! #if YYLSP_NEEDED
! YYLTYPE yyloc;
! #endif
/* When reducing, the number of symbols on the RHS of the reduced
! rule. */
int yylen;
YYDPRINTF ((stderr, "Starting parse\n"));
--- 889,907 ----
YYSTYPE *yyvs = yyvsa;
register YYSTYPE *yyvsp;
! #define YYPOPSTACK (yyvsp--, yyssp--)
+ YYSIZE_T yystacksize = YYINITDEPTH;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
!
/* When reducing, the number of symbols on the RHS of the reduced
! rule. */
int yylen;
YYDPRINTF ((stderr, "Starting parse\n"));
*************** yyparse (YYPARSE_PARAM_ARG)
*** 713,721 ****
yyssp = yyss;
yyvsp = yyvs;
! #if YYLSP_NEEDED
! yylsp = yyls;
! #endif
goto yysetstate;
/*------------------------------------------------------------.
--- 918,924 ----
yyssp = yyss;
yyvsp = yyvs;
!
goto yysetstate;
/*------------------------------------------------------------.
*************** yyparse (YYPARSE_PARAM_ARG)
*** 730,736 ****
yysetstate:
*yyssp = yystate;
! if (yyssp >= yyss + yystacksize - 1)
{
/* Get the current used size of the three stacks, in elements. */
YYSIZE_T yysize = yyssp - yyss + 1;
--- 933,939 ----
yysetstate:
*yyssp = yystate;
! if (yyss + yystacksize - 1 <= yyssp)
{
/* Get the current used size of the three stacks, in elements. */
YYSIZE_T yysize = yyssp - yyss + 1;
*************** yyparse (YYPARSE_PARAM_ARG)
*** 743,766 ****
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
! data in use in that stack, in bytes. */
! # if YYLSP_NEEDED
! YYLTYPE *yyls1 = yyls;
! /* This used to be a conditional around just the two extra args,
! but that might be undefined if yyoverflow is a macro. */
! yyoverflow ("parser stack overflow",
! &yyss1, yysize * sizeof (*yyssp),
! &yyvs1, yysize * sizeof (*yyvsp),
! &yyls1, yysize * sizeof (*yylsp),
! &yystacksize);
! yyls = yyls1;
! # else
yyoverflow ("parser stack overflow",
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
&yystacksize);
! # endif
yyss = yyss1;
yyvs = yyvs1;
}
--- 946,962 ----
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
+
/* Each stack pointer address is followed by the size of the
! data in use in that stack, in bytes. This used to be a
! conditional around just the two extra args, but that might
! be undefined if yyoverflow is a macro. */
yyoverflow ("parser stack overflow",
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
+
&yystacksize);
!
yyss = yyss1;
yyvs = yyvs1;
}
*************** yyparse (YYPARSE_PARAM_ARG)
*** 769,778 ****
goto yyoverflowlab;
# else
/* Extend the stack our own way. */
! if (yystacksize >= YYMAXDEPTH)
goto yyoverflowlab;
yystacksize *= 2;
! if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
{
--- 965,974 ----
goto yyoverflowlab;
# else
/* Extend the stack our own way. */
! if (YYMAXDEPTH <= yystacksize)
goto yyoverflowlab;
yystacksize *= 2;
! if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
{
*************** yyparse (YYPARSE_PARAM_ARG)
*** 783,792 ****
goto yyoverflowlab;
YYSTACK_RELOCATE (yyss);
YYSTACK_RELOCATE (yyvs);
! # if YYLSP_NEEDED
! YYSTACK_RELOCATE (yyls);
! # endif
! # undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
--- 979,986 ----
goto yyoverflowlab;
YYSTACK_RELOCATE (yyss);
YYSTACK_RELOCATE (yyvs);
!
! # undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
*************** yyparse (YYPARSE_PARAM_ARG)
*** 795,808 ****
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
! #if YYLSP_NEEDED
! yylsp = yyls + yysize - 1;
! #endif
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
! if (yyssp >= yyss + yystacksize - 1)
YYABORT;
}
--- 989,1000 ----
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
!
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
! if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
*************** yyparse (YYPARSE_PARAM_ARG)
*** 810,816 ****
goto yybackup;
-
/*-----------.
| yybackup. |
`-----------*/
--- 1002,1007 ----
*************** yybackup:
*** 823,910 ****
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
! if (yyn == YYFLAG)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
! /* yychar is either YYEMPTY or YYEOF
! or a valid token in external form. */
!
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
! /* Convert token to internal form (in yychar1) for indexing tables with */
!
! if (yychar <= 0) /* This means end of input. */
{
! yychar1 = 0;
! yychar = YYEOF; /* Don't call YYLEX any more */
!
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
! yychar1 = YYTRANSLATE (yychar);
!
! #if YYDEBUG
! /* We have to keep this `#if YYDEBUG', since we use variables
! which are defined only if `YYDEBUG' is set. */
! if (yydebug)
! {
! YYFPRINTF (stderr, "Next token is %d (%s",
! yychar, yytname[yychar1]);
! /* Give the individual parser a way to print the precise
! meaning of a token, for further debugging info. */
! # ifdef YYPRINT
! YYPRINT (stderr, yychar, yylval);
! # endif
! YYFPRINTF (stderr, ")\n");
! }
! #endif
}
! yyn += yychar1;
! if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
goto yydefault;
-
yyn = yytable[yyn];
!
! /* yyn is what to do for this token type in this state.
! Negative => reduce, -yyn is rule number.
! Positive => shift, yyn is new state.
! New state is final state => don't bother to shift,
! just return success.
! 0, or most negative number => error. */
!
! if (yyn < 0)
{
! if (yyn == YYFLAG)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
- else if (yyn == 0)
- goto yyerrlab;
if (yyn == YYFINAL)
YYACCEPT;
/* Shift the lookahead token. */
! YYDPRINTF ((stderr, "Shifting token %d (%s), ",
! yychar, yytname[yychar1]));
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
! #if YYLSP_NEEDED
! *++yylsp = yylloc;
! #endif
/* Count tokens shifted since error; after three, turn off error
status. */
--- 1014,1068 ----
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
! if (yyn == YYPACT_NINF)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
! /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
! if (yychar <= YYEOF)
{
! yychar = yytoken = YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
! yytoken = YYTRANSLATE (yychar);
! YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
}
! /* If the proper action on seeing token YYTOKEN is to reduce or to
! detect an error, take that action. */
! yyn += yytoken;
! if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
goto yydefault;
yyn = yytable[yyn];
! if (yyn <= 0)
{
! if (yyn == 0 || yyn == YYTABLE_NINF)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
if (yyn == YYFINAL)
YYACCEPT;
/* Shift the lookahead token. */
! YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
!
/* Count tokens shifted since error; after three, turn off error
status. */
*************** yyreduce:
*** 935,1040 ****
/* If YYLEN is nonzero, implement the default value of the action:
`$$ = $1'.
! Otherwise, the following line sets YYVAL to the semantic value of
! the lookahead token. This behavior is undocumented and Bison
users should not rely upon it. Assigning to YYVAL
unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen];
- #if YYLSP_NEEDED
- /* Similarly for the default location. Let the user run additional
- commands if for instance locations are ranges. */
- yyloc = yylsp[1-yylen];
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
- #endif
! #if YYDEBUG
! /* We have to keep this `#if YYDEBUG', since we use variables which
! are defined only if `YYDEBUG' is set. */
! if (yydebug)
{
- int yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
- YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
- #endif
-
- switch (yyn) {
-
- case 5:
- #line 71 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
- {
new_structure (yyvsp[-5].t->u.s.tag, UNION_P (yyvsp[-5].t), &lexer_line,
yyvsp[-2].p, yyvsp[-4].o);
do_typedef (yyvsp[0].s, yyvsp[-5].t, &lexer_line);
lexer_toplevel_done = 1;
! ;
! break;}
! case 6:
! #line 78 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {;
! break;}
! case 7:
! #line 80 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
new_structure (yyvsp[-4].t->u.s.tag, UNION_P (yyvsp[-4].t), &lexer_line,
yyvsp[-1].p, yyvsp[-3].o);
lexer_toplevel_done = 1;
! ;
! break;}
! case 8:
! #line 86 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {;
! break;}
! case 9:
! #line 90 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
note_variable (yyvsp[-1].s, adjust_field_type (yyvsp[-2].t, yyvsp[-3].o), yyvsp[-3].o,
&lexer_line);
! ;
! break;}
! case 10:
! #line 95 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
note_variable (yyvsp[-2].s, create_array (yyvsp[-3].t, yyvsp[-1].s),
yyvsp[-4].o, &lexer_line);
! ;
! break;}
! case 11:
! #line 100 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
note_variable (yyvsp[-3].s, create_array (create_array (yyvsp[-4].t, yyvsp[-1].s),
yyvsp[-2].s),
yyvsp[-5].o, &lexer_line);
! ;
! break;}
! case 12:
! #line 108 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
lexer_toplevel_done = 1;
yyval.t = yyvsp[0].t;
! ;
! break;}
! case 15:
! #line 120 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
note_yacc_type (yyvsp[-4].o, yyvsp[-3].p, yyvsp[-1].p, &lexer_line);
! ;
! break;}
! case 16:
! #line 126 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.p = NULL; ;
! break;}
! case 17:
! #line 128 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p;
for (p = yyvsp[0].p; p->next != NULL; p = p->next)
{
--- 1093,1186 ----
/* If YYLEN is nonzero, implement the default value of the action:
`$$ = $1'.
! Otherwise, the following line sets YYVAL to garbage.
! This behavior is undocumented and Bison
users should not rely upon it. Assigning to YYVAL
unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen];
! YY_REDUCE_PRINT (yyn);
! switch (yyn)
! {
! case 6:
! #line 71 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
{
new_structure (yyvsp[-5].t->u.s.tag, UNION_P (yyvsp[-5].t), &lexer_line,
yyvsp[-2].p, yyvsp[-4].o);
do_typedef (yyvsp[0].s, yyvsp[-5].t, &lexer_line);
lexer_toplevel_done = 1;
! ;}
! break;
!
! case 7:
! #line 78 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {;}
! break;
!
! case 8:
! #line 80 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
new_structure (yyvsp[-4].t->u.s.tag, UNION_P (yyvsp[-4].t), &lexer_line,
yyvsp[-1].p, yyvsp[-3].o);
lexer_toplevel_done = 1;
! ;}
! break;
!
! case 9:
! #line 86 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {;}
! break;
!
! case 10:
! #line 90 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
note_variable (yyvsp[-1].s, adjust_field_type (yyvsp[-2].t, yyvsp[-3].o), yyvsp[-3].o,
&lexer_line);
! ;}
! break;
!
! case 11:
! #line 95 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
note_variable (yyvsp[-2].s, create_array (yyvsp[-3].t, yyvsp[-1].s),
yyvsp[-4].o, &lexer_line);
! ;}
! break;
!
! case 12:
! #line 100 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
note_variable (yyvsp[-3].s, create_array (create_array (yyvsp[-4].t, yyvsp[-1].s),
yyvsp[-2].s),
yyvsp[-5].o, &lexer_line);
! ;}
! break;
!
! case 13:
! #line 108 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
lexer_toplevel_done = 1;
yyval.t = yyvsp[0].t;
! ;}
! break;
!
! case 16:
! #line 120 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
note_yacc_type (yyvsp[-4].o, yyvsp[-3].p, yyvsp[-1].p, &lexer_line);
! ;}
! break;
!
! case 17:
! #line 126 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.p = NULL; ;}
! break;
!
! case 18:
! #line 128 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p;
for (p = yyvsp[0].p; p->next != NULL; p = p->next)
{
*************** case 17:
*** 1045,1055 ****
p->type = NULL;
p->next = yyvsp[-2].p;
yyval.p = yyvsp[0].p;
! ;
! break;}
! case 18:
! #line 141 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p;
type_p newtype = NULL;
if (strcmp (yyvsp[-4].s, "type") == 0)
--- 1191,1202 ----
p->type = NULL;
p->next = yyvsp[-2].p;
yyval.p = yyvsp[0].p;
! ;}
! break;
!
! case 19:
! #line 141 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p;
type_p newtype = NULL;
if (strcmp (yyvsp[-4].s, "type") == 0)
*************** case 18:
*** 1063,1077 ****
p->next = yyvsp[-5].p;
p->type = newtype;
yyval.p = yyvsp[0].p;
! ;
! break;}
! case 19:
! #line 159 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.p = NULL; ;
! break;}
! case 20:
! #line 161 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p = xcalloc (1, sizeof (*p));
p->next = yyvsp[-1].p;
p->line = lexer_line;
--- 1210,1226 ----
p->next = yyvsp[-5].p;
p->type = newtype;
yyval.p = yyvsp[0].p;
! ;}
! break;
!
! case 20:
! #line 159 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.p = NULL; ;}
! break;
!
! case 21:
! #line 161 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p = xcalloc (1, sizeof (*p));
p->next = yyvsp[-1].p;
p->line = lexer_line;
*************** case 20:
*** 1080,1090 ****
p->opt->next = NULL;
p->opt->info = (char *)yyvsp[0].s;
yyval.p = p;
! ;
! break;}
! case 21:
! #line 172 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p = xcalloc (1, sizeof (*p));
p->next = yyvsp[-1].p;
p->line = lexer_line;
--- 1229,1240 ----
p->opt->next = NULL;
p->opt->info = (char *)yyvsp[0].s;
yyval.p = p;
! ;}
! break;
!
! case 22:
! #line 172 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p = xcalloc (1, sizeof (*p));
p->next = yyvsp[-1].p;
p->line = lexer_line;
*************** case 21:
*** 1093,1107 ****
p->opt->next = NULL;
p->opt->info = xasprintf ("'%s'", yyvsp[0].s);
yyval.p = p;
! ;
! break;}
! case 22:
! #line 184 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.p = NULL; ;
! break;}
! case 23:
! #line 186 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p = xmalloc (sizeof (*p));
p->type = adjust_field_type (yyvsp[-5].t, yyvsp[-4].o);
p->opt = yyvsp[-4].o;
--- 1243,1259 ----
p->opt->next = NULL;
p->opt->info = xasprintf ("'%s'", yyvsp[0].s);
yyval.p = p;
! ;}
! break;
!
! case 23:
! #line 184 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.p = NULL; ;}
! break;
!
! case 24:
! #line 186 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p = xmalloc (sizeof (*p));
p->type = adjust_field_type (yyvsp[-5].t, yyvsp[-4].o);
p->opt = yyvsp[-4].o;
*************** case 23:
*** 1109,1119 ****
p->next = yyvsp[0].p;
p->line = lexer_line;
yyval.p = p;
! ;
! break;}
! case 24:
! #line 196 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p = xmalloc (sizeof (*p));
p->type = adjust_field_type (create_array (yyvsp[-5].t, yyvsp[-2].s), yyvsp[-4].o);
p->opt = yyvsp[-4].o;
--- 1261,1272 ----
p->next = yyvsp[0].p;
p->line = lexer_line;
yyval.p = p;
! ;}
! break;
!
! case 25:
! #line 196 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p = xmalloc (sizeof (*p));
p->type = adjust_field_type (create_array (yyvsp[-5].t, yyvsp[-2].s), yyvsp[-4].o);
p->opt = yyvsp[-4].o;
*************** case 24:
*** 1121,1131 ****
p->next = yyvsp[0].p;
p->line = lexer_line;
yyval.p = p;
! ;
! break;}
! case 25:
! #line 206 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
pair_p p = xmalloc (sizeof (*p));
p->type = create_array (create_array (yyvsp[-6].t, yyvsp[-2].s), yyvsp[-3].s);
p->opt = yyvsp[-5].o;
--- 1274,1285 ----
p->next = yyvsp[0].p;
p->line = lexer_line;
yyval.p = p;
! ;}
! break;
!
! case 26:
! #line 206 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
pair_p p = xmalloc (sizeof (*p));
p->type = create_array (create_array (yyvsp[-6].t, yyvsp[-2].s), yyvsp[-3].s);
p->opt = yyvsp[-5].o;
*************** case 25:
*** 1133,1280 ****
p->next = yyvsp[0].p;
p->line = lexer_line;
yyval.p = p;
! ;
! break;}
! case 29:
! #line 223 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = yyvsp[0].t; ;
! break;}
! case 30:
! #line 225 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = resolve_typedef (yyvsp[0].s, &lexer_line); ;
! break;}
! case 31:
! #line 227 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = create_pointer (yyvsp[-1].t); ;
! break;}
! case 32:
! #line 229 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
new_structure (yyvsp[-3].s, 0, &lexer_line, yyvsp[-1].p, NULL);
yyval.t = find_structure (yyvsp[-3].s, 0);
! ;
! break;}
! case 33:
! #line 234 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = find_structure (yyvsp[0].s, 0); ;
! break;}
! case 34:
! #line 236 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
new_structure (yyvsp[-3].s, 1, &lexer_line, yyvsp[-1].p, NULL);
yyval.t = find_structure (yyvsp[-3].s, 1);
! ;
! break;}
! case 35:
! #line 241 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = find_structure (yyvsp[0].s, 1); ;
! break;}
! case 36:
! #line 243 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = create_scalar_type (yyvsp[0].s, strlen (yyvsp[0].s)); ;
! break;}
! case 37:
! #line 245 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.t = create_scalar_type (yyvsp[-3].s, strlen (yyvsp[-3].s)); ;
! break;}
! case 39:
! #line 250 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { ;
! break;}
! case 40:
! #line 252 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { ;
! break;}
! case 41:
! #line 254 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { ;
! break;}
! case 42:
! #line 257 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.o = NULL; ;
! break;}
! case 43:
! #line 258 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.o = yyvsp[0].o; ;
! break;}
! case 44:
! #line 262 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.o = yyvsp[-2].o; ;
! break;}
! case 45:
! #line 266 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.s = "ptr_alias"; ;
! break;}
! case 46:
! #line 268 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.s = yyvsp[0].s; ;
! break;}
! case 47:
! #line 272 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
options_p o = xmalloc (sizeof (*o));
o->name = yyvsp[-3].s;
o->info = adjust_field_type (yyvsp[-1].t, NULL);
yyval.o = o;
! ;
! break;}
! case 48:
! #line 279 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
options_p o = xmalloc (sizeof (*o));
o->name = yyvsp[-3].s;
o->info = (void *)yyvsp[-1].s;
yyval.o = o;
! ;
! break;}
! case 49:
! #line 288 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
yyvsp[0].o->next = NULL;
yyval.o = yyvsp[0].o;
! ;
! break;}
! case 50:
! #line 293 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! {
yyvsp[0].o->next = yyvsp[-2].o;
yyval.o = yyvsp[0].o;
! ;
! break;}
! case 51:
! #line 299 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.o = NULL; ;
! break;}
! case 52:
! #line 300 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
! { yyval.o = yyvsp[0].o; ;
! break;}
! }
- #line 705 "/usr/share/bison/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
- #if YYLSP_NEEDED
- yylsp -= yylen;
- #endif
! #if YYDEBUG
! if (yydebug)
! {
! short *yyssp1 = yyss - 1;
! YYFPRINTF (stderr, "state stack now");
! while (yyssp1 != yyssp)
! YYFPRINTF (stderr, " %d", *++yyssp1);
! YYFPRINTF (stderr, "\n");
! }
! #endif
*++yyvsp = yyval;
! #if YYLSP_NEEDED
! *++yylsp = yyloc;
! #endif
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
--- 1287,1446 ----
p->next = yyvsp[0].p;
p->line = lexer_line;
yyval.p = p;
! ;}
! break;
!
! case 30:
! #line 223 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = yyvsp[0].t; ;}
! break;
!
! case 31:
! #line 225 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = resolve_typedef (yyvsp[0].s, &lexer_line); ;}
! break;
!
! case 32:
! #line 227 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = create_pointer (yyvsp[-1].t); ;}
! break;
!
! case 33:
! #line 229 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
new_structure (yyvsp[-3].s, 0, &lexer_line, yyvsp[-1].p, NULL);
yyval.t = find_structure (yyvsp[-3].s, 0);
! ;}
! break;
!
! case 34:
! #line 234 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = find_structure (yyvsp[0].s, 0); ;}
! break;
!
! case 35:
! #line 236 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
new_structure (yyvsp[-3].s, 1, &lexer_line, yyvsp[-1].p, NULL);
yyval.t = find_structure (yyvsp[-3].s, 1);
! ;}
! break;
!
! case 36:
! #line 241 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = find_structure (yyvsp[0].s, 1); ;}
! break;
!
! case 37:
! #line 243 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = create_scalar_type (yyvsp[0].s, strlen (yyvsp[0].s)); ;}
! break;
!
! case 38:
! #line 245 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.t = create_scalar_type (yyvsp[-3].s, strlen (yyvsp[-3].s)); ;}
! break;
!
! case 40:
! #line 250 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { ;}
! break;
!
! case 41:
! #line 252 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { ;}
! break;
!
! case 42:
! #line 254 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { ;}
! break;
!
! case 43:
! #line 257 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.o = NULL; ;}
! break;
!
! case 44:
! #line 258 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.o = yyvsp[0].o; ;}
! break;
!
! case 45:
! #line 262 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.o = yyvsp[-2].o; ;}
! break;
!
! case 46:
! #line 266 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.s = "ptr_alias"; ;}
! break;
!
! case 47:
! #line 268 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.s = yyvsp[0].s; ;}
! break;
!
! case 48:
! #line 272 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
options_p o = xmalloc (sizeof (*o));
o->name = yyvsp[-3].s;
o->info = adjust_field_type (yyvsp[-1].t, NULL);
yyval.o = o;
! ;}
! break;
!
! case 49:
! #line 279 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
options_p o = xmalloc (sizeof (*o));
o->name = yyvsp[-3].s;
o->info = (void *)yyvsp[-1].s;
yyval.o = o;
! ;}
! break;
!
! case 50:
! #line 288 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
yyvsp[0].o->next = NULL;
yyval.o = yyvsp[0].o;
! ;}
! break;
!
! case 51:
! #line 293 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! {
yyvsp[0].o->next = yyvsp[-2].o;
yyval.o = yyvsp[0].o;
! ;}
! break;
!
! case 52:
! #line 299 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.o = NULL; ;}
! break;
!
! case 53:
! #line 300 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! { yyval.o = yyvsp[0].o; ;}
! break;
+ }
+
+ /* Line 991 of yacc.c. */
+ #line 1434 "gengtype-yacc.c"
yyvsp -= yylen;
yyssp -= yylen;
!
! YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
!
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
*************** case 52:
*** 1282,1292 ****
yyn = yyr1[yyn];
! yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
! if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
! yystate = yydefgoto[yyn - YYNTBASE];
goto yynewstate;
--- 1448,1458 ----
yyn = yyr1[yyn];
! yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
! if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
! yystate = yydefgoto[yyn - YYNTOKENS];
goto yynewstate;
*************** yyerrlab:
*** 1299,1311 ****
if (!yyerrstatus)
{
++yynerrs;
!
! #ifdef YYERROR_VERBOSE
yyn = yypact[yystate];
! if (yyn > YYFLAG && yyn < YYLAST)
{
YYSIZE_T yysize = 0;
char *yymsg;
int yyx, yycount;
--- 1465,1477 ----
if (!yyerrstatus)
{
++yynerrs;
! #if YYERROR_VERBOSE
yyn = yypact[yystate];
! if (YYPACT_NINF < yyn && yyn < YYLAST)
{
YYSIZE_T yysize = 0;
+ int yytype = YYTRANSLATE (yychar);
char *yymsg;
int yyx, yycount;
*************** yyerrlab:
*** 1314,1328 ****
YYCHECK. */
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
! if (yycheck[yyx + yyn] == yyx)
yysize += yystrlen (yytname[yyx]) + 15, yycount++;
! yysize += yystrlen ("parse error, unexpected ") + 1;
! yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
! char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
! yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
if (yycount < 5)
{
--- 1480,1494 ----
YYCHECK. */
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
! if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
yysize += yystrlen (yytname[yyx]) + 15, yycount++;
! yysize += yystrlen ("syntax error, unexpected ") + 1;
! yysize += yystrlen (yytname[yytype]);
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
! char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
! yyp = yystpcpy (yyp, yytname[yytype]);
if (yycount < 5)
{
*************** yyerrlab:
*** 1330,1336 ****
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *));
yyx++)
! if (yycheck[yyx + yyn] == yyx)
{
const char *yyq = ! yycount ? ", expecting " : " or ";
yyp = yystpcpy (yyp, yyq);
--- 1496,1502 ----
for (yyx = yyn < 0 ? -yyn : 0;
yyx < (int) (sizeof (yytname) / sizeof (char *));
yyx++)
! if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
const char *yyq = ! yycount ? ", expecting " : " or ";
yyp = yystpcpy (yyp, yyq);
*************** yyerrlab:
*** 1342,1443 ****
YYSTACK_FREE (yymsg);
}
else
! yyerror ("parse error; also virtual memory exhausted");
}
else
! #endif /* defined (YYERROR_VERBOSE) */
! yyerror ("parse error");
}
- goto yyerrlab1;
! /*--------------------------------------------------.
! | yyerrlab1 -- error raised explicitly by an action |
! `--------------------------------------------------*/
! yyerrlab1:
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
error, discard it. */
! /* return failure if at end of input */
if (yychar == YYEOF)
! YYABORT;
! YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
! yychar, yytname[yychar1]));
yychar = YYEMPTY;
}
/* Else will try to reuse lookahead token after shifting the error
token. */
- yyerrstatus = 3; /* Each real token shifted decrements this */
! goto yyerrhandle;
- /*-------------------------------------------------------------------.
- | yyerrdefault -- current state does not do anything special for the |
- | error token. |
- `-------------------------------------------------------------------*/
- yyerrdefault:
- #if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
! /* If its default is to accept any token, ok. Otherwise pop it. */
! yyn = yydefact[yystate];
! if (yyn)
! goto yydefault;
! #endif
/*---------------------------------------------------------------.
! | yyerrpop -- pop the current state because it cannot handle the |
! | error token |
`---------------------------------------------------------------*/
! yyerrpop:
! if (yyssp == yyss)
! YYABORT;
! yyvsp--;
! yystate = *--yyssp;
! #if YYLSP_NEEDED
! yylsp--;
! #endif
! #if YYDEBUG
! if (yydebug)
{
! short *yyssp1 = yyss - 1;
! YYFPRINTF (stderr, "Error: state stack now");
! while (yyssp1 != yyssp)
! YYFPRINTF (stderr, " %d", *++yyssp1);
! YYFPRINTF (stderr, "\n");
! }
! #endif
! /*--------------.
! | yyerrhandle. |
! `--------------*/
! yyerrhandle:
! yyn = yypact[yystate];
! if (yyn == YYFLAG)
! goto yyerrdefault;
! yyn += YYTERROR;
! if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
! goto yyerrdefault;
! yyn = yytable[yyn];
! if (yyn < 0)
! {
! if (yyn == YYFLAG)
! goto yyerrpop;
! yyn = -yyn;
! goto yyreduce;
}
- else if (yyn == 0)
- goto yyerrpop;
if (yyn == YYFINAL)
YYACCEPT;
--- 1508,1600 ----
YYSTACK_FREE (yymsg);
}
else
! yyerror ("syntax error; also virtual memory exhausted");
}
else
! #endif /* YYERROR_VERBOSE */
! yyerror ("syntax error");
}
!
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
error, discard it. */
! /* Return failure if at end of input. */
if (yychar == YYEOF)
! {
! /* Pop the error token. */
! YYPOPSTACK;
! /* Pop the rest of the stack. */
! while (yyss < yyssp)
! {
! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
! yydestruct (yystos[*yyssp], yyvsp);
! YYPOPSTACK;
! }
! YYABORT;
! }
!
! YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
! yydestruct (yytoken, &yylval);
yychar = YYEMPTY;
+
}
/* Else will try to reuse lookahead token after shifting the error
token. */
+ goto yyerrlab2;
! /*----------------------------------------------------.
! | yyerrlab1 -- error raised explicitly by an action. |
! `----------------------------------------------------*/
! yyerrlab1:
+ /* Suppress GCC warning that yyerrlab1 is unused when no action
+ invokes YYERROR. */
+ #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \
+ && !defined __cplusplus
+ __attribute__ ((__unused__))
+ #endif
! goto yyerrlab2;
/*---------------------------------------------------------------.
! | yyerrlab2 -- pop states until the error token can be shifted. |
`---------------------------------------------------------------*/
! yyerrlab2:
! yyerrstatus = 3; /* Each real token shifted decrements this. */
! for (;;)
{
! yyn = yypact[yystate];
! if (yyn != YYPACT_NINF)
! {
! yyn += YYTERROR;
! if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
! {
! yyn = yytable[yyn];
! if (0 < yyn)
! break;
! }
! }
! /* Pop the current state because it cannot handle the error token. */
! if (yyssp == yyss)
! YYABORT;
! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
! yydestruct (yystos[yystate], yyvsp);
! yyvsp--;
! yystate = *--yyssp;
! YY_STACK_PRINT (yyss, yyssp);
}
if (yyn == YYFINAL)
YYACCEPT;
*************** yyerrhandle:
*** 1445,1453 ****
YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval;
! #if YYLSP_NEEDED
! *++yylsp = yylloc;
! #endif
yystate = yyn;
goto yynewstate;
--- 1602,1608 ----
YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval;
!
yystate = yyn;
goto yynewstate;
*************** yyabortlab:
*** 1467,1479 ****
yyresult = 1;
goto yyreturn;
! /*---------------------------------------------.
! | yyoverflowab -- parser overflow comes here. |
! `---------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
yyresult = 2;
/* Fall through. */
yyreturn:
#ifndef yyoverflow
--- 1622,1636 ----
yyresult = 1;
goto yyreturn;
! #ifndef yyoverflow
! /*----------------------------------------------.
! | yyoverflowlab -- parser overflow comes here. |
! `----------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
yyresult = 2;
/* Fall through. */
+ #endif
yyreturn:
#ifndef yyoverflow
*************** yyreturn:
*** 1482,1486 ****
#endif
return yyresult;
}
! #line 302 "/scratch/mitchell/gcc-releases/gcc-3.4.4/gcc-3.4.4/gcc/gengtype-yacc.y"
--- 1639,1646 ----
#endif
return yyresult;
}
!
!
! #line 302 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
!
diff -Nrcpad gcc-3.4.4/gcc/gengtype-yacc.h gcc-3.4.5/gcc/gengtype-yacc.h
*** gcc-3.4.4/gcc/gengtype-yacc.h 2005-05-19 09:59:14.000000000 +0000
--- gcc-3.4.5/gcc/gengtype-yacc.h 2005-12-01 03:50:48.000000000 +0000
***************
*** 1,36 ****
! #ifndef BISON_GENGTYPE_YACC_H
! # define BISON_GENGTYPE_YACC_H
! #ifndef YYSTYPE
! typedef union {
type_p t;
pair_p p;
options_p o;
const char *s;
! } yystype;
! # define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
- # define ENT_TYPEDEF_STRUCT 257
- # define ENT_STRUCT 258
- # define ENT_EXTERNSTATIC 259
- # define ENT_YACCUNION 260
- # define GTY_TOKEN 261
- # define UNION 262
- # define STRUCT 263
- # define ENUM 264
- # define ALIAS 265
- # define PARAM_IS 266
- # define NUM 267
- # define PERCENTPERCENT 268
- # define SCALAR 269
- # define ID 270
- # define STRING 271
- # define ARRAY 272
- # define PERCENT_ID 273
- # define CHAR 274
-
extern YYSTYPE yylval;
! #endif /* not BISON_GENGTYPE_YACC_H */
--- 1,92 ----
! /* A Bison parser, made by GNU Bison 1.875. */
! /* Skeleton parser for Yacc-like parsing with Bison,
! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2, or (at your option)
! any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 59 Temple Place - Suite 330,
! Boston, MA 02111-1307, USA. */
!
! /* As a special exception, when this file is copied by Bison into a
! Bison output file, you may use that output file without restriction.
! This special exception was added by the Free Software Foundation
! in version 1.24 of Bison. */
!
! /* Tokens. */
! #ifndef YYTOKENTYPE
! # define YYTOKENTYPE
! /* Put the tokens into the symbol table, so that GDB and other debuggers
! know about them. */
! enum yytokentype {
! ENT_TYPEDEF_STRUCT = 258,
! ENT_STRUCT = 259,
! ENT_EXTERNSTATIC = 260,
! ENT_YACCUNION = 261,
! GTY_TOKEN = 262,
! UNION = 263,
! STRUCT = 264,
! ENUM = 265,
! ALIAS = 266,
! PARAM_IS = 267,
! NUM = 268,
! PERCENTPERCENT = 269,
! SCALAR = 270,
! ID = 271,
! STRING = 272,
! ARRAY = 273,
! PERCENT_ID = 274,
! CHAR = 275
! };
! #endif
! #define ENT_TYPEDEF_STRUCT 258
! #define ENT_STRUCT 259
! #define ENT_EXTERNSTATIC 260
! #define ENT_YACCUNION 261
! #define GTY_TOKEN 262
! #define UNION 263
! #define STRUCT 264
! #define ENUM 265
! #define ALIAS 266
! #define PARAM_IS 267
! #define NUM 268
! #define PERCENTPERCENT 269
! #define SCALAR 270
! #define ID 271
! #define STRING 272
! #define ARRAY 273
! #define PERCENT_ID 274
! #define CHAR 275
!
!
!
!
! #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
! #line 31 "/home/gdr/build/gcc-3.4.5/gcc-3.4.5/gcc/gengtype-yacc.y"
! typedef union YYSTYPE {
type_p t;
pair_p p;
options_p o;
const char *s;
! } YYSTYPE;
! /* Line 1249 of yacc.c. */
! #line 83 "gengtype-yacc.h"
! # define yystype YYSTYPE /* obsolescent; will be withdrawn */
! # define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
extern YYSTYPE yylval;
!
!
diff -Nrcpad gcc-3.4.4/gcc/ggc-common.c gcc-3.4.5/gcc/ggc-common.c
*** gcc-3.4.4/gcc/ggc-common.c 2003-10-29 22:13:59.000000000 +0000
--- gcc-3.4.5/gcc/ggc-common.c 2005-08-02 19:03:45.000000000 +0000
*************** Software Foundation, 59 Temple Place - S
*** 30,35 ****
--- 30,36 ----
#include "toplev.h"
#include "params.h"
#include "hosthooks.h"
+ #include "hosthooks-def.h"
#ifdef HAVE_SYS_RESOURCE_H
# include
*************** gt_pch_save (FILE *f)
*** 458,478 ****
and on the rest it's a lot of work to do better.
(The extra work goes in HOST_HOOKS_GT_PCH_GET_ADDRESS and
HOST_HOOKS_GT_PCH_USE_ADDRESS.) */
! mmi.preferred_base = host_hooks.gt_pch_get_address (mmi.size);
- #if HAVE_MMAP_FILE
- if (mmi.preferred_base == NULL)
- {
- mmi.preferred_base = mmap (NULL, mmi.size,
- PROT_READ | PROT_WRITE, MAP_PRIVATE,
- fileno (state.f), 0);
- if (mmi.preferred_base == (void *) MAP_FAILED)
- mmi.preferred_base = NULL;
- else
- munmap (mmi.preferred_base, mmi.size);
- }
- #endif /* HAVE_MMAP_FILE */
-
ggc_pch_this_base (state.d, mmi.preferred_base);
state.ptrs = xmalloc (state.count * sizeof (*state.ptrs));
--- 459,466 ----
and on the rest it's a lot of work to do better.
(The extra work goes in HOST_HOOKS_GT_PCH_GET_ADDRESS and
HOST_HOOKS_GT_PCH_USE_ADDRESS.) */
! mmi.preferred_base = host_hooks.gt_pch_get_address (mmi.size, fileno (f));
ggc_pch_this_base (state.d, mmi.preferred_base);
state.ptrs = xmalloc (state.count * sizeof (*state.ptrs));
*************** gt_pch_save (FILE *f)
*** 526,532 ****
state.ptrs[i]->note_ptr_cookie,
relocate_ptrs, &state);
ggc_pch_write_object (state.d, state.f, state.ptrs[i]->obj,
! state.ptrs[i]->new_addr, state.ptrs[i]->size, state.ptrs[i]->note_ptr_fn == gt_pch_p_S);
if (state.ptrs[i]->note_ptr_fn != gt_pch_p_S)
memcpy (state.ptrs[i]->obj, this_object, state.ptrs[i]->size);
}
--- 514,521 ----
state.ptrs[i]->note_ptr_cookie,
relocate_ptrs, &state);
ggc_pch_write_object (state.d, state.f, state.ptrs[i]->obj,
! state.ptrs[i]->new_addr, state.ptrs[i]->size,
! state.ptrs[i]->note_ptr_fn == gt_pch_p_S);
if (state.ptrs[i]->note_ptr_fn != gt_pch_p_S)
memcpy (state.ptrs[i]->obj, this_object, state.ptrs[i]->size);
}
*************** gt_pch_restore (FILE *f)
*** 546,553 ****
const struct ggc_root_tab *rti;
size_t i;
struct mmap_info mmi;
! void *addr;
! bool needs_read;
/* Delete any deletable objects. This makes ggc_pch_read much
faster, as it can be sure that no GCable objects remain other
--- 535,541 ----
const struct ggc_root_tab *rti;
size_t i;
struct mmap_info mmi;
! int result;
/* Delete any deletable objects. This makes ggc_pch_read much
faster, as it can be sure that no GCable objects remain other
*************** gt_pch_restore (FILE *f)
*** 580,689 ****
if (fread (&mmi, sizeof (mmi), 1, f) != 1)
fatal_error ("can't read PCH file: %m");
! if (host_hooks.gt_pch_use_address (mmi.preferred_base, mmi.size))
! {
! #if HAVE_MMAP_FILE
! void *mmap_result;
!
! mmap_result = mmap (mmi.preferred_base, mmi.size,
! PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
! fileno (f), mmi.offset);
!
! /* The file might not be mmap-able. */
! needs_read = mmap_result == (void *) MAP_FAILED;
!
! /* Sanity check for broken MAP_FIXED. */
! if (! needs_read && mmap_result != mmi.preferred_base)
! abort ();
! #else
! needs_read = true;
! #endif
! addr = mmi.preferred_base;
! }
! else
! {
! #if HAVE_MMAP_FILE
! addr = mmap (mmi.preferred_base, mmi.size,
! PROT_READ | PROT_WRITE, MAP_PRIVATE,
! fileno (f), mmi.offset);
!
! #if HAVE_MINCORE
! if (addr != mmi.preferred_base)
! {
! size_t page_size = getpagesize();
! char one_byte;
!
! if (addr != (void *) MAP_FAILED)
! munmap (addr, mmi.size);
!
! /* We really want to be mapped at mmi.preferred_base
! so we're going to resort to MAP_FIXED. But before,
! make sure that we can do so without destroying a
! previously mapped area, by looping over all pages
! that would be affected by the fixed mapping. */
! errno = 0;
!
! for (i = 0; i < mmi.size; i+= page_size)
! if (mincore ((char *)mmi.preferred_base + i, page_size,
! (void *)&one_byte) == -1
! && errno == ENOMEM)
! continue; /* The page is not mapped. */
! else
! break;
!
! if (i >= mmi.size)
! addr = mmap (mmi.preferred_base, mmi.size,
! PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
! fileno (f), mmi.offset);
! }
! #endif /* HAVE_MINCORE */
!
! needs_read = addr == (void *) MAP_FAILED;
!
! #else /* HAVE_MMAP_FILE */
! needs_read = true;
! #endif /* HAVE_MMAP_FILE */
! if (needs_read)
! addr = xmalloc (mmi.size);
! }
!
! if (needs_read)
{
if (fseek (f, mmi.offset, SEEK_SET) != 0
! || fread (&mmi, mmi.size, 1, f) != 1)
fatal_error ("can't read PCH file: %m");
}
else if (fseek (f, mmi.offset + mmi.size, SEEK_SET) != 0)
fatal_error ("can't read PCH file: %m");
! ggc_pch_read (f, addr);
! if (addr != mmi.preferred_base)
! {
! for (rt = gt_ggc_rtab; *rt; rt++)
! for (rti = *rt; rti->base != NULL; rti++)
! for (i = 0; i < rti->nelt; i++)
! {
! char **ptr = (char **)((char *)rti->base + rti->stride * i);
! if (*ptr != NULL)
! *ptr += (size_t)addr - (size_t)mmi.preferred_base;
! }
! for (rt = gt_pch_cache_rtab; *rt; rt++)
! for (rti = *rt; rti->base != NULL; rti++)
! for (i = 0; i < rti->nelt; i++)
! {
! char **ptr = (char **)((char *)rti->base + rti->stride * i);
! if (*ptr != NULL)
! *ptr += (size_t)addr - (size_t)mmi.preferred_base;
! }
! sorry ("had to relocate PCH");
! }
! gt_pch_restore_stringpool ();
}
/* Modify the bound based on rlimits. Keep the smallest number found. */
static double
ggc_rlimit_bound (double limit)
--- 568,662 ----
if (fread (&mmi, sizeof (mmi), 1, f) != 1)
fatal_error ("can't read PCH file: %m");
! result = host_hooks.gt_pch_use_address (mmi.preferred_base, mmi.size,
! fileno (f), mmi.offset);
! if (result < 0)
! fatal_error ("had to relocate PCH");
! if (result == 0)
{
if (fseek (f, mmi.offset, SEEK_SET) != 0
! || fread (mmi.preferred_base, mmi.size, 1, f) != 1)
fatal_error ("can't read PCH file: %m");
}
else if (fseek (f, mmi.offset + mmi.size, SEEK_SET) != 0)
fatal_error ("can't read PCH file: %m");
! ggc_pch_read (f, mmi.preferred_base);
! gt_pch_restore_stringpool ();
! }
! /* Default version of HOST_HOOKS_GT_PCH_GET_ADDRESS when mmap is not present.
! Select no address whatsoever, and let gt_pch_save choose what it will with
! malloc, presumably. */
! void *
! default_gt_pch_get_address (size_t size ATTRIBUTE_UNUSED,
! int fd ATTRIBUTE_UNUSED)
! {
! return NULL;
! }
! /* Default version of HOST_HOOKS_GT_PCH_USE_ADDRESS when mmap is not present.
! Allocate SIZE bytes with malloc. Return 0 if the address we got is the
! same as base, indicating that the memory has been allocated but needs to
! be read in from the file. Return -1 if the address differs, to relocation
! of the PCH file would be required. */
!
! int
! default_gt_pch_use_address (void *base, size_t size, int fd ATTRIBUTE_UNUSED,
! size_t offset ATTRIBUTE_UNUSED)
! {
! void *addr = xmalloc (size);
! return (addr == base) - 1;
! }
!
! #if HAVE_MMAP_FILE
! /* Default version of HOST_HOOKS_GT_PCH_GET_ADDRESS when mmap is present.
! We temporarily allocate SIZE bytes, and let the kernel place the data
! whereever it will. If it worked, that's our spot, if not we're likely
! to be in trouble. */
!
! void *
! mmap_gt_pch_get_address (size_t size, int fd)
! {
! void *ret;
!
! ret = mmap (NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
! if (ret == (void *) MAP_FAILED)
! ret = NULL;
! else
! munmap (ret, size);
!
! return ret;
}
+ /* Default version of HOST_HOOKS_GT_PCH_USE_ADDRESS when mmap is present.
+ Map SIZE bytes of FD+OFFSET at BASE. Return 1 if we succeeded at
+ mapping the data at BASE, -1 if we couldn't.
+
+ This version assumes that the kernel honors the START operand of mmap
+ even without MAP_FIXED if START through START+SIZE are not currently
+ mapped with something. */
+
+ int
+ mmap_gt_pch_use_address (void *base, size_t size, int fd, size_t offset)
+ {
+ void *addr;
+
+ /* We're called with size == 0 if we're not planning to load a PCH
+ file at all. This allows the hook to free any static space that
+ we might have allocated at link time. */
+ if (size == 0)
+ return -1;
+
+ addr = mmap (base, size, PROT_READ | PROT_WRITE, MAP_PRIVATE,
+ fd, offset);
+
+ return addr == base ? 1 : -1;
+ }
+ #endif /* HAVE_MMAP_FILE */
+
/* Modify the bound based on rlimits. Keep the smallest number found. */
static double
ggc_rlimit_bound (double limit)
diff -Nrcpad gcc-3.4.4/gcc/global.c gcc-3.4.5/gcc/global.c
*** gcc-3.4.4/gcc/global.c 2003-12-20 02:39:43.000000000 +0000
--- gcc-3.4.5/gcc/global.c 2005-09-01 20:51:09.000000000 +0000
*************** struct allocno
*** 96,101 ****
--- 96,104 ----
/* Number of calls crossed by each allocno. */
int calls_crossed;
+ /* Number of calls that might throw crossed by each allocno. */
+ int throwing_calls_crossed;
+
/* Number of refs to each allocno. */
int n_refs;
*************** global_alloc (FILE *file)
*** 469,474 ****
--- 472,479 ----
allocno[num].reg = i;
allocno[num].size = PSEUDO_REGNO_SIZE (i);
allocno[num].calls_crossed += REG_N_CALLS_CROSSED (i);
+ allocno[num].throwing_calls_crossed
+ += REG_N_THROWING_CALLS_CROSSED (i);
allocno[num].n_refs += REG_N_REFS (i);
allocno[num].freq += REG_FREQ (i);
if (allocno[num].live_length < REG_LIVE_LENGTH (i))
*************** find_reg (int num, HARD_REG_SET losers,
*** 1187,1195 ****
{
/* Did not find a register. If it would be profitable to
allocate a call-clobbered register and save and restore it
! around calls, do that. */
if (! accept_call_clobbered
&& allocno[num].calls_crossed != 0
&& CALLER_SAVE_PROFITABLE (allocno[num].n_refs,
allocno[num].calls_crossed))
{
--- 1192,1202 ----
{
/* Did not find a register. If it would be profitable to
allocate a call-clobbered register and save and restore it
! around calls, do that. Don't do this if it crosses any calls
! that might throw. */
if (! accept_call_clobbered
&& allocno[num].calls_crossed != 0
+ && allocno[num].throwing_calls_crossed == 0
&& CALLER_SAVE_PROFITABLE (allocno[num].n_refs,
allocno[num].calls_crossed))
{
diff -Nrcpad gcc-3.4.4/gcc/hooks.c gcc-3.4.5/gcc/hooks.c
*** gcc-3.4.4/gcc/hooks.c 2004-08-23 18:02:40.000000000 +0000
--- gcc-3.4.5/gcc/hooks.c 2005-08-02 19:03:45.000000000 +0000
*************** hook_rtx_tree_int_null (tree a ATTRIBUTE
*** 213,233 ****
return NULL;
}
- /* Generic hook that takes a size_t and returns NULL. */
- void *
- hook_voidp_size_t_null (size_t a ATTRIBUTE_UNUSED)
- {
- return NULL;
- }
-
- /* Generic hook that takes a size_t and a pointer and returns false. */
- bool
- hook_bool_voidp_size_t_false (void * a ATTRIBUTE_UNUSED,
- size_t b ATTRIBUTE_UNUSED)
- {
- return false;
- }
-
/* Generic hook that takes a tree and returns a NULL string. */
const char *
hook_constcharptr_tree_null (tree t ATTRIBUTE_UNUSED)
--- 213,218 ----
diff -Nrcpad gcc-3.4.4/gcc/hooks.h gcc-3.4.5/gcc/hooks.h
*** gcc-3.4.4/gcc/hooks.h 2004-08-23 18:02:40.000000000 +0000
--- gcc-3.4.5/gcc/hooks.h 2005-08-02 19:03:45.000000000 +0000
*************** extern bool hook_bool_tree_tree_false (t
*** 58,64 ****
extern rtx hook_rtx_rtx_identity (rtx);
extern rtx hook_rtx_rtx_null (rtx);
extern rtx hook_rtx_tree_int_null (tree, int);
- extern void * hook_voidp_size_t_null (size_t);
- extern bool hook_bool_voidp_size_t_false (void *, size_t);
extern const char *hook_constcharptr_tree_null (tree);
#endif
--- 58,62 ----
diff -Nrcpad gcc-3.4.4/gcc/hosthooks-def.h gcc-3.4.5/gcc/hosthooks-def.h
*** gcc-3.4.4/gcc/hosthooks-def.h 2003-07-29 23:36:46.000000000 +0000
--- gcc-3.4.5/gcc/hosthooks-def.h 2005-08-02 19:03:45.000000000 +0000
*************** Boston, MA 02111-1307, USA. */
*** 24,31 ****
#include "hooks.h"
#define HOST_HOOKS_EXTRA_SIGNALS hook_void_void
! #define HOST_HOOKS_GT_PCH_GET_ADDRESS hook_voidp_size_t_null
! #define HOST_HOOKS_GT_PCH_USE_ADDRESS hook_bool_voidp_size_t_false
/* The structure is defined in hosthooks.h. */
#define HOST_HOOKS_INITIALIZER { \
--- 24,41 ----
#include "hooks.h"
#define HOST_HOOKS_EXTRA_SIGNALS hook_void_void
! #if HAVE_MMAP_FILE
! #define HOST_HOOKS_GT_PCH_GET_ADDRESS mmap_gt_pch_get_address
! #define HOST_HOOKS_GT_PCH_USE_ADDRESS mmap_gt_pch_use_address
! #else
! #define HOST_HOOKS_GT_PCH_GET_ADDRESS default_gt_pch_get_address
! #define HOST_HOOKS_GT_PCH_USE_ADDRESS default_gt_pch_use_address
! #endif
!
! extern void* default_gt_pch_get_address (size_t, int);
! extern int default_gt_pch_use_address (void *, size_t, int, size_t);
! extern void* mmap_gt_pch_get_address (size_t, int);
! extern int mmap_gt_pch_use_address (void *, size_t, int, size_t);
/* The structure is defined in hosthooks.h. */
#define HOST_HOOKS_INITIALIZER { \
diff -Nrcpad gcc-3.4.4/gcc/hosthooks.h gcc-3.4.5/gcc/hosthooks.h
*** gcc-3.4.4/gcc/hosthooks.h 2003-07-29 23:36:46.000000000 +0000
--- gcc-3.4.5/gcc/hosthooks.h 2005-08-02 19:03:45.000000000 +0000
*************** struct host_hooks
*** 25,32 ****
{
void (*extra_signals) (void);
! void * (*gt_pch_get_address) (size_t);
! bool (*gt_pch_use_address) (void *, size_t);
/* Whenever you add entries here, make sure you adjust hosthooks-def.h. */
};
--- 25,40 ----
{
void (*extra_signals) (void);
! /* Identify an address that's likely to be free in a subsequent invocation
! of the compiler. The area should be able to hold SIZE bytes. FD is an
! open file descriptor if the host would like to probe with mmap. */
! void * (*gt_pch_get_address) (size_t size, int fd);
!
! /* ADDR is an address returned by gt_pch_get_address. Attempt to allocate
! SIZE bytes at the same address and load it with the data from FD at
! OFFSET. Return -1 if we couldn't allocate memory at ADDR, return 0
! if the memory is allocated but the data not loaded, return 1 if done. */
! int (*gt_pch_use_address) (void *addr, size_t size, int fd, size_t offset);
/* Whenever you add entries here, make sure you adjust hosthooks-def.h. */
};
diff -Nrcpad gcc-3.4.4/gcc/local-alloc.c gcc-3.4.5/gcc/local-alloc.c
*** gcc-3.4.4/gcc/local-alloc.c 2004-01-23 23:36:01.000000000 +0000
--- gcc-3.4.5/gcc/local-alloc.c 2005-09-01 20:51:09.000000000 +0000
*************** struct qty
*** 120,125 ****
--- 120,130 ----
int n_calls_crossed;
+ /* Number of times a reg tied to given qty lives across a CALL_INSN
+ that might throw. */
+
+ int n_throwing_calls_crossed;
+
/* The register number of one pseudo register whose reg_qty value is Q.
This register should be the head of the chain
maintained in reg_next_in_qty. */
*************** alloc_qty (int regno, enum machine_mode
*** 317,322 ****
--- 322,328 ----
qty[qtyno].mode = mode;
qty[qtyno].birth = birth;
qty[qtyno].n_calls_crossed = REG_N_CALLS_CROSSED (regno);
+ qty[qtyno].n_throwing_calls_crossed = REG_N_THROWING_CALLS_CROSSED (regno);
qty[qtyno].min_class = reg_preferred_class (regno);
qty[qtyno].alternate_class = reg_alternate_class (regno);
qty[qtyno].n_refs = REG_N_REFS (regno);
*************** update_equiv_regs (void)
*** 1119,1124 ****
--- 1125,1131 ----
REG_BASIC_BLOCK (regno) = bb->index;
REG_N_CALLS_CROSSED (regno) = 0;
+ REG_N_THROWING_CALLS_CROSSED (regno) = 0;
REG_LIVE_LENGTH (regno) = 2;
if (insn == BB_HEAD (bb))
*************** combine_regs (rtx usedreg, rtx setreg, i
*** 1946,1951 ****
--- 1953,1960 ----
/* Update info about quantity SQTY. */
qty[sqty].n_calls_crossed += REG_N_CALLS_CROSSED (sreg);
+ qty[sqty].n_throwing_calls_crossed
+ += REG_N_THROWING_CALLS_CROSSED (sreg);
qty[sqty].n_refs += REG_N_REFS (sreg);
qty[sqty].freq += REG_FREQ (sreg);
if (usize < ssize)
*************** find_free_reg (enum reg_class class, enu
*** 2251,2262 ****
/* We need not check to see if the current function has nonlocal
labels because we don't put any pseudos that are live over calls in
! registers in that case. */
if (! accept_call_clobbered
&& flag_caller_saves
&& ! just_try_suggested
&& qty[qtyno].n_calls_crossed != 0
&& CALLER_SAVE_PROFITABLE (qty[qtyno].n_refs,
qty[qtyno].n_calls_crossed))
{
--- 2260,2273 ----
/* We need not check to see if the current function has nonlocal
labels because we don't put any pseudos that are live over calls in
! registers in that case. Avoid putting pseudos crossing calls that
! might throw into call used registers. */
if (! accept_call_clobbered
&& flag_caller_saves
&& ! just_try_suggested
&& qty[qtyno].n_calls_crossed != 0
+ && qty[qtyno].n_throwing_calls_crossed == 0
&& CALLER_SAVE_PROFITABLE (qty[qtyno].n_refs,
qty[qtyno].n_calls_crossed))
{
diff -Nrcpad gcc-3.4.4/gcc/loop.c gcc-3.4.5/gcc/loop.c
*** gcc-3.4.4/gcc/loop.c 2005-01-06 19:12:03.000000000 +0000
--- gcc-3.4.5/gcc/loop.c 2005-08-09 08:22:53.000000000 +0000
*************** check_dbra_loop (struct loop *loop, int
*** 8396,8412 ****
/* First check if we can do a vanilla loop reversal. */
if (initial_value == const0_rtx
- /* If we have a decrement_and_branch_on_count,
- prefer the NE test, since this will allow that
- instruction to be generated. Note that we must
- use a vanilla loop reversal if the biv is used to
- calculate a giv or has a non-counting use. */
- #if ! defined (HAVE_decrement_and_branch_until_zero) \
- && defined (HAVE_decrement_and_branch_on_count)
- && (! (add_val == 1 && loop->vtop
- && (bl->biv_count == 0
- || no_use_except_counting)))
- #endif
&& GET_CODE (comparison_value) == CONST_INT
/* Now do postponed overflow checks on COMPARISON_VAL. */
&& ! (((comparison_val - add_val) ^ INTVAL (comparison_value))
--- 8396,8401 ----
*************** check_dbra_loop (struct loop *loop, int
*** 8418,8430 ****
nonneg = 1;
cmp_code = GE;
}
- else if (add_val == 1 && loop->vtop
- && (bl->biv_count == 0
- || no_use_except_counting))
- {
- add_adjust = 0;
- cmp_code = NE;
- }
else
return 0;
--- 8407,8412 ----
diff -Nrcpad gcc-3.4.4/gcc/mklibgcc.in gcc-3.4.5/gcc/mklibgcc.in
*** gcc-3.4.4/gcc/mklibgcc.in 2005-02-24 09:26:57.000000000 +0000
--- gcc-3.4.5/gcc/mklibgcc.in 2005-11-16 17:06:52.000000000 +0000
*************** for file in $LIB2ADDEH; do
*** 246,251 ****
--- 246,254 ----
fi
done
+ # Flag whether we need eh_dummy.c
+ need_eh_dummy=
+
if [ "$SHLIB_LINK" ]; then
# Those should be in libgcc_eh.a.
for file in $LIB2ADDEHSTATIC; do
*************** if [ "$SHLIB_LINK" ]; then
*** 260,265 ****
--- 263,285 ----
oname=`echo $name | sed -e 's,.*/,,'`
libgcc2_eh_shared_objs="$libgcc2_eh_shared_objs ${oname}${objext}"
done
+
+ # If nothing went into libgcc_eh.a, create a dummy object -
+ # some linkers don't like totally empty archives.
+ if [ -z "$LIB2ADDEHSTATIC" ]; then
+ file=eh_dummy.c
+ libgcc2_eh_static_objs="$libgcc2_eh_static_objs eh_dummy${objext}"
+ need_eh_dummy=1
+
+ for ml in $MULTILIBS; do
+ dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
+ flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
+ out="libgcc/${dir}/eh_dummy${objext}"
+
+ echo $out: stmp-dirs $file
+ echo " $gcc_compile" $flags -fexceptions -c $file -o $out
+ done
+ fi
fi
for file in $LIB2ADD_ST; do
*************** done
*** 649,654 ****
--- 669,679 ----
echo ""
echo "all: $all"
+ if [ "$need_eh_dummy" ]; then
+ echo "eh_dummy.c:"
+ echo " echo 'int __libgcc_eh_dummy;' > \$@"
+ fi
+
echo ""
echo "install: $all"
for ml in $MULTILIBS; do
diff -Nrcpad gcc-3.4.4/gcc/po/ChangeLog gcc-3.4.5/gcc/po/ChangeLog
*** gcc-3.4.4/gcc/po/ChangeLog 2005-05-19 07:48:49.000000000 +0000
--- gcc-3.4.5/gcc/po/ChangeLog 2005-12-01 02:38:40.000000000 +0000
***************
*** 1,3 ****
--- 1,12 ----
+ 2005-11-30 Release Manager
+
+ * GCC 3.4.5 released.
+
+ 2005-08-15 Matthias Klose
+
+ * gcc-3.4.3.rw.po: Remove.
+ * rw.po: Add.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff -Nrcpad gcc-3.4.4/gcc/po/gcc-3.4.3.rw.gmo gcc-3.4.5/gcc/po/gcc-3.4.3.rw.gmo
*** gcc-3.4.4/gcc/po/gcc-3.4.3.rw.gmo 2005-05-19 09:59:11.000000000 +0000
--- gcc-3.4.5/gcc/po/gcc-3.4.3.rw.gmo 1970-01-01 00:00:00.000000000 +0000
***************
*** 1,10 ****
- Þ• T Œ ¸ ¹ Æ Ó à
ô } ¡ µ É â ô '(' expected ')' expected '{' expected Identifier expected out of memory syntax error Project-Id-Version: gcc 3.4.3
- Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html
- POT-Creation-Date: 2004-11-04 19:12-0800
- PO-Revision-Date: 2005-04-04 10:55-0700
- Last-Translator: Steven Michael Murphy
- Language-Team: Kinyarwanda
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- '(' ntigatunguranye ')' ntigatunguranye '{' ntigatunguranye Ikiranga ntigitunguranye Ububiko bwarenzwe Ikosa mu myandikire
\ No newline at end of file
--- 0 ----
diff -Nrcpad gcc-3.4.4/gcc/po/gcc-3.4.3.rw.po gcc-3.4.5/gcc/po/gcc-3.4.3.rw.po
*** gcc-3.4.4/gcc/po/gcc-3.4.3.rw.po 2005-05-19 07:21:02.000000000 +0000
--- gcc-3.4.5/gcc/po/gcc-3.4.3.rw.po 1970-01-01 00:00:00.000000000 +0000
***************
*** 1,24267 ****
- # Kinyarwanda translations for gcc package.
- # Copyright (C) 2005 Free Software Foundation, Inc.
- # This file is distributed under the same license as the gcc package.
- # Steve Murphy , 2005.
- # Steve performed initial rough translation from compendium built from translations provided by the following translators:
- # Philibert Ndandali , 2005.
- # Viateur MUGENZI , 2005.
- # Noëlla Mupole , 2005.
- # Carole Karema , 2005.
- # JEAN BAPTISTE NGENDAHAYO , 2005.
- # Augustin KIBERWA , 2005.
- # Donatien NSENGIYUMVA , 2005.
- # Antoine Bigirimana , 2005.
- #
- msgid ""
- msgstr ""
- "Project-Id-Version: gcc 3.4.3\n"
- "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
- "POT-Creation-Date: 2004-11-04 19:12-0800\n"
- "PO-Revision-Date: 2005-04-04 10:55-0700\n"
- "Last-Translator: Steven Michael Murphy \n"
- "Language-Team: Kinyarwanda \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: attribs.c:178
- #, fuzzy, c-format
- msgid "`%s' attribute directive ignored"
- msgstr "`%s'Ikiranga"
-
- #: attribs.c:186
- #, fuzzy, c-format
- msgid "wrong number of arguments specified for `%s' attribute"
- msgstr "Umubare Bya ingingo kugirango Ikiranga"
-
- #: attribs.c:203
- #, fuzzy, c-format
- msgid "`%s' attribute does not apply to types"
- msgstr "`%s'Ikiranga OYA Gukurikiza Kuri"
-
- #: attribs.c:249
- #, fuzzy, c-format
- msgid "`%s' attribute only applies to function types"
- msgstr "`%s'Ikiranga Kuri Umumaro"
-
- #: attribs.c:416 c-common.c:4306 c-common.c:4325 c-common.c:4343
- #: c-common.c:4370 c-common.c:4389 c-common.c:4412 c-common.c:4435
- #: c-common.c:4461 c-common.c:4495 c-common.c:4539 c-common.c:4567
- #: c-common.c:4595 c-common.c:4614 c-common.c:4881 c-common.c:4903
- #: c-common.c:4938 c-common.c:5005 c-common.c:5051 c-common.c:5109
- #: c-common.c:5140 c-common.c:5440 c-common.c:5463 c-common.c:5502
- #: config/arm/arm.c:2281 config/arm/arm.c:2308 config/avr/avr.c:4504
- #: config/h8300/h8300.c:4284 config/h8300/h8300.c:4307 config/i386/i386.c:1626
- #: config/i386/i386.c:15398 config/i386/winnt.c:86 config/ia64/ia64.c:1057
- #: config/ip2k/ip2k.c:3151 config/rs6000/rs6000.c:15035
- #, fuzzy, c-format
- msgid "`%s' attribute ignored"
- msgstr "`%s'Ikiranga"
-
- #: builtins.c:318
- #, fuzzy
- msgid "offset outside bounds of constant string"
- msgstr "Nta- boneza Hanze Bya Ikurikiranyanyuguti"
-
- #: builtins.c:786
- #, fuzzy
- msgid "second arg to `__builtin_prefetch' must be a constant"
- msgstr "ISEGONDA Kuri a"
-
- #: builtins.c:793
- #, fuzzy
- msgid "invalid second arg to __builtin_prefetch; using zero"
- msgstr "Sibyo ISEGONDA Kuri ikoresha Zeru"
-
- #: builtins.c:800
- #, fuzzy
- msgid "third arg to `__builtin_prefetch' must be a constant"
- msgstr "Kuri a"
-
- #: builtins.c:807
- #, fuzzy
- msgid "invalid third arg to __builtin_prefetch; using zero"
- msgstr "Sibyo Kuri ikoresha Zeru"
-
- #: builtins.c:3828
- #, fuzzy
- msgid "argument of `__builtin_args_info' must be constant"
- msgstr "Bya"
-
- #: builtins.c:3834
- #, fuzzy
- msgid "argument of `__builtin_args_info' out of range"
- msgstr "Bya Inyuma Bya Urutonde"
-
- #: builtins.c:3840
- #, fuzzy
- msgid "missing argument in `__builtin_args_info'"
- msgstr "Ibuze in"
-
- #: builtins.c:3856
- #, fuzzy
- msgid "`va_start' used in function with fixed args"
- msgstr "`in Umumaro Na: BIHAMYE"
-
- #: builtins.c:3875
- #, fuzzy
- msgid "second parameter of `va_start' not last named argument"
- msgstr "ISEGONDA Bya OYA Iheruka"
-
- #. Evidently an out of date version of ; can't validate
- #. va_start's second argument, but can still work as intended.
- #: builtins.c:3880
- msgid "`__builtin_next_arg' called without an argument"
- msgstr ""
-
- #: builtins.c:3969
- #, fuzzy
- msgid "too many arguments to function `va_start'"
- msgstr "ingingo Kuri Umumaro"
-
- #: builtins.c:4091
- #, fuzzy
- msgid "first argument to `va_arg' not of type `va_list'"
- msgstr "Itangira Kuri OYA Bya Ubwoko"
-
- #. Unfortunately, this is merely undefined, rather than a constraint
- #. violation, so we cannot make this an error. If this call is never
- #. executed, the program is still strictly conforming.
- #: builtins.c:4123
- #, fuzzy, c-format
- msgid "`%s' is promoted to `%s' when passed through `...'"
- msgstr "`%s'ni Kuri Ryari: Gihinguranya"
-
- #: builtins.c:4128
- #, fuzzy, c-format
- msgid "(so you should pass `%s' not `%s' to `va_arg')"
- msgstr "(OYA Kuri"
-
- #. We can, however, treat "undefined" any way we please.
- #. Call abort to encourage the user to fix the program.
- #: builtins.c:4134 c-typeck.c:1713
- #, fuzzy
- msgid "if this code is reached, the program will abort"
- msgstr "NIBA iyi ITEGEKONGENGA ni i Porogaramu Kureka"
-
- #: builtins.c:4241
- #, fuzzy
- msgid "invalid arg to `__builtin_frame_address'"
- msgstr "Sibyo Kuri"
-
- #: builtins.c:4243
- #, fuzzy
- msgid "invalid arg to `__builtin_return_address'"
- msgstr "Sibyo Kuri"
-
- #: builtins.c:4257
- #, fuzzy
- msgid "unsupported arg to `__builtin_frame_address'"
- msgstr "Kuri"
-
- #: builtins.c:4259
- #, fuzzy
- msgid "unsupported arg to `__builtin_return_address'"
- msgstr "Kuri"
-
- #: builtins.c:4419
- #, fuzzy
- msgid "second arg to `__builtin_expect' must be a constant"
- msgstr "ISEGONDA Kuri a"
-
- #: builtins.c:5360
- #, fuzzy
- msgid "__builtin_longjmp second argument must be 1"
- msgstr "_ISEGONDA 1."
-
- #: builtins.c:5458
- #, fuzzy, c-format
- msgid "built-in function `%s' not currently supported"
- msgstr "in Umumaro OYA"
-
- #: builtins.c:5598
- #, fuzzy
- msgid "target format does not support infinity"
- msgstr "Intego Imiterere OYA Gushigikira Bidashira"
-
- #: c-common.c:916
- #, fuzzy
- msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
- msgstr "%HsuggestIngirwadusodeko Kuri"
-
- #: c-common.c:1140
- #, fuzzy
- msgid "%J'%D' is not defined outside of function scope"
- msgstr "%J'%D'ni OYA Hanze Bya Umumaro Ingano:"
-
- #: c-common.c:1160
- #, fuzzy, c-format
- msgid "string length `%d' is greater than the length `%d' ISO C%d compilers are required to support"
- msgstr "Ikurikiranyanyuguti Uburebure ni Biruta i Uburebure C Bya ngombwa Kuri Gushigikira"
-
- #: c-common.c:1200
- #, fuzzy
- msgid "overflow in constant expression"
- msgstr "Byarenze urugero in imvugo"
-
- #: c-common.c:1220
- #, fuzzy
- msgid "integer overflow in expression"
- msgstr "Umubare wuzuye Byarenze urugero in imvugo"
-
- #: c-common.c:1229
- #, fuzzy
- msgid "floating point overflow in expression"
- msgstr "Bihindagurika Akadomo Byarenze urugero in imvugo"
-
- #: c-common.c:1235
- #, fuzzy
- msgid "vector overflow in expression"
- msgstr "Byarenze urugero in imvugo"
-
- #. This detects cases like converting -129 or 256 to unsigned char.
- #: c-common.c:1257
- #, fuzzy
- msgid "large integer implicitly truncated to unsigned type"
- msgstr "Binini Umubare wuzuye Kuri Bitashizweho umukono Ubwoko"
-
- #: c-common.c:1259
- #, fuzzy
- msgid "negative integer implicitly converted to unsigned type"
- msgstr "Umubare wuzuye Kuri Bitashizweho umukono Ubwoko"
-
- #: c-common.c:1305
- #, fuzzy
- msgid "overflow in implicit constant conversion"
- msgstr "Byarenze urugero in Ihindurangero"
-
- #: c-common.c:1441
- #, fuzzy, c-format
- msgid "operation on `%s' may be undefined"
- msgstr "ku Gicurasi kidasobanuye"
-
- #: c-common.c:1725
- #, fuzzy
- msgid "expression statement has incomplete type"
- msgstr "imvugo Inyandiko Ubwoko"
-
- #: c-common.c:1757
- #, fuzzy
- msgid "case label does not reduce to an integer constant"
- msgstr "Akarango OYA Kuri Umubare wuzuye"
-
- #: c-common.c:2087
- #, fuzzy
- msgid "invalid truth-value expression"
- msgstr "Sibyo Agaciro imvugo"
-
- #: c-common.c:2138
- #, fuzzy, c-format
- msgid "invalid operands to binary %s"
- msgstr "Sibyo Kuri Nyabibiri"
-
- #: c-common.c:2372
- #, fuzzy
- msgid "comparison is always false due to limited range of data type"
- msgstr "ni Buri gihe SIBYO Kuri Urutonde Bya Ibyatanzwe Ubwoko"
-
- #: c-common.c:2374
- #, fuzzy
- msgid "comparison is always true due to limited range of data type"
- msgstr "ni Buri gihe NIBYO Kuri Urutonde Bya Ibyatanzwe Ubwoko"
-
- #: c-common.c:2444
- #, fuzzy
- msgid "comparison of unsigned expression >= 0 is always true"
- msgstr "Bya Bitashizweho umukono imvugo 0 ni Buri gihe NIBYO"
-
- #: c-common.c:2453
- #, fuzzy
- msgid "comparison of unsigned expression < 0 is always false"
- msgstr "Bya Bitashizweho umukono imvugo 0 ni Buri gihe SIBYO"
-
- #: c-common.c:2498
- #, fuzzy
- msgid "pointer of type `void *' used in arithmetic"
- msgstr "Mweretsi Bya Ubwoko in"
-
- #: c-common.c:2504
- #, fuzzy
- msgid "pointer to a function used in arithmetic"
- msgstr "Mweretsi Kuri a Umumaro in"
-
- #: c-common.c:2510
- #, fuzzy
- msgid "pointer to member function used in arithmetic"
- msgstr "Mweretsi Kuri Umumaro in"
-
- #: c-common.c:2599 f/com.c:14734
- #, fuzzy
- msgid "struct type value used where scalar is required"
- msgstr "Ubwoko Agaciro ni Bya ngombwa"
-
- #: c-common.c:2603 f/com.c:14738
- #, fuzzy
- msgid "union type value used where scalar is required"
- msgstr "Ihuza Ubwoko Agaciro ni Bya ngombwa"
-
- #: c-common.c:2607 f/com.c:14742
- #, fuzzy
- msgid "array type value used where scalar is required"
- msgstr "Imbonerahamwe Ubwoko Agaciro ni Bya ngombwa"
-
- #. Common Ada/Pascal programmer's mistake. We always warn
- #. about this since it is so bad.
- #: c-common.c:2644
- #, fuzzy
- msgid "the address of `%D', will always evaluate as `true'"
- msgstr "i Aderesi Bya Buri gihe Suzuma Nka"
-
- #: c-common.c:2738 f/com.c:14874
- #, fuzzy
- msgid "suggest parentheses around assignment used as truth value"
- msgstr "Igenera Nka Agaciro"
-
- #: c-common.c:2784 c-common.c:2824
- #, fuzzy
- msgid "invalid use of `restrict'"
- msgstr "Sibyo Gukoresha Bya"
-
- #: c-common.c:2934
- #, fuzzy
- msgid "invalid application of `sizeof' to a function type"
- msgstr "Sibyo Porogaramu Bya Kuri a Umumaro Ubwoko"
-
- #: c-common.c:2944
- #, fuzzy, c-format
- msgid "invalid application of `%s' to a void type"
- msgstr "Sibyo Porogaramu Bya Kuri a Ubwoko"
-
- #: c-common.c:2950
- #, fuzzy
- msgid "invalid application of `%s' to incomplete type `%T' "
- msgstr "Sibyo Porogaramu Bya Kuri Ubwoko"
-
- #: c-common.c:2991
- #, fuzzy
- msgid "`__alignof' applied to a bit-field"
- msgstr "`_Byashyizweho Kuri a Umwanya"
-
- #: c-common.c:3483
- #, fuzzy, c-format
- msgid "cannot disable built-in function `%s'"
- msgstr "in Umumaro"
-
- #: c-common.c:3644 c-typeck.c:1954
- #, fuzzy, c-format
- msgid "too few arguments to function `%s'"
- msgstr "ingingo Kuri Umumaro"
-
- #: c-common.c:3650 c-typeck.c:1815
- #, fuzzy, c-format
- msgid "too many arguments to function `%s'"
- msgstr "ingingo Kuri Umumaro"
-
- #: c-common.c:3669
- #, fuzzy, c-format
- msgid "non-floating-point argument to function `%s'"
- msgstr "Bihindagurika Akadomo Kuri Umumaro"
-
- #: c-common.c:3896
- #, fuzzy
- msgid "pointers are not permitted as case values"
- msgstr "OYA Nka Uduciro"
-
- #: c-common.c:3900
- #, fuzzy
- msgid "range expressions in switch statements are non-standard"
- msgstr "Urutonde in Hindura Bisanzwe"
-
- #: c-common.c:3929
- #, fuzzy
- msgid "empty range specified"
- msgstr "ubusa Urutonde"
-
- #: c-common.c:3980
- #, fuzzy
- msgid "duplicate (or overlapping) case value"
- msgstr "Gusubiramo Cyangwa iyorosa Agaciro"
-
- #: c-common.c:3981
- #, fuzzy
- msgid "%Jthis is the first entry overlapping that value"
- msgstr "%Jthisni i Itangira Icyinjijwe iyorosa Agaciro"
-
- #: c-common.c:3985
- #, fuzzy
- msgid "duplicate case value"
- msgstr "Gusubiramo Agaciro"
-
- #: c-common.c:3986
- msgid "%Jpreviously used here"
- msgstr ""
-
- #: c-common.c:3990
- #, fuzzy
- msgid "multiple default labels in one switch"
- msgstr "Igikubo Mburabuzi Uturango... in Hindura"
-
- #: c-common.c:3991
- #, fuzzy
- msgid "%Jthis is the first default label"
- msgstr "%Jthisni i Itangira Mburabuzi Akarango"
-
- #: c-common.c:4016
- #, fuzzy
- msgid "taking the address of a label is non-standard"
- msgstr "i Aderesi Bya a Akarango ni Bisanzwe"
-
- #: c-common.c:4062
- #, fuzzy
- msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
- msgstr "%HignoringGaruka Agaciro Bya Na: Ikiranga"
-
- #: c-common.c:4067
- #, fuzzy
- msgid "%Hignoring return value of function declared with attribute warn_unused_result"
- msgstr "%HignoringGaruka Agaciro Bya Umumaro Na: Ikiranga"
-
- #: c-common.c:4651
- #, fuzzy, c-format
- msgid "unknown machine mode `%s'"
- msgstr "Kitazwi Ubwoko"
-
- #: c-common.c:4654
- #, fuzzy, c-format
- msgid "no data type for mode `%s'"
- msgstr "Oya Ibyatanzwe Ubwoko kugirango Ubwoko"
-
- #: c-common.c:4658
- #, fuzzy, c-format
- msgid "invalid pointer mode `%s'"
- msgstr "Sibyo Mweretsi Ubwoko"
-
- #: c-common.c:4665 c-common.c:5237
- #, fuzzy, c-format
- msgid "unable to emulate '%s'"
- msgstr "Kuri"
-
- #: c-common.c:4686
- #, fuzzy, c-format
- msgid "mode `%s' applied to inappropriate type"
- msgstr "Ubwoko Byashyizweho Kuri Ubwoko"
-
- #: c-common.c:4718
- #, fuzzy
- msgid "%Jsection attribute cannot be specified for local variables"
- msgstr "%JsectionIkiranga kugirango Ibihinduka"
-
- #: c-common.c:4729
- #, fuzzy
- msgid "%Jsection of '%D' conflicts with previous declaration"
- msgstr "%JsectionBya Na: Ibanjirije"
-
- #: c-common.c:4738
- #, fuzzy
- msgid "%Jsection attribute not allowed for '%D'"
- msgstr "%JsectionIkiranga OYA kugirango"
-
- #: c-common.c:4744
- #, fuzzy
- msgid "%Jsection attributes are not supported for this target"
- msgstr "%JsectionIbiranga OYA kugirango iyi Intego"
-
- #: c-common.c:4782
- #, fuzzy
- msgid "requested alignment is not a constant"
- msgstr "Itunganya ni OYA a"
-
- #: c-common.c:4787
- #, fuzzy
- msgid "requested alignment is not a power of 2"
- msgstr "Itunganya ni OYA a UMWIKUBE Bya 2."
-
- #: c-common.c:4792
- #, fuzzy
- msgid "requested alignment is too large"
- msgstr "Itunganya ni Binini"
-
- #: c-common.c:4818
- #, fuzzy
- msgid "%Jalignment may not be specified for '%D'"
- msgstr "%JalignmentGicurasi OYA kugirango"
-
- #: c-common.c:4856
- #, fuzzy
- msgid "%J'%D' defined both normally and as an alias"
- msgstr "%J'%D'Byombi Na Nka Irihimbano"
-
- #: c-common.c:4866
- #, fuzzy
- msgid "alias arg not a string"
- msgstr "Irihimbano OYA a Ikurikiranyanyuguti"
-
- #: c-common.c:4909
- #, fuzzy
- msgid "visibility arg not a string"
- msgstr "Ukugaragara OYA a Ikurikiranyanyuguti"
-
- #: c-common.c:4922
- #, fuzzy
- msgid "visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\""
- msgstr "Ukugaragara Bya Mburabuzi gihishwe Birinzwe Cyangwa By'imbere"
-
- #: c-common.c:4948
- #, fuzzy
- msgid "tls_model arg not a string"
- msgstr "OYA a Ikurikiranyanyuguti"
-
- #: c-common.c:4957
- #, fuzzy
- msgid "tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\""
- msgstr "Bya Cyangwa"
-
- #: c-common.c:4979 c-common.c:5025
- #, fuzzy
- msgid "%J'%E' attribute applies only to functions"
- msgstr "%J'%E'Ikiranga Kuri Imimaro"
-
- #: c-common.c:4984 c-common.c:5030
- #, fuzzy
- msgid "%Jcan't set '%E' attribute after definition"
- msgstr "%Jcan'T Gushyiraho Ikiranga Nyuma Insobanuro"
-
- #: c-common.c:5106
- #, fuzzy, c-format
- msgid "`%s' attribute ignored for `%s'"
- msgstr "`%s'Ikiranga kugirango"
-
- #: c-common.c:5169
- #, fuzzy, c-format
- msgid "invalid vector type for attribute `%s'"
- msgstr "Sibyo Ubwoko kugirango Ikiranga"
-
- #: c-common.c:5193 c-common.c:5225
- #, fuzzy
- msgid "no vector mode with the size and type specified could be found"
- msgstr "Oya Ubwoko Na: i Ingano Na Ubwoko Byabonetse"
-
- #: c-common.c:5281
- #, fuzzy
- msgid "nonnull attribute without arguments on a non-prototype"
- msgstr "Ikiranga ingingo ku a"
-
- #: c-common.c:5296
- #, fuzzy, c-format
- msgid "nonnull argument has invalid operand number (arg %lu)"
- msgstr "Sibyo Umubare"
-
- #: c-common.c:5315
- #, fuzzy, c-format
- msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
- msgstr "Na: Inyuma Bya Urutonde Umubare"
-
- #: c-common.c:5323
- #, fuzzy, c-format
- msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
- msgstr "Indango Mweretsi"
-
- #: c-common.c:5403
- #, fuzzy, c-format
- msgid "null argument where non-null required (arg %lu)"
- msgstr "NTAGIHARI NTAGIHARI Bya ngombwa"
-
- #: c-common.c:5474
- #, fuzzy
- msgid "cleanup arg not an identifier"
- msgstr "OYA Ikiranga"
-
- #: c-common.c:5481
- #, fuzzy
- msgid "cleanup arg not a function"
- msgstr "OYA a Umumaro"
-
- #: c-common.c:5842
- #, fuzzy, c-format
- msgid "%s at end of input"
- msgstr "%sku Impera Bya Iyinjiza"
-
- #: c-common.c:5848
- #, fuzzy, c-format
- msgid "%s before %s'%c'"
- msgstr "%sMbere"
-
- #: c-common.c:5850
- #, fuzzy, c-format
- msgid "%s before %s'\\x%x'"
- msgstr "%sMbere"
-
- #: c-common.c:5854
- #, fuzzy, c-format
- msgid "%s before string constant"
- msgstr "%sMbere Ikurikiranyanyuguti"
-
- #: c-common.c:5856
- #, fuzzy, c-format
- msgid "%s before numeric constant"
- msgstr "%sMbere Bikurikije umubare"
-
- #: c-common.c:5858
- #, fuzzy, c-format
- msgid "%s before \"%s\""
- msgstr "%sMbere"
-
- #: c-common.c:5860
- #, fuzzy, c-format
- msgid "%s before '%s' token"
- msgstr "%sMbere"
-
- # basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
- #. Use `%s' to print the string in case there are any escape
- #. characters in the message.
- #: c-common.c:5862 c-typeck.c:2592 c-typeck.c:3984 c-typeck.c:3999
- #: c-typeck.c:4014 final.c:2776 final.c:2778 gcc.c:4584 rtl-error.c:109
- #: toplev.c:1357 config/cris/cris.c:552 cp/parser.c:1848 cp/typeck.c:4173
- #: java/expr.c:356 java/verify.c:1456 java/verify.c:1457 java/verify.c:1472
- #, fuzzy, c-format
- msgid "%s"
- msgstr "%s"
-
- #: c-convert.c:82 c-typeck.c:1211 c-typeck.c:3424 cp/typeck.c:1363
- #: cp/typeck.c:5729 treelang/tree-convert.c:79
- #, fuzzy
- msgid "void value not ignored as it ought to be"
- msgstr "Agaciro OYA Nka Kuri"
-
- #: c-convert.c:114 java/typeck.c:148 treelang/tree-convert.c:105
- #, fuzzy
- msgid "conversion to non-scalar type requested"
- msgstr "Ihindurangero Kuri Ubwoko"
-
- #: c-decl.c:371
- #, fuzzy
- msgid "%Jarray '%D' assumed to have one element"
- msgstr "%Jarray'%D'Kuri Ikigize:"
-
- #: c-decl.c:580
- #, fuzzy
- msgid "%Jlabel `%D' used but not defined"
- msgstr "%Jlabel`%D'OYA"
-
- #: c-decl.c:586
- #, fuzzy
- msgid "%Jlabel `%D' defined but not used"
- msgstr "%Jlabel`%D'OYA"
-
- #: c-decl.c:588
- #, fuzzy
- msgid "%Jlabel `%D' declared but not defined"
- msgstr "%Jlabel`%D'OYA"
-
- #: c-decl.c:613
- #, fuzzy
- msgid "%Junused variable `%D'"
- msgstr "%JunusedIMPINDURAGACIRO"
-
- #: c-decl.c:821
- #, fuzzy
- msgid "a parameter list with an ellipsis can't match an empty parameter name list declaration"
- msgstr "a Urutonde Na: BIHUYE ubusa Izina: Urutonde"
-
- #: c-decl.c:828
- #, fuzzy
- msgid "an argument type that has a default promotion can't match an empty parameter name list declaration"
- msgstr "Ubwoko a Mburabuzi BIHUYE ubusa Izina: Urutonde"
-
- #: c-decl.c:864
- #, fuzzy
- msgid "%Jprototype for '%D' declares more arguments than previous old-style definition"
- msgstr "%Jprototypekugirango Birenzeho ingingo Ibanjirije ki/ bishaje IMISUSIRE Insobanuro"
-
- #: c-decl.c:870
- #, fuzzy
- msgid "%Jprototype for '%D' declares fewer arguments than previous old-style definition"
- msgstr "%Jprototypekugirango Bike ingingo Ibanjirije ki/ bishaje IMISUSIRE Insobanuro"
-
- #: c-decl.c:879
- #, fuzzy
- msgid "%Jprototype for '%D' declares arg %d with incompatible type"
- msgstr "%Jprototypekugirango Na: Ubwoko"
-
- #. If we get here, no errors were found, but do issue a warning
- #. for this poor-style construct.
- #: c-decl.c:891
- #, fuzzy
- msgid "%Jprototype for '%D' follows non-prototype definition"
- msgstr "%Jprototypekugirango Insobanuro"
-
- #: c-decl.c:906
- #, fuzzy
- msgid "%Jprevious definition of '%D' was here"
- msgstr "%JpreviousInsobanuro Bya"
-
- #: c-decl.c:908
- #, fuzzy
- msgid "%Jprevious implicit declaration of '%D' was here"
- msgstr "%JpreviousBya"
-
- #: c-decl.c:910
- #, fuzzy
- msgid "%Jprevious declaration of '%D' was here"
- msgstr "%JpreviousBya"
-
- #: c-decl.c:945
- #, fuzzy
- msgid "%J'%D' redeclared as different kind of symbol"
- msgstr "%J'%D'Nka Bya IKIMENYETSO"
-
- #: c-decl.c:950
- #, fuzzy
- msgid "%Jbuilt-in function '%D' declared as non-function"
- msgstr "%Jbuilt-inUmumaro Nka Umumaro"
-
- #: c-decl.c:953 c-decl.c:1045
- #, fuzzy
- msgid "%Jshadowing built-in function '%D'"
- msgstr "%Jshadowingin Umumaro"
-
- #. If types don't match for a built-in, throw away the
- #. built-in. No point in calling locate_old_decl here, it
- #. won't print anything.
- #: c-decl.c:974
- #, fuzzy
- msgid "%Jconflicting types for built-in function '%D'"
- msgstr "%Jconflictingkugirango in Umumaro"
-
- #: c-decl.c:998 c-decl.c:1006
- #, fuzzy
- msgid "%Jconflicting types for '%D'"
- msgstr "%Jconflictingkugirango"
-
- #. allow OLDDECL to continue in use
- #: c-decl.c:1021
- #, fuzzy
- msgid "%Jredefinition of typedef '%D'"
- msgstr "%JredefinitionBya"
-
- # sfx2/source\bastyp\bastyp.src:STR_DOWNLOAD_STATEFORMAT.text
- #: c-decl.c:1058 c-decl.c:1122
- #, fuzzy
- msgid "%Jredefinition of '%D'"
- msgstr "%JredefinitionGusoma) cya$( IGITERANYO)[ IGIHE]"
-
- #: c-decl.c:1089 c-decl.c:1139
- #, fuzzy
- msgid "%Jstatic declaration of '%D' follows non-static declaration"
- msgstr "%JstaticBya"
-
- #: c-decl.c:1097 c-decl.c:1136
- #, fuzzy
- msgid "%Jnon-static declaration of '%D' follows static declaration"
- msgstr "%Jnon-staticBya"
-
- #: c-decl.c:1109
- #, fuzzy
- msgid "%Jthread-local declaration of '%D' follows non-thread-local declaration"
- msgstr "%Jthread-localBya Urudodo"
-
- #: c-decl.c:1112
- #, fuzzy
- msgid "%Jnon-thread-local declaration of '%D' follows thread-local declaration"
- msgstr "%Jnon-thread-localBya Urudodo"
-
- #: c-decl.c:1152
- #, fuzzy
- msgid "%Jextern declaration of '%D' follows declaration with no linkage"
- msgstr "%JexternBya Na: Oya"
-
- #: c-decl.c:1155
- #, fuzzy
- msgid "%Jdeclaration of '%D' with no linkage follows extern declaration"
- msgstr "%JdeclarationBya Na: Oya"
-
- #: c-decl.c:1158
- #, fuzzy
- msgid "%Jredeclaration of '%D' with no linkage"
- msgstr "%JredeclarationBya Na: Oya"
-
- #: c-decl.c:1172
- #, fuzzy
- msgid "%Jredeclaration of '%D' with different visibility (old visibility preserved)"
- msgstr "%JredeclarationBya Na: Ukugaragara ki/ bishaje Ukugaragara"
-
- #: c-decl.c:1183
- #, fuzzy
- msgid "%Jinline declaration of '%D' follows declaration with attribute noinline"
- msgstr "%JinlineBya Na: Ikiranga"
-
- #: c-decl.c:1190
- #, fuzzy
- msgid "%Jdeclaration of '%D' with attribute noinline follows inline declaration "
- msgstr "%JdeclarationBya Na: Ikiranga Mumurongo"
-
- #: c-decl.c:1202
- #, fuzzy
- msgid "%J'%D' declared inline after being called"
- msgstr "%J'%D'Mumurongo Nyuma"
-
- #: c-decl.c:1208
- #, fuzzy
- msgid "%J'%D' declared inline after its definition"
- msgstr "%J'%D'Mumurongo Nyuma Insobanuro"
-
- #: c-decl.c:1221
- #, fuzzy
- msgid "%Jredefinition of parameter '%D'"
- msgstr "%JredefinitionBya"
-
- #: c-decl.c:1230
- #, fuzzy
- msgid "%Jvolatile declaration of '%D' follows non-volatile declaration"
- msgstr "%JvolatileBya"
-
- #: c-decl.c:1233
- #, fuzzy
- msgid "%Jnon-volatile declaration of '%D' follows volatile declaration"
- msgstr "%Jnon-volatileBya"
-
- #: c-decl.c:1240
- #, fuzzy
- msgid "%Jconst declaration of '%D' follows non-const declaration"
- msgstr "%JconstBya"
-
- #: c-decl.c:1243
- #, fuzzy
- msgid "%Jnon-const declaration of '%D' follows const declaration"
- msgstr "%Jnon-constBya"
-
- #: c-decl.c:1267
- #, fuzzy
- msgid "%Jredundant redeclaration of '%D'"
- msgstr "%JredundantBya"
-
- #: c-decl.c:1586
- #, fuzzy
- msgid "%Jdeclaration of '%D' shadows a parameter"
- msgstr "%JdeclarationBya a"
-
- #: c-decl.c:1588
- #, fuzzy
- msgid "%Jdeclaration of '%D' shadows a global declaration"
- msgstr "%JdeclarationBya a"
-
- #: c-decl.c:1590
- #, fuzzy
- msgid "%Jdeclaration of '%D' shadows a previous local"
- msgstr "%JdeclarationBya a Ibanjirije"
-
- #: c-decl.c:1592 cp/name-lookup.c:969 cp/name-lookup.c:992
- #: cp/name-lookup.c:1000
- #, fuzzy
- msgid "%Jshadowed declaration is here"
- msgstr "%Jshadowedni"
-
- #: c-decl.c:1702
- #, fuzzy, c-format
- msgid "nested extern declaration of `%s'"
- msgstr "Bya"
-
- #: c-decl.c:1843 objc/objc-act.c:2534 objc/objc-act.c:6794
- #, fuzzy
- msgid "%Jprevious declaration of '%D'"
- msgstr "%JpreviousBya"
-
- #: c-decl.c:1884 c-decl.c:1886
- #, fuzzy, c-format
- msgid "implicit declaration of function `%s'"
- msgstr "Bya Umumaro"
-
- #: c-decl.c:1902
- #, fuzzy, c-format
- msgid "`%s' undeclared here (not in a function)"
- msgstr "`%s'OYA in a Umumaro"
-
- #: c-decl.c:1908
- #, fuzzy, c-format
- msgid "`%s' undeclared (first use in this function)"
- msgstr "`%s'Itangira Gukoresha in iyi Umumaro"
-
- #: c-decl.c:1913
- #, fuzzy
- msgid "(Each undeclared identifier is reported only once"
- msgstr "(Ikiranga ni Rimwe"
-
- #: c-decl.c:1914
- #, fuzzy
- msgid "for each function it appears in.)"
- msgstr "kugirango Umumaro in"
-
- #: c-decl.c:1967
- #, fuzzy, c-format
- msgid "label %s referenced outside of any function"
- msgstr "Akarango Hanze Bya Umumaro"
-
- #: c-decl.c:2014
- #, fuzzy, c-format
- msgid "duplicate label declaration `%s'"
- msgstr "Gusubiramo Akarango"
-
- #: c-decl.c:2015
- #, fuzzy
- msgid "%Jthis is a previous declaration"
- msgstr "%Jthisni a Ibanjirije"
-
- #: c-decl.c:2050
- #, fuzzy
- msgid "%Hduplicate label `%D'"
- msgstr "%HduplicateAkarango"
-
- #: c-decl.c:2052
- msgid "%J`%D' previously defined here"
- msgstr ""
-
- #: c-decl.c:2054
- msgid "%J`%D' previously declared here"
- msgstr ""
-
- #: c-decl.c:2074
- #, fuzzy
- msgid "%Htraditional C lacks a separate namespace for labels, identifier `%s' conflicts"
- msgstr "%HtraditionalC a kugirango Uturango... Ikiranga"
-
- #: c-decl.c:2145
- #, fuzzy
- msgid "%H`%s' defined as wrong kind of tag"
- msgstr "%H`%s'Nka Bya Itagi:"
-
- #: c-decl.c:2383
- #, fuzzy
- msgid "unnamed struct/union that defines no instances"
- msgstr "Kitiswe Ihuza Oya Ingero"
-
- #: c-decl.c:2402
- #, fuzzy
- msgid "useless keyword or type name in empty declaration"
- msgstr "Ijambo- banze Cyangwa Ubwoko Izina: in ubusa"
-
- #: c-decl.c:2409
- #, fuzzy
- msgid "two types specified in one empty declaration"
- msgstr "in ubusa"
-
- #: c-decl.c:2414 c-parse.y:735 c-parse.y:737 objc/objc-parse.y:776
- #: objc/objc-parse.y:778 objc/objc-parse.y:3016
- #, fuzzy
- msgid "empty declaration"
- msgstr "ubusa"
-
- #: c-decl.c:2440
- #, fuzzy
- msgid "ISO C90 does not support `static' or type qualifiers in parameter array declarators"
- msgstr "OYA Gushigikira Cyangwa Ubwoko in Imbonerahamwe"
-
- #: c-decl.c:2442
- #, fuzzy
- msgid "ISO C90 does not support `[*]' array declarators"
- msgstr "OYA Gushigikira Imbonerahamwe"
-
- #: c-decl.c:2445
- #, fuzzy
- msgid "GCC does not yet properly implement `[*]' array declarators"
- msgstr "OYA Imbonerahamwe"
-
- #: c-decl.c:2461
- #, fuzzy
- msgid "static or type qualifiers in abstract declarator"
- msgstr "Cyangwa Ubwoko in Incamake"
-
- #: c-decl.c:2531
- #, fuzzy
- msgid "%J'%D' is usually a function"
- msgstr "%J'%D'ni a Umumaro"
-
- #: c-decl.c:2540
- #, fuzzy, c-format
- msgid "typedef `%s' is initialized (use __typeof__ instead)"
- msgstr "ni Gukoresha"
-
- #: c-decl.c:2546
- #, fuzzy, c-format
- msgid "function `%s' is initialized like a variable"
- msgstr "Umumaro ni nka a IMPINDURAGACIRO"
-
- #. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
- #: c-decl.c:2553
- #, fuzzy, c-format
- msgid "parameter `%s' is initialized"
- msgstr "ni"
-
- #: c-decl.c:2573 c-typeck.c:4234
- #, fuzzy
- msgid "variable-sized object may not be initialized"
- msgstr "IMPINDURAGACIRO Igikoresho Gicurasi OYA"
-
- #: c-decl.c:2579
- #, fuzzy, c-format
- msgid "variable `%s' has initializer but incomplete type"
- msgstr "IMPINDURAGACIRO Ubwoko"
-
- #: c-decl.c:2585
- #, fuzzy, c-format
- msgid "elements of array `%s' have incomplete type"
- msgstr "Ibintu Bya Imbonerahamwe Ubwoko"
-
- #: c-decl.c:2654 c-decl.c:5462 cp/decl.c:3775 cp/decl.c:10238
- #, fuzzy
- msgid "%Jinline function '%D' given attribute noinline"
- msgstr "%JinlineUmumaro Ikiranga"
-
- #: c-decl.c:2730
- #, fuzzy
- msgid "%Jinitializer fails to determine size of '%D'"
- msgstr "%JinitializerKuri Ingano Bya"
-
- #: c-decl.c:2735
- #, fuzzy
- msgid "%Jarray size missing in '%D'"
- msgstr "%JarrayIngano Ibuze in"
-
- #: c-decl.c:2751
- #, fuzzy
- msgid "%Jzero or negative size array '%D'"
- msgstr "%JzeroCyangwa Ingano Imbonerahamwe"
-
- #: c-decl.c:2779
- #, fuzzy
- msgid "%Jstorage size of '%D' isn't known"
- msgstr "%JstorageIngano Bya si"
-
- #: c-decl.c:2789
- #, fuzzy
- msgid "%Jstorage size of '%D' isn't constant"
- msgstr "%JstorageIngano Bya si"
-
- #: c-decl.c:2872
- #, fuzzy
- msgid "%Jignoring asm-specifier for non-static local variable '%D'"
- msgstr "%Jignoringkugirango IMPINDURAGACIRO"
-
- #: c-decl.c:2983
- #, fuzzy
- msgid "ISO C forbids forward parameter declarations"
- msgstr "C Imbere"
-
- #: c-decl.c:3165
- msgid ""
- msgstr ""
-
- #: c-decl.c:3174
- #, fuzzy, c-format
- msgid "bit-field `%s' width not an integer constant"
- msgstr "Umwanya Ubugari OYA Umubare wuzuye"
-
- #: c-decl.c:3182
- #, fuzzy, c-format
- msgid "negative width in bit-field `%s'"
- msgstr "Ubugari in Umwanya"
-
- #: c-decl.c:3187
- #, fuzzy, c-format
- msgid "zero width for bit-field `%s'"
- msgstr "Zeru Ubugari kugirango Umwanya"
-
- #: c-decl.c:3197
- #, fuzzy, c-format
- msgid "bit-field `%s' has invalid type"
- msgstr "Umwanya Sibyo Ubwoko"
-
- #: c-decl.c:3206
- #, fuzzy, c-format
- msgid "type of bit-field `%s' is a GCC extension"
- msgstr "Ubwoko Bya Umwanya ni a Umugereka"
-
- #: c-decl.c:3215
- #, fuzzy, c-format
- msgid "width of `%s' exceeds its type"
- msgstr "Ubugari Bya Ubwoko"
-
- #: c-decl.c:3225
- #, fuzzy, c-format
- msgid "`%s' is narrower than values of its type"
- msgstr "`%s'ni Uduciro Bya Ubwoko"
-
- #: c-decl.c:3375 cp/decl.c:6900
- #, fuzzy
- msgid "`long long long' is too long for GCC"
- msgstr "`ni kugirango"
-
- #: c-decl.c:3380
- #, fuzzy
- msgid "ISO C90 does not support `long long'"
- msgstr "OYA Gushigikira"
-
- #: c-decl.c:3389 c-decl.c:3392 cp/decl.c:6905
- #, fuzzy, c-format
- msgid "duplicate `%s'"
- msgstr "Gusubiramo"
-
- #: c-decl.c:3402 cp/decl.c:6911
- #, fuzzy
- msgid "`__thread' before `extern'"
- msgstr "`_Mbere"
-
- #: c-decl.c:3404 cp/decl.c:6913
- #, fuzzy
- msgid "`__thread' before `static'"
- msgstr "`_Mbere"
-
- #: c-decl.c:3412 cp/decl.c:6940
- #, fuzzy, c-format
- msgid "two or more data types in declaration of `%s'"
- msgstr "Cyangwa Birenzeho Ibyatanzwe in Bya"
-
- #: c-decl.c:3432 cp/decl.c:6945
- #, fuzzy, c-format
- msgid "`%s' fails to be a typedef or built in type"
- msgstr "`%s'Kuri a Cyangwa in Ubwoko"
-
- #: c-decl.c:3471
- #, fuzzy, c-format
- msgid "type defaults to `int' in declaration of `%s'"
- msgstr "Ubwoko Kuri in Bya"
-
- #: c-decl.c:3500
- #, fuzzy, c-format
- msgid "both long and short specified for `%s'"
- msgstr "Byombi Na kugirango"
-
- #: c-decl.c:3504 cp/decl.c:7045
- #, fuzzy, c-format
- msgid "long or short specified with char for `%s'"
- msgstr "Cyangwa Na: INYUGUTI kugirango"
-
- #: c-decl.c:3511 cp/decl.c:7049
- #, fuzzy, c-format
- msgid "long or short specified with floating type for `%s'"
- msgstr "Cyangwa Na: Bihindagurika Ubwoko kugirango"
-
- #: c-decl.c:3514
- #, fuzzy
- msgid "the only valid combination is `long double'"
- msgstr "i Byemewe Ivanga ni"
-
- #: c-decl.c:3520
- #, fuzzy, c-format
- msgid "both signed and unsigned specified for `%s'"
- msgstr "Byombi Na Bitashizweho umukono kugirango"
-
- #: c-decl.c:3522 cp/decl.c:7038
- #, fuzzy, c-format
- msgid "long, short, signed or unsigned invalid for `%s'"
- msgstr "Cyangwa Bitashizweho umukono Sibyo kugirango"
-
- #: c-decl.c:3528 cp/decl.c:7058
- #, fuzzy, c-format
- msgid "long, short, signed or unsigned used invalidly for `%s'"
- msgstr "Cyangwa Bitashizweho umukono kugirango"
-
- #: c-decl.c:3546 cp/decl.c:7079
- #, fuzzy, c-format
- msgid "complex invalid for `%s'"
- msgstr "ITSINDA RY'IMIBARE C Sibyo kugirango"
-
- #: c-decl.c:3588
- #, fuzzy
- msgid "ISO C90 does not support complex types"
- msgstr "OYA Gushigikira ITSINDA RY'IMIBARE C"
-
- #: c-decl.c:3600
- #, fuzzy
- msgid "ISO C does not support plain `complex' meaning `double complex'"
- msgstr "C OYA Gushigikira Byuzuye Igisobanuro MAHARAKUBIRI"
-
- #: c-decl.c:3606 c-decl.c:3618
- #, fuzzy
- msgid "ISO C does not support complex integer types"
- msgstr "C OYA Gushigikira ITSINDA RY'IMIBARE C Umubare wuzuye"
-
- #: c-decl.c:3648 c-decl.c:4115 cp/decl.c:7671
- #, fuzzy
- msgid "duplicate `const'"
- msgstr "Gusubiramo"
-
- #: c-decl.c:3650 c-decl.c:4119 cp/decl.c:7675
- #, fuzzy
- msgid "duplicate `restrict'"
- msgstr "Gusubiramo"
-
- #: c-decl.c:3652 c-decl.c:4117 cp/decl.c:7673
- #, fuzzy
- msgid "duplicate `volatile'"
- msgstr "Gusubiramo"
-
- #: c-decl.c:3681 cp/decl.c:7242
- #, fuzzy, c-format
- msgid "multiple storage classes in declaration of `%s'"
- msgstr "Igikubo Inzego in Bya"
-
- #: c-decl.c:3691
- #, fuzzy
- msgid "function definition declared `auto'"
- msgstr "Umumaro Insobanuro"
-
- #: c-decl.c:3693
- #, fuzzy
- msgid "function definition declared `register'"
- msgstr "Umumaro Insobanuro"
-
- #: c-decl.c:3695
- #, fuzzy
- msgid "function definition declared `typedef'"
- msgstr "Umumaro Insobanuro"
-
- #: c-decl.c:3697
- #, fuzzy
- msgid "function definition declared `__thread'"
- msgstr "Umumaro Insobanuro"
-
- #: c-decl.c:3710
- #, fuzzy, c-format
- msgid "storage class specified for structure field `%s'"
- msgstr "ishuri kugirango Imiterere Umwanya"
-
- #: c-decl.c:3714 cp/decl.c:7287
- #, fuzzy, c-format
- msgid "storage class specified for parameter `%s'"
- msgstr "ishuri kugirango"
-
- #: c-decl.c:3717 cp/decl.c:7289
- #, fuzzy
- msgid "storage class specified for typename"
- msgstr "ishuri kugirango"
-
- #: c-decl.c:3729 cp/decl.c:7304
- #, fuzzy, c-format
- msgid "`%s' initialized and declared `extern'"
- msgstr "`%s'Na"
-
- #: c-decl.c:3731 cp/decl.c:7307
- #, fuzzy, c-format
- msgid "`%s' has both `extern' and initializer"
- msgstr "`%s'Byombi Na"
-
- #: c-decl.c:3736
- #, fuzzy, c-format
- msgid "file-scope declaration of `%s' specifies `auto'"
- msgstr "IDOSIYE Ingano: Bya"
-
- #: c-decl.c:3741 cp/decl.c:7311
- #, fuzzy, c-format
- msgid "nested function `%s' declared `extern'"
- msgstr "Umumaro"
-
- #: c-decl.c:3747 cp/decl.c:7321
- #, fuzzy, c-format
- msgid "function-scope `%s' implicitly auto and declared `__thread'"
- msgstr "Umumaro Ingano: Ikiyega Na"
-
- #. Only the innermost declarator (making a parameter be of
- #. array type which is converted to pointer type)
- #. may have static or type qualifiers.
- #: c-decl.c:3786 c-decl.c:3979
- #, fuzzy
- msgid "static or type qualifiers in non-parameter array declarator"
- msgstr "Cyangwa Ubwoko in Imbonerahamwe"
-
- #: c-decl.c:3830
- #, fuzzy, c-format
- msgid "declaration of `%s' as array of voids"
- msgstr "Bya Nka Imbonerahamwe Bya"
-
- #: c-decl.c:3836
- #, fuzzy, c-format
- msgid "declaration of `%s' as array of functions"
- msgstr "Bya Nka Imbonerahamwe Bya Imimaro"
-
- #: c-decl.c:3841
- #, fuzzy
- msgid "invalid use of structure with flexible array member"
- msgstr "Sibyo Gukoresha Bya Imiterere Na: Imbonerahamwe"
-
- #: c-decl.c:3860
- #, fuzzy, c-format
- msgid "size of array `%s' has non-integer type"
- msgstr "Ingano Bya Imbonerahamwe Umubare wuzuye Ubwoko"
-
- #: c-decl.c:3865
- #, fuzzy, c-format
- msgid "ISO C forbids zero-size array `%s'"
- msgstr "C Zeru Ingano Imbonerahamwe"
-
- #: c-decl.c:3872
- #, fuzzy, c-format
- msgid "size of array `%s' is negative"
- msgstr "Ingano Bya Imbonerahamwe ni"
-
- #: c-decl.c:3885
- #, fuzzy, c-format
- msgid "ISO C90 forbids array `%s' whose size can't be evaluated"
- msgstr "Imbonerahamwe bya Ingano"
-
- #: c-decl.c:3888
- #, fuzzy, c-format
- msgid "ISO C90 forbids variable-size array `%s'"
- msgstr "IMPINDURAGACIRO Ingano Imbonerahamwe"
-
- #: c-decl.c:3918 c-decl.c:4142 cp/decl.c:7850
- #, fuzzy, c-format
- msgid "size of array `%s' is too large"
- msgstr "Ingano Bya Imbonerahamwe ni Binini"
-
- #: c-decl.c:3944
- #, fuzzy
- msgid "ISO C90 does not support flexible array members"
- msgstr "OYA Gushigikira Imbonerahamwe"
-
- #: c-decl.c:3954
- #, fuzzy
- msgid "array type has incomplete element type"
- msgstr "Imbonerahamwe Ubwoko Ikigize: Ubwoko"
-
- #: c-decl.c:4009 cp/decl.c:7442
- #, fuzzy, c-format
- msgid "`%s' declared as function returning a function"
- msgstr "`%s'Nka Umumaro a Umumaro"
-
- #: c-decl.c:4014 cp/decl.c:7447
- #, fuzzy, c-format
- msgid "`%s' declared as function returning an array"
- msgstr "`%s'Nka Umumaro Imbonerahamwe"
-
- #: c-decl.c:4038
- #, fuzzy
- msgid "ISO C forbids qualified void function return type"
- msgstr "C Umumaro Garuka Ubwoko"
-
- #: c-decl.c:4042
- #, fuzzy
- msgid "type qualifiers ignored on function return type"
- msgstr "Ubwoko ku Umumaro Garuka Ubwoko"
-
- #: c-decl.c:4071 c-decl.c:4157 c-decl.c:4281 c-decl.c:4367
- #, fuzzy
- msgid "ISO C forbids qualified function types"
- msgstr "C Umumaro"
-
- #: c-decl.c:4111 cp/decl.c:7667
- #, fuzzy
- msgid "invalid type modifier within pointer declarator"
- msgstr "Sibyo Ubwoko muri Mweretsi"
-
- #: c-decl.c:4192
- #, fuzzy
- msgid "ISO C forbids const or volatile function types"
- msgstr "C Cyangwa Umumaro"
-
- #: c-decl.c:4212
- #, fuzzy, c-format
- msgid "variable or field `%s' declared void"
- msgstr "IMPINDURAGACIRO Cyangwa Umwanya"
-
- #: c-decl.c:4245
- #, fuzzy
- msgid "attributes in parameter array declarator ignored"
- msgstr "Ibiranga in Imbonerahamwe"
-
- #: c-decl.c:4270
- #, fuzzy
- msgid "invalid type modifier within array declarator"
- msgstr "Sibyo Ubwoko muri Imbonerahamwe"
-
- #: c-decl.c:4315
- #, fuzzy, c-format
- msgid "field `%s' declared as a function"
- msgstr "Umwanya Nka a Umumaro"
-
- #: c-decl.c:4321
- #, fuzzy, c-format
- msgid "field `%s' has incomplete type"
- msgstr "Umwanya Ubwoko"
-
- #: c-decl.c:4347 c-decl.c:4349 c-decl.c:4351 c-decl.c:4358
- #, fuzzy, c-format
- msgid "invalid storage class for function `%s'"
- msgstr "Sibyo ishuri kugirango Umumaro"
-
- #: c-decl.c:4373
- #, fuzzy
- msgid "`noreturn' function returns non-void value"
- msgstr "`Umumaro Agaciro"
-
- #: c-decl.c:4388
- #, fuzzy
- msgid "cannot inline function `main'"
- msgstr "Mumurongo Umumaro"
-
- #: c-decl.c:4442
- #, fuzzy
- msgid "variable previously declared `static' redeclared `extern'"
- msgstr "IMPINDURAGACIRO"
-
- #: c-decl.c:4451
- msgid "%Jvariable '%D' declared `inline'"
- msgstr ""
-
- #. A mere warning is sure to result in improper semantics
- #. at runtime. Don't bother to allow this to compile.
- #: c-decl.c:4479 cp/decl.c:5972
- #, fuzzy
- msgid "thread-local storage not supported for this target"
- msgstr "Urudodo OYA kugirango iyi Intego"
-
- #: c-decl.c:4540 c-decl.c:5506
- #, fuzzy
- msgid "function declaration isn't a prototype"
- msgstr "Umumaro si a"
-
- #: c-decl.c:4546
- #, fuzzy
- msgid "parameter names (without types) in function declaration"
- msgstr "Amazina in Umumaro"
-
- #: c-decl.c:4574
- #, fuzzy, c-format
- msgid "parameter `%s' has incomplete type"
- msgstr "Ubwoko"
-
- #: c-decl.c:4577
- #, fuzzy
- msgid "parameter has incomplete type"
- msgstr "Ubwoko"
-
- #: c-decl.c:4626
- #, fuzzy
- msgid "\"void\" as only parameter may not be qualified"
- msgstr "\"Nka Gicurasi OYA"
-
- #: c-decl.c:4647
- #, fuzzy
- msgid "\"void\" must be the only parameter"
- msgstr "\"i"
-
- #: c-decl.c:4664
- #, fuzzy
- msgid "%Jparameter \"%D\" has just a forward declaration"
- msgstr "%Jparameter\"%D\"a Imbere"
-
- #. The first %s will be one of 'struct', 'union', or 'enum'.
- #: c-decl.c:4692
- #, fuzzy, c-format
- msgid "\"%s %s\" declared inside parameter list"
- msgstr "\"%s%s\"Mo Imbere Urutonde"
-
- #. The %s will be one of 'struct', 'union', or 'enum'.
- #: c-decl.c:4696
- #, fuzzy, c-format
- msgid "anonymous %s declared inside parameter list"
- msgstr "Mo Imbere Urutonde"
-
- #: c-decl.c:4700
- #, fuzzy
- msgid "its scope is only this definition or declaration, which is probably not what you want"
- msgstr "Ingano: ni iyi Insobanuro Cyangwa ni OYA"
-
- #: c-decl.c:4785
- #, fuzzy, c-format
- msgid "redefinition of `union %s'"
- msgstr "Bya Ihuza"
-
- #: c-decl.c:4787
- #, fuzzy, c-format
- msgid "redefinition of `struct %s'"
- msgstr "Bya"
-
- #: c-decl.c:4855 cp/decl.c:3548
- #, fuzzy
- msgid "declaration does not declare anything"
- msgstr "OYA"
-
- #: c-decl.c:4900 c-decl.c:4916
- msgid "%Jduplicate member '%D'"
- msgstr ""
-
- #: c-decl.c:4950 c-decl.c:4953
- #, fuzzy, c-format
- msgid "%s defined inside parms"
- msgstr "%sMo Imbere"
-
- # starmath/source\smres.src:RID_TOOLBOXWINDOW.3.RID_XUNIONY.text
- #: c-decl.c:4951 c-decl.c:4954 c-decl.c:4965
- #, fuzzy
- msgid "union"
- msgstr "Ihuza"
-
- # sc/source\ui\formdlg\formdlgs.src:RID_SCTAB_STRUCT.FT_STRUCT.text
- #: c-decl.c:4951 c-decl.c:4954
- #, fuzzy
- msgid "structure"
- msgstr "Imiterere"
-
- #: c-decl.c:4964
- #, fuzzy, c-format
- msgid "%s has no %s"
- msgstr "%sOya"
-
- #: c-decl.c:4965
- msgid "struct"
- msgstr ""
-
- #: c-decl.c:4966
- msgid "named members"
- msgstr ""
-
- #: c-decl.c:4966
- msgid "members"
- msgstr ""
-
- #: c-decl.c:5005
- #, fuzzy, c-format
- msgid "nested redefinition of `%s'"
- msgstr "Bya"
-
- #: c-decl.c:5026
- #, fuzzy
- msgid "%Jflexible array member in union"
- msgstr "%JflexibleImbonerahamwe in Ihuza"
-
- #: c-decl.c:5031
- #, fuzzy
- msgid "%Jflexible array member not at end of struct"
- msgstr "%JflexibleImbonerahamwe OYA ku Impera Bya"
-
- #: c-decl.c:5036
- #, fuzzy
- msgid "%Jflexible array member in otherwise empty struct"
- msgstr "%JflexibleImbonerahamwe in ubusa"
-
- #: c-decl.c:5043
- #, fuzzy
- msgid "%Jinvalid use of structure with flexible array member"
- msgstr "%JinvalidGukoresha Bya Imiterere Na: Imbonerahamwe"
-
- #: c-decl.c:5138
- #, fuzzy
- msgid "union cannot be made transparent"
- msgstr "Ihuza Bibonerana"
-
- #. This enum is a named one that has been declared already.
- #: c-decl.c:5207
- #, fuzzy, c-format
- msgid "redeclaration of `enum %s'"
- msgstr "Bya"
-
- #: c-decl.c:5238
- #, fuzzy
- msgid "enum defined inside parms"
- msgstr "Mo Imbere"
-
- #: c-decl.c:5271
- #, fuzzy
- msgid "enumeration values exceed range of largest integer"
- msgstr "Uduciro Urutonde Bya Kinini Umubare wuzuye"
-
- #: c-decl.c:5374
- #, fuzzy, c-format
- msgid "enumerator value for `%s' not integer constant"
- msgstr "Agaciro kugirango OYA Umubare wuzuye"
-
- #: c-decl.c:5387
- #, fuzzy
- msgid "overflow in enumeration values"
- msgstr "Byarenze urugero in Uduciro"
-
- #: c-decl.c:5392
- #, fuzzy
- msgid "ISO C restricts enumerator values to range of `int'"
- msgstr "C Uduciro Kuri Urutonde Bya"
-
- #: c-decl.c:5468
- #, fuzzy
- msgid "return type is an incomplete type"
- msgstr "Garuka Ubwoko ni Ubwoko"
-
- #: c-decl.c:5476
- #, fuzzy
- msgid "return type defaults to `int'"
- msgstr "Garuka Ubwoko Kuri"
-
- #: c-decl.c:5512
- #, fuzzy
- msgid "%Jno previous prototype for '%D'"
- msgstr "%JnoIbanjirije kugirango"
-
- #: c-decl.c:5518
- #, fuzzy
- msgid "%J'%D' was used with no prototype before its definition"
- msgstr "%J'%D'Na: Oya Mbere Insobanuro"
-
- #: c-decl.c:5525
- #, fuzzy
- msgid "%Jno previous declaration for '%D'"
- msgstr "%JnoIbanjirije kugirango"
-
- #: c-decl.c:5531
- #, fuzzy
- msgid "%J`%D' was used with no declaration before its definition"
- msgstr "%J`%D'Na: Oya Mbere Insobanuro"
-
- #: c-decl.c:5567 c-decl.c:6073
- #, fuzzy
- msgid "%Jreturn type of '%D' is not `int'"
- msgstr "%JreturnUbwoko Bya ni OYA"
-
- #: c-decl.c:5582
- #, fuzzy
- msgid "%Jfirst argument of '%D' should be `int'"
- msgstr "%JfirstBya"
-
- #: c-decl.c:5591
- #, fuzzy
- msgid "%Jsecond argument of '%D' should be 'char **'"
- msgstr "%JsecondBya INYUGUTI"
-
- #: c-decl.c:5600
- #, fuzzy
- msgid "%Jthird argument of '%D' should probably be 'char **'"
- msgstr "%JthirdBya INYUGUTI"
-
- #: c-decl.c:5610
- #, fuzzy
- msgid "%J'%D' takes only zero or two arguments"
- msgstr "%J'%D'Zeru Cyangwa ingingo"
-
- #: c-decl.c:5613
- #, fuzzy
- msgid "%J'%D' is normally a non-static function"
- msgstr "%J'%D'ni a Umumaro"
-
- #: c-decl.c:5669
- #, fuzzy
- msgid "%Jold-style parameter declarations in prototyped function definition"
- msgstr "%Jold-stylein Umumaro Insobanuro"
-
- #: c-decl.c:5683
- #, fuzzy
- msgid "%Jparameter name omitted"
- msgstr "%JparameterIzina:"
-
- #: c-decl.c:5758
- #, fuzzy
- msgid "%Jparameter name missing from parameter list"
- msgstr "%JparameterIzina: Ibuze Bivuye Urutonde"
-
- #: c-decl.c:5768
- #, fuzzy
- msgid "%J\"%D\" declared as a non-parameter"
- msgstr "%J\"%D\"Nka a"
-
- #: c-decl.c:5773
- #, fuzzy
- msgid "%Jmultiple parameters named \"%D\""
- msgstr "%JmultipleIbigenga"
-
- #: c-decl.c:5781
- msgid "%Jparameter \"%D\" declared void"
- msgstr ""
-
- #: c-decl.c:5796 c-decl.c:5798
- #, fuzzy
- msgid "%Jtype of \"%D\" defaults to \"int\""
- msgstr "%JtypeBya Kuri INT"
-
- #: c-decl.c:5812
- #, fuzzy
- msgid "%Jparameter \"%D\" has incomplete type"
- msgstr "%Jparameter\"%D\"Ubwoko"
-
- #: c-decl.c:5818
- #, fuzzy
- msgid "%Jdeclaration for parameter \"%D\" but no such parameter"
- msgstr "%Jdeclarationkugirango Oya"
-
- #: c-decl.c:5870
- #, fuzzy
- msgid "number of arguments doesn't match prototype"
- msgstr "Umubare Bya ingingo BIHUYE"
-
- #: c-decl.c:5871 c-decl.c:5902 c-decl.c:5909
- msgid "%Hprototype declaration"
- msgstr ""
-
- #: c-decl.c:5900
- #, fuzzy
- msgid "promoted argument \"%D\" doesn't match prototype"
- msgstr "BIHUYE"
-
- #: c-decl.c:5908
- #, fuzzy
- msgid "argument \"%D\" doesn't match prototype"
- msgstr "BIHUYE"
-
- #: c-decl.c:6105 cp/decl.c:10954
- #, fuzzy
- msgid "no return statement in function returning non-void"
- msgstr "Oya Garuka Inyandiko in Umumaro"
-
- #: c-decl.c:6112
- #, fuzzy
- msgid "this function may return with or without a value"
- msgstr "iyi Umumaro Gicurasi Garuka Na: Cyangwa a Agaciro"
-
- #. If we get here, declarations have been used in a for loop without
- #. the C99 for loop scope. This doesn't make much sense, so don't
- #. allow it.
- #: c-decl.c:6211
- #, fuzzy
- msgid "'for' loop initial declaration used outside C99 mode"
- msgstr "'Hanze Ubwoko"
-
- #: c-decl.c:6235
- #, fuzzy, c-format
- msgid "'struct %s' declared in 'for' loop initial declaration"
- msgstr "'in"
-
- #: c-decl.c:6238
- #, fuzzy, c-format
- msgid "'union %s' declared in 'for' loop initial declaration"
- msgstr "'Ihuza in"
-
- #: c-decl.c:6241
- #, fuzzy, c-format
- msgid "'enum %s' declared in 'for' loop initial declaration"
- msgstr "'in"
-
- #: c-decl.c:6249
- #, fuzzy
- msgid "%Jdeclaration of non-variable '%D' in 'for' loop initial declaration"
- msgstr "%JdeclarationBya IMPINDURAGACIRO in"
-
- #: c-decl.c:6252
- #, fuzzy
- msgid "%Jdeclaration of static variable '%D' in 'for' loop initial declaration"
- msgstr "%JdeclarationBya IMPINDURAGACIRO in"
-
- #: c-decl.c:6255
- #, fuzzy
- msgid "%Jdeclaration of 'extern' variable '%D' in 'for' loop initial declaration"
- msgstr "%JdeclarationBya IMPINDURAGACIRO in"
-
- #: c-decl.c:6568
- #, fuzzy
- msgid "%Jredefinition of global '%D'"
- msgstr "%JredefinitionBya"
-
- #: c-decl.c:6569
- msgid "%J'%D' previously defined here"
- msgstr ""
-
- #: c-format.c:94 c-format.c:210
- #, fuzzy
- msgid "format string has invalid operand number"
- msgstr "Imiterere Ikurikiranyanyuguti Sibyo Umubare"
-
- #: c-format.c:111
- #, fuzzy
- msgid "function does not return string type"
- msgstr "Umumaro OYA Garuka Ikurikiranyanyuguti Ubwoko"
-
- #: c-format.c:140
- #, fuzzy
- msgid "format string arg not a string type"
- msgstr "Imiterere Ikurikiranyanyuguti OYA a Ikurikiranyanyuguti Ubwoko"
-
- #: c-format.c:190
- #, fuzzy
- msgid "unrecognized format specifier"
- msgstr "Imiterere"
-
- #: c-format.c:203
- #, fuzzy, c-format
- msgid "`%s' is an unrecognized format function type"
- msgstr "`%s'ni Imiterere Umumaro Ubwoko"
-
- #: c-format.c:216
- #, fuzzy
- msgid "'...' has invalid operand number"
- msgstr "'...'Sibyo Umubare"
-
- #: c-format.c:224
- #, fuzzy
- msgid "format string arg follows the args to be formatted"
- msgstr "Imiterere Ikurikiranyanyuguti i Kuri Byahanaguwe"
-
- #: c-format.c:565 c-format.c:589
- #, fuzzy
- msgid "` ' flag"
- msgstr "`'Ibendera"
-
- #: c-format.c:565 c-format.c:589
- #, fuzzy
- msgid "the ` ' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:566 c-format.c:590 c-format.c:627 c-format.c:683
- #, fuzzy
- msgid "`+' flag"
- msgstr "`+'Ibendera"
-
- #: c-format.c:566 c-format.c:590 c-format.c:627
- #, fuzzy
- msgid "the `+' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:567 c-format.c:591 c-format.c:628 c-format.c:659
- #, fuzzy
- msgid "`#' flag"
- msgstr "`#'Ibendera"
-
- #: c-format.c:567 c-format.c:591 c-format.c:628
- #, fuzzy
- msgid "the `#' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:568 c-format.c:592 c-format.c:657
- #, fuzzy
- msgid "`0' flag"
- msgstr "`Ibendera"
-
- #: c-format.c:568 c-format.c:592
- #, fuzzy
- msgid "the `0' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:569 c-format.c:593 c-format.c:656 c-format.c:686
- #, fuzzy
- msgid "`-' flag"
- msgstr "`-'Ibendera"
-
- #: c-format.c:569 c-format.c:593
- #, fuzzy
- msgid "the `-' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:570 c-format.c:640
- #, fuzzy
- msgid "`'' flag"
- msgstr "`''Ibendera"
-
- #: c-format.c:570
- #, fuzzy
- msgid "the `'' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:571 c-format.c:641
- #, fuzzy
- msgid "`I' flag"
- msgstr "`Ibendera"
-
- #: c-format.c:571
- #, fuzzy
- msgid "the `I' printf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:572 c-format.c:594 c-format.c:638 c-format.c:660 c-format.c:687
- #: c-format.c:1802
- #, fuzzy
- msgid "field width"
- msgstr "Umwanya Ubugari"
-
- #: c-format.c:572 c-format.c:594
- #, fuzzy
- msgid "field width in printf format"
- msgstr "Umwanya Ubugari in Imiterere"
-
- #: c-format.c:573 c-format.c:595 c-format.c:618 c-format.c:629
- msgid "precision"
- msgstr ""
-
- #: c-format.c:573 c-format.c:595 c-format.c:618 c-format.c:629
- #, fuzzy
- msgid "precision in printf format"
- msgstr "in Imiterere"
-
- #: c-format.c:574 c-format.c:596 c-format.c:619 c-format.c:630 c-format.c:639
- #: c-format.c:690
- #, fuzzy
- msgid "length modifier"
- msgstr "Uburebure"
-
- #: c-format.c:574 c-format.c:596 c-format.c:619 c-format.c:630
- #, fuzzy
- msgid "length modifier in printf format"
- msgstr "Uburebure in Imiterere"
-
- #: c-format.c:636
- #, fuzzy
- msgid "assignment suppression"
- msgstr "Igenera"
-
- #: c-format.c:636
- #, fuzzy
- msgid "the assignment suppression scanf feature"
- msgstr "i Igenera"
-
- #: c-format.c:637
- #, fuzzy
- msgid "`a' flag"
- msgstr "`Ibendera"
-
- #: c-format.c:637
- #, fuzzy
- msgid "the `a' scanf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:638
- #, fuzzy
- msgid "field width in scanf format"
- msgstr "Umwanya Ubugari in Imiterere"
-
- #: c-format.c:639
- #, fuzzy
- msgid "length modifier in scanf format"
- msgstr "Uburebure in Imiterere"
-
- #: c-format.c:640
- #, fuzzy
- msgid "the `'' scanf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:641
- #, fuzzy
- msgid "the `I' scanf flag"
- msgstr "i Ibendera"
-
- #: c-format.c:655
- #, fuzzy
- msgid "`_' flag"
- msgstr "`_'Ibendera"
-
- #: c-format.c:655
- #, fuzzy
- msgid "the `_' strftime flag"
- msgstr "i Ibendera"
-
- #: c-format.c:656
- #, fuzzy
- msgid "the `-' strftime flag"
- msgstr "i Ibendera"
-
- #: c-format.c:657
- #, fuzzy
- msgid "the `0' strftime flag"
- msgstr "i Ibendera"
-
- #: c-format.c:658 c-format.c:682
- #, fuzzy
- msgid "`^' flag"
- msgstr "`^'Ibendera"
-
- #: c-format.c:658
- #, fuzzy
- msgid "the `^' strftime flag"
- msgstr "i Ibendera"
-
- #: c-format.c:659
- #, fuzzy
- msgid "the `#' strftime flag"
- msgstr "i Ibendera"
-
- #: c-format.c:660
- #, fuzzy
- msgid "field width in strftime format"
- msgstr "Umwanya Ubugari in Imiterere"
-
- #: c-format.c:661
- msgid "`E' modifier"
- msgstr ""
-
- #: c-format.c:661
- #, fuzzy
- msgid "the `E' strftime modifier"
- msgstr "i"
-
- #: c-format.c:662
- msgid "`O' modifier"
- msgstr ""
-
- #: c-format.c:662
- #, fuzzy
- msgid "the `O' strftime modifier"
- msgstr "i"
-
- #: c-format.c:663
- #, fuzzy
- msgid "the `O' modifier"
- msgstr "i"
-
- # svx/source\dialog\tabstpge.src:RID_SVXPAGE_TABULATOR.FL_FILLCHAR.text
- #: c-format.c:681
- #, fuzzy
- msgid "fill character"
- msgstr "Kuzuza inyuguti"
-
- #: c-format.c:681
- #, fuzzy
- msgid "fill character in strfmon format"
- msgstr "Kuzuza Inyuguti in Imiterere"
-
- #: c-format.c:682
- #, fuzzy
- msgid "the `^' strfmon flag"
- msgstr "i Ibendera"
-
- #: c-format.c:683
- #, fuzzy
- msgid "the `+' strfmon flag"
- msgstr "i Ibendera"
-
- #: c-format.c:684
- #, fuzzy
- msgid "`(' flag"
- msgstr "`('Ibendera"
-
- #: c-format.c:684
- #, fuzzy
- msgid "the `(' strfmon flag"
- msgstr "i Ibendera"
-
- #: c-format.c:685
- #, fuzzy
- msgid "`!' flag"
- msgstr "`!'Ibendera"
-
- #: c-format.c:685
- #, fuzzy
- msgid "the `!' strfmon flag"
- msgstr "i Ibendera"
-
- #: c-format.c:686
- #, fuzzy
- msgid "the `-' strfmon flag"
- msgstr "i Ibendera"
-
- #: c-format.c:687
- #, fuzzy
- msgid "field width in strfmon format"
- msgstr "Umwanya Ubugari in Imiterere"
-
- #: c-format.c:688
- #, fuzzy
- msgid "left precision"
- msgstr "Ibumoso:"
-
- #: c-format.c:688
- #, fuzzy
- msgid "left precision in strfmon format"
- msgstr "Ibumoso: in Imiterere"
-
- #: c-format.c:689
- #, fuzzy
- msgid "right precision"
- msgstr "Iburyo:"
-
- #: c-format.c:689
- #, fuzzy
- msgid "right precision in strfmon format"
- msgstr "Iburyo: in Imiterere"
-
- #: c-format.c:690
- #, fuzzy
- msgid "length modifier in strfmon format"
- msgstr "Uburebure in Imiterere"
-
- #: c-format.c:1107
- #, fuzzy, c-format
- msgid "function might be possible candidate for `%s' format attribute"
- msgstr "Umumaro kugirango Imiterere Ikiranga"
-
- #: c-format.c:1223 c-format.c:1244 c-format.c:2212
- #, fuzzy
- msgid "missing $ operand number in format"
- msgstr "Ibuze Umubare in Imiterere"
-
- #: c-format.c:1254
- #, fuzzy, c-format
- msgid "%s does not support %%n$ operand number formats"
- msgstr "%sOYA Gushigikira Umubare Imiterere"
-
- #: c-format.c:1261
- #, fuzzy
- msgid "operand number out of range in format"
- msgstr "Umubare Inyuma Bya Urutonde in Imiterere"
-
- #: c-format.c:1284
- #, fuzzy, c-format
- msgid "format argument %d used more than once in %s format"
- msgstr "Imiterere Birenzeho Rimwe in Imiterere"
-
- #: c-format.c:1331
- #, fuzzy, c-format
- msgid "format argument %d unused before used argument %d in $-style format"
- msgstr "Imiterere Kidakoreshwa Mbere in IMISUSIRE Imiterere"
-
- #: c-format.c:1429
- #, fuzzy
- msgid "format not a string literal, format string not checked"
- msgstr "Imiterere OYA a Ikurikiranyanyuguti Imiterere Ikurikiranyanyuguti OYA Ivivuwe"
-
- #: c-format.c:1443
- #, fuzzy
- msgid "format not a string literal and no format arguments"
- msgstr "Imiterere OYA a Ikurikiranyanyuguti Na Oya Imiterere ingingo"
-
- #: c-format.c:1445
- #, fuzzy
- msgid "format not a string literal, argument types not checked"
- msgstr "Imiterere OYA a Ikurikiranyanyuguti OYA Ivivuwe"
-
- #: c-format.c:1458
- #, fuzzy
- msgid "too many arguments for format"
- msgstr "ingingo kugirango Imiterere"
-
- #: c-format.c:1461
- #, fuzzy
- msgid "unused arguments in $-style format"
- msgstr "Kidakoreshwa ingingo in IMISUSIRE Imiterere"
-
- #: c-format.c:1464
- #, fuzzy, c-format
- msgid "zero-length %s format string"
- msgstr "Zeru Uburebure Imiterere Ikurikiranyanyuguti"
-
- #: c-format.c:1468
- #, fuzzy
- msgid "format is a wide character string"
- msgstr "Imiterere ni a Inyuguti Ikurikiranyanyuguti"
-
- #: c-format.c:1471
- #, fuzzy
- msgid "unterminated format string"
- msgstr "Imiterere Ikurikiranyanyuguti"
-
- #: c-format.c:1681
- #, fuzzy
- msgid "embedded `\\0' in format"
- msgstr "Gitsindiye in Imiterere"
-
- #: c-format.c:1696
- #, fuzzy, c-format
- msgid "spurious trailing `%%' in format"
- msgstr "in Imiterere"
-
- #: c-format.c:1735 c-format.c:1972
- #, fuzzy, c-format
- msgid "repeated %s in format"
- msgstr "byasubiyemo in Imiterere"
-
- #: c-format.c:1748
- #, fuzzy
- msgid "missing fill character at end of strfmon format"
- msgstr "Ibuze Kuzuza Inyuguti ku Impera Bya Imiterere"
-
- #: c-format.c:1787 c-format.c:1886 c-format.c:2166 c-format.c:2219
- #, fuzzy
- msgid "too few arguments for format"
- msgstr "ingingo kugirango Imiterere"
-
- #: c-format.c:1828
- #, fuzzy, c-format
- msgid "zero width in %s format"
- msgstr "Zeru Ubugari in Imiterere"
-
- #: c-format.c:1847
- #, fuzzy, c-format
- msgid "empty left precision in %s format"
- msgstr "ubusa Ibumoso: in Imiterere"
-
- #: c-format.c:1901
- #, fuzzy
- msgid "field precision"
- msgstr "Umwanya"
-
- #: c-format.c:1916
- #, fuzzy, c-format
- msgid "empty precision in %s format"
- msgstr "ubusa in Imiterere"
-
- #: c-format.c:1956
- #, fuzzy, c-format
- msgid "%s does not support the `%s' %s length modifier"
- msgstr "%sOYA Gushigikira i Uburebure"
-
- #: c-format.c:2006
- #, fuzzy
- msgid "conversion lacks type at end of format"
- msgstr "Ihindurangero Ubwoko ku Impera Bya Imiterere"
-
- #: c-format.c:2017
- #, fuzzy, c-format
- msgid "unknown conversion type character `%c' in format"
- msgstr "Kitazwi Ihindurangero Ubwoko Inyuguti in Imiterere"
-
- #: c-format.c:2020
- #, fuzzy, c-format
- msgid "unknown conversion type character 0x%x in format"
- msgstr "Kitazwi Ihindurangero Ubwoko Inyuguti in Imiterere"
-
- #: c-format.c:2027
- #, fuzzy, c-format
- msgid "%s does not support the `%%%c' %s format"
- msgstr "%sOYA Gushigikira i Imiterere"
-
- #: c-format.c:2043
- #, fuzzy, c-format
- msgid "%s used with `%%%c' %s format"
- msgstr "%sNa: Imiterere"
-
- #: c-format.c:2052
- #, fuzzy, c-format
- msgid "%s does not support %s"
- msgstr "%sOYA Gushigikira"
-
- #: c-format.c:2061
- #, fuzzy, c-format
- msgid "%s does not support %s with the `%%%c' %s format"
- msgstr "%sOYA Gushigikira Na: i Imiterere"
-
- #: c-format.c:2094
- #, fuzzy, c-format
- msgid "%s ignored with %s and `%%%c' %s format"
- msgstr "%sNa: Na Imiterere"
-
- #: c-format.c:2098
- #, fuzzy, c-format
- msgid "%s ignored with %s in %s format"
- msgstr "%sNa: in Imiterere"
-
- #: c-format.c:2104
- #, fuzzy, c-format
- msgid "use of %s and %s together with `%%%c' %s format"
- msgstr "Gukoresha Bya Na Na: Imiterere"
-
- #: c-format.c:2108
- #, fuzzy, c-format
- msgid "use of %s and %s together in %s format"
- msgstr "Gukoresha Bya Na in Imiterere"
-
- #: c-format.c:2127
- #, fuzzy, c-format
- msgid "`%%%c' yields only last 2 digits of year in some locales"
- msgstr "`%%%c'Iheruka 2. Bya Umwaka in"
-
- #: c-format.c:2130
- #, fuzzy, c-format
- msgid "`%%%c' yields only last 2 digits of year"
- msgstr "`%%%c'Iheruka 2. Bya Umwaka"
-
- #. The end of the format string was reached.
- #: c-format.c:2146
- #, fuzzy, c-format
- msgid "no closing `]' for `%%[' format"
- msgstr "Oya kugirango Imiterere"
-
- #: c-format.c:2159
- #, fuzzy, c-format
- msgid "use of `%s' length modifier with `%c' type character"
- msgstr "Gukoresha Bya Uburebure Na: Ubwoko Inyuguti"
-
- #: c-format.c:2180
- #, fuzzy, c-format
- msgid "%s does not support the `%%%s%c' %s format"
- msgstr "%sOYA Gushigikira i Imiterere"
-
- #: c-format.c:2195
- #, fuzzy
- msgid "operand number specified with suppressed assignment"
- msgstr "Umubare Na: Igenera"
-
- #: c-format.c:2197
- #, fuzzy
- msgid "operand number specified for format taking no argument"
- msgstr "Umubare kugirango Imiterere Oya"
-
- #: c-format.c:2309
- #, fuzzy, c-format
- msgid "writing through null pointer (arg %d)"
- msgstr "Gihinguranya NTAGIHARI Mweretsi"
-
- #: c-format.c:2318
- #, fuzzy, c-format
- msgid "reading through null pointer (arg %d)"
- msgstr "Gihinguranya NTAGIHARI Mweretsi"
-
- #: c-format.c:2338
- #, fuzzy, c-format
- msgid "writing into constant object (arg %d)"
- msgstr "Igikoresho"
-
- #: c-format.c:2348
- #, fuzzy, c-format
- msgid "extra type qualifiers in format argument (arg %d)"
- msgstr "Birenga Ubwoko in Imiterere"
-
- #: c-format.c:2355
- #, fuzzy, c-format
- msgid "format argument is not a pointer (arg %d)"
- msgstr "Imiterere ni OYA a Mweretsi"
-
- #: c-format.c:2357
- #, fuzzy, c-format
- msgid "format argument is not a pointer to a pointer (arg %d)"
- msgstr "Imiterere ni OYA a Mweretsi Kuri a Mweretsi"
-
- #: c-format.c:2433
- #, fuzzy
- msgid "pointer"
- msgstr "Mweretsi"
-
- #: c-format.c:2435
- #, fuzzy
- msgid "different type"
- msgstr "Ubwoko"
-
- #: c-format.c:2456
- #, fuzzy, c-format
- msgid "%s is not type %s (arg %d)"
- msgstr "%sni OYA Ubwoko"
-
- #: c-format.c:2459
- #, fuzzy, c-format
- msgid "%s format, %s arg (arg %d)"
- msgstr "%sImiterere"
-
- #: c-format.c:2704
- #, fuzzy
- msgid "args to be formatted is not '...'"
- msgstr "Kuri Byahanaguwe ni OYA"
-
- #: c-format.c:2713
- #, fuzzy
- msgid "strftime formats cannot format arguments"
- msgstr "Imiterere Imiterere ingingo"
-
- #: c-incpath.c:68
- #, fuzzy, c-format
- msgid "ignoring duplicate directory \"%s\"\n"
- msgstr "Gusubiramo bushyinguro"
-
- #: c-incpath.c:71
- #, fuzzy
- msgid " as it is a non-system directory that duplicates a system directory\n"
- msgstr "Nka ni a Sisitemu bushyinguro a Sisitemu"
-
- #: c-incpath.c:75
- #, fuzzy, c-format
- msgid "ignoring nonexistent directory \"%s\"\n"
- msgstr "bushyinguro"
-
- #: c-incpath.c:273
- #, fuzzy
- msgid "#include \"...\" search starts here:\n"
- msgstr "#Gushyiramo Gushaka"
-
- #: c-incpath.c:277
- #, fuzzy
- msgid "#include <...> search starts here:\n"
- msgstr "#Gushyiramo Gushaka"
-
- #: c-incpath.c:282
- #, fuzzy
- msgid "End of search list.\n"
- msgstr "Impera Bya Gushaka Urutonde"
-
- #: c-lex.c:240
- #, fuzzy
- msgid "badly nested C headers from preprocessor"
- msgstr "C Imitwe Bivuye"
-
- #: c-lex.c:281
- #, c-format
- msgid "ignoring #pragma %s %s"
- msgstr ""
-
- #. ... or not.
- #: c-lex.c:385
- #, fuzzy
- msgid "%Hstray '@' in program"
- msgstr "%Hstray'@'in Porogaramu"
-
- #: c-lex.c:393
- #, fuzzy, c-format
- msgid "missing terminating %c character"
- msgstr "Ibuze Inyuguti"
-
- #: c-lex.c:395
- #, fuzzy, c-format
- msgid "stray '%c' in program"
- msgstr "in Porogaramu"
-
- #: c-lex.c:397
- #, fuzzy, c-format
- msgid "stray '\\%o' in program"
- msgstr "in Porogaramu"
-
- #: c-lex.c:535
- #, fuzzy
- msgid "this decimal constant is unsigned only in ISO C90"
- msgstr "iyi NYACUMI ni Bitashizweho umukono in"
-
- #: c-lex.c:538
- #, fuzzy
- msgid "this decimal constant would be unsigned in ISO C90"
- msgstr "iyi NYACUMI Bitashizweho umukono in"
-
- #: c-lex.c:554
- #, fuzzy, c-format
- msgid "integer constant is too large for \"%s\" type"
- msgstr "Umubare wuzuye ni Binini kugirango Ubwoko"
-
- #: c-lex.c:620
- #, fuzzy, c-format
- msgid "floating constant exceeds range of \"%s\""
- msgstr "Bihindagurika Urutonde Bya"
-
- #: c-lex.c:696
- #, fuzzy
- msgid "traditional C rejects string constant concatenation"
- msgstr "C Ikurikiranyanyuguti"
-
- #: c-objc-common.c:82
- #, fuzzy
- msgid "%Jfunction '%F' can never be inlined because it is suppressed using -fno-inline"
- msgstr "%Jfunction'%F'Nta narimwe ni ikoresha Mumurongo"
-
- #: c-objc-common.c:92
- #, fuzzy
- msgid "%Jfunction '%F' can never be inlined because it might not be bound within this unit of translation"
- msgstr "%Jfunction'%F'Nta narimwe OYA muri iyi Igice: Bya Umwandiko wahinduwe ururimi"
-
- #: c-objc-common.c:100
- #, fuzzy
- msgid "%Jfunction '%F' can never be inlined because it uses attributes conflicting with inlining"
- msgstr "%Jfunction'%F'Nta narimwe Ibiranga Na:"
-
- #: c-objc-common.c:115
- #, fuzzy
- msgid "%Jfunction '%F' can never be inlined because it has pending sizes"
- msgstr "%Jfunction'%F'Nta narimwe"
-
- #: c-objc-common.c:128
- #, fuzzy
- msgid "%Jnested function '%F' can never be inlined because it has possibly saved pending sizes"
- msgstr "%JnestedUmumaro Nta narimwe"
-
- #: c-opts.c:141
- #, fuzzy, c-format
- msgid "no class name specified with \"%s\""
- msgstr "Oya ishuri Izina: Na:"
-
- #: c-opts.c:145
- #, fuzzy, c-format
- msgid "assertion missing after \"%s\""
- msgstr "Ibuze Nyuma"
-
- #: c-opts.c:150
- #, fuzzy, c-format
- msgid "macro name missing after \"%s\""
- msgstr "Makoro Izina: Ibuze Nyuma"
-
- #: c-opts.c:157
- #, fuzzy, c-format
- msgid "missing path after \"%s\""
- msgstr "Ibuze Inzira Nyuma"
-
- #: c-opts.c:166
- #, fuzzy, c-format
- msgid "missing filename after \"%s\""
- msgstr "Ibuze Izina ry'idosiye: Nyuma"
-
- #: c-opts.c:171
- #, fuzzy, c-format
- msgid "missing makefile target after \"%s\""
- msgstr "Ibuze Intego Nyuma"
-
- #: c-opts.c:299
- msgid "-I- specified twice"
- msgstr ""
-
- #: c-opts.c:700
- #, fuzzy, c-format
- msgid "switch \"%s\" is no longer supported"
- msgstr "Hindura ni Oya"
-
- #: c-opts.c:820
- #, fuzzy
- msgid "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
- msgstr "-Amarengayobora Na ni NONEAHA ku ku Mburabuzi"
-
- #: c-opts.c:986
- #, fuzzy
- msgid "output filename specified twice"
- msgstr "Ibisohoka Izina ry'idosiye:"
-
- #: c-opts.c:1115
- msgid "-Wformat-y2k ignored without -Wformat"
- msgstr ""
-
- #: c-opts.c:1117
- #, fuzzy
- msgid "-Wformat-extra-args ignored without -Wformat"
- msgstr "-Birenga"
-
- #: c-opts.c:1119
- #, fuzzy
- msgid "-Wformat-zero-length ignored without -Wformat"
- msgstr "-Zeru Uburebure"
-
- #: c-opts.c:1121
- msgid "-Wformat-nonliteral ignored without -Wformat"
- msgstr ""
-
- #: c-opts.c:1123
- #, fuzzy
- msgid "-Wformat-security ignored without -Wformat"
- msgstr "-Umutekano"
-
- #: c-opts.c:1125
- #, fuzzy
- msgid "-Wmissing-format-attribute ignored without -Wformat"
- msgstr "-Imiterere Ikiranga"
-
- #: c-opts.c:1139
- #, fuzzy, c-format
- msgid "opening output file %s: %m"
- msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
-
- #: c-opts.c:1144
- #, fuzzy, c-format
- msgid "too many filenames given. Type %s --help for usage"
- msgstr "Ifashayobora kugirango Ikoresha:"
-
- #: c-opts.c:1223
- #, fuzzy
- msgid "YYDEBUG not defined"
- msgstr "OYA"
-
- #: c-opts.c:1269
- #, fuzzy, c-format
- msgid "opening dependency file %s: %m"
- msgstr "Gufungura %s%S IDOSIYE"
-
- #: c-opts.c:1279
- #, fuzzy, c-format
- msgid "closing dependency file %s: %m"
- msgstr "IDOSIYE"
-
- #: c-opts.c:1282
- #, fuzzy, c-format
- msgid "when writing output to %s: %m"
- msgstr "Ryari: Ibisohoka Kuri"
-
- #: c-opts.c:1352
- #, fuzzy
- msgid "to generate dependencies you must specify either -M or -MM"
- msgstr "Kuri Cyangwa"
-
- #: c-opts.c:1412
- #, fuzzy
- msgid "