Annotation of gcc/gcc.info-1, revision 1.1.1.2

1.1.1.2 ! root        1: This is Info file gcc.info, produced by Makeinfo-1.44 from the input
1.1       root        2: file gcc.texi.
                      3: 
                      4:    This file documents the use and the internals of the GNU compiler.
                      5: 
                      6:    Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
                      7: 
                      8:    Permission is granted to make and distribute verbatim copies of
                      9: this manual provided the copyright notice and this permission notice
                     10: are preserved on all copies.
                     11: 
                     12:    Permission is granted to copy and distribute modified versions of
                     13: this manual under the conditions for verbatim copying, provided also
                     14: that the section entitled "GNU General Public License" is included
                     15: exactly as in the original, and provided that the entire resulting
                     16: derived work is distributed under the terms of a permission notice
                     17: identical to this one.
                     18: 
                     19:    Permission is granted to copy and distribute translations of this
                     20: manual into another language, under the above conditions for modified
                     21: versions, except that the section entitled "GNU General Public
                     22: License" and this permission notice may be included in translations
                     23: approved by the Free Software Foundation instead of in the original
                     24: English.
                     25: 
                     26: 
                     27: File: gcc.info,  Node: Top,  Next: Copying,  Up: (DIR)
                     28: 
                     29: Introduction
                     30: ************
                     31: 
                     32:    This manual documents how to run, install and port the GNU C
                     33: compiler, as well as its new features and incompatibilities, and how
                     34: to report bugs.  It corresponds to GNU CC version 2.0.
                     35: 
                     36: * Menu:
                     37: 
                     38: * Copying::         GNU General Public License says
                     39:                      how you can copy and share GNU CC.
                     40: * Contributors::    People who have contributed to GNU CC.
                     41: * Boycott::        Protect your freedom--fight "look and feel".
                     42: * Invoking GCC::      Command options supported by `gcc'.
                     43: * Installation::    How to configure, compile and install GNU CC.
                     44: * Trouble::         If you have trouble installing GNU CC.
                     45: * Service::         How to find suppliers of support for GNU CC.
                     46: * Incompatibilities:: Incompatibilities of GNU CC.
                     47: * Extensions::      GNU extensions to the C language.
                     48: * Bugs::            How to report bugs (if you want to get them fixed).
                     49: * VMS::             Using GNU CC on VMS.
                     50: * Portability::     Goals of GNU CC's portability features.
                     51: * Interface::       Function-call interface of GNU CC output.
                     52: * Passes::          Order of passes, what they do, and what each file is for.
                     53: * RTL::             The intermediate representation that most passes work on.
                     54: * Machine Desc::    How to write machine description instruction patterns.
1.1.1.2 ! root       55: * Target Macros::   How to write the machine description C macros.
1.1       root       56: * Config::          Writing the `xm-MACHINE.h' file.
                     57: * Index::          Index of concepts and symbol names.
                     58: 
                     59: 
                     60: File: gcc.info,  Node: Copying,  Next: Contributors,  Prev: Top,  Up: Top
                     61: 
                     62: GNU GENERAL PUBLIC LICENSE
                     63: **************************
                     64: 
                     65:                            Version 2, June 1991
                     66: 
                     67:      Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                     68:      675 Mass Ave, Cambridge, MA 02139, USA
                     69:      
                     70:      Everyone is permitted to copy and distribute verbatim copies
                     71:      of this license document, but changing it is not allowed.
                     72: 
                     73: Preamble
                     74: ========
                     75: 
                     76:    The licenses for most software are designed to take away your
                     77: freedom to share and change it.  By contrast, the GNU General Public
                     78: License is intended to guarantee your freedom to share and change free
                     79: software--to make sure the software is free for all its users.  This
                     80: General Public License applies to most of the Free Software
                     81: Foundation's software and to any other program whose authors commit to
                     82: using it.  (Some other Free Software Foundation software is covered by
                     83: the GNU Library General Public License instead.)  You can apply it to
                     84: your programs, too.
                     85: 
                     86:    When we speak of free software, we are referring to freedom, not
                     87: price.  Our General Public Licenses are designed to make sure that you
                     88: have the freedom to distribute copies of free software (and charge for
                     89: this service if you wish), that you receive source code or can get it
                     90: if you want it, that you can change the software or use pieces of it
                     91: in new free programs; and that you know you can do these things.
                     92: 
                     93:    To protect your rights, we need to make restrictions that forbid
                     94: anyone to deny you these rights or to ask you to surrender the rights. 
                     95: These restrictions translate to certain responsibilities for you if you
                     96: distribute copies of the software, or if you modify it.
                     97: 
                     98:    For example, if you distribute copies of such a program, whether
                     99: gratis or for a fee, you must give the recipients all the rights that
                    100: you have.  You must make sure that they, too, receive or can get the
                    101: source code.  And you must show them these terms so they know their
                    102: rights.
                    103: 
                    104:    We protect your rights with two steps: (1) copyright the software,
                    105: and (2) offer you this license which gives you legal permission to
                    106: copy, distribute and/or modify the software.
                    107: 
                    108:    Also, for each author's protection and ours, we want to make certain
                    109: that everyone understands that there is no warranty for this free
                    110: software.  If the software is modified by someone else and passed on,
                    111: we want its recipients to know that what they have is not the
                    112: original, so that any problems introduced by others will not reflect
                    113: on the original authors' reputations.
                    114: 
                    115:    Finally, any free program is threatened constantly by software
                    116: patents.  We wish to avoid the danger that redistributors of a free
                    117: program will individually obtain patent licenses, in effect making the
                    118: program proprietary.  To prevent this, we have made it clear that any
                    119: patent must be licensed for everyone's free use or not licensed at all.
                    120: 
                    121:    The precise terms and conditions for copying, distribution and
                    122: modification follow.
                    123: 
                    124:       TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
                    125: 
                    126:   1. This License applies to any program or other work which contains
                    127:      a notice placed by the copyright holder saying it may be
                    128:      distributed under the terms of this General Public License.  The
                    129:      "Program", below, refers to any such program or work, and a "work
                    130:      based on the Program" means either the Program or any derivative
                    131:      work under copyright law: that is to say, a work containing the
                    132:      Program or a portion of it, either verbatim or with modifications
                    133:      and/or translated into another language.  (Hereinafter,
                    134:      translation is included without limitation in the term
                    135:      "modification".)  Each licensee is addressed as "you".
                    136: 
                    137:         Activities other than copying, distribution and modification
                    138:      are not covered by this License; they are outside its scope.  The
                    139:      act of running the Program is not restricted, and the output from
                    140:      the Program is covered only if its contents constitute a work
                    141:      based on the Program (independent of having been made by running
                    142:      the Program).  Whether that is true depends on what the Program
                    143:      does.
                    144: 
                    145:   2. You may copy and distribute verbatim copies of the Program's
                    146:      source code as you receive it, in any medium, provided that you
                    147:      conspicuously and appropriately publish on each copy an
                    148:      appropriate copyright notice and disclaimer of warranty; keep
                    149:      intact all the notices that refer to this License and to the
                    150:      absence of any warranty; and give any other recipients of the
                    151:      Program a copy of this License along with the Program.
                    152: 
                    153:         You may charge a fee for the physical act of transferring a
                    154:      copy, and you may at your option offer warranty protection in
                    155:      exchange for a fee.
                    156: 
                    157:   3. You may modify your copy or copies of the Program or any portion
                    158:      of it, thus forming a work based on the Program, and copy and
                    159:      distribute such modifications or work under the terms of Section 1
                    160:      above, provided that you also meet all of these conditions:
                    161: 
                    162:        a. You must cause the modified files to carry prominent notices
                    163:           stating that you changed the files and the date of any
                    164:           change.
                    165: 
                    166:        b. You must cause any work that you distribute or publish, that
                    167:           in whole or in part contains or is derived from the Program
                    168:           or any part thereof, to be licensed as a whole at no charge
                    169:           to all third parties under the terms of this License.
                    170: 
                    171:        c. If the modified program normally reads commands interactively
                    172:           when run, you must cause it, when started running for such
                    173:           interactive use in the most ordinary way, to print or
                    174:           display an announcement including an appropriate copyright
                    175:           notice and a notice that there is no warranty (or else,
                    176:           saying that you provide a warranty) and that users may
                    177:           redistribute the program under these conditions, and telling
                    178:           the user how to view a copy of this License.  (Exception: if
                    179:           the Program itself is interactive but does not normally
                    180:           print such an announcement, your work based on the Program
                    181:           is not required to print an announcement.)
                    182: 
                    183:         These requirements apply to the modified work as a whole.  If
                    184:      identifiable sections of that work are not derived from the
                    185:      Program, and can be reasonably considered independent and
                    186:      separate works in themselves, then this License, and its terms,
                    187:      do not apply to those sections when you distribute them as
                    188:      separate works.  But when you distribute the same sections as
                    189:      part of a whole which is a work based on the Program, the
                    190:      distribution of the whole must be on the terms of this License,
                    191:      whose permissions for other licensees extend to the entire whole,
                    192:      and thus to each and every part regardless of who wrote it.
                    193: 
                    194:         Thus, it is not the intent of this section to claim rights or
                    195:      contest your rights to work written entirely by you; rather, the
                    196:      intent is to exercise the right to control the distribution of
                    197:      derivative or collective works based on the Program.
                    198: 
                    199:         In addition, mere aggregation of another work not based on the
                    200:      Program with the Program (or with a work based on the Program) on
                    201:      a volume of a storage or distribution medium does not bring the
                    202:      other work under the scope of this License.
                    203: 
                    204:   4. You may copy and distribute the Program (or a work based on it,
                    205:      under Section 2) in object code or executable form under the
                    206:      terms of Sections 1 and 2 above provided that you also do one of
                    207:      the following:
                    208: 
                    209:        a. Accompany it with the complete corresponding machine-readable
                    210:           source code, which must be distributed under the terms of
                    211:           Sections 1 and 2 above on a medium customarily used for
                    212:           software interchange; or,
                    213: 
                    214:        b. Accompany it with a written offer, valid for at least three
                    215:           years, to give any third party, for a charge no more than
                    216:           your cost of physically performing source distribution, a
                    217:           complete machine-readable copy of the corresponding source
                    218:           code, to be distributed under the terms of Sections 1 and 2
                    219:           above on a medium customarily used for software interchange;
                    220:           or,
                    221: 
                    222:        c. Accompany it with the information you received as to the
                    223:           offer to distribute corresponding source code.  (This
                    224:           alternative is allowed only for noncommercial distribution
                    225:           and only if you received the program in object code or
                    226:           executable form with such an offer, in accord with
                    227:           Subsection b above.)
                    228: 
                    229:         The source code for a work means the preferred form of the
                    230:      work for making modifications to it.  For an executable work,
                    231:      complete source code means all the source code for all modules it
                    232:      contains, plus any associated interface definition files, plus
                    233:      the scripts used to control compilation and installation of the
                    234:      executable.  However, as a special exception, the source code
                    235:      distributed need not include anything that is normally
                    236:      distributed (in either source or binary form) with the major
                    237:      components (compiler, kernel, and so on) of the operating system
                    238:      on which the executable runs, unless that component itself
                    239:      accompanies the executable.
                    240: 
                    241:         If distribution of executable or object code is made by
                    242:      offering access to copy from a designated place, then offering
                    243:      equivalent access to copy the source code from the same place
                    244:      counts as distribution of the source code, even though third
                    245:      parties are not compelled to copy the source along with the
                    246:      object code.
                    247: 
                    248:   5. You may not copy, modify, sublicense, or distribute the Program
                    249:      except as expressly provided under this License.  Any attempt
                    250:      otherwise to copy, modify, sublicense or distribute the Program is
                    251:      void, and will automatically terminate your rights under this
                    252:      License.  However, parties who have received copies, or rights,
                    253:      from you under this License will not have their licenses
                    254:      terminated so long as such parties remain in full compliance.
                    255: 
                    256:   6. You are not required to accept this License, since you have not
                    257:      signed it.  However, nothing else grants you permission to modify
                    258:      or distribute the Program or its derivative works.  These actions
                    259:      are prohibited by law if you do not accept this License. 
                    260:      Therefore, by modifying or distributing the Program (or any work
                    261:      based on the Program), you indicate your acceptance of this
                    262:      License to do so, and all its terms and conditions for copying,
                    263:      distributing or modifying the Program or works based on it.
                    264: 
                    265:   7. Each time you redistribute the Program (or any work based on the
                    266:      Program), the recipient automatically receives a license from the
                    267:      original licensor to copy, distribute or modify the Program
                    268:      subject to these terms and conditions.  You may not impose any
                    269:      further restrictions on the recipients' exercise of the rights
                    270:      granted herein.  You are not responsible for enforcing compliance
                    271:      by third parties to this License.
                    272: 
                    273:   8. If, as a consequence of a court judgment or allegation of patent
                    274:      infringement or for any other reason (not limited to patent
                    275:      issues), conditions are imposed on you (whether by court order,
                    276:      agreement or otherwise) that contradict the conditions of this
                    277:      License, they do not excuse you from the conditions of this
                    278:      License.  If you cannot distribute so as to satisfy
                    279:      simultaneously your obligations under this License and any other
                    280:      pertinent obligations, then as a consequence you may not
                    281:      distribute the Program at all.  For example, if a patent license
                    282:      would not permit royalty-free redistribution of the Program by
                    283:      all those who receive copies directly or indirectly through you,
                    284:      then the only way you could satisfy both it and this License
                    285:      would be to refrain entirely from distribution of the Program.
                    286: 
                    287:         If any portion of this section is held invalid or
                    288:      unenforceable under any particular circumstance, the balance of
                    289:      the section is intended to apply and the section as a whole is
                    290:      intended to apply in other circumstances.
                    291: 
                    292:         It is not the purpose of this section to induce you to
                    293:      infringe any patents or other property right claims or to contest
                    294:      validity of any such claims; this section has the sole purpose of
                    295:      protecting the integrity of the free software distribution
                    296:      system, which is implemented by public license practices.  Many
                    297:      people have made generous contributions to the wide range of
                    298:      software distributed through that system in reliance on
                    299:      consistent application of that system; it is up to the
                    300:      author/donor to decide if he or she is willing to distribute
                    301:      software through any other system and a licensee cannot impose
                    302:      that choice.
                    303: 
                    304:         This section is intended to make thoroughly clear what is
                    305:      believed to be a consequence of the rest of this License.
                    306: 
                    307:   9. If the distribution and/or use of the Program is restricted in
                    308:      certain countries either by patents or by copyrighted interfaces,
                    309:      the original copyright holder who places the Program under this
                    310:      License may add an explicit geographical distribution limitation
                    311:      excluding those countries, so that distribution is permitted only
                    312:      in or among countries not thus excluded.  In such case, this
                    313:      License incorporates the limitation as if written in the body of
                    314:      this License.
                    315: 
                    316:  10. The Free Software Foundation may publish revised and/or new
                    317:      versions of the General Public License from time to time.  Such
                    318:      new versions will be similar in spirit to the present version,
                    319:      but may differ in detail to address new problems or concerns.
                    320: 
                    321:         Each version is given a distinguishing version number.  If the
                    322:      Program specifies a version number of this License which applies
                    323:      to it and "any later version", you have the option of following
                    324:      the terms and conditions either of that version or of any later
                    325:      version published by the Free Software Foundation.  If the
                    326:      Program does not specify a version number of this License, you
                    327:      may choose any version ever published by the Free Software
                    328:      Foundation.
                    329: 
                    330:  11. If you wish to incorporate parts of the Program into other free
                    331:      programs whose distribution conditions are different, write to
                    332:      the author to ask for permission.  For software which is
                    333:      copyrighted by the Free Software Foundation, write to the Free
                    334:      Software Foundation; we sometimes make exceptions for this.  Our
                    335:      decision will be guided by the two goals of preserving the free
                    336:      status of all derivatives of our free software and of promoting
                    337:      the sharing and reuse of software generally.
                    338: 
                    339:                                   NO WARRANTY
                    340: 
                    341:  12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
                    342:      WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
                    343:      LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
                    344:      HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
                    345:      WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
                    346:      NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                    347:      FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
                    348:      QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
                    349:      PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
                    350:      SERVICING, REPAIR OR CORRECTION.
                    351: 
                    352:  13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
                    353:      WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
                    354:      MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
                    355:      LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
                    356:      INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
                    357:      INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
                    358:      OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
                    359:      YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
                    360:      ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
                    361:      ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
                    362: 
                    363:                         END OF TERMS AND CONDITIONS
                    364: 
                    365: Appendix: How to Apply These Terms to Your New Programs
                    366: =======================================================
                    367: 
                    368:    If you develop a new program, and you want it to be of the greatest
                    369: possible use to the public, the best way to achieve this is to make it
                    370: free software which everyone can redistribute and change under these
                    371: terms.
                    372: 
                    373:    To do so, attach the following notices to the program.  It is safest
                    374: to attach them to the start of each source file to most effectively
                    375: convey the exclusion of warranty; and each file should have at least
                    376: the "copyright" line and a pointer to where the full notice is found.
                    377: 
                    378:      ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
                    379:      Copyright (C) 19YY  NAME OF AUTHOR
                    380:      
                    381:      This program is free software; you can redistribute it and/or modify
                    382:      it under the terms of the GNU General Public License as published by
                    383:      the Free Software Foundation; either version 2 of the License, or
                    384:      (at your option) any later version.
                    385:      
                    386:      This program is distributed in the hope that it will be useful,
                    387:      but WITHOUT ANY WARRANTY; without even the implied warranty of
                    388:      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                    389:      GNU General Public License for more details.
                    390:      
                    391:      You should have received a copy of the GNU General Public License
                    392:      along with this program; if not, write to the Free Software
                    393:      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                    394: 
                    395:    Also add information on how to contact you by electronic and paper
                    396: mail.
                    397: 
                    398:    If the program is interactive, make it output a short notice like
                    399: this when it starts in an interactive mode:
                    400: 
                    401:      Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
                    402:      Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
                    403:      This is free software, and you are welcome to redistribute it
                    404:      under certain conditions; type `show c' for details.
                    405: 
                    406:    The hypothetical commands `show w' and `show c' should show the
                    407: appropriate parts of the General Public License.  Of course, the
                    408: commands you use may be called something other than `show w' and `show
                    409: c'; they could even be mouse-clicks or menu items--whatever suits your
                    410: program.
                    411: 
                    412:    You should also get your employer (if you work as a programmer) or
                    413: your school, if any, to sign a "copyright disclaimer" for the program,
                    414: if necessary.  Here is a sample; alter the names:
                    415: 
                    416:      Yoyodyne, Inc., hereby disclaims all copyright interest in the program
                    417:      `Gnomovision' (which makes passes at compilers) written by James Hacker.
                    418:      
                    419:      SIGNATURE OF TY COON, 1 April 1989
                    420:      Ty Coon, President of Vice
                    421: 
                    422:    This General Public License does not permit incorporating your
                    423: program into proprietary programs.  If your program is a subroutine
                    424: library, you may consider it more useful to permit linking proprietary
                    425: applications with the library.  If this is what you want to do, use
                    426: the GNU Library General Public License instead of this License.
                    427: 
                    428: 
                    429: File: gcc.info,  Node: Contributors,  Next: Boycott,  Prev: Copying,  Up: Top
                    430: 
                    431: Contributors to GNU CC
                    432: **********************
                    433: 
                    434:    In addition to Richard Stallman, several people have written parts
                    435: of GNU CC.
                    436: 
                    437:    * The idea of using RTL and some of the optimization ideas came
1.1.1.2 ! root      438:      from the program PO written at the University of Arizona by Jack
1.1       root      439:      Davidson and Christopher Fraser.  See "Register Allocation and
                    440:      Exhaustive Peephole Optimization", Software Practice and
                    441:      Experience 14 (9), Sept. 1984, 857-866.
                    442: 
                    443:    * Paul Rubin wrote most of the preprocessor.
                    444: 
                    445:    * Leonard Tower wrote parts of the parser, RTL generator, and RTL
                    446:      definitions, and of the Vax machine description.
                    447: 
                    448:    * Ted Lemon wrote parts of the RTL reader and printer.
                    449: 
                    450:    * Jim Wilson implemented loop strength reduction and some other
                    451:      loop optimizations.
                    452: 
                    453:    * Nobuyuki Hikichi of Software Research Associates, Tokyo,
                    454:      contributed the support for the Sony NEWS machine.
                    455: 
                    456:    * Charles LaBrec contributed the support for the Integrated
                    457:      Solutions 68020 system.
                    458: 
                    459:    * Michael Tiemann of Cygnus Support wrote the front end for C++, as
                    460:      well as the support for inline functions and instruction
                    461:      scheduling.  Also the descriptions of the National Semiconductor
                    462:      32000 series cpu, the SPARC cpu and part of the Motorola 88000
                    463:      cpu.
                    464: 
                    465:    * Jan Stein of the Chalmers Computer Society provided support for
                    466:      Genix, as well as part of the 32000 machine description.
                    467: 
                    468:    * Randy Smith finished the Sun FPA support.
                    469: 
                    470:    * Robert Brown implemented the support for Encore 32000 systems.
                    471: 
                    472:    * David Kashtan of SRI adapted GNU CC to the Vomit-Making System
                    473:      (VMS).
                    474: 
                    475:    * Alex Crain provided changes for the 3b1.
                    476: 
                    477:    * Greg Satz and Chris Hanson assisted in making GNU CC work on
                    478:      HP-UX for the 9000 series 300.
                    479: 
                    480:    * William Schelter did most of the work on the Intel 80386 support.
                    481: 
                    482:    * Christopher Smith did the port for Convex machines.
                    483: 
                    484:    * Paul Petersen wrote the machine description for the Alliant FX/8.
                    485: 
                    486:    * Alain Lichnewsky ported GNU CC to the Mips cpu.
                    487: 
                    488:    * Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the
                    489:      Tahoe.
                    490: 
                    491:    * Jonathan Stone wrote the machine description for the Pyramid
                    492:      computer.
                    493: 
                    494:    * Richard Kenner of New York University wrote the machine
                    495:      descriptions for the AMD 29000, the IBM RT PC, and the IBM
                    496:      RS/6000 as well as the support for instruction attributes.  He
                    497:      also made changes to better support RISC processors including
                    498:      changes to common subexpression elimination, strength reduction,
                    499:      function calling sequence handling, and condition code support,
                    500:      in addition to generalizing the code for frame pointer
                    501:      elimination.
                    502: 
                    503:    * Richard Kenner and Michael Tiemann jointly developed reorg.c, the
                    504:      delay slot scheduler.
                    505: 
                    506:    * Mike Meissner and Tom Wood of Data General finished the port to
                    507:      the Motorola 88000.
                    508: 
                    509:    * Masanobu Yuhara of Fujitsu Laboratories implemented the machine
                    510:      description for the Tron architecture (specifically, the Gmicro).
                    511: 
                    512:    * NeXT, Inc. donated the front end that supports the Objective C
                    513:      language.
                    514: 
                    515:    * James van Artsdalen wrote the code that makes efficient use of
                    516:      the Intel 80387 register stack.
                    517: 
                    518:    * Mike Meissner at the Open Software Foundation finished the port
                    519:      to the MIPS cpu, including adding ECOFF debug support.
                    520: 
                    521:    * Ron Guilmette implemented the protoize and unprotoize tools, the
                    522:      support for Dwarf symbolic debugging information, and much of the
                    523:      support for System V Release 4.  He has also worked heavily on
                    524:      the Intel 386 and 860 support.
                    525: 
1.1.1.2 ! root      526:    * Torbjorn Granlund of the Swedish Institute of Computer Science
        !           527:      implemented multiply-by-constant optimization and better long long
        !           528:      support, and improved leaf function register allocation.
        !           529: 
1.1       root      530: 
                    531: File: gcc.info,  Node: Boycott,  Next: Invoking GCC,  Prev: Contributors,  Up: Top
                    532: 
                    533: Protect Your Freedom--Fight "Look And Feel"
                    534: *******************************************
                    535: 
                    536:      This section is a political message from the League for
                    537:      Programming Freedom to the users of GNU CC.  It is included here
                    538:      as an expression of support for the League on the part of the
                    539:      Free Software Foundation.
                    540: 
1.1.1.2 ! root      541:    Apple and Lotus are trying to create a new form of legal monopoly: a
        !           542: copyright on a class of user interfaces.  These monopolies would cause
        !           543: serious problems for users and developers of computer software and
        !           544: systems.  Xerox, too, has tried to make a monopoly for itself on window
        !           545: systems; their suit against Apple was thrown out on a technicality, but
        !           546: Xerox has not said anything to indicate it wouldn't try again.
1.1       root      547: 
                    548:    Until a few years ago, the law seemed clear: no one could restrict
                    549: others from using a user interface; programmers were free to implement
                    550: any interface they chose.  Imitating interfaces, sometimes with
                    551: changes, was standard practice in the computer field.  The interfaces
                    552: we know evolved gradually in this way; for example, the Macintosh user
                    553: interface drew ideas from the Xerox interface, which in turn drew on
                    554: work done at Stanford and SRI.  1-2-3 imitated VisiCalc, and dBase
                    555: imitated a database program from JPL.
                    556: 
                    557:    Most computer companies, and nearly all computer users, were happy
                    558: with this state of affairs.  The companies that are suing say it does
                    559: not offer "enough incentive" to develop their products, but they must
                    560: have considered it "enough" when they made their decision to do so.  It
                    561: seems they are not satisfied with the opportunity to continue to
                    562: compete in the marketplace--not even with a head start.
                    563: 
1.1.1.2 ! root      564:    If companies like Xerox, Lotus, and Apple are permitted to make law
        !           565: through the courts, the precedent will hobble the software industry:
1.1       root      566: 
                    567:    * Gratuitous incompatibilities will burden users.  Imagine if each
                    568:      car manufacturer had to arrange the pedals in a different order.
                    569: 
                    570:    * Software will become and remain more expensive.  Users will be
                    571:      "locked in" to proprietary interfaces, for which there is no real
                    572:      competition.
                    573: 
                    574:    * Large companies have an unfair advantage wherever lawsuits become
                    575:      commonplace.  Since they can easily afford to sue, they can
                    576:      intimidate small companies with threats even when they don't
                    577:      really have a case.
                    578: 
                    579:    * User interface improvements will come slower, since incremental
                    580:      evolution through creative imitation will no longer be permitted.
                    581: 
                    582:    * Even Apple, etc., will find it harder to make improvements if
                    583:      they can no longer adapt the good ideas that others introduce, for
                    584:      fear of weakening their own legal positions.  Some users suggest
                    585:      that this stagnation may already have started.
                    586: 
                    587:    * If you use GNU software, you might find it of some concern that
                    588:      user interface copyright will make it hard for the Free Software
                    589:      Foundation to develop programs compatible with the interfaces
                    590:      that you already know.
                    591: 
                    592:    To protect our freedom from lawsuits like these, a group of
                    593: programmers and users have formed a new grass-roots political
                    594: organization, the League for Programming Freedom.
                    595: 
                    596:    The purpose of the League is to oppose new monopolistic practices
                    597: such as user-interface copyright and software patents; it calls for a
                    598: return to the legal policies of the recent past, in which these
                    599: practices were not allowed.  The League is not concerned with free
                    600: software as an issue, and not affiliated with the Free Software
                    601: Foundation.
                    602: 
                    603:    The League's membership rolls include John McCarthy, inventor of
                    604: Lisp, Marvin Minsky, founder of the Artificial Intelligence lab, Guy L. 
                    605: Steele, Jr., author of well-known books on Lisp and C, as well as
                    606: Richard Stallman, the developer of GNU CC.  Please join and add your
                    607: name to the list.  Membership dues in the League are $42 per year for
                    608: programmers, managers and professionals; $10.50 for students; $21 for
                    609: others.
                    610: 
                    611:    The League needs both activist members and members who only pay
                    612: their dues.
                    613: 
                    614:    To join, or for more information, phone (617) 492-0023 or write to:
                    615: 
                    616:      League for Programming Freedom
                    617:      1 Kendall Square #143
                    618:      P.O. Box 9171
                    619:      Cambridge, MA 02139
                    620: 
                    621:    You can also send electronic mail to `[email protected]'.
                    622: 
                    623:    Here are some suggestions from the League for things you can do to
                    624: protect your freedom to write programs:
                    625: 
                    626:    * Don't buy from Xerox, Lotus or Apple.  Buy from their competitors
                    627:      or from the defendants they are suing.
                    628: 
                    629:    * Don't develop software to work with the systems made by these
                    630:      companies.
                    631: 
                    632:    * Port your existing software to competing systems, so that you
                    633:      encourage users to switch.
                    634: 
                    635:    * Write letters to company presidents to let them know their conduct
                    636:      is unacceptable.
                    637: 
                    638:    * Tell your friends and colleagues about this issue and how it
                    639:      threatens to ruin the computer industry.
                    640: 
                    641:    * Above all, don't work for the look-and-feel plaintiffs, and don't
                    642:      accept contracts from them.
                    643: 
                    644:    * Write to Congress to explain the importance of this issue.
                    645: 
                    646:           House Subcommittee on Intellectual Property
                    647:           2137 Rayburn Bldg
                    648:           Washington, DC 20515
                    649:           
                    650:           Senate Subcommittee on Patents, Trademarks and Copyrights
                    651:           United States Senate
                    652:           Washington, DC 20510
                    653: 
                    654:      (These committees have received lots of mail already; let's give
                    655:      them even more.)
                    656: 
                    657:    Express your opinion!  You can make a difference.
                    658: 
                    659: 
                    660: File: gcc.info,  Node: Invoking GCC,  Next: Installation,  Prev: Boycott,  Up: Top
                    661: 
                    662: GNU CC Command Options
                    663: **********************
                    664: 
                    665:    When you invoke GNU CC, it normally does preprocessing, compilation,
                    666: assembly and linking.  The "overall options" allow you to stop this
                    667: process at an intermediate stage.  For example, the `-c' option says
                    668: not to run the linker.  Then the output consists of object files
                    669: output by the assembler.
                    670: 
                    671:    Other options are passed on to one stage of processing.  Some
                    672: options control the preprocessor and others the compiler itself.  Yet
                    673: other options control the assembler and linker; most of these are not
                    674: documented here, since you rarely need to use any of them.
                    675: 
                    676:    The GNU C compiler uses a command syntax much like the Unix C
                    677: compiler.  The `gcc' program accepts options and file names as
                    678: operands.  Multiple single-letter options may *not* be grouped: `-dr'
                    679: is very different from `-d -r'.
                    680: 
                    681:    You can mix options and other arguments.  For the most part, the
                    682: order you use doesn't matter; `gcc' reorders the command-line options
                    683: so that the choices specified by option flags are applied to all input
                    684: files.  Order does matter when you use several options of the same
                    685: kind; for example, if you specify `-L' more than once, the directories
                    686: are searched in the order specified.
                    687: 
                    688:    Many options have long names starting with `-f' or with `-W'--for
                    689: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on. 
                    690: Most of these have both positive and negative forms; the negative form
                    691: of `-ffoo' would be `-fno-foo'.  This manual documents only one of
                    692: these two forms, whichever one is not the default.
                    693: 
                    694:    Here is a summary of all the options, grouped by type. 
                    695: Explanations are in the following sections.
                    696: 
                    697: *Overall Options*
                    698:      *Note Options Controlling the Kind of Output: Overall Options.
                    699:           -c  -S  -E  -o FILE  -pipe  -v  -x LANGUAGE
                    700: 
                    701: *Language Options*
                    702:      *Note Options Controlling Dialect: Dialect Options.
                    703:           -ansi  -fbuiltin  -fcond-mismatch  -fno-asm
                    704:           -fsigned-bitfields  -fsigned-char
                    705:           -funsigned-bitfields  -funsigned-char  -fwritable-strings
                    706:           -traditional  -traditional-cpp  -trigraphs
                    707: 
                    708: *Warning Options*
                    709:      *Note Options to Request or Suppress Warnings: Warning Options.
                    710:           -fsyntax-only  -pedantic  -pedantic-errors
                    711:           -w  -W  -Wall  -Waggregate-return
                    712:           -Wcast-align  -Wcast-qual  -Wcomment  -Wconversion  -Werror
1.1.1.2 ! root      713:           -Wformat  -Wid-clash-LEN  -Wimplicit  -Wimport
        !           714:           -Winline -Wmissing-prototypes
        !           715:           -Wparentheses  -Wpointer-arith  -Wreturn-type  -Wshadow
1.1       root      716:           -Wstrict-prototypes  -Wswitch  -Wtraditional  -Wtrigraphs
                    717:           -Wuninitialized  -Wunused  -Wwrite-strings  -Wchar-subscripts
                    718: 
                    719: *Debugging Options*
                    720:      *Note Options for Debugging Your Program or GCC: Debugging
                    721:      Options.
                    722:           -a  -dLETTERS  -fpretend-float
1.1.1.2 ! root      723:           -g  -gLEVEL -ggdb  -gdwarf
        !           724:           -gstabs  -gstabs+  -gcoff -gxcoff
1.1       root      725:           -p  -pg  -save-temps
                    726: 
                    727: *Optimization Options*
                    728:      *Note Options that Control Optimization: Optimize Options.
                    729:           -fcaller-saves  -fcse-follow-jumps  -fdelayed-branch
                    730:           -fexpensive-optimizations  -ffloat-store  -fforce-addr  -fforce-mem
                    731:           -finline  -finline-functions  -fkeep-inline-functions
                    732:           -fno-defer-pop  -fno-function-cse  -fomit-frame-pointer
                    733:           -frerun-cse-after-loop  -fschedule-insns  -fschedule-insns2
                    734:           -fstrength-reduce  -fthread-jumps
                    735:           -funroll-all-loops  -funroll-loops
                    736:           -O  -O2
                    737: 
                    738: *Preprocessor Options*
                    739:      *Note Options Controlling the Preprocessor: Preprocessor Options.
                    740:           -C  -dD  -dM  -dN
                    741:           -DMACRO[=DEFN]  -E  -H
                    742:           -include FILE  -imacros FILE
                    743:           -M  -MD  -MM  -MMD  -nostdinc  -P  -trigraphs  -UMACRO
                    744: 
                    745: *Linker Options*
                    746:      *Note Options for Linking: Link Options.
                    747:           OBJECT-FILE-NAME
                    748:           -lLIBRARY  -nostdlib  -static
                    749: 
                    750: *Directory Options*
                    751:      *Note Options for Directory Search: Directory Options.
                    752:           -BPREFIX  -IDIR  -I-  -LDIR
                    753: 
                    754: *Target Options*
                    755:      *Note Target Machine and Compiler Version: Target Options.
                    756:           -b MACHINE  -V VERSION
                    757: 
                    758: *Machine Dependent Options*
                    759:      *Note Hardware Models and Configurations: Submodel Options.
                    760:           *M680x0 Options*
                    761:           -m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020 -mfpa
                    762:           -mnobitfield -mrtd -mshort -msoft-float
                    763:           
                    764:           *VAX Options*
                    765:           -mg -mgnu -munix
                    766:           
                    767:           *SPARC Options*
1.1.1.2 ! root      768:           -mforce-align -mfpu -mno-epilogue
1.1       root      769:           
                    770:           *Convex Options*
                    771:           -margcount -mc1 -mc2 -mnoargcount
                    772:           
                    773:           *AMD29K Options*
                    774:           -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge
                    775:           -mnbw -mnodw -msmall -mstack-check -muser-registers
                    776:           
                    777:           *M88K Options*
                    778:           -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
                    779:           -mhandle-large-shift -midentify-revision
                    780:           -mno-check-zero-division -mno-ocs-debug-info
                    781:           -mno-ocs-frame-position -mno-optimize-arg-area -mno-underscores
                    782:           -mocs-debug-info -mocs-frame-position -moptimize-arg-area
                    783:           -mshort-data-NUM -msvr3 -msvr4 -mtrap-large-shift
                    784:           -muse-div-instruction -mversion-03.00 -mwarn-passed-structs
                    785:           
                    786:           *RS/6000 Options*
                    787:           -mfp-in-toc -mno-fop-in-toc
                    788:           
                    789:           *RT Options*
                    790:           -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
                    791:           -mfull-fp-blocks -mhc-struct-return -min-line-mul
                    792:           -mminimum-fp-blocks -mnohc-struct-return
                    793:           
                    794:           *MIPS Options*
                    795:           -mcpu=CPU TYPE -mips2 -mips3 -mint64 -mlong64 -mlonglong128
                    796:           -mmips-as -mgas -mrnames -mno-rnames -mgpopt -mno-gpopt -mstats
                    797:           -mno-stats -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile
                    798:           -msoft-float -mhard-float -mabicalls -mno-abicalls -mhalf-pic
1.1.1.2 ! root      799:           -mno-half-pic -G NUM -nocpp
        !           800:           
        !           801:           *i386 Options*
        !           802:           -m486 -msoft-float
1.1       root      803: 
                    804: *Code Generation Options*
                    805:      *Note Options for Code Generation Conventions: Code Gen Options.
                    806:           -fcall-saved-REG  -fcall-used-REG  -ffixed-REG
                    807:           -fno-common  -fpcc-struct-return  -fpic  -fPIC  -fshared-data
                    808:           -fshort-enums  -fshort-double  -fvolatile
                    809: 
                    810: * Menu:
                    811: 
                    812: * Overall Options::     Controlling the kind of output:
                    813:                         an executable, object files, assembler files,
                    814:                         or preprocessed source.
                    815: * Dialect Options::     Controlling the variant of C language compiled.
                    816: * Warning Options::     How picky should the compiler be?
                    817: * Debugging Options::   Symbol tables, measurements, and debugging dumps.
                    818: * Optimize Options::    How much optimization?
                    819: * Preprocessor Options:: Controlling header files and macro definitions.
                    820:                          Also, getting dependency information for Make.
                    821: * Link Options::        Specifying libraries and so on.
                    822: * Directory Options::   Where to find header files and libraries.
                    823:                         Where to find the compiler executable files.
                    824: * Target Options::      Running a cross-compiler, or an old version of GNU CC.
                    825: * Submodel Options::    Specifying minor hardware or convention variations,
                    826:                         such as 68010 vs 68020.
                    827: * Code Gen Options::    Specifying conventions for function calls, data layout
                    828:                         and register usage.
                    829: * Environment Variables:: Env vars that affect GNU CC.
                    830: 
                    831: 
                    832: File: gcc.info,  Node: Overall Options,  Next: Dialect Options,  Prev: Invoking GCC,  Up: Invoking GCC
                    833: 
                    834: Options Controlling the Kind of Output
                    835: ======================================
                    836: 
                    837:    Compilation can involve up to four stages: preprocessing,
                    838: compilation proper, assembly and linking, always in that order.  The
                    839: first three stages apply to an individual source file, and end by
                    840: producing an object file; linking combines all the object files (those
                    841: newly compiled, and those specified as input) into an executable file.
                    842: 
                    843:    For any given input file, the file name suffix determines what kind
                    844: of compilation is done:
                    845: 
                    846: `FILE.c'
                    847:      C source code which must be preprocessed.
                    848: 
                    849: `FILE.i'
                    850:      C source code which should not be preprocessed.
                    851: 
                    852: `FILE.m'
                    853:      Objective-C source code
                    854: 
                    855: `FILE.h'
                    856:      C header file (not to be compiled or linked).
                    857: 
                    858: `FILE.cc'
                    859: `FILE.cxx'
                    860: `FILE.C'
                    861:      C++ source code which must be preprocessed.
                    862: 
                    863: `FILE.s'
                    864:      Assembler code.
                    865: 
                    866: `FILE.S'
                    867:      Assembler code which must be preprocessed.
                    868: 
                    869: `OTHER'
                    870:      An object file to be fed straight into linking.  Any file name
                    871:      with no recognized suffix is treated this way.
                    872: 
                    873:    You can specify the input language explicitly with the `-x' option:
                    874: 
                    875: `-x LANGUAGE'
                    876:      Specify explicitly the LANGUAGE for the following input files
                    877:      (rather than choosing a default based on the file name suffix). 
                    878:      This option applies to all following input files until the next
                    879:      `-x' option.  Possible values of LANGUAGE are `c', `objective-c',
                    880:      `c-header', `c++', `cpp-output', `assembler', and
                    881:      `assembler-with-cpp'.
                    882: 
                    883: `-x none'
                    884:      Turn off any specification of a language, so that subsequent
                    885:      files are handled according to their file name suffixes (as they
                    886:      are if `-x' has not been used at all).
                    887: 
                    888:    If you only want some of the stages of compilation, you can use
                    889: `-x' (or filename suffixes) to tell `gcc' where to start, and one of
                    890: the options `-c', `-S', or `-E' to say where `gcc' is to stop.  Note
                    891: that some combinations (for example, `-x cpp-output -E' instruct `gcc'
                    892: to do nothing at all.
                    893: 
                    894: `-c'
                    895:      Compile or assemble the source files, but do not link.  The
                    896:      linking stage simply is not done.  The ultimate output is in the
                    897:      form of an object file for each source file.
                    898: 
                    899:      By default, the object file name for a source file is made by
                    900:      replacing the suffix `.c', `.i', `.s', etc., with `.o'.
                    901: 
                    902:      Unrecognized input files, not requiring compilation or assembly,
                    903:      are ignored.
                    904: 
                    905: `-S'
                    906:      Stop after the stage of compilation proper; do not assemble.  The
                    907:      output is in the form of an assembler code file for each
                    908:      non-assembler input file specified.
                    909: 
                    910:      By default, the assembler file name for a source file is made by
                    911:      replacing the suffix `.c', `.i', etc., with `.s'.
                    912: 
                    913:      Input files that don't require compilation are ignored.
                    914: 
                    915: `-E'
                    916:      Stop after the preprocessing stage; do not run the compiler
                    917:      proper.  The output is in the form of preprocessed source code,
                    918:      which is sent to the standard output.
                    919: 
                    920:      Input files which don't require preprocessing are ignored.
                    921: 
                    922: `-o FILE'
                    923:      Place output in file FILE.  This applies regardless to whatever
                    924:      sort of output is being produced, whether it be an executable
                    925:      file, an object file, an assembler file or preprocessed C code.
                    926: 
                    927:      Since only one output file can be specified, it does not make
                    928:      sense to use `-o' when compiling more than one input file, unless
                    929:      you are producing an executable file as output.
                    930: 
                    931:      If `-o' is not specified, the default is to put an executable file
                    932:      in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o',
                    933:      its assembler file in `SOURCE.s', and all preprocessed C source
                    934:      on standard output.
                    935: 
                    936: `-v'
                    937:      Print (on standard error output) the commands executed to run the
                    938:      stages of compilation.  Also print the version number of the
                    939:      compiler driver program and of the preprocessor and the compiler
                    940:      proper.
                    941: 
                    942: `-pipe'
                    943:      Use pipes rather than temporary files for communication between
                    944:      the various stages of compilation.  This fails to work on some
                    945:      systems where the assembler is unable to read from a pipe; but
                    946:      the GNU assembler has no trouble.
                    947: 
                    948: 
                    949: File: gcc.info,  Node: Dialect Options,  Next: Warning Options,  Prev: Overall Options,  Up: Invoking GCC
                    950: 
                    951: Options Controlling Dialect
                    952: ===========================
                    953: 
                    954:    The following options control the dialect of C that the compiler
                    955: accepts:
                    956: 
                    957: `-ansi'
                    958:      Support all ANSI standard C programs.
                    959: 
                    960:      This turns off certain features of GNU C that are incompatible
                    961:      with ANSI C, such as the `asm', `inline' and `typeof' keywords,
                    962:      and predefined macros such as `unix' and `vax' that identify the
                    963:      type of system you are using.  It also enables the undesirable and
                    964:      rarely used ANSI trigraph feature, and disallows `$' as part of
                    965:      identifiers.
                    966: 
                    967:      The alternate keywords `__asm__', `__extension__', `__inline__'
                    968:      and `__typeof__' continue to work despite `-ansi'.  You would not
                    969:      want to use them in an ANSI C program, of course, but it useful
                    970:      to put them in header files that might be included in
                    971:      compilations done with `-ansi'.  Alternate predefined macros such
                    972:      as `__unix__' and `__vax__' are also available, with or without
                    973:      `-ansi'.
                    974: 
                    975:      The `-ansi' option does not cause non-ANSI programs to be
                    976:      rejected gratuitously.  For that, `-pedantic' is required in
                    977:      addition to `-ansi'.  *Note Warning Options::.
                    978: 
                    979:      The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
                    980:      is used.  Some header files may notice this macro and refrain
                    981:      from declaring certain functions or defining certain macros that
                    982:      the ANSI standard doesn't call for; this is to avoid interfering
                    983:      with any programs that might use these names for other things.
                    984: 
                    985: `-fno-asm'
                    986:      Do not recognize `asm', `inline' or `typeof' as a keyword.  These
                    987:      words may then be used as identifiers.  You can use `__asm__',
                    988:      `__inline__' and `__typeof__' instead.  `-ansi' implies
                    989:      `-fno-asm'.
                    990: 
                    991: `-fno-builtin'
                    992:      Don't recognize non-ANSI built-in functions.  `-ansi' also has
                    993:      this effect. Currently, the only function affected is `alloca'.
                    994: 
                    995: `-trigraphs'
                    996:      Support ANSI C trigraphs.  You don't want to know about this
                    997:      brain-damage.  The `-ansi' option implies `-trigraphs'.
                    998: 
                    999: `-traditional'
                   1000:      Attempt to support some aspects of traditional C compilers. 
                   1001:      Specifically:
                   1002: 
                   1003:         * All `extern' declarations take effect globally even if they
                   1004:           are written inside of a function definition.  This includes
                   1005:           implicit declarations of functions.
                   1006: 
                   1007:         * The keywords `typeof', `inline', `signed', `const' and
                   1008:           `volatile' are not recognized.  (You can still use the
                   1009:           alternative keywords such as `__typeof__', `__inline__', and
                   1010:           so on.)
                   1011: 
                   1012:         * Comparisons between pointers and integers are always allowed.
                   1013: 
                   1014:         * Integer types `unsigned short' and `unsigned char' promote
                   1015:           to `unsigned int'.
                   1016: 
                   1017:         * Out-of-range floating point literals are not an error.
                   1018: 
                   1019:         * String "constants" are not necessarily constant; they are
                   1020:           stored in writable space, and identical looking constants
                   1021:           are allocated separately.  (This is the same as the effect of
                   1022:           `-fwritable-strings'.)
                   1023: 
                   1024:         * All automatic variables not declared `register' are
                   1025:           preserved by `longjmp'.  Ordinarily, GNU C follows ANSI C:
                   1026:           automatic variables not declared `volatile' may be clobbered.
                   1027: 
                   1028:         * In the preprocessor, comments convert to nothing at all,
                   1029:           rather than to a space.  This allows traditional token
                   1030:           concatenation.
                   1031: 
                   1032:         * In the preprocessor, macro arguments are recognized within
                   1033:           string constants in a macro definition (and their values are
                   1034:           stringified, though without additional quote marks, when
                   1035:           they appear in such a context).  The preprocessor always
                   1036:           considers a string constant to end at a newline.
                   1037: 
                   1038:         * The predefined macro `__STDC__' is not defined when you use
                   1039:           `-traditional', but `__GNUC__' is (since the GNU extensions
                   1040:           which `__GNUC__' indicates are not affected by
                   1041:           `-traditional').  If you need to write header files that work
                   1042:           differently depending on whether `-traditional' is in use, by
                   1043:           testing both of these predefined macros you can distinguish
                   1044:           four situations: GNU C, traditional GNU C, other ANSI C
                   1045:           compilers, and other old C compilers.
                   1046: 
                   1047: `-traditional-cpp'
                   1048:      Attempt to support some aspects of traditional C preprocessors. 
                   1049:      This includes the last three items in the table immediately above,
                   1050:      but none of the other effects of `-traditional'.
                   1051: 
                   1052: `-fcond-mismatch'
                   1053:      Allow conditional expressions with mismatched types in the second
                   1054:      and third arguments.  The value of such an expression is void.
                   1055: 
                   1056: `-funsigned-char'
                   1057:      Let the type `char' be unsigned, like `unsigned char'.
                   1058: 
                   1059:      Each kind of machine has a default for what `char' should be.  It
                   1060:      is either like `unsigned char' by default or like `signed char'
                   1061:      by default.
                   1062: 
                   1063:      Ideally, a portable program should always use `signed char' or
                   1064:      `unsigned char' when it depends on the signedness of an object. 
                   1065:      But many programs have been written to use plain `char' and
                   1066:      expect it to be signed, or expect it to be unsigned, depending on
                   1067:      the machines they were written for.  This option, and its
                   1068:      inverse, let you make such a program work with the opposite
                   1069:      default.
                   1070: 
                   1071:      The type `char' is always a distinct type from each of `signed
                   1072:      char' or `unsigned char', even though its behavior is always just
                   1073:      like one of those two.
                   1074: 
                   1075: `-fsigned-char'
                   1076:      Let the type `char' be signed, like `signed char'.
                   1077: 
                   1078:      Note that this is equivalent to `-fno-unsigned-char', which is
                   1079:      the negative form of `-funsigned-char'.  Likewise,
                   1080:      `-fno-signed-char' is equivalent to `-funsigned-char'.
                   1081: 
                   1082: `-fsigned-bitfields'
                   1083: `-funsigned-bitfields'
                   1084: `-fno-signed-bitfields'
                   1085: `-fno-unsigned-bitfields'
                   1086:      These options control whether a bitfield is signed or unsigned,
                   1087:      when the declaration does not use either `signed' or `unsigned'. 
                   1088:      By default, such a bitfield is signed, because this is
                   1089:      consistent: the basic integer types such as `int' are signed
                   1090:      types.
                   1091: 
                   1092:      However, when `-traditional' is used, bitfields are all unsigned
                   1093:      no matter what.
                   1094: 
                   1095: `-fwritable-strings'
                   1096:      Store string constants in the writable data segment and don't
                   1097:      uniquize them.  This is for compatibility with old programs which
                   1098:      assume they can write into string constants.  `-traditional' also
                   1099:      has this effect.
                   1100: 
                   1101:      Writing into string constants is a very bad idea; "constants"
                   1102:      should be constant.
                   1103: 
                   1104: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.