home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 May / W2KPRK.iso / apps / posix / source / MAN / CC.PRT < prev    next >
Text File  |  1999-11-17  |  35KB  |  727 lines

  1. cc - GNU project C Compiler [ options ] files is a version of the
  2. GNU  C compiler.  It accepts a dialect of ANSI C with extensions;
  3. this dialect is different from the dialect used in  4.3  BSD  and
  4. earlier  distributions.  The flag causes the compiler to accept a
  5. dialect of extended Classic C, much like the C of  these  earlier
  6. distributions.   If  you are not already familiar with ANSI C and
  7. its new features, you will want to build your software with  Most
  8. older  C  compiler flags are supported by Three that are not are:
  9. to generate symbol tables for the unsupported debugger; for  sin-
  10. gle precision floating point in expressions, which is now the de-
  11. fault;  and  for  alternate  compiler  passes.   The  differences
  12. between  ANSI  C  and  Classic  C  dialects  are  too numerous to
  13. describe here in detail.  The following quick summary is meant to
  14. make  users  aware  of  potential subtle problems when converting
  15. Classic C code to ANSI C.  The most obvious change  is  the  per-
  16. vasive  use  of  Under the ANSI C dialect, the number and type of
  17. arguments to C library functions are checked by the compiler when
  18. standard header files are included; calls that fail to match will
  19. yield errors.  A subtle consequence of adding prototype  declara-
  20. tions  is that user code that inadvertently redefines a C library
  21. function may break; for example it is no longer possible to write
  22. an  function  that  takes  different parameters or returns a dif-
  23. ferent value from the standard  when  including  standard  header
  24. files.  Another issue with prototypes is that functions that take
  25. different parameter types no longer have the same type;  function
  26. pointers  now  differ by parameter types as well as return types.
  27. Variable argument lists are handled differently; the old  package
  28. is  obsolete,  replaced  by which unfortunately is not completely
  29. compatible.  A subtle change in type promotion can be  confusing:
  30. small  unsigned  types  are  now widened into signed types rather
  31. than unsigned types.  A similar problem can occur with the opera-
  32. tor, which now yields an unsigned type rather than a signed type.
  33. One common problem is due to a change in  scoping:  external  de-
  34. clarations  are  now  scoped to the block they occur in, so a de-
  35. claration for (say) inside one block will no longer declare it in
  36. all  subsequent  blocks.  The syntax for braces in structure ini-
  37. tializations is now a bit stricter, and it is sometimes necessary
  38. to  add braces to please the compiler.  Two very subtle and some-
  39. times very annoying features apply to constant strings and to the
  40. function.   Constant  strings  in the ANSI dialect are read-only;
  41. attempts to alter them cause protection  violations.   This  ANSI
  42. feature permits the compiler to coalesce identical strings in the
  43. same source file, and saves  space  when  multiple  copies  of  a
  44. binary  are running at the same time, since the read-only part of
  45. a binary is sharable.  The most common difficulty with  read-only
  46. strings  lies  with  the  use  of the function, which in the past
  47. often altered a constant string argument.  It is now necessary to
  48. copy  a  constant  string (for example, with before it may be al-
  49. tered.  The function may now destroy any register stack  variable
  50. in the function that made the corresponding call to the function;
  51. to protect a local variable, the new ANSI modifier must be  used.
  52. This  often  leads to confusing situations upon `return' from The
  53. compiler has extended warning flags for  dealing  with  read-only
  54. strings  and  but these are not very effective.  If your code has
  55. problems with any of these ANSI features, you will probably  want
  56. to  use Even with there are some differences between this dialect
  57. of Classic C and the dialect supported  on  older  distributions.
  58. There  are at least two differences that are a consequence of the
  59. fact that uses an ANSI C style grammar for both  traditional  and
  60. ANSI  modes.   The old C dialect permitted a typedef to replace a
  61. simple type in the idiom ``unsigned this  treats  such  forms  as
  62. syntax  errors.   The old C dialect also permitted formal parame-
  63. ters to have the same names as typedef types; the current dialect
  64. does  not.  Some questionable or illegal practices that were sup-
  65. ported in the old C dialect are not supported by non-comment text
  66. at  the end of a ``#include'' preprocessor control line is an er-
  67. ror, not ignored; compound assignment operators must not  contain
  68. white  space,  ``* ='' is not the same as ``*=''; the last member
  69. declaration in a structure or union must be terminated by a semi-
  70. colon;  it  is  not  possible to ``switch'' on function pointers;
  71. more than one occurrence of ``#else'' at  the  same  level  in  a
  72. preprocessor ``#if'' clause is an error, not ignored.  Some truly
  73. ancient C practices are no longer supported.  The  idiom  of  de-
  74. claring  an  anonymous structure and using its members to extract
  75. fields from other structures or even non-structures  is  illegal.
  76. Integers  are  not  automatically converted to pointers when they
  77. are dereferenced.  The dialect  does  not  retain  the  so-called
  78. ``old-fashioned''  assignment operators (with the ``='' preceding
  79. rather than following the operator) or initializations  (with  no
  80. ``=''  between  initializer  and  initializee).  This rest of man
  81. page is an extract of the documentation of the and is limited  to
  82. the meaning of the options.  If you want to be certain of the in-
  83. formation below, check it in the manual "Using and Porting  GCC".
  84. Refer  to  the  Info file or the DVI file which are made from the
  85. Texinfo source file The uses a command syntax much like the  Unix
  86. C  compiler.   The  program  accepts  options  and  file names as
  87. operands.  Multiple single-letter options may be grouped: is very
  88. different  from  When you invoke GNU CC, it normally does prepro-
  89. cessing, compilation, assembly and linking.  File names which end
  90. in  are  taken  as C source to be preprocessed and compiled; file
  91. names ending in are taken as preprocessor output to be  compiled;
  92. compiler  output  files plus any input files with names ending in
  93. are assembled; then the resulting object files,  plus  any  other
  94. input  files, are linked together to produce an executable.  Com-
  95. mand options allow you to stop this process  at  an  intermediate
  96. stage.  For example, the option says not to run the linker.  Then
  97. the output consists of object  files  output  by  the  assembler.
  98. Other  command  options are passed on to one stage of processing.
  99. Some options control the preprocessor and others the compiler it-
  100. self.   Yet other options control the assembler and linker; these
  101. are not documented here, but you rarely need to use any of  them.
  102. Here  are the options to control the overall compilation process,
  103. including those that say whether to link,  whether  to  assemble,
  104. and so on.  Place output in file This applies regardless to what-
  105. ever sort of output is being produced, whether it be  an  execut-
  106. able  file,  an  object file, an assembler file or preprocessed C
  107. code.
  108.  
  109. If is not specified, the default is to put an executable file  in
  110. the  object  file  in  an assembler file in and preprocessed C on
  111. standard output.  Compile or assemble the source  files,  but  do
  112. not  link.   Produce object files with names made by replacing or
  113. with at the end of the input file names.  Do nothing at  all  for
  114. object files specified as input.  Compile into assembler code but
  115. do not assemble.  The assembler output file name is made  by  re-
  116. placing  with  at  the end of the input file name.  Do nothing at
  117. all for assembler source files or object files specified  as  in-
  118. put.   Run  only the C preprocessor.  Preprocess all the C source
  119. files specified and output the results to standard output.   Com-
  120. piler  driver  program prints the commands it executes as it runs
  121. the preprocessor, compiler proper, assembler and linker.  Some of
  122. these are directed to print their own version numbers.  Use pipes
  123. rather than temporary files for communication between the various
  124. stages  of compilation.  This fails to work on some systems where
  125. the assembler is unable to read from a pipe; but the  GNU  assem-
  126. bler  has  no trouble.  Compiler driver program tries as a prefix
  127. for each program it tries to run.  These programs are and
  128.  
  129. For each subprogram to be run, the compiler  driver  first  tries
  130. the  prefix,  if  any.   If that name is not found, or if was not
  131. specified, the driver tries a standard prefix, which currently is
  132. If this does not result in a file name that is found, the unmodi-
  133. fied program name is searched for using the directories specified
  134. in your environment variable.
  135.  
  136. You can get a similar result from the environment variable if  it
  137. is  defined,  its  value is used as a prefix in the same way.  If
  138. both the option and the variable are present, the option is  used
  139. first and the environment variable value second.  The argument is
  140. used as a second prefix for  the  compiler  executables  and  li-
  141. braries.   This  prefix is optional: the compiler tries each file
  142. first with it, then without it.  This prefix follows  the  prefix
  143. specified with or the default prefixes.
  144.  
  145. Thus, in the presence of  environment  variable  with  definition
  146. causes  GNU CC to try the following file names for the preproces-
  147. sor executable:
  148.  
  149.         cc/vax-cpp
  150.         cc/cpp
  151.         /u/foo/vax-cpp
  152.         /u/foo/cpp
  153.         /usr/libexec/vax-cpp
  154.         /usr/libexec/cpp These options control the details  of  C
  155. compilation itself.  Support all ANSI standard C programs.
  156.  
  157. This turns off certain features of GNU C  that  are  incompatible
  158. with ANSI C, such as the and keywords, and predefined macros such
  159. as and that identify the type of system you are using.   It  also
  160. enables the undesirable and rarely used ANSI trigraph feature.
  161.  
  162. The alternate keywords and continue to work despite You would not
  163. want  to  use them in an ANSI C program, of course, but it useful
  164. to put them in header files that might be  included  in  compila-
  165. tions  done with Alternate predefined macros such as and are also
  166. available, with or without
  167.  
  168. The option does not cause non-ANSI programs to be  rejected  gra-
  169. tuitously.  For that, is required in addition to
  170.  
  171. The macro is predefined when the option  is  used.   Some  header
  172. files  may  notice  this macro and refrain from declaring certain
  173. functions or defining  certain  macros  that  the  ANSI  standard
  174. doesn't  call for; this is to avoid interfering with any programs
  175. that might use these names for other things.  Attempt to  support
  176. some aspects of traditional C compilers.  Specifically:
  177.  
  178. * All declarations take effect globally even if they are  written
  179. inside of a function definition.  This includes implicit declara-
  180. tions of functions.
  181.  
  182. * The keywords and are not recognized.
  183.  
  184. * Comparisons between pointers and integers are always allowed.
  185.  
  186. * Integer types and promote to
  187.  
  188. * Out-of-range floating point literals are not an error.
  189.  
  190. * All automatic variables not declared are preserved by Ordinari-
  191. ly, GNU C follows ANSI C: automatic variables not declared may be
  192. clobbered.
  193.  
  194. * In the preprocessor, comments convert to nothing at all, rather
  195. than to a space.  This allows traditional token concatenation.
  196.  
  197. * In the preprocessor,  macro  arguments  are  recognized  within
  198. string  constants  in  a  macro  definition (and their values are
  199. stringified, though without additional quote marks, when they ap-
  200. pear  in  such  a  context).  The preprocessor always considers a
  201. string constant to end at a newline.
  202.  
  203. * The predefined macro is not defined when you use but is  (since
  204. the  GNU  extensions  which  indicates are not affected by If you
  205. need to write header files that  work  differently  depending  on
  206. whether is in use, by testing both of these predefined macros you
  207. can distinguish four situations: GNU C, traditional GNU C,  other
  208. ANSI C compilers, and other old C compilers.  Optimize.  Optimiz-
  209. ing compilation takes somewhat more time, and a lot  more  memory
  210. for a large function.
  211.  
  212. Without the compiler's goal is to reduce the cost of  compilation
  213. and  to  make debugging produce the expected results.  Statements
  214. are independent: if  you  stop  the  program  with  a  breakpoint
  215. between  statements, you can then assign a new value to any vari-
  216. able or change the program counter to any other statement in  the
  217. function  and  get  exactly the results you would expect from the
  218. source code.
  219.  
  220. Without only variables declared are allocated in registers.   The
  221. resulting  compiled  code  is a little worse than produced by PCC
  222. without
  223.  
  224. With the compiler tries to reduce code size and execution time.
  225.  
  226. Some of the options described below turn specific kinds of optim-
  227. ization  on or off.  Produce debugging information in the operat-
  228. ing system's native format (for DBX or SDB).  GDB also  can  work
  229. with this debugging information.
  230.  
  231. Unlike most other C compilers, GNU CC allows you to use with  The
  232. shortcuts  taken  by  optimized  code  may  occasionally  produce
  233. surprising results: some variables you declared may not exist  at
  234. all;  flow  of  control may briefly move where you did not expect
  235. it; some statements may not be executed because they compute con-
  236. stant  results  or their values were already at hand; some state-
  237. ments may execute in different places because they were moved out
  238. of  loops.   Nevertheless  it  proves possible to debug optimized
  239. output.  This makes it reasonable to use the optimizer  for  pro-
  240. grams that might have bugs.  Inhibit all warning messages.  Print
  241. extra warning messages for these events:
  242.  
  243. * An automatic variable is used without first being initialized.
  244.  
  245. These warnings are possible only in optimizing  compilation,  be-
  246. cause  they  require  data flow information that is computed only
  247. when optimizing.  If you don't specify you simply won't get these
  248. warnings.
  249.  
  250. These warnings occur only for variables that are  candidates  for
  251. register allocation.  Therefore, they do not occur for a variable
  252. that is declared or whose address is taken, or whose size is oth-
  253. er  than  1, 2, 4 or 8 bytes.  Also, they do not occur for struc-
  254. tures, unions or arrays, even when they are in registers.
  255.  
  256. Note that there may be no warning about a variable that  is  used
  257. only  to  compute a value that itself is never used, because such
  258. computations may be deleted by  data  flow  analysis  before  the
  259. warnings are printed.
  260.  
  261. These warnings are made optional because  GNU  CC  is  not  smart
  262. enough  to  see  all  the  reasons  why the code might be correct
  263. despite appearing to have an error.  Here is one example  of  how
  264. this can happen:
  265.  
  266.         {
  267.           int x;
  268.           switch (y)
  269.             {
  270.             case 1: x = 1;
  271.               break;
  272.             case 2: x = 4;
  273.               break;
  274.             case 3: x = 5;
  275.             }
  276.           foo (x);
  277.         }
  278.  
  279. If the value of is always 1, 2 or 3, then is always  initialized,
  280. but GNU CC doesn't know this.  Here is another common case:
  281.  
  282.         {
  283.           int save_y;
  284.           if (change_y) save_y = y, y = new_y;
  285.           ...
  286.           if (change_y) y = save_y;
  287.         }
  288.  
  289. This has no bug because is used only if it is set.
  290.  
  291. Some spurious warnings can be avoided if you declare as  all  the
  292. functions you use that never return.
  293.  
  294. * A nonvolatile automatic variable might be changed by a call  to
  295. These  warnings  as well are possible only in optimizing compila-
  296. tion.
  297.  
  298. The compiler sees only the calls to It cannot know where will  be
  299. called;  in  fact, a signal handler could call it at any point in
  300. the code.  As a result, you may get a warning even when there  is
  301. in  fact no problem because cannot in fact be called at the place
  302. which would cause a problem.
  303.  
  304. * A function can return either with or without a value.  (Falling
  305. off  the end of the function body is considered returning without
  306. a value.) For example, this function would evoke such a warning:
  307.  
  308.         foo (a)
  309.         {
  310.           if (a > 0)
  311.             return a;
  312.         }
  313.  
  314. Spurious warnings can occur because GNU CC does not realize  that
  315. certain functions (including and will never return.
  316.  
  317. * An expression-statement contains no side effects.
  318.  
  319. In the future, other useful warnings may also be enabled by  this
  320. option.   Warn  whenever a function is implicitly declared.  Warn
  321. whenever a function is defined with a return-type  that  defaults
  322. to  Also warn about any statement with no return-value in a func-
  323. tion whose return-type is not Warn whenever a local  variable  is
  324. unused aside from its declaration, and whenever a function is de-
  325. clared static but never defined.  Warn whenever a  statement  has
  326. an  index  of  enumeral  type  and lacks a for one or more of the
  327. named codes of  that  enumeration.   (The  presence  of  a  label
  328. prevents this warning.) labels outside the enumeration range also
  329. provoke warnings when this  option  is  used.   Warn  whenever  a
  330. comment-start  sequence  appears  in a comment.  Warn if any tri-
  331. graphs are encountered (assuming they are enabled).  All  of  the
  332. above  options combined.  These are all the options which pertain
  333. to usage that we do not recommend and that we believe  is  always
  334. easy to avoid, even in conjunction with macros.
  335.  
  336. The other options below are not implied by because certain  kinds
  337. of  useful  macros are almost impossible to write without causing
  338. those warnings.  Warn whenever a local variable  shadows  another
  339. local  variable.  Warn whenever two distinct identifiers match in
  340. the first characters.  This may help you prepare a  program  that
  341. will  compile  with  certain  obsolete,  brain-damaged compilers.
  342. Warn about anything that depends on the size of a  function  type
  343. or  of  GNU C assigns these types a size of 1, for convenience in
  344. calculations with pointers and pointers to functions.  Warn when-
  345. ever  a pointer is cast so as to remove a type qualifier from the
  346. target type.  For example, warn if a is cast to an ordinary  Give
  347. string constants the type so that copying the address of one into
  348. a pointer will get a warning.  These warnings will help you  find
  349. at  compile  time  code  that can try to write into a string con-
  350. stant, but only if you have been very careful about using in  de-
  351. clarations  and  prototypes.   Otherwise,  it will just be a nui-
  352. sance; this is why we did not make request these warnings.   Gen-
  353. erate  extra  code  to write profile information suitable for the
  354. analysis program Generate extra code to write profile information
  355. suitable  for  the  analysis program Generate extra code to write
  356. profile information for basic blocks, suitable for  the  analysis
  357. program  Eventually  GNU should be extended to process this data.
  358. Search a standard list of directories for a library  named  which
  359. is  actually  a file named The linker uses this file as if it had
  360. been specified precisely by name.
  361.  
  362. The directories searched include several standard  system  direc-
  363. tories plus any that you specify with
  364.  
  365. Normally the files found  this  way  are  library  files--archive
  366. files  whose members are object files.  The linker handles an ar-
  367. chive file by scanning through it for members which  define  sym-
  368. bols  that  have  so far been referenced but not defined.  But if
  369. the file that is found is an ordinary object file, it  is  linked
  370. in  the  usual fashion.  The only difference between using an op-
  371. tion and specifying a file name is that searches  several  direc-
  372. tories.   Add directory to the list of directories to be searched
  373. for Don't use the standard system  libraries  and  startup  files
  374. when linking.  Only the files you specify (plus will be passed to
  375. the linker.  Machine-dependent option specifying something  about
  376. the  type  of  target  machine.  These options are defined by the
  377. macro in the machine description.  The default for the options is
  378. also  defined  by that macro, which enables you to change the de-
  379. faults.
  380.  
  381. These are the options defined in the 68000 machine description:
  382.  
  383.      Generate output for a 68020 (rather than a 68000).  This  is
  384.      the default if you use the unmodified sources.
  385.  
  386.      Generate output for a 68000 (rather than a 68020).
  387.  
  388.      Generate output containing 68881 instructions  for  floating
  389.      point.   This  is  the  default  if  you  use the unmodified
  390.      sources.
  391.  
  392.      Generate output containing Sun FPA instructions for floating
  393.      point.
  394.  
  395.      Generate output containing library calls for floating point.
  396.  
  397.      Consider type to be 16 bits wide, like
  398.  
  399.      Do not use the bit-field instructions.  implies
  400.  
  401.      Do use the bit-field instructions.  implies This is the  de-
  402.      fault if you use the unmodified sources.
  403.  
  404.      Use a different function-calling convention, in which  func-
  405.      tions  that take a fixed number of arguments return with the
  406.      instruction, which pops  their  arguments  while  returning.
  407.      This  saves  one instruction in the caller since there is no
  408.      need to pop the arguments there.
  409.  
  410.      This calling convention is incompatible with the one normal-
  411.      ly  used  on  Unix, so you cannot use it if you need to call
  412.      libraries compiled with the Unix compiler.
  413.  
  414.      Also, you must provide function prototypes for all functions
  415.      that take variable numbers of arguments (including otherwise
  416.      incorrect code will be generated for calls  to  those  func-
  417.      tions.
  418.  
  419.      In addition, seriously incorrect code  will  result  if  you
  420.      call  a  function with too many arguments.  (Normally, extra
  421.      arguments are harmlessly ignored.)
  422.  
  423.      The instruction is supported by the 68010 and 68020  proces-
  424.      sors, but not by the 68000.
  425.  
  426. These options are defined in the Vax machine description:
  427.  
  428.      Do not output certain jump instructions and so on) that  the
  429.      Unix assembler for the Vax cannot handle across long ranges.
  430.  
  431.      Do output those jump instructions, on  the  assumption  that
  432.      you will assemble with the GNU assembler.
  433.  
  434.      Output code for g-format floating point numbers  instead  of
  435.      d-format.
  436.  
  437. These switches are supported on the Sparc:
  438.  
  439.      Generate  output  containing  floating  point  instructions.
  440.      This is the default if you use the unmodified sources.
  441.  
  442.      Generate output containing library calls for floating point.
  443.  
  444.      Generate separate return instructions for statements.   This
  445.      has  both  advantages and disadvantages; I don't recall what
  446.      they are.
  447.  
  448. These options are defined in the Convex machine description:
  449.  
  450.      Generate output for a C1.  This is the default when the com-
  451.      piler is configured for a C1.
  452.  
  453.      Generate output for a C2.  This is the default when the com-
  454.      piler is configured for a C2.
  455.  
  456.      Generate code which puts  an  argument  count  in  the  word
  457.      preceding  each  argument list.  Some nonportable Convex and
  458.      Vax programs need this word.  (Debuggers don't; this info is
  459.      in the symbol table.)
  460.  
  461.      Omit the argument count word.  This is the  default  if  you
  462.      use the unmodified sources.
  463. Specify machine-independent flags.  Most flags have both positive
  464. and  negative  forms;  the negative form of would be In the table
  465. below, only one of the forms is listed--the one which is not  the
  466. default.  You can figure out the other form by either removing or
  467. adding it.  Use the same convention for returning and values that
  468. is  used by the usual C compiler on your system.  This convention
  469. is less efficient for small structures, and on many  machines  it
  470. fails  to  be  reentrant;  but  it  has the advantage of allowing
  471. intercallability between GCC-compiled code and PCC-compiled code.
  472. Do   not  store  floating-point  variables  in  registers.   This
  473. prevents undesirable excess precision on  machines  such  as  the
  474. 68000  where the floating registers (of the 68881) keep more pre-
  475. cision than a is supposed to have.
  476.  
  477. For most programs, the excess precision does only good, but a few
  478. programs  rely  on the precise definition of IEEE floating point.
  479. Use for such programs.  Do not recognize or as a keyword.   These
  480. words  may then be used as identifiers.  You can use and instead.
  481. Always pop the arguments to each function call as  soon  as  that
  482. function  returns.   Normally the compiler (when optimizing) lets
  483. arguments accumulate on the stack for several function calls  and
  484. pops  them  all  at  once.   Perform  the  optimizations  of loop
  485. strength reduction and elimination of iteration variables.  Allow
  486. the combine pass to combine an instruction that copies one regis-
  487. ter into another.  This might or might not  produce  better  code
  488. when  used  in  addition  to I am interested in hearing about the
  489. difference this makes.  Force memory operands to be  copied  into
  490. registers  before  doing  arithmetic  on  them.  This may produce
  491. better code by making all memory references potential common  su-
  492. bexpressions.   When they are not common subexpressions, instruc-
  493. tion combination should eliminate the separate register-load.   I
  494. am  interested in hearing about the difference this makes.  Force
  495. memory address constants to be copied into registers before doing
  496. arithmetic on them.  This may produce better code just as may.  I
  497. am interested in hearing about the difference this makes.   Don't
  498. keep  the  frame  pointer  in a register for functions that don't
  499. need one.  This avoids the instructions to save, set up  and  re-
  500. store  frame  pointers; it also makes an extra register available
  501. in many functions.
  502.  
  503. On some machines, such as the Vax, this flag has no  effect,  be-
  504. cause  the  standard  calling  sequence automatically handles the
  505. frame pointer and nothing is saved by pretending it  doesn't  ex-
  506. ist.   The  machine-description  macro  controls whether a target
  507. machine supports this flag.  Integrate all simple functions  into
  508. their  callers.   The  compiler heuristically decides which func-
  509. tions are simple enough to be worth integrating in this way.
  510.  
  511. If all calls to a given function are integrated, and the function
  512. is declared then the function is normally not output as assembler
  513. code in its own right.  Enable values to be allocated  in  regis-
  514. ters  that will be clobbered by function calls, by emitting extra
  515. instructions to save and restore the registers around such calls.
  516. Such  allocation  is  done only when it seems to result in better
  517. code than would otherwise be produced.
  518.  
  519. This option is enabled by default on  certain  machines,  usually
  520. those  which  have  no  call-preserved  registers to use instead.
  521. Even if all calls to a given function  are  integrated,  and  the
  522. function  is  declared  nevertheless  output  a separate run-time
  523. callable version of the function.  Store string constants in  the
  524. writable  data segment and don't uniquize them.  This is for com-
  525. patibility with old programs which assume  they  can  write  into
  526. string  constants.   Writing  into string constants is a very bad
  527. idea; constants should be constant.   Allow  conditional  expres-
  528. sions  with  mismatched  types in the second and third arguments.
  529. The value of such an expression is void.  Do not put function ad-
  530. dresses in registers; make each instruction that calls a constant
  531. function contain the function's address explicitly.
  532.  
  533. This option results in less  efficient  code,  but  some  strange
  534. hacks  that alter the assembler output may be confused by the op-
  535. timizations performed when this option is not used.  Consider all
  536. memory references through pointers to be volatile.  Requests that
  537. the data and variables of this compilation be shared data  rather
  538. than  private  data.  The distinction makes sense only on certain
  539. operating systems, where shared data is shared between  processes
  540. running  the  same program, while private data exists in one copy
  541. per process.  Let the type be the unsigned, like
  542.  
  543. Each kind of machine has a default for what should be.  It is ei-
  544. ther  like by default or like by default.  (Actually, at present,
  545. the default is always signed.)
  546.  
  547. The type is always a distinct type from either or even though its
  548. behavior is always just like one of those two.
  549.  
  550. Note that this is equivalent to which is the negative form of Let
  551. the type be signed, like
  552.  
  553. Note that this is equivalent to which is the negative form of  If
  554. supported for the target machine, attempt to reorder instructions
  555. to exploit instruction slots available after delayed  branch  in-
  556. structions.   Treat  the register named as a fixed register; gen-
  557. erated code should never refer to it (except perhaps as  a  stack
  558. pointer, frame pointer or in some other fixed role).
  559.  
  560. must be the name of a register.  The register names accepted  are
  561. machine-specific  and  are  defined  in  the macro in the machine
  562. description macro file.
  563.  
  564. This flag does not have a negative form, because it  specifies  a
  565. three-way choice.  Treat the register named as an allocatable re-
  566. gister that is clobbered by function calls.  It may be  allocated
  567. for  temporaries  or  variables  that  do not live across a call.
  568. Functions compiled this way will not save and restore the  regis-
  569. ter REG.
  570.  
  571. Use of this flag for a register that has a fixed  pervasive  role
  572. in  the  machine's  execution model, such as the stack pointer or
  573. frame pointer, will produce disastrous results.
  574.  
  575. This flag does not have a negative form, because it  specifies  a
  576. three-way choice.  Treat the register named as an allocatable re-
  577. gister saved by functions.  It may be  allocated  even  for  tem-
  578. poraries  or  variables  that live across a call.  Functions com-
  579. piled this way will save and restore the register if they use it.
  580.  
  581. Use of this flag for a register that has a fixed  pervasive  role
  582. in  the  machine's  execution model, such as the stack pointer or
  583. frame pointer, will produce disastrous results.
  584.  
  585. A different sort of disaster will result from  the  use  of  this
  586. flag for a register in which function values may be returned.
  587.  
  588. This flag does not have a negative form, because it  specifies  a
  589. three-way  choice.   Says to make debugging dumps at times speci-
  590. fied by Here are the possible letters:
  591.  
  592.      Dump after RTL generation.
  593.      Dump after first jump optimization.
  594.      Dump after last jump optimization.
  595.      Dump after CSE (including the jump optimization  that  some-
  596.      times follows CSE).
  597.      Dump after loop optimization.
  598.      Dump after flow analysis.
  599.      Dump after instruction combination.
  600.      Dump after local register allocation.
  601.      Dump after global register allocation.
  602.      Dump after delayed branch scheduling.
  603.      Print statistics on memory usage, at the end of the run.
  604. Issue all the warnings demanded by strict ANSI standard C; reject
  605. all programs that use forbidden extensions.
  606.  
  607. Valid ANSI standard C programs should compile  properly  with  or
  608. without  this  option  (though  a  rare few will require However,
  609. without this option, certain GNU  extensions  and  traditional  C
  610. features  are  supported as well.  With this option, they are re-
  611. jected.  There is no reason to use this option; it exists only to
  612. satisfy pedants.
  613.  
  614. does not cause warning messages for use of the alternate keywords
  615. whose  names  begin  and end with On Suns running version 4, this
  616. prevents linking with the shared libraries.   has  the  same  ef-
  617. fect.)  These options control the C preprocessor, which is run on
  618. each C source file before actual compilation.  If you use the  `-
  619. E' option, nothing is done except C preprocessing.  Some of these
  620. options make sense only together with `-E' because  they  request
  621. preprocessor  output that is not suitable for actual compilation.
  622. Tell the preprocessor not to discard comments.  Used with the op-
  623. tion.   Search  directory  for  include  files.   Any directories
  624. specified with options before the option are  searched  only  for
  625. the case of "file"; they are not searched for
  626.  
  627. If additional directories are specified with  options  after  the
  628. these  directories  are searched for all directives.  (Ordinarily
  629. directories are used this way.)
  630.  
  631. In addition, the option inhibits the use of the current directory
  632. as the first search directory for "file".  Therefore, the current
  633. directory is searched only if it  is  requested  explicitly  with
  634. Specifying  both and allows you to control precisely which direc-
  635. tories are searched before the current one and which are searched
  636. after.   Do not search the standard system directories for header
  637. files.  Only the directories you have specified with options (and
  638. the current directory, if appropriate) are searched.
  639.  
  640. Between and you can eliminate all  directories  from  the  search
  641. path except those you specify.  Tell the preprocessor to output a
  642. rule suitable for describing  the  dependencies  of  each  source
  643. file.   For  each source file, the preprocessor outputs one whose
  644. target is the object file name for that  source  file  and  whose
  645. dependencies  are all the files in it.  This rule may be a single
  646. line or may be continued with if it is long.
  647.  
  648. implies Like but the output mentions only the  user-header  files
  649. included  with "file".  System header files included with are om-
  650. itted.
  651.  
  652. implies Define macro with the empty  string  as  its  definition.
  653. Define  macro  as  Undefine  macro Support ANSI C trigraphs.  You
  654. don't want to know about this brain-damage.  The option also  has
  655. this effect.  file.c               C source file
  656. file.s               assembly language file
  657. file.o               object file
  658. a.out                link edited output
  659. /tmp/cc*             temporary files
  660. /usr/libexec/cpp     preprocessor
  661. /usr/libexec/cc1     compiler
  662. /usr/lib/libgnulib.a library needed by GCC on some machines
  663. /usr/lib/crt0.o      start-up routine
  664. /usr/lib/libc.a      standard C library, see
  665. /usr/include         standard directory for files  as(1),  ld(1),
  666. adb(1), dbx(1), gdb(1).  Bugs should be reported to Bugs tend ac-
  667. tually to be fixed if they can be isolated, so it is in your  in-
  668. terest  to  report  them  in  such  a way that they can be easily
  669. reproduced.  Copyright (c) 1988 Free  Software  Foundation,  Inc.
  670. Permission  is  granted to make and distribute verbatim copies of
  671. this manual provided the copyright notice and this permission no-
  672. tice  are preserved on all copies.  Permission is granted to copy
  673. and distribute modified versions of this manual under the  condi-
  674. tions  for  verbatim  copying, provided that the entire resulting
  675. derived work is distributed under the terms of a  permission  no-
  676. tice  identical  to  this one.  Permission is granted to copy and
  677. distribute translations of this  manual  into  another  language,
  678. under  the  above  conditions  for modified versions, except that
  679. this permission notice may be included in  translations  approved
  680. by  the  Free  Software Foundation instead of in the original En-
  681. glish.  See the GNU CC Manual for the contributors to GNU CC.
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.