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 ****

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, --- 547,553 ----

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, *************** 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