home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / programm / language / gcc222.lha / info / gcc.info-1 < prev    next >
Encoding:
GNU Info File  |  1992-07-19  |  48.7 KB  |  1,103 lines

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