| Rev | Author | # | Line |
|---|---|---|---|
| 1 | perry | 1 | !!!GCC |
| 3 | StuartYeates | 2 | !Table of Contents |
| 1 | perry | 3 | NAME |
| 4 | SYNOPSIS | ||
| 5 | WARNING | ||
| 6 | DESCRIPTION | ||
| 7 | OPTIONS | ||
| 8 | OVERALL OPTIONS | ||
| 9 | LANGUAGE OPTIONS | ||
| 10 | PREPROCESSOR OPTIONS | ||
| 11 | ASSEMBLER OPTION | ||
| 12 | LINKER OPTIONS | ||
| 13 | DIRECTORY OPTIONS | ||
| 14 | WARNING OPTIONS | ||
| 15 | DEBUGGING OPTIONS | ||
| 16 | OPTIMIZATION OPTIONS | ||
| 17 | TARGET OPTIONS | ||
| 18 | MACHINE DEPENDENT OPTIONS | ||
| 19 | CODE GENERATION OPTIONS | ||
| 20 | PRAGMAS | ||
| 21 | FILES | ||
| 22 | EXIT STATUS | ||
| 23 | SEE ALSO | ||
| 24 | BUGS | ||
| 25 | COPYING | ||
| 26 | AUTHORS | ||
| 27 | ---- | ||
| 28 | !!NAME | ||
| 29 | |||
| 30 | |||
| 31 | gcc, g++ - [GNU] project [C] and [C++] [Compiler] (gcc-2.95) | ||
| 32 | !!SYNOPSIS | ||
| 33 | |||
| 34 | |||
| 35 | __gcc__ [[ ''option'' | ''filename'' ]...__ | ||
| 36 | g++__ [[ ''option'' | ''filename'' ]... | ||
| 37 | !!WARNING | ||
| 38 | |||
| 39 | |||
| 40 | The information in this man page is an extract from the full | ||
| 41 | documentation of the [GNU] C [Compiler], and is limited to the | ||
| 42 | meaning of the options. | ||
| 43 | |||
| 44 | |||
| 45 | This man page is not kept up to date except when volunteers | ||
| 46 | want to maintain it. If you find a discrepancy between the | ||
| 47 | man page and the software, please check the Info file, which | ||
| 48 | is the authoritative documentation. | ||
| 49 | |||
| 50 | |||
| 51 | If we find that the things in this man page that are out of | ||
| 52 | date cause significant confusion or complaints, we will stop | ||
| 53 | distributing the man page. The alternative, updating the man | ||
| 54 | page when we update the Info file, is impossible because the | ||
| 55 | rest of the work of maintaining GNU CC leaves us no time for | ||
| 56 | that. The GNU project regards man pages as obsolete and | ||
| 57 | should not let them take time away from other | ||
| 58 | things. | ||
| 59 | |||
| 60 | |||
| 61 | For complete and current documentation, refer to the Info | ||
| 62 | file `__gcc__' or the manual ''Using and Porting GNU CC | ||
| 3 | StuartYeates | 63 | (for version 2.0)''. Both are made from the [Texinfo|texinfo(5)] source |
| 1 | perry | 64 | file __gcc.texinfo__. |
| 65 | !!DESCRIPTION | ||
| 66 | |||
| 67 | |||
| 68 | The C and C++ compilers are integrated. Both process input | ||
| 69 | files through one or more of four stages: preprocessing, | ||
| 70 | compilation, assembly, and linking. Source filename suffixes | ||
| 71 | identify the source language, but which name you use for the | ||
| 72 | compiler governs default assumptions: | ||
| 73 | |||
| 74 | |||
| 75 | __gcc__ | ||
| 76 | |||
| 77 | |||
| 78 | assumes preprocessed (__.i__) files are C and assumes C | ||
| 79 | style linking. | ||
| 80 | |||
| 81 | |||
| 82 | __g++__ | ||
| 83 | |||
| 84 | |||
| 85 | assumes preprocessed (__.i__) files are C++ and assumes | ||
| 86 | C++ style linking. | ||
| 87 | |||
| 88 | |||
| 89 | Suffixes of source file names indicate the language and kind | ||
| 90 | of processing to be done: | ||
| 91 | |||
| 92 | |||
| 93 | *__.c__ [C] source; preprocess, compile, assemble | ||
| 94 | *__.C__ [C++] source; preprocess, compile, assemble | ||
| 95 | *__.cc__ C++ source; preprocess, compile, assemble | ||
| 96 | *__.cxx__ C++ source; preprocess, compile, assemble | ||
| 97 | *__.m__ [Objective-C] source; preprocess, compile, assemble | ||
| 98 | *__.i__ preprocessed C; compile, assemble | ||
| 99 | *__.ii__ preprocessed C++; compile, assemble | ||
| 3 | StuartYeates | 100 | *__.s__ [Assembler|AssemblyLanguage] source; assemble |
| 1 | perry | 101 | *__.S__ Assembler source; preprocess, assemble |
| 102 | *__.h__ Preprocessor file; not usually named on command line | ||
| 103 | Files with other suffixes are passed to the linker. Common cases include: | ||
| 104 | |||
| 105 | |||
| 106 | __.o__ Object file | ||
| 107 | __.a__ Archive file | ||
| 108 | Linking is always the last stage unless you use one of the __-c__, __-S__, or __-E__ options to avoid it (or unless compilation errors stop the whole process). For the link stage, all __.o__ files corresponding to source files, __-l__ libraries, unrecognized filenames (including named __.o__ object files and __.a__ archives) are passed to the linker in command-line order. | ||
| 109 | !!OPTIONS | ||
| 110 | |||
| 111 | |||
| 112 | Options must be separate: `__-dr__' is quite different | ||
| 113 | from `__-d -r__ '. | ||
| 114 | |||
| 115 | |||
| 116 | Most `__-f__' and `__-W__' options have two contrary | ||
| 117 | forms: __-f__''name'' and __-fno-__''name'' (or | ||
| 118 | __-W__''name'' and __-Wno-__''name''). Only the | ||
| 119 | non-default forms are shown here. | ||
| 120 | |||
| 121 | |||
| 122 | Here is a summary of all the options, grouped by type. | ||
| 123 | Explanations are in the following sections. | ||
| 124 | |||
| 125 | |||
| 126 | __Overall Options__ | ||
| 127 | |||
| 128 | |||
| 129 | -c -S -E -o ''file'' -pipe -v -x | ||
| 130 | ''language'' | ||
| 131 | |||
| 132 | |||
| 133 | __Language Options__ | ||
| 134 | |||
| 135 | |||
| 136 | -ansi -fall-virtual -fcond-mismatch -fdollars-in-identifiers | ||
| 137 | -fenum-int-equiv -fexternal-templates -fno-asm -fno-builtin | ||
| 138 | -fhosted -fno-hosted -ffreestanding -fno-freestanding | ||
| 139 | -fno-strict-prototype -fsigned-bitfields -fsigned-char | ||
| 140 | -fthis-is-variable -funsigned-bitfields -funsigned-char | ||
| 141 | -fwritable-strings -traditional -traditional-cpp | ||
| 142 | -trigraphs | ||
| 143 | |||
| 144 | |||
| 145 | __Warning Options__ | ||
| 146 | |||
| 147 | |||
| 148 | -fsyntax-only -pedantic -pedantic-errors -w -W [-Wall] | ||
| 149 | -Waggregate-return -Wcast-align -Wcast-qual -Wchar-subscript | ||
| 150 | -Wcomment -Wconversion -Wenum-clash -Werror -Wformat | ||
| 151 | -Wid-clash-''len'' -Wimplicit -Wimplicit-int | ||
| 152 | -Wimplicit-function-declaration -Winline -Wlong-long -Wmain | ||
| 153 | -Wmissing-prototypes -Wmissing-declarations -Wnested-externs | ||
| 154 | -Wno-import -Wparentheses -Wpointer-arith -Wredundant-decls | ||
| 155 | -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch | ||
| 156 | -Wtemplate-debugging -Wtraditional -Wtrigraphs | ||
| 157 | -Wuninitialized -Wunused -Wwrite-strings | ||
| 158 | |||
| 159 | |||
| 160 | __Debugging Options__ | ||
| 161 | |||
| 162 | |||
| 163 | -a -d''letters'' -fpretend-float -g -g''level'' -gcoff | ||
| 164 | -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p | ||
| 165 | -pg -save-temps -print-file-name=''library'' | ||
| 166 | -print-libgcc-file-name | ||
| 167 | -print-prog-name=''program'' | ||
| 168 | |||
| 169 | |||
| 170 | __Optimization Options__ | ||
| 171 | |||
| 172 | |||
| 173 | -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks | ||
| 174 | -fdelayed-branch -felide-constructors | ||
| 175 | -fexpensive-optimizations -ffast-math -ffloat-store | ||
| 176 | -fforce-addr -fforce-mem -finline-functions | ||
| 177 | -fkeep-inline-functions -fmemoize-lookups | ||
| 178 | -fno-default-inline -fno-defer-pop -fno-function-cse | ||
| 179 | -fno-inline -fno-peephole -fomit-frame-pointer | ||
| 180 | -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 | ||
| 181 | -fstrength-reduce -fthread-jumps -funroll-all-loops | ||
| 182 | -funroll-loops -O -O2 -O3 | ||
| 183 | |||
| 184 | |||
| 185 | __Preprocessor Options__ | ||
| 186 | |||
| 187 | |||
| 188 | -A''assertion'' -C -dD -dM -dN | ||
| 189 | -D''macro''[[=''defn''] -E -H -idirafter ''dir'' | ||
| 190 | -include ''file'' -imacros ''file'' -iprefix | ||
| 191 | ''file'' -iwithprefix ''dir'' -M -MD -MM -MMD | ||
| 192 | -nostdinc -P -U''macro'' -undef | ||
| 193 | |||
| 194 | |||
| 195 | __Assembler Option__ | ||
| 196 | |||
| 197 | |||
| 198 | -Wa,''option'' | ||
| 199 | |||
| 200 | |||
| 201 | __Linker Options__ | ||
| 202 | |||
| 203 | |||
| 204 | -l''library'' -nostartfiles -nostdlib -static -shared | ||
| 205 | -symbolic -Xlinker ''option'' -Wl,''option'' -u | ||
| 206 | ''symbol'' | ||
| 207 | |||
| 208 | |||
| 209 | __Directory Options__ | ||
| 210 | |||
| 211 | |||
| 212 | -B''prefix'' -I''dir'' -I- -L''dir'' | ||
| 213 | |||
| 214 | |||
| 215 | __Target Options__ | ||
| 216 | |||
| 217 | |||
| 218 | -b ''machine'' -V ''version'' | ||
| 219 | |||
| 220 | |||
| 221 | __Configuration Dependent Options__ | ||
| 222 | |||
| 223 | |||
| 224 | ''M680x0 Options'' | ||
| 225 | -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 | ||
| 226 | -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield -mrtd | ||
| 227 | -mshort -msoft-float | ||
| 228 | |||
| 229 | |||
| 230 | ''VAX Options'' | ||
| 231 | -mg -mgnu -munix | ||
| 232 | |||
| 233 | |||
| 234 | ''SPARC Options'' | ||
| 235 | -mepilogue -mfpu -mhard-float -mno-fpu -mno-epilogue | ||
| 236 | -msoft-float -msparclite -mv8 -msupersparc | ||
| 237 | -mcypress | ||
| 238 | |||
| 239 | |||
| 240 | ''Convex Options'' | ||
| 241 | -margcount -mc1 -mc2 -mnoargcount | ||
| 242 | |||
| 243 | |||
| 244 | ''AMD29K Options'' | ||
| 245 | -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge -mnbw | ||
| 246 | -mnodw -msmall -mstack-check -muser-registers | ||
| 247 | |||
| 248 | |||
| 249 | ''M88K Options'' | ||
| 250 | -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division | ||
| 251 | -mhandle-large-shift -midentify-revision | ||
| 252 | -mno-check-zero-division -mno-ocs-debug-info | ||
| 253 | -mno-ocs-frame-position -mno-optimize-arg-area | ||
| 254 | -mno-serialize-volatile -mno-underscores -mocs-debug-info | ||
| 255 | -mocs-frame-position -moptimize-arg-area | ||
| 256 | -mserialize-volatile -mshort-data-''num'' -msvr3 -msvr4 | ||
| 257 | -mtrap-large-shift -muse-div-instruction -mversion-03.00 | ||
| 258 | -mwarn-passed-structs | ||
| 259 | |||
| 260 | |||
| 261 | ''RS6000 Options'' | ||
| 262 | -mfp-in-toc -mno-fop-in-toc | ||
| 263 | |||
| 264 | |||
| 265 | ''RT Options'' | ||
| 266 | -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs | ||
| 267 | -mfull-fp-blocks -mhc-struct-return -min-line-mul | ||
| 268 | -mminimum-fp-blocks -mnohc-struct-return | ||
| 269 | |||
| 270 | |||
| 271 | ''MIPS Options'' | ||
| 272 | -mcpu=''cpu type'' -mips2 -mips3 -mint64 -mlong64 | ||
| 273 | -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames -mgpopt | ||
| 274 | -mno-gpopt -mstats -mno-stats -mmemcpy -mno-memcpy | ||
| 275 | -mno-mips-tfile -mmips-tfile -msoft-float -mhard-float | ||
| 276 | -mabicalls -mno-abicalls -mhalf-pic -mno-half-pic -G | ||
| 277 | ''num'' -nocpp | ||
| 278 | |||
| 279 | |||
| 280 | ''i386 Options'' | ||
| 281 | -m486 -mno-486 -msoft-float -mno-fp-ret-in-387 | ||
| 282 | |||
| 283 | |||
| 284 | ''HPPA Options'' | ||
| 285 | -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs | ||
| 286 | -mno-shared-libs -mlong-calls -mdisable-fpregs | ||
| 287 | -mdisable-indexing -mtrailing-colon | ||
| 288 | |||
| 289 | |||
| 290 | ''i960 Options'' | ||
| 291 | -m''cpu-type'' -mnumerics -msoft-float -mleaf-procedures | ||
| 292 | -mno-leaf-procedures -mtail-call -mno-tail-call | ||
| 293 | -mcomplex-addr -mno-complex-addr -mcode-align | ||
| 294 | -mno-code-align -mic-compat -mic2.0-compat -mic3.0-compat | ||
| 295 | -masm-compat -mintel-asm -mstrict-align -mno-strict-align | ||
| 296 | -mold-align -mno-old-align | ||
| 297 | |||
| 298 | |||
| 299 | ''DEC Alpha Options'' | ||
| 300 | -mfp-regs -mno-fp-regs -mno-soft-float | ||
| 301 | -msoft-float | ||
| 302 | |||
| 303 | |||
| 304 | ''System V Options'' | ||
| 305 | -G -Qy -Qn -YP,''paths'' -Ym,''dir'' | ||
| 306 | |||
| 307 | |||
| 308 | __Code Generation Options__ | ||
| 309 | |||
| 310 | |||
| 311 | -fcall-saved-''reg'' -fcall-used-''reg'' | ||
| 312 | -ffixed-''reg'' -finhibit-size-directive | ||
| 313 | -fnonnull-objects -fno-common -fno-ident -fno-gnu-linker | ||
| 314 | -fpcc-struct-return -fpic -fPIC -freg-struct-return | ||
| 315 | -fshared-data -fshort-enums -fshort-double -fvolatile | ||
| 316 | -fvolatile-global -fverbose-asm | ||
| 317 | !!OVERALL OPTIONS | ||
| 318 | |||
| 319 | |||
| 320 | __-x__ ''language'' | ||
| 321 | |||
| 322 | |||
| 323 | Specify explicitly the ''language'' for the following | ||
| 324 | input files (rather than choosing a default based on the | ||
| 325 | file name suffix) . This option applies to all following | ||
| 3 | StuartYeates | 326 | input files until the next `__-x__' option. Possible |
| 327 | values of ''language'' are `__c__', `__objective-c__', `__c-header__', `__c++__', | ||
| 328 | `__cpp-output__', `__assembler__', and | ||
| 1 | perry | 329 | `__assembler-with-cpp__'. |
| 330 | |||
| 331 | |||
| 332 | __-x none__ | ||
| 333 | |||
| 334 | |||
| 335 | Turn off any specification of a language, so that subsequent | ||
| 336 | files are handled according to their file name suffixes (as | ||
| 337 | they are if `__-x__' has not been used at | ||
| 338 | all). | ||
| 339 | |||
| 340 | |||
| 341 | If you want only some of the four stages (preprocess, com- | ||
| 342 | pile, assemble, link), you can use `__-x__' (or filename | ||
| 343 | suffixes) to tell __gcc__ where to start, and one of | ||
| 344 | the options `__-c__', `__-S__', or `__-E__' to say | ||
| 345 | where __gcc__ is to stop. Note that some combinations | ||
| 346 | (for example, `__-x cpp-output -E__') instruct __gcc__ | ||
| 347 | to do nothing at all. | ||
| 348 | |||
| 349 | |||
| 350 | __-c__ | ||
| 351 | |||
| 352 | |||
| 353 | Compile or assemble the source files, but do not link. The | ||
| 354 | compiler output is an object file corresponding to each | ||
| 355 | source file. | ||
| 356 | |||
| 357 | |||
| 358 | By default, GCC makes the object file name for a source file | ||
| 359 | by replacing the suffix `__.c__', `__.i__', | ||
| 360 | `__.s__', etc., with `__.o__'. Use __-o__ to select | ||
| 361 | another name. | ||
| 362 | |||
| 363 | |||
| 364 | GCC ignores any unrecognized input files (those that do not | ||
| 365 | require compilation or assembly) with the __-c__ | ||
| 366 | option. | ||
| 367 | |||
| 368 | |||
| 369 | __-S__ | ||
| 370 | |||
| 371 | |||
| 372 | Stop after the stage of compilation proper; do not assemble. | ||
| 373 | The output is an assembler code file for each non-assembler | ||
| 374 | input file specified. | ||
| 375 | |||
| 376 | |||
| 377 | By default, GCC makes the assembler file name for a source | ||
| 378 | file by replacing the suffix `__.c__', `__.i__', etc., | ||
| 379 | with `__.s__'. Use __-o__ to select another | ||
| 380 | name. | ||
| 381 | |||
| 382 | |||
| 383 | GCC ignores any input files that don't require com- | ||
| 384 | pilation. | ||
| 385 | |||
| 386 | |||
| 387 | __-E__ | ||
| 388 | |||
| 389 | |||
| 390 | Stop after the preprocessing stage; do not run the compiler | ||
| 391 | proper. The output is preprocessed source code, which is | ||
| 392 | sent to the standard output. | ||
| 393 | |||
| 394 | |||
| 395 | GCC ignores input files which don't require prepro- | ||
| 396 | cessing. | ||
| 397 | |||
| 398 | |||
| 399 | __-o__ ''file'' | ||
| 400 | |||
| 401 | |||
| 402 | Place output in file ''file''. This applies regardless to | ||
| 403 | whatever sort of output GCC is producing, whether it be an | ||
| 404 | executable file, an object file, an assembler file or | ||
| 405 | preprocessed C code. | ||
| 406 | |||
| 407 | |||
| 408 | Since only one output file can be specified, it does not | ||
| 409 | make sense to use `__-o__' when compiling more than one | ||
| 410 | input file, unless you are producing an executable file as | ||
| 411 | output. | ||
| 412 | |||
| 413 | |||
| 414 | If you do not specify `__-o__', the default is to put an | ||
| 415 | executable file in `__a.out__', the object file for | ||
| 416 | `''source''__.__''suffix''' in | ||
| 417 | `''source''__.o__', its assembler file in | ||
| 418 | `''source''__.s__', and all preprocessed C source on | ||
| 419 | standard output. | ||
| 420 | |||
| 421 | |||
| 422 | __-v__ | ||
| 423 | |||
| 424 | |||
| 425 | Print (on standard error output) the commands executed to | ||
| 426 | run the stages of compilation. Also print the version number | ||
| 427 | of the compiler driver program and of the preprocessor and | ||
| 428 | the compiler proper. | ||
| 429 | |||
| 430 | |||
| 431 | __-pipe__ | ||
| 432 | |||
| 433 | |||
| 434 | Use pipes rather than temporary files for communication | ||
| 435 | between the various stages of compilation. This fails to | ||
| 436 | work on some systems where the assembler cannot read from | ||
| 437 | a pipe; but the GNU assembler has no trouble. | ||
| 438 | !!LANGUAGE OPTIONS | ||
| 439 | |||
| 440 | |||
| 441 | The following options control the dialect of C that the | ||
| 442 | compiler accepts: | ||
| 443 | |||
| 444 | |||
| 445 | __-ansi__ | ||
| 446 | |||
| 447 | |||
| 448 | Support all ANSI standard C programs. | ||
| 449 | |||
| 450 | |||
| 451 | This turns off certain features of GNU C that are | ||
| 452 | incompatible with [ANSI] [C], such as the __asm__, | ||
| 453 | __inline__ and __typeof__ keywords, and predefined | ||
| 454 | macros such as __unix__ and __vax__ that identify the | ||
| 455 | type of system you are using. It also enables the | ||
| 456 | undesirable and rarely used ANSI trigraph feature, and | ||
| 457 | disallows `__$__' as part of identifiers. | ||
| 458 | |||
| 459 | |||
| 460 | The alternate keywords ____asm____, ____extension____, | ||
| 461 | ____inline____ and ____typeof____ continue to work | ||
| 462 | despite `__-ansi__'. You would not want to use them in an | ||
| 463 | ANSI C program, of course, but it is useful to put them in | ||
| 464 | header files that might be included in compilations done | ||
| 465 | with `__-ansi__'. Alternate predefined macros such as | ||
| 466 | ____unix____ and ____vax____ are also available, | ||
| 467 | with or without `__-ansi__'. | ||
| 468 | |||
| 469 | |||
| 470 | The `__-ansi__' option does not cause non-ANSI programs | ||
| 471 | to be rejected gratuitously. For that, `__-pedantic__' is | ||
| 472 | required in addition to `__-ansi__'. | ||
| 473 | |||
| 474 | |||
| 475 | The preprocessor predefines a macro ____STRICT_ANSI____ | ||
| 476 | when you use the `__-ansi__' option. Some header files | ||
| 477 | may notice this macro and refrain from declaring certain | ||
| 478 | functions or defining certain macros that the ANSI standard | ||
| 479 | doesn't call for; this is to avoid interfering with any | ||
| 480 | programs that might use these names for other | ||
| 481 | things. | ||
| 482 | |||
| 483 | |||
| 484 | __-fno-asm__ | ||
| 485 | |||
| 486 | |||
| 487 | Do not recognize __asm__, __inline__ or __typeof__ | ||
| 488 | as a keyword. These words may then be used as identifiers. | ||
| 489 | You can use ____asm____, ____inline____ and | ||
| 490 | ____typeof____ instead. `__-ansi__' implies | ||
| 491 | `__-fno-asm__'. | ||
| 492 | |||
| 493 | |||
| 494 | __-fno-builtin__ | ||
| 495 | |||
| 496 | |||
| 497 | Don't recognize built-in functions that do not begin with | ||
| 498 | two leading underscores. Currently, the functions affected | ||
| 499 | include ___exit__, __abort__, __abs__, __allo- | ||
| 500 | ca__, __cos__, __exit__, __fabs__, __labs__, | ||
| 501 | __memcmp__, __memcpy__, __sin__, __sqrt__, | ||
| 502 | __strcmp__, __strcpy__, and | ||
| 503 | __strlen__. | ||
| 504 | |||
| 505 | |||
| 506 | The `__-ansi__' option prevents __alloca__ and | ||
| 507 | ___exit__ from being builtin functions. | ||
| 508 | |||
| 509 | |||
| 510 | __-fhosted__ | ||
| 511 | |||
| 512 | |||
| 513 | Compile for a hosted environment; this implies the | ||
| 514 | `__-fbuiltin__' option, and implies that suspicious | ||
| 515 | declarations of __main__ should be warned | ||
| 516 | about. | ||
| 517 | |||
| 518 | |||
| 519 | __-ffreestanding__ | ||
| 520 | |||
| 521 | |||
| 522 | Compile for a freestanding environment; this implies the | ||
| 523 | `__-fno-builtin__' option, and implies that __main__ | ||
| 524 | has no special requirements. | ||
| 525 | |||
| 526 | |||
| 527 | __-fno-strict-prototype__ | ||
| 528 | |||
| 529 | |||
| 530 | Treat a function declaration with no arguments, such as | ||
| 531 | `__int foo__ ();', as C would treat it--as saying | ||
| 532 | nothing about the number of arguments or their types (C++ | ||
| 533 | only). Normally, such a declaration in C++ means that the | ||
| 534 | function __foo__ takes no arguments. | ||
| 535 | |||
| 536 | |||
| 537 | __-trigraphs__ | ||
| 538 | |||
| 539 | |||
| 540 | Support ANSI C trigraphs. The `__-ansi__' option im- | ||
| 541 | plies `__-trigraphs__'. | ||
| 542 | |||
| 543 | |||
| 544 | __-traditional__ | ||
| 545 | |||
| 546 | |||
| 547 | Attempt to support some aspects of traditional C compilers. | ||
| 548 | For details, see the GNU C Manual; the duplicate list here | ||
| 549 | has been deleted so that we won't get complaints when it is | ||
| 550 | out of date. | ||
| 551 | |||
| 552 | |||
| 553 | But one note about C++ programs only (not C). | ||
| 554 | `__-traditional__' has one additional effect for C++: | ||
| 555 | assignment to __this__ is permitted. This is the same as | ||
| 556 | the effect of `__-fthis-is-variable__'. | ||
| 557 | |||
| 558 | |||
| 559 | __-traditional-cpp__ | ||
| 560 | |||
| 561 | |||
| 562 | Attempt to support some aspects of traditional C | ||
| 563 | preprocessors. This includes the items that specifically | ||
| 564 | mention the preprocessor above, but none of the other | ||
| 565 | effects of `__-traditional__'. | ||
| 566 | |||
| 567 | |||
| 568 | __-fdollars-in-identifiers__ | ||
| 569 | |||
| 570 | |||
| 571 | Permit the use of `__$__' in identifiers (C++ only). You | ||
| 572 | can also use `__-fno-dollars-in-identifiers__' to | ||
| 573 | explicitly prohibit use of `__$__'. (GNU C++ allows | ||
| 574 | `__$__' by default on some target systems but not oth- | ||
| 575 | ers.) | ||
| 576 | |||
| 577 | |||
| 578 | __-fenum-int-equiv__ | ||
| 579 | |||
| 580 | |||
| 581 | Permit implicit conversion of __int__ to enumeration | ||
| 582 | types (C++ only). Normally GNU C++ allows conversion of | ||
| 583 | __enum__ to __int__, but not the other way | ||
| 584 | around. | ||
| 585 | |||
| 586 | |||
| 587 | __-fexternal-templates__ | ||
| 588 | |||
| 589 | |||
| 590 | Produce smaller code for template declarations, by | ||
| 591 | generating only a single copy of each template function | ||
| 592 | where it is defined (C++ only). To use this option | ||
| 593 | successfully, you must also mark all files that use | ||
| 594 | templates with either `__#pragma implementation__' (the | ||
| 595 | definition) or `__#pragma interface__' | ||
| 596 | (declarations). | ||
| 597 | |||
| 598 | |||
| 599 | When your code is compiled with `__-fexternal-tem- | ||
| 600 | plates__', all template instantiations are external. You | ||
| 601 | must arrange for all necessary instantiations to appear in | ||
| 602 | the implementation file; you can do this with a | ||
| 603 | __typedef__ that references each instantiation needed. | ||
| 604 | Conversely, when you compile using the default option | ||
| 605 | `__-fno-external-templates__', all template | ||
| 606 | instantiations are explicitly internal. | ||
| 607 | |||
| 608 | |||
| 609 | __-fall-virtual__ | ||
| 610 | |||
| 611 | |||
| 612 | Treat all possible member functions as virtual, im- | ||
| 613 | plicitly. All member functions (except for constructor | ||
| 614 | functions and __new__ or __delete__ member opera- | ||
| 615 | tors) are treated as virtual functions of the class where | ||
| 616 | they appear. | ||
| 617 | |||
| 618 | |||
| 619 | This does not mean that all calls to these member functions | ||
| 620 | will be made through the internal table of virtual | ||
| 621 | functions. Under some circumstances, the compiler can | ||
| 622 | determine that a call to a given virtual function can be | ||
| 623 | made directly; in these cases the calls are direct in any | ||
| 624 | case. | ||
| 625 | |||
| 626 | |||
| 627 | __-fcond-mismatch__ | ||
| 628 | |||
| 629 | |||
| 630 | Allow conditional expressions with mismatched types in the | ||
| 631 | second and third arguments. The value of such an expression | ||
| 632 | is void. | ||
| 633 | |||
| 634 | |||
| 635 | __-fthis-is-variable__ | ||
| 636 | |||
| 637 | |||
| 638 | Permit assignment to __this__ (C++ only). The incorpo- | ||
| 639 | ration of user-defined free store management into C++ has | ||
| 640 | made assignment to `__this__' an anachronism. Therefore, | ||
| 641 | by default it is invalid to assign to __this__ within a | ||
| 642 | class member function. However, for backwards compatibility, | ||
| 643 | you can make it valid with | ||
| 644 | `__-fthis-is-variable__'. | ||
| 645 | |||
| 646 | |||
| 647 | __-funsigned-char__ | ||
| 648 | |||
| 649 | |||
| 650 | Let the type __char__ be unsigned, like __unsigned | ||
| 651 | char__. | ||
| 652 | |||
| 653 | |||
| 654 | Each kind of machine has a default for what __char__ | ||
| 655 | should be. It is either like __unsigned char__ by de- | ||
| 656 | fault or like __signed char__ by default. | ||
| 657 | |||
| 658 | |||
| 659 | Ideally, a portable program should always use __signed | ||
| 660 | char__ or __unsigned char__ when it depends on the | ||
| 661 | signedness of an object. But many programs have been written | ||
| 662 | to use plain __char__ and expect it to be signed, or | ||
| 663 | expect it to be unsigned, depending on the machines they | ||
| 664 | were written for. This option, and its inverse, let you make | ||
| 665 | such a program work with the opposite default. | ||
| 666 | |||
| 667 | |||
| 668 | The type __char__ is always a distinct type from each of | ||
| 669 | __signed char__ and __unsigned char__, even though its | ||
| 670 | behavior is always just like one of those two. | ||
| 671 | |||
| 672 | |||
| 673 | __-fsigned-char__ | ||
| 674 | |||
| 675 | |||
| 676 | Let the type __char__ be signed, like __signed | ||
| 677 | char__. | ||
| 678 | |||
| 679 | |||
| 680 | Note that this is equivalent to `__-fno-un- | ||
| 681 | signed-char__', which is the negative form of `__-fun- | ||
| 682 | signed-char__'. Likewise, `__-fno-signed-char__' is | ||
| 683 | equivalent to `__-funsigned-char__'. | ||
| 684 | |||
| 685 | |||
| 686 | __-fsigned-bitfields__ | ||
| 687 | |||
| 688 | |||
| 689 | __-funsigned-bitfields__ | ||
| 690 | |||
| 691 | |||
| 692 | __-fno-signed-bitfields__ | ||
| 693 | |||
| 694 | |||
| 695 | __-fno-unsigned-bitfields__ | ||
| 696 | |||
| 697 | |||
| 698 | These options control whether a bitfield is signed or | ||
| 699 | unsigned, when declared with no explicit `__signed__' or | ||
| 700 | `__unsigned__' qualifier. By default, such a bitfield is | ||
| 701 | signed, because this is consistent: the basic integer types | ||
| 702 | such as __int__ are signed types. | ||
| 703 | |||
| 704 | |||
| 705 | However, when you specify `__-traditional__', bitfields | ||
| 706 | are all unsigned no matter what. | ||
| 707 | |||
| 708 | |||
| 709 | __-fwritable-strings__ | ||
| 710 | |||
| 711 | |||
| 712 | Store string constants in the writable data segment and | ||
| 713 | don't uniquize them. This is for compatibility with old | ||
| 714 | programs which assume they can write into string constants. | ||
| 715 | `__-traditional__' also has this effect. | ||
| 716 | |||
| 717 | |||
| 718 | Writing into string constants is a very bad idea; | ||
| 719 | ``constants'' should be constant. | ||
| 720 | !!PREPROCESSOR OPTIONS | ||
| 721 | |||
| 722 | |||
| 723 | These options control the C preprocessor, which is run on | ||
| 724 | each C source file before actual compilation. | ||
| 725 | |||
| 726 | |||
| 727 | If you use the `__-E__' option, GCC does nothing except | ||
| 728 | preprocessing. Some of these options make sense only | ||
| 729 | together with `__-E__' because they cause the | ||
| 730 | preprocessor output to be unsuitable for actual | ||
| 731 | compilation. | ||
| 732 | |||
| 733 | |||
| 734 | __-include__ ''file'' | ||
| 735 | |||
| 736 | |||
| 737 | Process ''file'' as input before processing the regular | ||
| 738 | input file. In effect, the contents of ''file'' are | ||
| 739 | compiled first. Any `__-D__' and `__-U__' options on | ||
| 740 | the command line are always processed before | ||
| 741 | `__-include__ ''file''', regardless of the order in | ||
| 742 | which they are written. All the `__-include__' and | ||
| 743 | `__-imacros__' options are processed in the order in | ||
| 744 | which they are written. | ||
| 745 | |||
| 746 | |||
| 747 | __-imacros__ ''file'' | ||
| 748 | |||
| 749 | |||
| 750 | Process ''file'' as input, discarding the resulting | ||
| 751 | output, before processing the regular input file. Because | ||
| 752 | the output generated from ''file'' is discarded, the | ||
| 753 | only effect of `__-imacros__ ''file''' is to make the | ||
| 754 | macros defined in ''file'' available for use in the main | ||
| 755 | input. The preprocessor evaluates any `__-D__' and | ||
| 756 | `__-U__' options on the command line before processing | ||
| 757 | `__-imacros__''file''', regardless of the order in | ||
| 758 | which they are written. All the `__-include__' and | ||
| 759 | `__-imacros__' options are processed in the order in | ||
| 760 | which they are written. | ||
| 761 | |||
| 762 | |||
| 763 | __-idirafter__ ''dir'' | ||
| 764 | |||
| 765 | |||
| 766 | Add the directory ''dir'' to the second include path. The | ||
| 767 | directories on the second include path are searched when a | ||
| 768 | header file is not found in any of the directories in the | ||
| 769 | main include path (the one that `__-I__' adds | ||
| 770 | to). | ||
| 771 | |||
| 772 | |||
| 773 | __-iprefix__ ''prefix'' | ||
| 774 | |||
| 775 | |||
| 776 | Specify ''prefix'' as the prefix for subsequent | ||
| 777 | `__-iwithprefix__' options. | ||
| 778 | |||
| 779 | |||
| 780 | __-iwithprefix__ ''dir'' | ||
| 781 | |||
| 782 | |||
| 783 | Add a directory to the second include path. The directory's | ||
| 784 | name is made by concatenating ''prefix'' and ''dir'', | ||
| 785 | where ''prefix'' was specified previously with | ||
| 786 | `__-iprefix__'. | ||
| 787 | |||
| 788 | |||
| 789 | __-nostdinc__ | ||
| 790 | |||
| 791 | |||
| 792 | Do not search the standard system directories for header | ||
| 793 | files. Only the directories you have specified with | ||
| 794 | `__-I__' options (and the current directory, if | ||
| 795 | appropriate) are searched. | ||
| 796 | |||
| 797 | |||
| 798 | By using both `__-nostdinc__' and `__-I-__', you can | ||
| 799 | limit the include-file search file to only those directo- | ||
| 800 | ries you specify explicitly. | ||
| 801 | |||
| 802 | |||
| 803 | __-nostdinc++__ | ||
| 804 | |||
| 805 | |||
| 806 | Do not search for header files in the C++-specific standard | ||
| 807 | directories, but do still search the other standard | ||
| 808 | directories. (This option is used when building | ||
| 809 | `__libg++__'.) | ||
| 810 | |||
| 811 | |||
| 812 | __-undef__ | ||
| 813 | |||
| 814 | |||
| 815 | Do not predefine any nonstandard macros. (Including | ||
| 816 | architecture flags). | ||
| 817 | |||
| 818 | |||
| 819 | __-E__ | ||
| 820 | |||
| 821 | |||
| 822 | Run only the C preprocessor. Preprocess all the C source | ||
| 823 | files specified and output the results to standard output or | ||
| 824 | to the specified output file. | ||
| 825 | |||
| 826 | |||
| 827 | __-C__ | ||
| 828 | |||
| 829 | |||
| 830 | Tell the preprocessor not to discard comments. Used with the | ||
| 831 | `__-E__' option. | ||
| 832 | |||
| 833 | |||
| 834 | __-P__ | ||
| 835 | |||
| 836 | |||
| 837 | Tell the preprocessor not to generate `__#line__' com- | ||
| 838 | mands. Used with the `__-E__' option. | ||
| 839 | |||
| 840 | |||
| 841 | __-M [[ -MG ]__ | ||
| 842 | |||
| 843 | |||
| 844 | Tell the preprocessor to output a rule suitable for | ||
| 845 | __make__ describing the dependencies of each object file. | ||
| 846 | For each source file, the preprocessor outputs one | ||
| 847 | __make__-rule whose target is the object file name for | ||
| 848 | that source file and whose dependencies are all the files | ||
| 849 | `__#include__'d in it. This rule may be a single line or | ||
| 850 | may be continued with `__\__'-newline if it is long. | ||
| 851 | The list of rules is printed on standard output instead of | ||
| 852 | the preprocessed C program. | ||
| 853 | |||
| 854 | |||
| 855 | `__-M__' implies `__-E__'. | ||
| 856 | |||
| 857 | |||
| 858 | `__-MG__' says to treat missing header files as gener- | ||
| 859 | ated files and assume they live in the same directory as | ||
| 860 | the source file. It must be specified in addition to | ||
| 861 | `__-M__'. | ||
| 862 | |||
| 863 | |||
| 864 | __-MM [[ -MG ]__ | ||
| 865 | |||
| 866 | |||
| 867 | Like `__-M__' but the output mentions only the user | ||
| 868 | header files included with `__#include__ | ||
| 869 | ''file'' | ||
| 870 | ''#include ''''file'' | ||
| 871 | '' | ||
| 872 | |||
| 873 | |||
| 874 | __-MD__ | ||
| 875 | |||
| 876 | |||
| 877 | Like `__-M__' but the dependency information is written | ||
| 878 | to files with names made by replacing `__.o__' with | ||
| 879 | `__.d__' at the end of the output file names. This is in | ||
| 880 | addition to compiling the file as specified--`__-MD__' | ||
| 881 | does not inhibit ordinary compilation the way `__-M__' | ||
| 882 | does. | ||
| 883 | |||
| 884 | |||
| 885 | The Mach utility `__md__' can be used to merge the | ||
| 886 | `__.d__' files into a single dependency file suitable for | ||
| 887 | using with the `__make__' command. | ||
| 888 | |||
| 889 | |||
| 890 | __-MMD__ | ||
| 891 | |||
| 892 | |||
| 893 | Like `__-MD__' except mention only user header files, not | ||
| 894 | system header files. | ||
| 895 | |||
| 896 | |||
| 897 | __-H__ | ||
| 898 | |||
| 899 | |||
| 900 | Print the name of each header file used, in addition to | ||
| 901 | other normal activities. | ||
| 902 | |||
| 903 | |||
| 904 | __-A__''question''__(__''answer''__)__ | ||
| 905 | |||
| 906 | |||
| 907 | Assert the answer ''answer'' for ''question'', in case | ||
| 908 | it is tested with a preprocessor conditional such as `__#if | ||
| 909 | #__''question''__(__''answer''__)__'. | ||
| 910 | `__-A-__' disables the standard assertions that | ||
| 911 | normally describe the target machine. | ||
| 912 | |||
| 913 | |||
| 914 | __-A__''question'' | ||
| 915 | |||
| 916 | |||
| 917 | (''answer'') Assert the answer ''answer'' for | ||
| 918 | ''question'', in case it is tested with a preprocessor | ||
| 919 | conditional such as `__#if__ | ||
| 920 | #''question''(''answer'')'. `__-A-__' disables the | ||
| 921 | standard assertions that normally describe the target | ||
| 922 | machine. | ||
| 923 | |||
| 924 | |||
| 925 | __-D__''macro'' | ||
| 926 | |||
| 927 | |||
| 928 | Define macro ''macro'' with the string `__1__' as its | ||
| 929 | definition. | ||
| 930 | |||
| 931 | |||
| 932 | __-D__''macro''__=__''defn'' | ||
| 933 | |||
| 934 | |||
| 935 | Define macro ''macro'' as ''defn''. All instances of | ||
| 936 | `__-D__' on the command line are processed before any | ||
| 937 | `__-U__' options. | ||
| 938 | |||
| 939 | |||
| 940 | __-U__''macro'' | ||
| 941 | |||
| 942 | |||
| 943 | Undefine macro ''macro''. `__-U__' options are | ||
| 944 | evaluated after all `__-D__' options, but before any | ||
| 945 | `__-include__' and `__-imacros__' | ||
| 946 | options. | ||
| 947 | |||
| 948 | |||
| 949 | __-dM__ | ||
| 950 | |||
| 951 | |||
| 952 | Tell the preprocessor to output only a list of the macro | ||
| 953 | definitions that are in effect at the end of preprocessing. | ||
| 954 | Used with the `__-E__' option. | ||
| 955 | |||
| 956 | |||
| 957 | __-dD__ | ||
| 958 | |||
| 959 | |||
| 960 | Tell the preprocessor to pass all macro definitions into the | ||
| 961 | output, in their proper sequence in the rest of the | ||
| 962 | output. | ||
| 963 | |||
| 964 | |||
| 965 | __-dN__ | ||
| 966 | |||
| 967 | |||
| 968 | Like `__-dD__' except that the macro arguments and con- | ||
| 969 | tents are omitted. Only `__#define__ ''name''' is | ||
| 970 | included in the output. | ||
| 971 | !!ASSEMBLER OPTION | ||
| 972 | |||
| 973 | |||
| 974 | __-Wa,__''option'' | ||
| 975 | |||
| 976 | |||
| 977 | Pass ''option'' as an option to the assembler. If ''op- | ||
| 978 | tion'' contains commas, it is split into multiple op- | ||
| 979 | tions at the commas. | ||
| 980 | !!LINKER OPTIONS | ||
| 981 | |||
| 982 | |||
| 983 | These options come into play when the compiler links ob- | ||
| 984 | ject files into an executable output file. They are mean- | ||
| 985 | ingless if the compiler is not doing a link | ||
| 986 | step. | ||
| 987 | |||
| 988 | |||
| 989 | ''object-file-name'' | ||
| 990 | |||
| 991 | |||
| 992 | A file name that does not end in a special recognized | ||
| 993 | suffix is considered to name an object file or library. | ||
| 994 | (Object files are distinguished from libraries by the linker | ||
| 995 | according to the file contents.) If GCC does a link step, | ||
| 996 | these object files are used as input to the | ||
| 997 | linker. | ||
| 998 | |||
| 999 | |||
| 1000 | __-l__''library'' | ||
| 1001 | |||
| 1002 | |||
| 1003 | Use the library named ''library'' when | ||
| 1004 | linking. | ||
| 1005 | |||
| 1006 | |||
| 1007 | The linker searches a standard list of directories for the | ||
| 1008 | library, which is actually a file named | ||
| 1009 | `__lib__''library''.a'. The linker then uses this file | ||
| 1010 | as if it had been specified precisely by name. | ||
| 1011 | |||
| 1012 | |||
| 1013 | The directories searched include several standard system | ||
| 1014 | directories plus any that you specify with | ||
| 1015 | `__-L__'. | ||
| 1016 | |||
| 1017 | |||
| 1018 | Normally the files found this way are library files--archive | ||
| 1019 | files whose members are object files. The linker handles an | ||
| 1020 | archive file by scanning through it for members which | ||
| 1021 | define symbols that have so far been referenced but not | ||
| 1022 | defined. However, if the linker finds an ordinary object | ||
| 1023 | file rather than a library, the object file is linked in the | ||
| 1024 | usual fashion. The only difference between using an | ||
| 1025 | `__-l__' option and specifying a file name is that | ||
| 1026 | `__-l__' surrounds ''library'' with `__lib__' and | ||
| 1027 | `__.a__' and searches several directories. | ||
| 1028 | |||
| 1029 | |||
| 1030 | __-lobjc__ | ||
| 1031 | |||
| 1032 | |||
| 1033 | You need this special case of the __-l__ option in or- | ||
| 1034 | der to link an Objective C program. | ||
| 1035 | |||
| 1036 | |||
| 1037 | __-nostartfiles__ | ||
| 1038 | |||
| 1039 | |||
| 1040 | Do not use the standard system startup files when linking. | ||
| 1041 | The standard libraries are used normally. | ||
| 1042 | |||
| 1043 | |||
| 1044 | __-nostdlib__ | ||
| 1045 | |||
| 1046 | |||
| 1047 | Don't use the standard system libraries and startup files | ||
| 1048 | when linking. Only the files you specify will be passed to | ||
| 1049 | the linker. | ||
| 1050 | |||
| 1051 | |||
| 1052 | __-static__ | ||
| 1053 | |||
| 1054 | |||
| 1055 | On systems that support dynamic linking, this prevents | ||
| 1056 | linking with the shared libraries. On other systems, this | ||
| 1057 | option has no effect. | ||
| 1058 | |||
| 1059 | |||
| 1060 | __-shared__ | ||
| 1061 | |||
| 1062 | |||
| 1063 | Produce a shared object which can then be linked with other | ||
| 1064 | objects to form an executable. Only a few systems support | ||
| 1065 | this option. | ||
| 1066 | |||
| 1067 | |||
| 1068 | __-symbolic__ | ||
| 1069 | |||
| 1070 | |||
| 1071 | Bind references to global symbols when building a shared | ||
| 1072 | object. Warn about any unresolved references (unless | ||
| 1073 | overridden by the link editor option `__-Xlinker -z | ||
| 1074 | -Xlinker defs__'). Only a few systems support this | ||
| 1075 | option. | ||
| 1076 | |||
| 1077 | |||
| 1078 | __-Xlinker__ ''option'' | ||
| 1079 | |||
| 1080 | |||
| 1081 | Pass ''option'' as an option to the linker. You can use | ||
| 1082 | this to supply system-specific linker options which GNU CC | ||
| 1083 | does not know how to recognize. | ||
| 1084 | |||
| 1085 | |||
| 1086 | If you want to pass an option that takes an argument, you | ||
| 1087 | must use `__-Xlinker__' twice, once for the option and | ||
| 1088 | once for the argument. For example, to pass `__-assert | ||
| 1089 | definitions__', you must write `__-Xlinker -assert | ||
| 1090 | -Xlinker definitions__'. It does not work to write | ||
| 1091 | `__-Xlinker __', because | ||
| 1092 | this passes the entire string as a single argument, which is | ||
| 1093 | not what the linker expects. | ||
| 1094 | |||
| 1095 | |||
| 1096 | __-Wl,__''option'' | ||
| 1097 | |||
| 1098 | |||
| 1099 | Pass ''option'' as an option to the linker. If | ||
| 1100 | ''option'' contains commas, it is split into multiple | ||
| 1101 | options at the commas. | ||
| 1102 | |||
| 1103 | |||
| 1104 | __-u__ ''symbol'' | ||
| 1105 | |||
| 1106 | |||
| 1107 | Pretend the symbol ''symbol'' is undefined, to force | ||
| 1108 | linking of library modules to define it. You can use | ||
| 1109 | `__-u__' multiple times with different symbols to force | ||
| 1110 | loading of additional library modules. | ||
| 1111 | !!DIRECTORY OPTIONS | ||
| 1112 | |||
| 1113 | |||
| 1114 | These options specify directories to search for header | ||
| 1115 | files, for libraries and for parts of the | ||
| 1116 | compiler: | ||
| 1117 | |||
| 1118 | |||
| 1119 | __-I__''dir'' | ||
| 1120 | |||
| 1121 | |||
| 1122 | Append directory ''dir'' to the list of directories | ||
| 1123 | searched for include files. | ||
| 1124 | |||
| 1125 | |||
| 1126 | __-I-__ | ||
| 1127 | |||
| 1128 | |||
| 1129 | Any directories you specify with `__-I__' options be- | ||
| 1130 | fore the `__-I-__' option are searched only for the case | ||
| 1131 | of `__#include __''file''____'; they | ||
| 1132 | are not searched for `__#include | ||
| 1133 | __''file'''' | ||
| 1134 | |||
| 1135 | |||
| 1136 | If additional directories are specified with `__-I__' | ||
| 1137 | options after the `__-I-__', these directories are | ||
| 1138 | searched for all `__#include__' directives. (Ordinari- ly | ||
| 1139 | ''all'' `__-I__' directories are used this | ||
| 1140 | way.) | ||
| 1141 | |||
| 1142 | |||
| 1143 | In addition, the `__-I-__' option inhibits the use of the | ||
| 1144 | current directory (where the current input file came from) | ||
| 1145 | as the first search directory for `__#include | ||
| 1146 | __''file''____'. There is no way to | ||
| 1147 | override this effect of `__-I-__'. With `__-I.__' you | ||
| 1148 | can specify searching the directory which was current when | ||
| 1149 | the compiler was invoked. That is not exactly the same as | ||
| 1150 | what the preprocessor does by default, but it is often | ||
| 1151 | satisfactory. | ||
| 1152 | |||
| 1153 | |||
| 1154 | `__-I-__' does not inhibit the use of the standard sys- | ||
| 1155 | tem directories for header files. Thus, `__-I-__' and | ||
| 1156 | `__-nostdinc__' are independent. | ||
| 1157 | |||
| 1158 | |||
| 1159 | __-L__''dir'' | ||
| 1160 | |||
| 1161 | |||
| 1162 | Add directory ''dir'' to the list of directories to be | ||
| 1163 | searched for `__-l__'. | ||
| 1164 | |||
| 1165 | |||
| 1166 | __-B__''prefix'' | ||
| 1167 | |||
| 1168 | |||
| 1169 | This option specifies where to find the executables, | ||
| 1170 | libraries and data files of the compiler it- | ||
| 1171 | self. | ||
| 1172 | |||
| 1173 | |||
| 1174 | The compiler driver program runs one or more of the | ||
| 1175 | subprograms `__cpp__', `__cc1__' (or, for C++, | ||
| 1176 | `__cc1plus__'), `__as__' and `__ld__'. It tries | ||
| 1177 | ''prefix'' as a prefix for each program it tries to run, | ||
| 1178 | both with and without | ||
| 1179 | `''machine''__/__''version''__/__'. | ||
| 1180 | |||
| 1181 | |||
| 1182 | For each subprogram to be run, the compiler driver first | ||
| 1183 | tries the `__-B__' prefix, if any. If that name is not | ||
| 1184 | found, or if `__-B__' was not specified, the driver tries | ||
| 1185 | two standard prefixes, which are `__/usr/lib/gcc/__' and | ||
| 1186 | `__/usr/local/lib/gcc-lib/__'. If neither of those | ||
| 1187 | results in a file name that is found, the compiler driver | ||
| 1188 | searches for the unmodified program name, using the | ||
| 1189 | directories specified in your `__PATH__' environment | ||
| 1190 | variable. | ||
| 1191 | |||
| 1192 | |||
| 1193 | The run-time support file `__libgcc.a__' is also searched | ||
| 1194 | for using the `__-B__' prefix, if needed. If it is not | ||
| 1195 | found there, the two standard prefixes above are tried, and | ||
| 1196 | that is all. The file is left out of the link if it is not | ||
| 1197 | found by those means. Most of the time, on most machines, | ||
| 1198 | `__libgcc.a__' is not actually necessary. | ||
| 1199 | |||
| 1200 | |||
| 1201 | You can get a similar result from the environment variable | ||
| 1202 | __GCC_EXEC_PREFIX__; if it is defined, its value is used | ||
| 1203 | as a prefix in the same way. If both the `__-B__' option | ||
| 1204 | and the __GCC_EXEC_PREFIX__ variable are present, the | ||
| 1205 | `__-B__' option is used first and the environment | ||
| 1206 | variable value second. | ||
| 1207 | !!WARNING OPTIONS | ||
| 1208 | |||
| 1209 | |||
| 1210 | Warnings are diagnostic messages that report constructions | ||
| 1211 | which are not inherently erroneous but which are risky or | ||
| 1212 | suggest there may have been an error. | ||
| 1213 | |||
| 1214 | |||
| 1215 | These options control the amount and kinds of warnings | ||
| 1216 | produced by GNU CC: | ||
| 1217 | |||
| 1218 | |||
| 1219 | __-fsyntax-only__ | ||
| 1220 | |||
| 1221 | |||
| 1222 | Check the code for syntax errors, but don't emit any | ||
| 1223 | output. | ||
| 1224 | |||
| 1225 | |||
| 1226 | __-w__ | ||
| 1227 | |||
| 1228 | |||
| 1229 | Inhibit all warning messages. | ||
| 1230 | |||
| 1231 | |||
| 1232 | __-Wno-import__ | ||
| 1233 | |||
| 1234 | |||
| 1235 | Inhibit warning messages about the use of | ||
| 1236 | __#import__. | ||
| 1237 | |||
| 1238 | |||
| 1239 | __-pedantic__ | ||
| 1240 | |||
| 1241 | |||
| 1242 | Issue all the warnings demanded by strict ANSI standard C; | ||
| 1243 | reject all programs that use forbidden | ||
| 1244 | extensions. | ||
| 1245 | |||
| 1246 | |||
| 1247 | Valid ANSI standard C programs should compile properly | ||
| 1248 | with or without this option (though a rare few will require | ||
| 1249 | `__-ansi__'). However, without this option, certain GNU | ||
| 1250 | extensions and traditional C features are supported as | ||
| 1251 | well. With this option, they are rejected. There is no | ||
| 1252 | reason to ''use'' this option; it exists only to satisfy | ||
| 1253 | pedants. | ||
| 1254 | |||
| 1255 | |||
| 1256 | `__-pedantic__' does not cause warning messages for use | ||
| 1257 | of the alternate keywords whose names begin and end with | ||
| 1258 | `______'. Pedantic warnings are also disabled in the | ||
| 1259 | expression that follows ____extension____. However, | ||
| 1260 | only system header files should use these escape routes; | ||
| 1261 | application programs should avoid them. | ||
| 1262 | |||
| 1263 | |||
| 1264 | __-pedantic-errors__ | ||
| 1265 | |||
| 1266 | |||
| 1267 | Like `__-pedantic__', except that errors are produced | ||
| 1268 | rather than warnings. | ||
| 1269 | |||
| 1270 | |||
| 1271 | __-W__ | ||
| 1272 | |||
| 1273 | |||
| 1274 | Print extra warning messages for these events: | ||
| 1275 | |||
| 1276 | |||
| 1277 | A nonvolatile automatic variable might be changed by a call | ||
| 1278 | to __longjmp__. These warnings are possible only in | ||
| 1279 | optimizing compilation. | ||
| 1280 | |||
| 1281 | |||
| 1282 | The compiler sees only the calls to __setjmp__. It cannot | ||
| 1283 | know where __longjmp__ will be called; in fact, a signal | ||
| 1284 | handler could call it at any point in the code. As a result, | ||
| 1285 | you may get a warning even when there is in fact no problem | ||
| 1286 | because __longjmp__ cannot in fact be called at the place | ||
| 1287 | which would cause a problem. | ||
| 1288 | |||
| 1289 | |||
| 1290 | A function can return either with or without a value. | ||
| 1291 | (Falling off the end of the function body is considered | ||
| 1292 | returning without a value.) For example, this function | ||
| 1293 | would evoke such a warning: | ||
| 1294 | |||
| 1295 | |||
| 1296 | foo (a) | ||
| 1297 | { | ||
| 1298 | if (a | ||
| 1299 | Spurious warnings can occur because GNU CC does not realize that certain functions (including __abort__ and __longjmp__) will never return. | ||
| 1300 | |||
| 1301 | |||
| 1302 | An expression-statement or the left-hand side of a comma | ||
| 1303 | expression contains no side effects. To suppress the | ||
| 1304 | warning, cast the unused expression to void. For example, an | ||
| 1305 | expression such as `__x[[i,j]__' will cause a warning, but | ||
| 1306 | `__x[[(void)i,j]__' will not. | ||
| 1307 | |||
| 1308 | |||
| 1309 | An unsigned value is compared against zero with | ||
| 1310 | `____' or `____'. | ||
| 1311 | |||
| 1312 | |||
| 1313 | __-Wimplicit-int__ | ||
| 1314 | |||
| 1315 | |||
| 1316 | Warn whenever a declaration does not specify a | ||
| 1317 | type. | ||
| 1318 | |||
| 1319 | |||
| 1320 | __-Wimplicit-function-declaration__ | ||
| 1321 | |||
| 1322 | |||
| 1323 | Warn whenever a function is used before being de- | ||
| 1324 | clared. | ||
| 1325 | |||
| 1326 | |||
| 1327 | __-Wimplicit__ | ||
| 1328 | |||
| 1329 | |||
| 1330 | Same as -Wimplicit-int and -Wimplicit-function-dec- | ||
| 1331 | laration. | ||
| 1332 | |||
| 1333 | |||
| 1334 | __-Wmain__ | ||
| 1335 | |||
| 1336 | |||
| 1337 | Warn if the __main__ function is declared or defined with | ||
| 1338 | a suspicious type. Typically, it is a function with | ||
| 1339 | external linkage, returning __int__, and taking zero or | ||
| 1340 | two arguments. | ||
| 1341 | |||
| 1342 | |||
| 1343 | __-Wreturn-type__ | ||
| 1344 | |||
| 1345 | |||
| 1346 | Warn whenever a function is defined with a return-type | ||
| 1347 | that defaults to __int__. Also warn about any | ||
| 1348 | __return__ statement with no return-value in a function | ||
| 1349 | whose return-type is not __void__. | ||
| 1350 | |||
| 1351 | |||
| 1352 | __-Wunused__ | ||
| 1353 | |||
| 1354 | |||
| 1355 | Warn whenever a local variable is unused aside from its | ||
| 1356 | declaration, whenever a function is declared static but | ||
| 1357 | never defined, and whenever a statement computes a result | ||
| 1358 | that is explicitly not used. | ||
| 1359 | |||
| 1360 | |||
| 1361 | __-Wswitch__ | ||
| 1362 | |||
| 1363 | |||
| 1364 | Warn whenever a __switch__ statement has an index of | ||
| 1365 | enumeral type and lacks a __case__ for one or more of the | ||
| 1366 | named codes of that enumeration. (The presence of a | ||
| 1367 | __default__ label prevents this warning.) __case__ | ||
| 1368 | labels outside the enumeration range also provoke warnings | ||
| 1369 | when this option is used. | ||
| 1370 | |||
| 1371 | |||
| 1372 | __-Wcomment__ | ||
| 1373 | |||
| 1374 | |||
| 1375 | Warn whenever a comment-start sequence `__/__' appears in | ||
| 1376 | a comment. | ||
| 1377 | |||
| 1378 | |||
| 1379 | __-Wtrigraphs__ | ||
| 1380 | |||
| 1381 | |||
| 1382 | Warn if any trigraphs are encountered (assuming they are | ||
| 1383 | enabled). | ||
| 1384 | |||
| 1385 | |||
| 1386 | __-Wformat__ | ||
| 1387 | |||
| 1388 | |||
| 1389 | Check calls to __printf__ and __scanf__, etc., to make | ||
| 1390 | sure that the arguments supplied have types appropriate to | ||
| 1391 | the format string specified. | ||
| 1392 | |||
| 1393 | |||
| 1394 | __-Wchar-subscripts__ | ||
| 1395 | |||
| 1396 | |||
| 1397 | Warn if an array subscript has type __char__. This is a | ||
| 1398 | common cause of error, as programmers often forget that | ||
| 1399 | this type is signed on some machines. | ||
| 1400 | |||
| 1401 | |||
| 1402 | __-Wuninitialized__ | ||
| 1403 | |||
| 1404 | |||
| 1405 | An automatic variable is used without first being | ||
| 1406 | initialized. | ||
| 1407 | |||
| 1408 | |||
| 1409 | These warnings are possible only in optimizing com- | ||
| 1410 | pilation, because they require data flow information that | ||
| 1411 | is computed only when optimizing. If you don't specify | ||
| 1412 | `__-O__', you simply won't get these | ||
| 1413 | warnings. | ||
| 1414 | |||
| 1415 | |||
| 1416 | These warnings occur only for variables that are candidates | ||
| 1417 | for register allocation. Therefore, they do not occur for a | ||
| 1418 | variable that is declared __volatile__, or whose address | ||
| 1419 | is taken, or whose size is other than 1, 2, 4 or 8 bytes. | ||
| 1420 | Also, they do not occur for structures, unions or arrays, | ||
| 1421 | even when they are in registers. | ||
| 1422 | |||
| 1423 | |||
| 1424 | Note that there may be no warning about a variable that is | ||
| 1425 | used only to compute a value that itself is never used, | ||
| 1426 | because such computations may be deleted by data flow | ||
| 1427 | analysis before the warnings are printed. | ||
| 1428 | |||
| 1429 | |||
| 1430 | These warnings are made optional because GNU CC is not smart | ||
| 1431 | enough to see all the reasons why the code might be correct | ||
| 1432 | despite appearing to have an error. Here is one example of | ||
| 1433 | how this can happen: | ||
| 1434 | |||
| 1435 | |||
| 1436 | { | ||
| 1437 | int x; | ||
| 1438 | switch (y) | ||
| 1439 | { | ||
| 1440 | case 1: x = 1; | ||
| 1441 | break; | ||
| 1442 | case 2: x = 4; | ||
| 1443 | break; | ||
| 1444 | case 3: x = 5; | ||
| 1445 | } | ||
| 1446 | foo (x); | ||
| 1447 | } | ||
| 1448 | If the value of __y__ is always 1, 2 or 3, then __x__ is always initialized, but GNU CC doesn't know this. Here is another common case: | ||
| 1449 | |||
| 1450 | |||
| 1451 | { | ||
| 1452 | int save_y; | ||
| 1453 | if (change_y) save_y = y, y = new_y; | ||
| 1454 | ... | ||
| 1455 | if (change_y) y = save_y; | ||
| 1456 | } | ||
| 1457 | This has no bug because __save_y__ is used only if it is set. | ||
| 1458 | |||
| 1459 | |||
| 1460 | Some spurious warnings can be avoided if you declare as | ||
| 1461 | __volatile__ all the functions you use that never | ||
| 1462 | return. | ||
| 1463 | |||
| 1464 | |||
| 1465 | __-Wparentheses__ | ||
| 1466 | |||
| 1467 | |||
| 1468 | Warn if parentheses are omitted in certain con- | ||
| 1469 | texts. | ||
| 1470 | |||
| 1471 | |||
| 1472 | __-Wtemplate-debugging__ | ||
| 1473 | |||
| 1474 | |||
| 1475 | When using templates in a C++ program, warn if debugging | ||
| 1476 | is not yet fully available (C++ only). | ||
| 1477 | |||
| 1478 | |||
| 1479 | __[-Wall]__ | ||
| 1480 | |||
| 1481 | |||
| 1482 | All of the above `__-W__' options combined. These are all | ||
| 1483 | the options which pertain to usage that we recommend | ||
| 1484 | avoiding and that we believe is easy to avoid, even in | ||
| 1485 | conjunction with macros. | ||
| 1486 | |||
| 1487 | |||
| 1488 | The remaining `__-W...__' options are not implied by | ||
| 1489 | `__-Wall__' because they warn about constructions that we | ||
| 1490 | consider reasonable to use, on occasion, in clean | ||
| 1491 | programs. | ||
| 1492 | |||
| 1493 | |||
| 1494 | __-Wtraditional__ | ||
| 1495 | |||
| 1496 | |||
| 1497 | Warn about certain constructs that behave differently in | ||
| 1498 | traditional and ANSI C. | ||
| 1499 | |||
| 1500 | |||
| 1501 | Macro arguments occurring within string constants in the | ||
| 1502 | macro body. These would substitute the argument in | ||
| 1503 | traditional C, but are part of the constant in ANSI | ||
| 1504 | C. | ||
| 1505 | |||
| 1506 | |||
| 1507 | A function declared external in one block and then used | ||
| 1508 | after the end of the block. | ||
| 1509 | |||
| 1510 | |||
| 1511 | A __switch__ statement has an operand of type | ||
| 1512 | __long__. | ||
| 1513 | |||
| 1514 | |||
| 1515 | __-Wshadow__ | ||
| 1516 | |||
| 1517 | |||
| 1518 | Warn whenever a local variable shadows another local | ||
| 1519 | variable. | ||
| 1520 | |||
| 1521 | |||
| 1522 | __-Wid-clash-__''len'' | ||
| 1523 | |||
| 1524 | |||
| 1525 | Warn whenever two distinct identifiers match in the first | ||
| 1526 | ''len'' characters. This may help you prepare a program | ||
| 1527 | that will compile with certain obsolete, brain-damaged | ||
| 1528 | compilers. | ||
| 1529 | |||
| 1530 | |||
| 1531 | __-Wpointer-arith__ | ||
| 1532 | |||
| 1533 | |||
| 1534 | Warn about anything that depends on the ``size of'' a | ||
| 1535 | function type or of __void__. GNU C assigns these types a | ||
| 1536 | size of 1, for convenience in calculations with __void__ | ||
| 1537 | pointers and pointers to functions. | ||
| 1538 | |||
| 1539 | |||
| 1540 | __-Wcast-qual__ | ||
| 1541 | |||
| 1542 | |||
| 1543 | Warn whenever a pointer is cast so as to remove a type | ||
| 1544 | qualifier from the target type. For example, warn if a | ||
| 1545 | __const char__ is cast to an ordinary __char__ | ||
| 1546 | . | ||
| 1547 | |||
| 1548 | |||
| 1549 | __-Wcast-align__ | ||
| 1550 | |||
| 1551 | |||
| 1552 | Warn whenever a pointer is cast such that the required | ||
| 1553 | alignment of the target is increased. For example, warn if a | ||
| 1554 | __char__ is cast to an __int__ on machines where | ||
| 1555 | integers can only be accessed at twoor four-byte | ||
| 1556 | boundaries. | ||
| 1557 | |||
| 1558 | |||
| 1559 | __-Wwrite-strings__ | ||
| 1560 | |||
| 1561 | |||
| 1562 | Give string constants the type __const | ||
| 1563 | char[[__''length''__]__ so that copying the address | ||
| 1564 | of one into a non-__const char__ pointer will get a | ||
| 1565 | warning. These warnings will help you find at compile time | ||
| 1566 | code that can try to write into a string constant, but only | ||
| 1567 | if you have been very careful about using __const__ in | ||
| 1568 | declarations and prototypes. Otherwise, it will just be a | ||
| 1569 | nuisance; this is why we did not make `__-Wall__' request | ||
| 1570 | these warnings. | ||
| 1571 | |||
| 1572 | |||
| 1573 | __-Wconversion__ | ||
| 1574 | |||
| 1575 | |||
| 1576 | Warn if a prototype causes a type conversion that is | ||
| 1577 | different from what would happen to the same argument in | ||
| 1578 | the absence of a prototype. This includes conversions of | ||
| 1579 | fixed point to floating and vice versa, and conversions | ||
| 1580 | changing the width or signedness of a fixed point argument | ||
| 1581 | except when the same as the default promotion. | ||
| 1582 | |||
| 1583 | |||
| 1584 | __-Waggregate-return__ | ||
| 1585 | |||
| 1586 | |||
| 1587 | Warn if any functions that return structures or unions are | ||
| 1588 | defined or called. (In languages where you can return an | ||
| 1589 | array, this also elicits a warning.) | ||
| 1590 | |||
| 1591 | |||
| 1592 | __-Wstrict-prototypes__ | ||
| 1593 | |||
| 1594 | |||
| 1595 | Warn if a function is declared or defined without specifying | ||
| 1596 | the argument types. (An old-style function definition is | ||
| 1597 | permitted without a warning if preceded by a declaration | ||
| 1598 | which specifies the argument types.) | ||
| 1599 | |||
| 1600 | |||
| 1601 | __-Wmissing-prototypes__ | ||
| 1602 | |||
| 1603 | |||
| 1604 | Warn if a global function is defined without a previous | ||
| 1605 | prototype declaration. This warning is issued even if the | ||
| 1606 | definition itself provides a prototype. The aim is to | ||
| 1607 | detect global functions that fail to be declared in header | ||
| 1608 | files. | ||
| 1609 | |||
| 1610 | |||
| 1611 | __-Wmissing-declarations__ | ||
| 1612 | |||
| 1613 | |||
| 1614 | Warn if a global function is defined without a previous | ||
| 1615 | declaration. Do so even if the definition itself provides a | ||
| 1616 | prototype. Use this option to detect global functions that | ||
| 1617 | are not declared in header files. | ||
| 1618 | |||
| 1619 | |||
| 1620 | __-Wredundant-decls__ | ||
| 1621 | |||
| 1622 | |||
| 1623 | Warn if anything is declared more than once in the same | ||
| 1624 | scope, even in cases where multiple declaration is valid | ||
| 1625 | and changes nothing. | ||
| 1626 | |||
| 1627 | |||
| 1628 | __-Wnested-externs__ | ||
| 1629 | |||
| 1630 | |||
| 1631 | Warn if an __extern__ declaration is encountered within | ||
| 1632 | an function. | ||
| 1633 | |||
| 1634 | |||
| 1635 | __-Wenum-clash__ | ||
| 1636 | |||
| 1637 | |||
| 1638 | Warn about conversion between different enumeration types | ||
| 1639 | (C++ only). | ||
| 1640 | |||
| 1641 | |||
| 1642 | __-Wlong-long__ | ||
| 1643 | |||
| 1644 | |||
| 1645 | Warn if __long long__ type is used. This is default. To | ||
| 1646 | inhibit the warning messages, use flag | ||
| 1647 | `__-Wno-long-long__'. Flags `__-W-long-long__' and | ||
| 1648 | `__-Wno-long-long__' are taken into account only when | ||
| 1649 | flag `__-pedantic__' is used. | ||
| 1650 | |||
| 1651 | |||
| 1652 | __-Woverloaded-virtual__ | ||
| 1653 | |||
| 1654 | |||
| 1655 | (C++ only.) In a derived class, the definitions of virtual | ||
| 1656 | functions must match the type signature of a virtual | ||
| 1657 | function declared in the base class. Use this option to | ||
| 1658 | request warnings when a derived class declares a function | ||
| 1659 | that may be an erroneous attempt to define a virtual | ||
| 1660 | function: that is, warn when a function with the same name | ||
| 1661 | as a virtual function in the base class, but with a type | ||
| 1662 | signature that doesn't match any virtual functions from | ||
| 1663 | the base class. | ||
| 1664 | |||
| 1665 | |||
| 1666 | __-Winline__ | ||
| 1667 | |||
| 1668 | |||
| 1669 | Warn if a function can not be inlined, and either it was | ||
| 1670 | declared as inline, or else the __-finline-functions__ | ||
| 1671 | option was given. | ||
| 1672 | |||
| 1673 | |||
| 1674 | __-Werror__ | ||
| 1675 | |||
| 1676 | |||
| 1677 | Treat warnings as errors; abort compilation after any | ||
| 1678 | warning. | ||
| 1679 | !!DEBUGGING OPTIONS | ||
| 1680 | |||
| 1681 | |||
| 1682 | GNU CC has various special options that are used for de- | ||
| 1683 | bugging either your program or GCC: | ||
| 1684 | |||
| 1685 | |||
| 1686 | __-g__ | ||
| 1687 | |||
| 1688 | |||
| 1689 | Produce debugging information in the operating system's | ||
| 1690 | native format (stabs, COFF, XCOFF, or DWARF). GDB can work | ||
| 1691 | with this debugging information. | ||
| 1692 | |||
| 1693 | |||
| 1694 | On most systems that use stabs format, `__-g__' enables | ||
| 1695 | use of extra debugging information that only GDB can use; | ||
| 1696 | this extra information makes debugging work better in GDB | ||
| 1697 | but will probably make other debuggers crash or refuse to | ||
| 1698 | read the program. If you want to control for certain whether | ||
| 1699 | to generate the extra information, use `__-gstabs+__', | ||
| 1700 | `__-gstabs__', `__-gxcoff+__', `__-gxcoff__', | ||
| 1701 | `__-gdwarf+__', or `__-gdwarf__' (see | ||
| 1702 | below). | ||
| 1703 | |||
| 1704 | |||
| 1705 | Unlike most other C compilers, GNU CC allows you to use | ||
| 1706 | `__-g__' with `__-O__'. The shortcuts taken by opti- | ||
| 1707 | mized code may occasionally produce surprising results: | ||
| 1708 | some variables you declared may not exist at all; flow of | ||
| 1709 | control may briefly move where you did not expect it; some | ||
| 1710 | statements may not be executed because they compute constant | ||
| 1711 | results or their values were already at hand; some | ||
| 1712 | statements may execute in different places because they | ||
| 1713 | were moved out of loops. | ||
| 1714 | |||
| 1715 | |||
| 1716 | Nevertheless it proves possible to debug optimized output. | ||
| 1717 | This makes it reasonable to use the optimizer for programs | ||
| 1718 | that might have bugs. | ||
| 1719 | |||
| 1720 | |||
| 1721 | The following options are useful when GNU CC is generated | ||
| 1722 | with the capability for more than one debugging | ||
| 1723 | format. | ||
| 1724 | |||
| 1725 | |||
| 1726 | __-ggdb__ | ||
| 1727 | |||
| 1728 | |||
| 1729 | Produce debugging information in the native format (if that | ||
| 1730 | is supported), including GDB extensions if at all | ||
| 1731 | possible. | ||
| 1732 | |||
| 1733 | |||
| 1734 | __-gstabs__ | ||
| 1735 | |||
| 1736 | |||
| 1737 | Produce debugging information in stabs format (if that is | ||
| 1738 | supported), without GDB extensions. This is the format used | ||
| 1739 | by DBX on most BSD systems. | ||
| 1740 | |||
| 1741 | |||
| 1742 | __-gstabs+__ | ||
| 1743 | |||
| 1744 | |||
| 1745 | Produce debugging information in stabs format (if that is | ||
| 1746 | supported), using GNU extensions understood only by the GNU | ||
| 1747 | debugger (GDB). The use of these extensions is likely to | ||
| 1748 | make other debuggers crash or refuse to read the | ||
| 1749 | program. | ||
| 1750 | |||
| 1751 | |||
| 1752 | __-gcoff__ | ||
| 1753 | |||
| 1754 | |||
| 1755 | Produce debugging information in COFF format (if that is | ||
| 1756 | supported). This is the format used by SDB on most System V | ||
| 1757 | systems prior to System V Release 4. | ||
| 1758 | |||
| 1759 | |||
| 1760 | __-gxcoff__ | ||
| 1761 | |||
| 1762 | |||
| 1763 | Produce debugging information in XCOFF format (if that is | ||
| 1764 | supported). This is the format used by the DBX debugger on | ||
| 1765 | IBM RS/6000 systems. | ||
| 1766 | |||
| 1767 | |||
| 1768 | __-gxcoff+__ | ||
| 1769 | |||
| 1770 | |||
| 1771 | Produce debugging information in XCOFF format (if that is | ||
| 1772 | supported), using GNU extensions understood only by the GNU | ||
| 1773 | debugger (GDB). The use of these extensions is likely to | ||
| 1774 | make other debuggers crash or refuse to read the | ||
| 1775 | program. | ||
| 1776 | |||
| 1777 | |||
| 1778 | __-gdwarf__ | ||
| 1779 | |||
| 1780 | |||
| 1781 | Produce debugging information in DWARF format (if that is | ||
| 1782 | supported). This is the format used by SDB on most System V | ||
| 1783 | Release 4 systems. | ||
| 1784 | |||
| 1785 | |||
| 1786 | __-gdwarf+__ | ||
| 1787 | |||
| 1788 | |||
| 1789 | Produce debugging information in DWARF format (if that is | ||
| 1790 | supported), using GNU extensions understood only by the GNU | ||
| 1791 | debugger (GDB). The use of these extensions is likely to | ||
| 1792 | make other debuggers crash or refuse to read the | ||
| 1793 | program. | ||
| 1794 | |||
| 1795 | |||
| 1796 | __-g__''level''__ | ||
| 1797 | -ggdb__''level''__ | ||
| 1798 | -gstabs__''level''__ | ||
| 1799 | -gcoff__''level'' | ||
| 1800 | __-gxcoff__''level'' | ||
| 1801 | |||
| 1802 | |||
| 1803 | __-gdwarf__''level'' | ||
| 1804 | |||
| 1805 | |||
| 1806 | Request debugging information and also use ''level'' to | ||
| 1807 | specify how much information. The default level is | ||
| 1808 | 2. | ||
| 1809 | |||
| 1810 | |||
| 1811 | Level 1 produces minimal information, enough for making | ||
| 1812 | backtraces in parts of the program that you don't plan to | ||
| 1813 | debug. This includes descriptions of functions and external | ||
| 1814 | variables, but no information about local variables and no | ||
| 1815 | line numbers. | ||
| 1816 | |||
| 1817 | |||
| 1818 | Level 3 includes extra information, such as all the macro | ||
| 1819 | definitions present in the program. Some debuggers support | ||
| 1820 | macro expansion when you use `__-g3__'. | ||
| 1821 | |||
| 1822 | |||
| 1823 | __-p__ | ||
| 1824 | |||
| 1825 | |||
| 1826 | Generate extra code to write profile information suitable | ||
| 1827 | for the analysis program __prof__. | ||
| 1828 | |||
| 1829 | |||
| 1830 | __-pg__ | ||
| 1831 | |||
| 1832 | |||
| 1833 | Generate extra code to write profile information suitable | ||
| 1834 | for the analysis program __gprof__. | ||
| 1835 | |||
| 1836 | |||
| 1837 | __-a__ | ||
| 1838 | |||
| 1839 | |||
| 1840 | Generate extra code to write profile information for basic | ||
| 1841 | blocks, which will record the number of times each basic | ||
| 1842 | block is executed. This data could be analyzed by a program | ||
| 1843 | like __tcov__. Note, however, that the format of the data | ||
| 1844 | is not what __tcov__ expects. Eventually GNU __gprof__ | ||
| 1845 | should be extended to process this data. | ||
| 1846 | |||
| 1847 | |||
| 1848 | __-ax__ | ||
| 1849 | |||
| 1850 | |||
| 1851 | Generate extra code to read basic block profiling parameters | ||
| 1852 | from file `bb.in' and write profiling results to file | ||
| 1853 | `bb.out'. `bb.in' contains a list of functions. Whenever a | ||
| 1854 | function on the list is entered, profiling is turned on. | ||
| 1855 | When the outmost function is left, profiling is turned off. | ||
| 1856 | If a function name is prefixed with `-' the function is | ||
| 1857 | excluded from profiling. If a function name is not unique it | ||
| 1858 | can be disambiguated by writing | ||
| 1859 | `/path/filename.d:functionname'. `bb.out' will list some | ||
| 1860 | available filenames. Four function names have a special | ||
| 1861 | meaning: `__bb_jumps__' will cause jump frequencies to be | ||
| 1862 | written to `bb.out'. `__bb_trace__' will cause the sequence | ||
| 1863 | of basic blocks to be piped into `gzip' and written to file | ||
| 1864 | `bbtrace.gz'. `__bb_hidecall__' will cause call instructions | ||
| 1865 | to be excluded from the trace. `__bb_showret__' will cause | ||
| 1866 | return instructions to be included in the | ||
| 1867 | trace. | ||
| 1868 | |||
| 1869 | |||
| 1870 | __-d__''letters'' | ||
| 1871 | |||
| 1872 | |||
| 1873 | Says to make debugging dumps during compilation at times | ||
| 1874 | specified by ''letters''. This is used for debugging | ||
| 1875 | the compiler. The file names for most of the dumps are made | ||
| 1876 | by appending a word to the source file name (e.g. | ||
| 1877 | `__foo.c.rtl__' or `__foo.c.jump__'). | ||
| 1878 | |||
| 1879 | |||
| 1880 | __-dM__ | ||
| 1881 | |||
| 1882 | |||
| 1883 | Dump all macro definitions, at the end of preprocessing, | ||
| 1884 | and write no output. | ||
| 1885 | |||
| 1886 | |||
| 1887 | __-dN__ | ||
| 1888 | |||
| 1889 | |||
| 1890 | Dump all macro names, at the end of | ||
| 1891 | preprocessing. | ||
| 1892 | |||
| 1893 | |||
| 1894 | __-dD__ | ||
| 1895 | |||
| 1896 | |||
| 1897 | Dump all macro definitions, at the end of preprocessing, | ||
| 1898 | in addition to normal output. | ||
| 1899 | |||
| 1900 | |||
| 1901 | __-dy__ | ||
| 1902 | |||
| 1903 | |||
| 1904 | Dump debugging information during parsing, to standard | ||
| 1905 | error. | ||
| 1906 | |||
| 1907 | |||
| 1908 | __-dr__ | ||
| 1909 | |||
| 1910 | |||
| 1911 | Dump after RTL generation, to | ||
| 1912 | `''file''__.rtl__'. | ||
| 1913 | |||
| 1914 | |||
| 1915 | __-dx__ | ||
| 1916 | |||
| 1917 | |||
| 1918 | Just generate RTL for a function instead of compiling it. | ||
| 1919 | Usually used with `__r__'. | ||
| 1920 | |||
| 1921 | |||
| 1922 | __-dj__ | ||
| 1923 | |||
| 1924 | |||
| 1925 | Dump after first jump optimization, to | ||
| 1926 | `''file''__.jump__'. | ||
| 1927 | |||
| 1928 | |||
| 1929 | __-ds__ | ||
| 1930 | |||
| 1931 | |||
| 1932 | Dump after CSE (including the jump optimization that | ||
| 1933 | sometimes follows CSE), to | ||
| 1934 | `''file''__.cse__'. | ||
| 1935 | |||
| 1936 | |||
| 1937 | __-dL__ | ||
| 1938 | |||
| 1939 | |||
| 1940 | Dump after loop optimization, to | ||
| 1941 | `''file''__.loop__'. | ||
| 1942 | |||
| 1943 | |||
| 1944 | __-dt__ | ||
| 1945 | |||
| 1946 | |||
| 1947 | Dump after the second CSE pass (including the jump | ||
| 1948 | optimization that sometimes follows CSE), to | ||
| 1949 | `''file''__.cse2__'. | ||
| 1950 | |||
| 1951 | |||
| 1952 | __-df__ | ||
| 1953 | |||
| 1954 | |||
| 1955 | Dump after flow analysis, to | ||
| 1956 | `''file''__.flow__'. | ||
| 1957 | |||
| 1958 | |||
| 1959 | __-dc__ | ||
| 1960 | |||
| 1961 | |||
| 1962 | Dump after instruction combination, to `''file''__.com- | ||
| 1963 | bine__'. | ||
| 1964 | |||
| 1965 | |||
| 1966 | __-dS__ | ||
| 1967 | |||
| 1968 | |||
| 1969 | Dump after the first instruction scheduling pass, to | ||
| 1970 | `''file''__.sched__'. | ||
| 1971 | |||
| 1972 | |||
| 1973 | __-dl__ | ||
| 1974 | |||
| 1975 | |||
| 1976 | Dump after local register allocation, to | ||
| 1977 | `''file''__.lreg__'. | ||
| 1978 | |||
| 1979 | |||
| 1980 | __-dg__ | ||
| 1981 | |||
| 1982 | |||
| 1983 | Dump after global register allocation, to | ||
| 1984 | `''file''__.greg__'. | ||
| 1985 | |||
| 1986 | |||
| 1987 | __-dR__ | ||
| 1988 | |||
| 1989 | |||
| 1990 | Dump after the second instruction scheduling pass, to | ||
| 1991 | `''file''__.sched2__'. | ||
| 1992 | |||
| 1993 | |||
| 1994 | __-dJ__ | ||
| 1995 | |||
| 1996 | |||
| 1997 | Dump after last jump optimization, to | ||
| 1998 | `''file''__.jump2__'. | ||
| 1999 | |||
| 2000 | |||
| 2001 | __-dd__ | ||
| 2002 | |||
| 2003 | |||
| 2004 | Dump after delayed branch scheduling, to | ||
| 2005 | `''file''__.dbr__'. | ||
| 2006 | |||
| 2007 | |||
| 2008 | __-dk__ | ||
| 2009 | |||
| 2010 | |||
| 2011 | Dump after conversion from registers to stack, to | ||
| 2012 | `''file''__.stack__'. | ||
| 2013 | |||
| 2014 | |||
| 2015 | __-da__ | ||
| 2016 | |||
| 2017 | |||
| 2018 | Produce all the dumps listed above. | ||
| 2019 | |||
| 2020 | |||
| 2021 | __-dm__ | ||
| 2022 | |||
| 2023 | |||
| 2024 | Print statistics on memory usage, at the end of the run, to | ||
| 2025 | standard error. | ||
| 2026 | |||
| 2027 | |||
| 2028 | __-dp__ | ||
| 2029 | |||
| 2030 | |||
| 2031 | Annotate the assembler output with a comment indicating | ||
| 2032 | which pattern and alternative was used. | ||
| 2033 | |||
| 2034 | |||
| 2035 | __-fpretend-float__ | ||
| 2036 | |||
| 2037 | |||
| 2038 | When running a cross-compiler, pretend that the target | ||
| 2039 | machine uses the same floating point format as the host | ||
| 2040 | machine. This causes incorrect output of the actual floating | ||
| 2041 | constants, but the actual instruction sequence will probably | ||
| 2042 | be the same as GNU CC would make when running on the target | ||
| 2043 | machine. | ||
| 2044 | |||
| 2045 | |||
| 2046 | __-save-temps__ | ||
| 2047 | |||
| 2048 | |||
| 2049 | Store the usual ``temporary'' intermediate files | ||
| 2050 | permanently; place them in the current directory and name | ||
| 2051 | them based on the source file. Thus, compiling | ||
| 2052 | `__foo.c__' with `__-c -save-temps__' would produce | ||
| 2053 | files `__foo.cpp__' and `__foo.s__', as well as | ||
| 2054 | `__foo.o__'. | ||
| 2055 | |||
| 2056 | |||
| 2057 | __-print-file-name=__''library'' | ||
| 2058 | |||
| 2059 | |||
| 2060 | Print the full absolute name of the library file | ||
| 2061 | ''library'' that would be used when linking--and do not | ||
| 2062 | do anything else. With this option, GNU CC does not compile | ||
| 2063 | or link anything; it just prints the file name. | ||
| 2064 | |||
| 2065 | |||
| 2066 | __-print-libgcc-file-name__ | ||
| 2067 | |||
| 2068 | |||
| 2069 | Same as `__-print-file-name=libgcc.a__'. | ||
| 2070 | |||
| 2071 | |||
| 2072 | __-print-prog-name=__''program'' | ||
| 2073 | |||
| 2074 | |||
| 2075 | Like `__-print-file-name__', but searches for a program | ||
| 2076 | such as `cpp'. | ||
| 2077 | !!OPTIMIZATION OPTIONS | ||
| 2078 | |||
| 2079 | |||
| 2080 | These options control various sorts of | ||
| 2081 | optimizations: | ||
| 2082 | |||
| 2083 | |||
| 2084 | __-O__ | ||
| 2085 | |||
| 2086 | |||
| 2087 | __-O1__ | ||
| 2088 | |||
| 2089 | |||
| 2090 | Optimize. Optimizing compilation takes somewhat more time, | ||
| 2091 | and a lot more memory for a large function. | ||
| 2092 | |||
| 2093 | |||
| 2094 | Without `__-O__', the compiler's goal is to reduce the | ||
| 2095 | cost of compilation and to make debugging produce the | ||
| 2096 | expected results. Statements are independent: if you stop | ||
| 2097 | the program with a breakpoint between statements, you can | ||
| 2098 | then assign a new value to any variable or change the | ||
| 2099 | program counter to any other statement in the function and | ||
| 2100 | get exactly the results you would expect from the source | ||
| 2101 | code. | ||
| 2102 | |||
| 2103 | |||
| 2104 | Without `__-O__', only variables declared __register__ | ||
| 2105 | are allocated in registers. The resulting compiled code is a | ||
| 2106 | little worse than produced by PCC without | ||
| 2107 | `__-O__'. | ||
| 2108 | |||
| 2109 | |||
| 2110 | With `__-O__', the compiler tries to reduce code size and | ||
| 2111 | execution time. | ||
| 2112 | |||
| 2113 | |||
| 2114 | When you specify `__-O__', the two options | ||
| 2115 | `__-fthread-jumps__' and `__-fdefer-pop__' are turned | ||
| 2116 | on. On machines that have delay slots, the `__-fde- | ||
| 2117 | layed-branch__' option is turned on. For those machines | ||
| 2118 | that can support debugging even without a frame pointer, the | ||
| 2119 | `__-fomit-frame-pointer__' option is turned on. On some | ||
| 2120 | machines other flags may also be turned on. | ||
| 2121 | |||
| 2122 | |||
| 2123 | __-O2__ | ||
| 2124 | |||
| 2125 | |||
| 2126 | Optimize even more. Nearly all supported optimizations | ||
| 2127 | that do not involve a space-speed tradeoff are performed. | ||
| 2128 | Loop unrolling and function inlining are not done, for | ||
| 2129 | example. As compared to __-O__, this option increases | ||
| 2130 | both compilation time and the performance of the generated | ||
| 2131 | code. | ||
| 2132 | |||
| 2133 | |||
| 2134 | __-O3__ | ||
| 2135 | |||
| 2136 | |||
| 2137 | Optimize yet more. This turns on everything __-O2__ does, | ||
| 2138 | along with also turning on __-finline-func- | ||
| 2139 | tions.__ | ||
| 2140 | |||
| 2141 | |||
| 2142 | __-O0__ | ||
| 2143 | |||
| 2144 | |||
| 2145 | Do not optimize. | ||
| 2146 | |||
| 2147 | |||
| 2148 | If you use multiple __-O__ options, with or without level | ||
| 2149 | numbers, the last such option is the one that is | ||
| 2150 | effective. | ||
| 2151 | |||
| 2152 | |||
| 2153 | Options of the form `__-f__''flag''' specify | ||
| 2154 | machine-independent flags. Most flags have both positive and | ||
| 2155 | negative forms; the negative form of `__-ffoo__' would be | ||
| 2156 | `__-fno-foo__'. The following list shows only one | ||
| 2157 | form--the one which is not the default. You can figure out | ||
| 2158 | the other form by either removing `__no-__' or adding | ||
| 2159 | it. | ||
| 2160 | |||
| 2161 | |||
| 2162 | __-ffloat-store__ | ||
| 2163 | |||
| 2164 | |||
| 2165 | Do not store floating point variables in registers. This | ||
| 2166 | prevents undesirable excess precision on machines such as | ||
| 2167 | the 68000 where the floating registers (of the 68881) keep | ||
| 2168 | more precision than a __double__ is supposed to | ||
| 2169 | have. | ||
| 2170 | |||
| 2171 | |||
| 2172 | For most programs, the excess precision does only good, but | ||
| 2173 | a few programs rely on the precise definition of IEEE | ||
| 2174 | floating point. Use `__-ffloat-store__' for such | ||
| 2175 | programs. | ||
| 2176 | |||
| 2177 | |||
| 2178 | __-fmemoize-lookups__ | ||
| 2179 | |||
| 2180 | |||
| 2181 | __-fsave-memoized__ | ||
| 2182 | |||
| 2183 | |||
| 2184 | Use heuristics to compile faster (C++ only). These | ||
| 2185 | heuristics are not enabled by default, since they are only | ||
| 2186 | effective for certain input files. Other input files compile | ||
| 2187 | more slowly. | ||
| 2188 | |||
| 2189 | |||
| 2190 | The first time the compiler must build a call to a member | ||
| 2191 | function (or reference to a data member), it must (1) | ||
| 2192 | determine whether the class implements member functions of | ||
| 2193 | that name; (2) resolve which member function to call (which | ||
| 2194 | involves figuring out what sorts of type conversions need to | ||
| 2195 | be made); and (3) check the visibility of the member | ||
| 2196 | function to the caller. All of this adds up to slower | ||
| 2197 | compilation. Normally, the second time a call is made to | ||
| 2198 | that member function (or reference to that data member), it | ||
| 2199 | must go through the same lengthy process again. This means | ||
| 2200 | that code like this | ||
| 2201 | |||
| 2202 | |||
| 2203 | cout | ||
| 2204 | |||
| 2205 | |||
| 2206 | makes six passes through all three steps. By using a | ||
| 2207 | software cache, a ``hit'' significantly reduces this cost. | ||
| 2208 | Unfortunately, using the cache introduces another layer of | ||
| 2209 | mechanisms which must be implemented, and so incurs its | ||
| 2210 | own overhead. `__-fmemoize-lookups__' enables the | ||
| 2211 | software cache. | ||
| 2212 | |||
| 2213 | |||
| 2214 | Because access privileges (visibility) to members and member | ||
| 2215 | functions may differ from one function context to the next, | ||
| 2216 | __g++__ may need to flush the cache. With the | ||
| 2217 | `__-fmemoize-lookups__' flag, the cache is flushed after | ||
| 2218 | every function that is compiled. The `-fsave-memoized' | ||
| 2219 | flag enables the same software cache, but when the compiler | ||
| 2220 | determines that the context of the last function compiled | ||
| 2221 | would yield the same access privileges of the next function | ||
| 2222 | to compile, it preserves the cache. This is most helpful | ||
| 2223 | when defining many member functions for the same class: with | ||
| 2224 | the exception of member functions which are friends of other | ||
| 2225 | classes, each member function has exactly the same access | ||
| 2226 | privileges as every other, and the cache need not be | ||
| 2227 | flushed. | ||
| 2228 | |||
| 2229 | |||
| 2230 | __-fno-default-inline__ | ||
| 2231 | |||
| 2232 | |||
| 2233 | Don't make member functions inline by default merely | ||
| 2234 | because they are defined inside the class scope (C++ | ||
| 2235 | only). | ||
| 2236 | |||
| 2237 | |||
| 2238 | __-fno-defer-pop__ | ||
| 2239 | |||
| 2240 | |||
| 2241 | Always pop the arguments to each function call as soon as | ||
| 2242 | that function returns. For machines which must pop arguments | ||
| 2243 | after a function call, the compiler normally lets | ||
| 2244 | arguments accumulate on the stack for several function calls | ||
| 2245 | and pops them all at once. | ||
| 2246 | |||
| 2247 | |||
| 2248 | __-fforce-mem__ | ||
| 2249 | |||
| 2250 | |||
| 2251 | Force memory operands to be copied into registers before | ||
| 2252 | doing arithmetic on them. This may produce better code by | ||
| 2253 | making all memory references potential common | ||
| 2254 | subexpressions. When they are not common subexpressions, | ||
| 2255 | instruction combination should eliminate the separate | ||
| 2256 | register-load. I am interested in hearing about the | ||
| 2257 | difference this makes. | ||
| 2258 | |||
| 2259 | |||
| 2260 | __-fforce-addr__ | ||
| 2261 | |||
| 2262 | |||
| 2263 | Force memory address constants to be copied into registers | ||
| 2264 | before doing arithmetic on them. This may produce better | ||
| 2265 | code just as `__-fforce-mem__' may. I am interested in | ||
| 2266 | hearing about the difference this makes. | ||
| 2267 | |||
| 2268 | |||
| 2269 | __-fomit-frame-pointer__ | ||
| 2270 | |||
| 2271 | |||
| 2272 | Don't keep the frame pointer in a register for functions | ||
| 2273 | that don't need one. This avoids the instructions to save, | ||
| 2274 | set up and restore frame pointers; it also makes an extra | ||
| 2275 | register available in many functions. ''It also makes | ||
| 2276 | debugging impossible on most machines''. | ||
| 2277 | |||
| 2278 | |||
| 2279 | On some machines, such as the Vax, this flag has no effect, | ||
| 2280 | because the standard calling sequence automatically | ||
| 2281 | handles the frame pointer and nothing is saved by pretending | ||
| 2282 | it doesn't exist. The machine-description macro | ||
| 2283 | __FRAME_POINTER_REQUIRED__ controls whether a target | ||
| 2284 | machine supports this flag. | ||
| 2285 | |||
| 2286 | |||
| 2287 | __-finline-functions__ | ||
| 2288 | |||
| 2289 | |||
| 2290 | Integrate all simple functions into their callers. The | ||
| 2291 | compiler heuristically decides which functions are simple | ||
| 2292 | enough to be worth integrating in this way. | ||
| 2293 | |||
| 2294 | |||
| 2295 | If all calls to a given function are integrated, and the | ||
| 2296 | function is declared __static__, then GCC normally does | ||
| 2297 | not output the function as assembler code in its own | ||
| 2298 | right. | ||
| 2299 | |||
| 2300 | |||
| 2301 | __-fcaller-saves__ | ||
| 2302 | |||
| 2303 | |||
| 2304 | Enable values to be allocated in registers that will be | ||
| 2305 | clobbered by function calls, by emitting extra instructions | ||
| 2306 | to save and restore the registers around such calls. Such | ||
| 2307 | allocation is done only when it seems to result in better | ||
| 2308 | code than would otherwise be produced. | ||
| 2309 | |||
| 2310 | |||
| 2311 | This option is enabled by default on certain machines, | ||
| 2312 | usually those which have no call-preserved registers to use | ||
| 2313 | instead. | ||
| 2314 | |||
| 2315 | |||
| 2316 | __-fkeep-inline-functions__ | ||
| 2317 | |||
| 2318 | |||
| 2319 | Even if all calls to a given function are integrated, and | ||
| 2320 | the function is declared __static__, nevertheless | ||
| 2321 | output a separate run-time callable version of the | ||
| 2322 | function. | ||
| 2323 | |||
| 2324 | |||
| 2325 | __-fno-function-cse__ | ||
| 2326 | |||
| 2327 | |||
| 2328 | Do not put function addresses in registers; make each | ||
| 2329 | instruction that calls a constant function contain the | ||
| 2330 | function's address explicitly. | ||
| 2331 | |||
| 2332 | |||
| 2333 | This option results in less efficient code, but some strange | ||
| 2334 | hacks that alter the assembler output may be confused by the | ||
| 2335 | optimizations performed when this option is not | ||
| 2336 | used. | ||
| 2337 | |||
| 2338 | |||
| 2339 | __-fno-peephole__ | ||
| 2340 | |||
| 2341 | |||
| 2342 | Disable any machine-specific peephole optimiza- | ||
| 2343 | tions. | ||
| 2344 | |||
| 2345 | |||
| 2346 | __-ffast-math__ | ||
| 2347 | |||
| 2348 | |||
| 2349 | This option allows GCC to violate some ANSI or IEEE | ||
| 2350 | rules/specifications in the interest of optimizing code for | ||
| 2351 | speed. For example, it allows the compiler to assume | ||
| 2352 | arguments to the __sqrt__ function are non-negative | ||
| 2353 | numbers. | ||
| 2354 | |||
| 2355 | |||
| 2356 | This option should never be turned on by any `__-O__' | ||
| 2357 | option since it can result in incorrect output for programs | ||
| 2358 | which depend on an exact implementation of IEEE or ANSI | ||
| 2359 | rules/specifications for math functions. | ||
| 2360 | |||
| 2361 | |||
| 2362 | The following options control specific optimizations. The | ||
| 2363 | `__-O2__' option turns on all of these optimizations | ||
| 2364 | except `__-funroll-loops__' and | ||
| 2365 | `__-funroll-all-loops__'. | ||
| 2366 | |||
| 2367 | |||
| 2368 | The `__-O__' option usually turns on the | ||
| 2369 | `__-fthread-jumps__' and `__-fdelayed-branch__' | ||
| 2370 | options, but specific machines may change the default | ||
| 2371 | optimizations. | ||
| 2372 | |||
| 2373 | |||
| 2374 | You can use the following flags in the rare cases when | ||
| 2375 | ``fine-tuning'' of optimizations to be performed is de- | ||
| 2376 | sired. | ||
| 2377 | |||
| 2378 | |||
| 2379 | __-fstrength-reduce__ | ||
| 2380 | |||
| 2381 | |||
| 2382 | Perform the optimizations of loop strength reduction and | ||
| 2383 | elimination of iteration variables. | ||
| 2384 | |||
| 2385 | |||
| 2386 | __-fthread-jumps__ | ||
| 2387 | |||
| 2388 | |||
| 2389 | Perform optimizations where we check to see if a jump | ||
| 2390 | branches to a location where another comparison subsumed | ||
| 2391 | by the first is found. If so, the first branch is redirected | ||
| 2392 | to either the destination of the second branch or a point | ||
| 2393 | immediately following it, depending on whether the condition | ||
| 2394 | is known to be true or false. | ||
| 2395 | |||
| 2396 | |||
| 2397 | __-funroll-loops__ | ||
| 2398 | |||
| 2399 | |||
| 2400 | Perform the optimization of loop unrolling. This is only | ||
| 2401 | done for loops whose number of iterations can be determined | ||
| 2402 | at compile time or run time. | ||
| 2403 | |||
| 2404 | |||
| 2405 | __-funroll-all-loops__ | ||
| 2406 | |||
| 2407 | |||
| 2408 | Perform the optimization of loop unrolling. This is done for | ||
| 2409 | all loops. This usually makes programs run more | ||
| 2410 | slowly. | ||
| 2411 | |||
| 2412 | |||
| 2413 | __-fcse-follow-jumps__ | ||
| 2414 | |||
| 2415 | |||
| 2416 | In common subexpression elimination, scan through jump | ||
| 2417 | instructions when the target of the jump is not reached by | ||
| 2418 | any other path. For example, when CSE encounters an | ||
| 2419 | __if__ statement with an __else__ clause, CSE will | ||
| 2420 | follow the jump when the condition tested is | ||
| 2421 | false. | ||
| 2422 | |||
| 2423 | |||
| 2424 | __-fcse-skip-blocks__ | ||
| 2425 | |||
| 2426 | |||
| 2427 | This is similar to `__-fcse-follow-jumps__', but causes | ||
| 2428 | CSE to follow jumps which conditionally skip over blocks. | ||
| 2429 | When CSE encounters a simple __if__ statement with no | ||
| 2430 | else clause, `__-fcse-skip-blocks__' causes CSE to follow | ||
| 2431 | the jump around the body of the __if__. | ||
| 2432 | |||
| 2433 | |||
| 2434 | __-frerun-cse-after-loop__ | ||
| 2435 | |||
| 2436 | |||
| 2437 | Re-run common subexpression elimination after loop | ||
| 2438 | optimizations has been performed. | ||
| 2439 | |||
| 2440 | |||
| 2441 | __-felide-constructors__ | ||
| 2442 | |||
| 2443 | |||
| 2444 | Elide constructors when this seems plausible (C++ only). | ||
| 2445 | With this flag, GNU C++ initializes __y__ directly from | ||
| 2446 | the call to __foo__ without going through a temporary in | ||
| 2447 | the following code: | ||
| 2448 | |||
| 2449 | |||
| 2450 | A foo (); A y = foo (); | ||
| 2451 | |||
| 2452 | |||
| 2453 | Without this option, GNU C++ first initializes __y__ by | ||
| 2454 | calling the appropriate constructor for type __A__; then | ||
| 2455 | assigns the result of __foo__ to a temporary; and, | ||
| 2456 | finally, replaces the initial value of `__y__' with the | ||
| 2457 | temporary. | ||
| 2458 | |||
| 2459 | |||
| 2460 | The default behavior (`__-fno-elide-constructors__') is | ||
| 2461 | specified by the draft ANSI C++ standard. If your program's | ||
| 2462 | constructors have side effects, using | ||
| 2463 | `__-felide-constructors__' can make your program act | ||
| 2464 | differently, since some constructor calls may be | ||
| 2465 | omitted. | ||
| 2466 | |||
| 2467 | |||
| 2468 | __-fexpensive-optimizations__ | ||
| 2469 | |||
| 2470 | |||
| 2471 | Perform a number of minor optimizations that are relatively | ||
| 2472 | expensive. | ||
| 2473 | |||
| 2474 | |||
| 2475 | __-fdelayed-branch__ | ||
| 2476 | |||
| 2477 | |||
| 2478 | If supported for the target machine, attempt to reorder | ||
| 2479 | instructions to exploit instruction slots available after | ||
| 2480 | delayed branch instructions. | ||
| 2481 | |||
| 2482 | |||
| 2483 | __-fschedule-insns__ | ||
| 2484 | |||
| 2485 | |||
| 2486 | If supported for the target machine, attempt to reorder | ||
| 2487 | instructions to eliminate execution stalls due to required | ||
| 2488 | data being unavailable. This helps machines that have slow | ||
| 2489 | floating point or memory load instructions by allowing other | ||
| 2490 | instructions to be issued until the result of the load or | ||
| 2491 | floating point instruction is required. | ||
| 2492 | |||
| 2493 | |||
| 2494 | __-fschedule-insns2__ | ||
| 2495 | |||
| 2496 | |||
| 2497 | Similar to `__-fschedule-insns__', but requests an ad- | ||
| 2498 | ditional pass of instruction scheduling after register | ||
| 2499 | allocation has been done. This is especially useful on | ||
| 2500 | machines with a relatively small number of registers and | ||
| 2501 | where memory load instructions take more than one | ||
| 2502 | cycle. | ||
| 2503 | !!TARGET OPTIONS | ||
| 2504 | |||
| 2505 | |||
| 2506 | By default, GNU CC compiles code for the same type of ma- | ||
| 2507 | chine that you are using. However, it can also be in- | ||
| 2508 | stalled as a cross-compiler, to compile for some other type | ||
| 2509 | of machine. In fact, several different configurations of | ||
| 2510 | GNU CC, for different target machines, can be installed | ||
| 2511 | side by side. Then you specify which one to use with the | ||
| 2512 | `__-b__' option. | ||
| 2513 | |||
| 2514 | |||
| 2515 | In addition, older and newer versions of GNU CC can be in- | ||
| 2516 | stalled side by side. One of them (probably the newest) will | ||
| 2517 | be the default, but you may sometimes wish to use an- | ||
| 2518 | other. | ||
| 2519 | |||
| 2520 | |||
| 2521 | __-b__ ''machine'' | ||
| 2522 | |||
| 2523 | |||
| 2524 | The argument ''machine'' specifies the target machine for | ||
| 2525 | compilation. This is useful when you have installed GNU CC | ||
| 2526 | as a cross-compiler. | ||
| 2527 | |||
| 2528 | |||
| 2529 | The value to use for ''machine'' is the same as was | ||
| 2530 | specified as the machine type when configuring GNU CC as a | ||
| 2531 | cross-compiler. For example, if a cross-compiler was | ||
| 2532 | configured with `__configure__ i386v', meaning to compile | ||
| 2533 | for an 80386 running System V, then you would specify `__-b | ||
| 2534 | i386v__' to run that cross compiler. | ||
| 2535 | |||
| 2536 | |||
| 2537 | When you do not specify `__-b__', it normally means to | ||
| 2538 | compile for the same type of machine that you are | ||
| 2539 | using. | ||
| 2540 | |||
| 2541 | |||
| 2542 | __-V__ ''version'' | ||
| 2543 | |||
| 2544 | |||
| 2545 | The argument ''version'' specifies which version of GNU | ||
| 2546 | CC to run. This is useful when multiple versions are | ||
| 2547 | installed. For example, ''version'' might be | ||
| 2548 | `__2.0__', meaning to run GNU CC version | ||
| 2549 | 2.0. | ||
| 2550 | |||
| 2551 | |||
| 2552 | The default version, when you do not specify `__-V__', is | ||
| 2553 | controlled by the way GNU CC is installed. Normally, it | ||
| 2554 | will be a version that is recommended for general | ||
| 2555 | use. | ||
| 2556 | !!MACHINE DEPENDENT OPTIONS | ||
| 2557 | |||
| 2558 | |||
| 2559 | Each of the target machine types can have its own special | ||
| 2560 | options, starting with `__-m__', to choose among various | ||
| 2561 | hardware models or configurations--for example, 68010 vs | ||
| 2562 | 68020, floating coprocessor or none. A single installed | ||
| 2563 | version of the compiler can compile for any model or con- | ||
| 2564 | figuration, according to the options specified. | ||
| 2565 | |||
| 2566 | |||
| 2567 | Some configurations of the compiler also support addition- | ||
| 2568 | al special options, usually for command-line compatibility | ||
| 2569 | with other compilers on the same platform. | ||
| 2570 | |||
| 2571 | |||
| 2572 | These are the `__-m__' options defined for the 68000 | ||
| 2573 | series: | ||
| 2574 | |||
| 2575 | |||
| 2576 | __-m68000__ | ||
| 2577 | |||
| 2578 | |||
| 2579 | __-mc68000__ | ||
| 2580 | |||
| 2581 | |||
| 2582 | Generate output for a 68000. This is the default when the | ||
| 2583 | compiler is configured for 68000-based systems. | ||
| 2584 | |||
| 2585 | |||
| 2586 | __-m68020__ | ||
| 2587 | |||
| 2588 | |||
| 2589 | __-mc68020__ | ||
| 2590 | |||
| 2591 | |||
| 2592 | Generate output for a 68020 (rather than a 68000). This is | ||
| 2593 | the default when the compiler is configured for 68020-based | ||
| 2594 | systems. | ||
| 2595 | |||
| 2596 | |||
| 2597 | __-m68881__ | ||
| 2598 | |||
| 2599 | |||
| 2600 | Generate output containing 68881 instructions for floating | ||
| 2601 | point. This is the default for most 68020-based systems | ||
| 2602 | unless __-nfp__ was specified when the compiler was | ||
| 2603 | configured. | ||
| 2604 | |||
| 2605 | |||
| 2606 | __-m68030__ | ||
| 2607 | |||
| 2608 | |||
| 2609 | Generate output for a 68030. This is the default when the | ||
| 2610 | compiler is configured for 68030-based systems. | ||
| 2611 | |||
| 2612 | |||
| 2613 | __-m68040__ | ||
| 2614 | |||
| 2615 | |||
| 2616 | Generate output for a 68040. This is the default when the | ||
| 2617 | compiler is configured for 68040-based systems. | ||
| 2618 | |||
| 2619 | |||
| 2620 | __-m68020-40__ | ||
| 2621 | |||
| 2622 | |||
| 2623 | Generate output for a 68040, without using any of the new | ||
| 2624 | instructions. This results in code which can run relatively | ||
| 2625 | efficiently on either a 68020/68881 or a 68030 or a | ||
| 2626 | 68040. | ||
| 2627 | |||
| 2628 | |||
| 2629 | __-mfpa__ | ||
| 2630 | |||
| 2631 | |||
| 2632 | Generate output containing Sun FPA instructions for floating | ||
| 2633 | point. | ||
| 2634 | |||
| 2635 | |||
| 2636 | __-msoft-float__ | ||
| 2637 | |||
| 2638 | |||
| 2639 | Generate output containing library calls for floating | ||
| 2640 | point. ''WARNING:'' the requisite libraries are not part | ||
| 2641 | of GNU CC. Normally the facilities of the machine's usual C | ||
| 2642 | compiler are used, but this can't be done directly in | ||
| 2643 | cross-compilation. You must make your own arrangements to | ||
| 2644 | provide suitable library functions for | ||
| 2645 | cross-compilation. | ||
| 2646 | |||
| 2647 | |||
| 2648 | __-mshort__ | ||
| 2649 | |||
| 2650 | |||
| 2651 | Consider type __int__ to be 16 bits wide, like __short | ||
| 2652 | int__. | ||
| 2653 | |||
| 2654 | |||
| 2655 | __-mnobitfield__ | ||
| 2656 | |||
| 2657 | |||
| 2658 | Do not use the bit-field instructions. `__-m68000__' | ||
| 2659 | implies `__-mnobitfield__'. | ||
| 2660 | |||
| 2661 | |||
| 2662 | __-mbitfield__ | ||
| 2663 | |||
| 2664 | |||
| 2665 | Do use the bit-field instructions. `__-m68020__' im- | ||
| 2666 | plies `__-mbitfield__'. This is the default if you use | ||
| 2667 | the unmodified sources. | ||
| 2668 | |||
| 2669 | |||
| 2670 | __-mrtd__ | ||
| 2671 | |||
| 2672 | |||
| 2673 | Use a different function-calling convention, in which | ||
| 2674 | functions that take a fixed number of arguments return | ||
| 2675 | with the __rtd__ instruction, which pops their arguments | ||
| 2676 | while returning. This saves one instruction in the caller | ||
| 2677 | since there is no need to pop the arguments | ||
| 2678 | there. | ||
| 2679 | |||
| 2680 | |||
| 2681 | This calling convention is incompatible with the one | ||
| 2682 | normally used on Unix, so you cannot use it if you need to | ||
| 2683 | call libraries compiled with the Unix compiler. | ||
| 2684 | |||
| 2685 | |||
| 2686 | Also, you must provide function prototypes for all functions | ||
| 2687 | that take variable numbers of arguments (including | ||
| 2688 | __printf__); otherwise incorrect code will be generated | ||
| 2689 | for calls to those functions. | ||
| 2690 | |||
| 2691 | |||
| 2692 | In addition, seriously incorrect code will result if you | ||
| 2693 | call a function with too many arguments. (Normally, extra | ||
| 2694 | arguments are harmlessly ignored.) | ||
| 2695 | |||
| 2696 | |||
| 2697 | The __rtd__ instruction is supported by the 68010 and | ||
| 2698 | 68020 processors, but not by the 68000. | ||
| 2699 | |||
| 2700 | |||
| 2701 | These `__-m__' options are defined for the | ||
| 2702 | Vax: | ||
| 2703 | |||
| 2704 | |||
| 2705 | __-munix__ | ||
| 2706 | |||
| 2707 | |||
| 2708 | Do not output certain jump instructions (__aobleq__ and | ||
| 2709 | so on) that the Unix assembler for the Vax cannot handle | ||
| 2710 | across long ranges. | ||
| 2711 | |||
| 2712 | |||
| 2713 | __-mgnu__ | ||
| 2714 | |||
| 2715 | |||
| 2716 | Do output those jump instructions, on the assumption that | ||
| 2717 | you will assemble with the GNU assembler. | ||
| 2718 | |||
| 2719 | |||
| 2720 | __-mg__ | ||
| 2721 | |||
| 2722 | |||
| 2723 | Output code for g-format floating point numbers instead of | ||
| 2724 | d-format. | ||
| 2725 | |||
| 2726 | |||
| 2727 | These `__-m__' switches are supported on the | ||
| 2728 | SPARC: | ||
| 2729 | |||
| 2730 | |||
| 2731 | __-mfpu__ | ||
| 2732 | |||
| 2733 | |||
| 2734 | __-mhard-float__ | ||
| 2735 | |||
| 2736 | |||
| 2737 | Generate output containing floating point instructions. | ||
| 2738 | This is the default. | ||
| 2739 | |||
| 2740 | |||
| 2741 | __-mno-fpu__ | ||
| 2742 | |||
| 2743 | |||
| 2744 | __-msoft-float__ | ||
| 2745 | |||
| 2746 | |||
| 2747 | Generate output containing library calls for floating | ||
| 2748 | point. ''Warning:'' there is no GNU floating-point | ||
| 2749 | library for SPARC. Normally the facilities of the machine's | ||
| 2750 | usual C compiler are used, but this cannot be done | ||
| 2751 | directly in cross-compilation. You must make your own | ||
| 2752 | arrangements to provide suitable library functions for | ||
| 2753 | cross-compilation. | ||
| 2754 | |||
| 2755 | |||
| 2756 | __-msoft-float__ changes the calling convention in the | ||
| 2757 | output file; therefore, it is only useful if you compile | ||
| 2758 | ''all'' of a program with this option. | ||
| 2759 | |||
| 2760 | |||
| 2761 | __-mno-epilogue__ | ||
| 2762 | |||
| 2763 | |||
| 2764 | __-mepilogue__ | ||
| 2765 | |||
| 2766 | |||
| 2767 | With __-mepilogue__ (the default), the compiler always | ||
| 2768 | emits code for function exit at the end of each function. | ||
| 2769 | Any function exit in the middle of the function (such as a | ||
| 2770 | return statement in C) will generate a jump to the exit code | ||
| 2771 | at the end of the function. | ||
| 2772 | |||
| 2773 | |||
| 2774 | With __-mno-epilogue__, the compiler tries to emit exit | ||
| 2775 | code inline at every function exit. | ||
| 2776 | |||
| 2777 | |||
| 2778 | __-mno-v8__ | ||
| 2779 | |||
| 2780 | |||
| 2781 | __-mv8__ | ||
| 2782 | |||
| 2783 | |||
| 2784 | __-msparclite__ | ||
| 2785 | |||
| 2786 | |||
| 2787 | These three options select variations on the SPARC | ||
| 2788 | architecture. | ||
| 2789 | |||
| 2790 | |||
| 2791 | By default (unless specifically configured for the Fujitsu | ||
| 2792 | SPARClite), GCC generates code for the v7 variant of the | ||
| 2793 | SPARC architecture. | ||
| 2794 | |||
| 2795 | |||
| 2796 | __-mv8__ will give you SPARC v8 code. The only differ- | ||
| 2797 | ence from v7 code is that the compiler emits the integer | ||
| 2798 | multiply and integer divide instructions which exist in | ||
| 2799 | SPARC v8 but not in SPARC v7. | ||
| 2800 | |||
| 2801 | |||
| 2802 | __-msparclite__ will give you SPARClite code. This adds | ||
| 2803 | the integer multiply, integer divide step and scan (ffs) | ||
| 2804 | instructions which exist in SPARClite but not in SPARC | ||
| 2805 | v7. | ||
| 2806 | |||
| 2807 | |||
| 2808 | __-mcypress__ | ||
| 2809 | |||
| 2810 | |||
| 2811 | __-msupersparc__ | ||
| 2812 | |||
| 2813 | |||
| 2814 | These two options select the processor for which the code is | ||
| 2815 | optimised. | ||
| 2816 | |||
| 2817 | |||
| 2818 | With __-mcypress__ (the default), the compiler optimis- | ||
| 2819 | es code for the Cypress CY7C602 chip, as used in the | ||
| 2820 | !SparcStation/!SparcServer 3xx series. This is also | ||
| 2821 | appropriate for the older !SparcStation 1, 2, IPX | ||
| 2822 | etc. | ||
| 2823 | |||
| 2824 | |||
| 2825 | With __-msupersparc__ the compiler optimises code for the | ||
| 2826 | !SuperSparc cpu, as used in the !SparcStation 10, 1000 and | ||
| 2827 | 2000 series. This flag also enables use of the full SPARC v8 | ||
| 2828 | instruction set. | ||
| 2829 | |||
| 2830 | |||
| 2831 | These `__-m__' options are defined for the | ||
| 2832 | Convex: | ||
| 2833 | |||
| 2834 | |||
| 2835 | __-mc1__ | ||
| 2836 | |||
| 2837 | |||
| 2838 | Generate output for a C1. This is the default when the | ||
| 2839 | compiler is configured for a C1. | ||
| 2840 | |||
| 2841 | |||
| 2842 | __-mc2__ | ||
| 2843 | |||
| 2844 | |||
| 2845 | Generate output for a C2. This is the default when the | ||
| 2846 | compiler is configured for a C2. | ||
| 2847 | |||
| 2848 | |||
| 2849 | __-margcount__ | ||
| 2850 | |||
| 2851 | |||
| 2852 | Generate code which puts an argument count in the word | ||
| 2853 | preceding each argument list. Some nonportable Convex and | ||
| 2854 | Vax programs need this word. (Debuggers don't, except for | ||
| 2855 | functions with variable-length argument lists; this info | ||
| 2856 | is in the symbol table.) | ||
| 2857 | |||
| 2858 | |||
| 2859 | __-mnoargcount__ | ||
| 2860 | |||
| 2861 | |||
| 2862 | Omit the argument count word. This is the default if you use | ||
| 2863 | the unmodified sources. | ||
| 2864 | |||
| 2865 | |||
| 2866 | These `__-m__' options are defined for the AMD | ||
| 2867 | Am29000: | ||
| 2868 | |||
| 2869 | |||
| 2870 | __-mdw__ | ||
| 2871 | |||
| 2872 | |||
| 2873 | Generate code that assumes the DW bit is set, i.e., that | ||
| 2874 | byte and halfword operations are directly supported by the | ||
| 2875 | hardware. This is the default. | ||
| 2876 | |||
| 2877 | |||
| 2878 | __-mnodw__ | ||
| 2879 | |||
| 2880 | |||
| 2881 | Generate code that assumes the DW bit is not | ||
| 2882 | set. | ||
| 2883 | |||
| 2884 | |||
| 2885 | __-mbw__ | ||
| 2886 | |||
| 2887 | |||
| 2888 | Generate code that assumes the system supports byte and | ||
| 2889 | halfword write operations. This is the de- | ||
| 2890 | fault. | ||
| 2891 | |||
| 2892 | |||
| 2893 | __-mnbw__ | ||
| 2894 | |||
| 2895 | |||
| 2896 | Generate code that assumes the systems does not support byte | ||
| 2897 | and halfword write operations. This implies | ||
| 2898 | `__-mnodw__'. | ||
| 2899 | |||
| 2900 | |||
| 2901 | __-msmall__ | ||
| 2902 | |||
| 2903 | |||
| 2904 | Use a small memory model that assumes that all function | ||
| 2905 | addresses are either within a single 256 KB segment or at an | ||
| 2906 | absolute address of less than 256K. This allows the | ||
| 2907 | __call__ instruction to be used instead of a | ||
| 2908 | __const__, __consth__, __calli__ | ||
| 2909 | sequence. | ||
| 2910 | |||
| 2911 | |||
| 2912 | __-mlarge__ | ||
| 2913 | |||
| 2914 | |||
| 2915 | Do not assume that the __call__ instruction can be used; | ||
| 2916 | this is the default. | ||
| 2917 | |||
| 2918 | |||
| 2919 | __-m29050__ | ||
| 2920 | |||
| 2921 | |||
| 2922 | Generate code for the Am29050. | ||
| 2923 | |||
| 2924 | |||
| 2925 | __-m29000__ | ||
| 2926 | |||
| 2927 | |||
| 2928 | Generate code for the Am29000. This is the de- | ||
| 2929 | fault. | ||
| 2930 | |||
| 2931 | |||
| 2932 | __-mkernel-registers__ | ||
| 2933 | |||
| 2934 | |||
| 2935 | Generate references to registers __gr64-gr95__ instead of | ||
| 2936 | __gr96-gr127__. This option can be used when compiling | ||
| 2937 | kernel code that wants a set of global registers disjoint | ||
| 2938 | from that used by user-mode code. | ||
| 2939 | |||
| 2940 | |||
| 2941 | Note that when this option is used, register names in | ||
| 2942 | `__-f__' flags must use the normal, user-mode, | ||
| 2943 | names. | ||
| 2944 | |||
| 2945 | |||
| 2946 | __-muser-registers__ | ||
| 2947 | |||
| 2948 | |||
| 2949 | Use the normal set of global registers, __gr96-gr127__. | ||
| 2950 | This is the default. | ||
| 2951 | |||
| 2952 | |||
| 2953 | __-mstack-check__ | ||
| 2954 | |||
| 2955 | |||
| 2956 | Insert a call to ____msp_check__ after each stack ad- | ||
| 2957 | justment. This is often used for kernel code. | ||
| 2958 | |||
| 2959 | |||
| 2960 | These `__-m__' options are defined for Motorola 88K | ||
| 2961 | architectures: | ||
| 2962 | |||
| 2963 | |||
| 2964 | __-m88000__ | ||
| 2965 | |||
| 2966 | |||
| 2967 | Generate code that works well on both the m88100 and the | ||
| 2968 | m88110. | ||
| 2969 | |||
| 2970 | |||
| 2971 | __-m88100__ | ||
| 2972 | |||
| 2973 | |||
| 2974 | Generate code that works best for the m88100, but that also | ||
| 2975 | runs on the m88110. | ||
| 2976 | |||
| 2977 | |||
| 2978 | __-m88110__ | ||
| 2979 | |||
| 2980 | |||
| 2981 | Generate code that works best for the m88110, and may not | ||
| 2982 | run on the m88100. | ||
| 2983 | |||
| 2984 | |||
| 2985 | __-midentify-revision__ | ||
| 2986 | |||
| 2987 | |||
| 2988 | Include an __ident__ directive in the assembler output | ||
| 2989 | recording the source file name, compiler name and version, | ||
| 2990 | timestamp, and compilation flags used. | ||
| 2991 | |||
| 2992 | |||
| 2993 | __-mno-underscores__ | ||
| 2994 | |||
| 2995 | |||
| 2996 | In assembler output, emit symbol names without adding an | ||
| 2997 | underscore character at the beginning of each name. The | ||
| 2998 | default is to use an underscore as prefix on each | ||
| 2999 | name. | ||
| 3000 | |||
| 3001 | |||
| 3002 | __-mno-check-zero-division__ | ||
| 3003 | |||
| 3004 | |||
| 3005 | __-mcheck-zero-division__ | ||
| 3006 | |||
| 3007 | |||
| 3008 | Early models of the 88K architecture had problems with | ||
| 3009 | division by zero; in particular, many of them didn't trap. | ||
| 3010 | Use these options to avoid including (or to include | ||
| 3011 | explicitly) additional code to detect division by zero and | ||
| 3012 | signal an exception. All GCC configurations for the 88K use | ||
| 3013 | `__-mcheck-zero-division__' by default. | ||
| 3014 | |||
| 3015 | |||
| 3016 | __-mocs-debug-info__ | ||
| 3017 | |||
| 3018 | |||
| 3019 | __-mno-ocs-debug-info__ | ||
| 3020 | |||
| 3021 | |||
| 3022 | Include (or omit) additional debugging information (about | ||
| 3023 | registers used in each stack frame) as specified in the | ||
| 3024 | 88Open Object Compatibility Standard, ``OCS''. This extra | ||
| 3025 | information is not needed by GDB. The default for DG/UX, | ||
| 3026 | SVr4, and Delta 88 SVr3.2 is to include this information; | ||
| 3027 | other 88k configurations omit this information by | ||
| 3028 | default. | ||
| 3029 | |||
| 3030 | |||
| 3031 | __-mocs-frame-position__ | ||
| 3032 | |||
| 3033 | |||
| 3034 | __-mno-ocs-frame-position__ | ||
| 3035 | |||
| 3036 | |||
| 3037 | Force (or do not require) register values to be stored in a | ||
| 3038 | particular place in stack frames, as specified in OCS. The | ||
| 3039 | DG/UX, Delta88 SVr3.2, and BCS configurations use | ||
| 3040 | `__-mocs-frame-position__'; other 88k configurations | ||
| 3041 | have the default | ||
| 3042 | `__-mno-ocs-frame-position__'. | ||
| 3043 | |||
| 3044 | |||
| 3045 | __-moptimize-arg-area__ | ||
| 3046 | |||
| 3047 | |||
| 3048 | __-mno-optimize-arg-area__ | ||
| 3049 | |||
| 3050 | |||
| 3051 | Control how to store function arguments in stack frames. | ||
| 3052 | `__-moptimize-arg-area__' saves space, but may break some | ||
| 3053 | debuggers (not GDB). `__-mno-optimize-arg-area__' | ||
| 3054 | conforms better to standards. By default GCC does not | ||
| 3055 | optimize the argument area. | ||
| 3056 | |||
| 3057 | |||
| 3058 | __-mshort-data-__''num'' | ||
| 3059 | |||
| 3060 | |||
| 3061 | ''num'' Generate smaller data references by making them | ||
| 3062 | relative to __r0__, which allows loading a value using a | ||
| 3063 | single instruction (rather than the usual two). You control | ||
| 3064 | which data references are affected by specifying ''num'' | ||
| 3065 | with this option. For example, if you specify | ||
| 3066 | `__-mshort-data-512__', then the data references | ||
| 3067 | affected are those involving displacements of less than 512 | ||
| 3068 | bytes. `__-mshort-data-__''num''' is not effective for | ||
| 3069 | ''num'' greater than 64K. | ||
| 3070 | |||
| 3071 | |||
| 3072 | __-mserialize-volatile__ | ||
| 3073 | |||
| 3074 | |||
| 3075 | __-mno-serialize-volatile__ | ||
| 3076 | |||
| 3077 | |||
| 3078 | Do, or do not, generate code to guarantee sequential | ||
| 3079 | consistency of volatile memory references. | ||
| 3080 | |||
| 3081 | |||
| 3082 | GNU CC always guarantees consistency by default, for the | ||
| 3083 | preferred processor submodel. How this is done depends on | ||
| 3084 | the submodel. | ||
| 3085 | |||
| 3086 | |||
| 3087 | The m88100 processor does not reorder memory references | ||
| 3088 | and so always provides sequential consistency. If you use | ||
| 3089 | `__-m88100__', GNU CC does not generate any special | ||
| 3090 | instructions for sequential consistency. | ||
| 3091 | |||
| 3092 | |||
| 3093 | The order of memory references made by the m88110 processor | ||
| 3094 | does not always match the order of the instructions | ||
| 3095 | requesting those references. In particular, a load | ||
| 3096 | instruction may execute before a preceding store | ||
| 3097 | instruction. Such reordering violates sequential | ||
| 3098 | consistency of volatile memory references, when there are | ||
| 3099 | multiple processors. When you use `__-m88000__' or | ||
| 3100 | `__-m88110__', GNU CC generates special instructions | ||
| 3101 | when appropriate, to force execution in the proper | ||
| 3102 | order. | ||
| 3103 | |||
| 3104 | |||
| 3105 | The extra code generated to guarantee consistency may affect | ||
| 3106 | the performance of your application. If you know that you | ||
| 3107 | can safely forgo this guarantee, you may use the option | ||
| 3108 | `__-mno-serialize-volatile__'. | ||
| 3109 | |||
| 3110 | |||
| 3111 | If you use the `__-m88100__' option but require sequen- | ||
| 3112 | tial consistency when running on the m88110 processor, you | ||
| 3113 | should use `__-mserialize-volatile__'. | ||
| 3114 | |||
| 3115 | |||
| 3116 | __-msvr4__ | ||
| 3117 | |||
| 3118 | |||
| 3119 | __-msvr3__ | ||
| 3120 | |||
| 3121 | |||
| 3122 | Turn on (`__-msvr4__') or off (`__-msvr3__') compiler | ||
| 3123 | extensions related to System V release 4 (SVr4). This | ||
| 3124 | controls the following: | ||
| 3125 | |||
| 3126 | |||
| 3127 | Which variant of the assembler syntax to emit (which you can | ||
| 3128 | select independently using `__-mver- | ||
| 3129 | sion-03.00__'). | ||
| 3130 | |||
| 3131 | |||
| 3132 | `__-msvr4__' makes the C preprocessor recognize | ||
| 3133 | `__#pragma weak__' | ||
| 3134 | |||
| 3135 | |||
| 3136 | `__-msvr4__' makes GCC issue additional declaration di- | ||
| 3137 | rectives used in SVr4. | ||
| 3138 | |||
| 3139 | |||
| 3140 | `__-msvr3__' is the default for all m88K configurations | ||
| 3141 | except the SVr4 configuration. | ||
| 3142 | |||
| 3143 | |||
| 3144 | __-mtrap-large-shift__ | ||
| 3145 | |||
| 3146 | |||
| 3147 | __-mhandle-large-shift__ | ||
| 3148 | |||
| 3149 | |||
| 3150 | Include code to detect bit-shifts of more than 31 bits; | ||
| 3151 | respectively, trap such shifts or emit code to handle them | ||
| 3152 | properly. By default GCC makes no special provision for | ||
| 3153 | large bit shifts. | ||
| 3154 | |||
| 3155 | |||
| 3156 | __-muse-div-instruction__ | ||
| 3157 | |||
| 3158 | |||
| 3159 | Very early models of the 88K architecture didn't have a | ||
| 3160 | divide instruction, so GCC avoids that instruction by | ||
| 3161 | default. Use this option to specify that it's safe to use | ||
| 3162 | the divide instruction. | ||
| 3163 | |||
| 3164 | |||
| 3165 | __-mversion-03.00__ | ||
| 3166 | |||
| 3167 | |||
| 3168 | In the DG/UX configuration, there are two flavors of SVr4. | ||
| 3169 | This option modifies __-msvr4__ to select whether the | ||
| 3170 | hybrid-COFF or real-ELF flavor is used. All other | ||
| 3171 | configurations ignore this option. | ||
| 3172 | |||
| 3173 | |||
| 3174 | __-mwarn-passed-structs__ | ||
| 3175 | |||
| 3176 | |||
| 3177 | Warn when a function passes a struct as an argument or | ||
| 3178 | result. Structure-passing conventions have changed during | ||
| 3179 | the evolution of the C language, and are often the source of | ||
| 3180 | portability problems. By default, GCC issues no such | ||
| 3181 | warning. | ||
| 3182 | |||
| 3183 | |||
| 3184 | These options are defined for the IBM RS6000: | ||
| 3185 | |||
| 3186 | |||
| 3187 | __-mfp-in-toc__ | ||
| 3188 | |||
| 3189 | |||
| 3190 | __-mno-fp-in-toc__ | ||
| 3191 | |||
| 3192 | |||
| 3193 | Control whether or not floating-point constants go in the | ||
| 3194 | Table of Contents (TOC), a table of all global variable and | ||
| 3195 | function addresses. By default GCC puts floating-point | ||
| 3196 | constants there; if the TOC overflows, | ||
| 3197 | `__-mno-fp-in-toc__' will reduce the size of the TOC, | ||
| 3198 | which may avoid the overflow. | ||
| 3199 | |||
| 3200 | |||
| 3201 | These `__-m__' options are defined for the IBM RT | ||
| 3202 | PC: | ||
| 3203 | |||
| 3204 | |||
| 3205 | __-min-line-mul__ | ||
| 3206 | |||
| 3207 | |||
| 3208 | Use an in-line code sequence for integer multiplies. This | ||
| 3209 | is the default. | ||
| 3210 | |||
| 3211 | |||
| 3212 | __-mcall-lib-mul__ | ||
| 3213 | |||
| 3214 | |||
| 3215 | Call __lmul$$__ for integer multiples. | ||
| 3216 | |||
| 3217 | |||
| 3218 | __-mfull-fp-blocks__ | ||
| 3219 | |||
| 3220 | |||
| 3221 | Generate full-size floating point data blocks, including | ||
| 3222 | the minimum amount of scratch space recommended by IBM. | ||
| 3223 | This is the default. | ||
| 3224 | |||
| 3225 | |||
| 3226 | __-mminimum-fp-blocks__ | ||
| 3227 | |||
| 3228 | |||
| 3229 | Do not include extra scratch space in floating point data | ||
| 3230 | blocks. This results in smaller code, but slower execution, | ||
| 3231 | since scratch space must be allocated | ||
| 3232 | dynamically. | ||
| 3233 | |||
| 3234 | |||
| 3235 | __-mfp-arg-in-fpregs__ | ||
| 3236 | |||
| 3237 | |||
| 3238 | Use a calling sequence incompatible with the IBM calling | ||
| 3239 | convention in which floating point arguments are passed in | ||
| 3240 | floating point registers. Note that __varargs.h__ and | ||
| 3241 | __stdargs.h__ will not work with floating point operands | ||
| 3242 | if this option is specified. | ||
| 3243 | |||
| 3244 | |||
| 3245 | __-mfp-arg-in-gregs__ | ||
| 3246 | |||
| 3247 | |||
| 3248 | Use the normal calling convention for floating point | ||
| 3249 | arguments. This is the default. | ||
| 3250 | |||
| 3251 | |||
| 3252 | __-mhc-struct-return__ | ||
| 3253 | |||
| 3254 | |||
| 3255 | Return structures of more than one word in memory, rather | ||
| 3256 | than in a register. This provides compatibility with the | ||
| 3257 | !MetaWare HighC (hc) compiler. Use | ||
| 3258 | `__-fpcc-struct-return__' for compatibility with the | ||
| 3259 | Portable C Compiler (pcc). | ||
| 3260 | |||
| 3261 | |||
| 3262 | __-mnohc-struct-return__ | ||
| 3263 | |||
| 3264 | |||
| 3265 | Return some structures of more than one word in registers, | ||
| 3266 | when convenient. This is the default. For compatibility with | ||
| 3267 | the IBM-supplied compilers, use either | ||
| 3268 | `__-fpcc-struct-return__' or | ||
| 3269 | `__-mhc-struct-return__'. | ||
| 3270 | |||
| 3271 | |||
| 3272 | These `__-m__' options are defined for the MIPS family of | ||
| 3273 | computers: | ||
| 3274 | |||
| 3275 | |||
| 3276 | __-mcpu=__''cpu-type'' | ||
| 3277 | |||
| 3278 | |||
| 3279 | Assume the defaults for the machine type ''cpu-type'' | ||
| 3280 | when scheduling instructions. The default ''cpu-type'' is | ||
| 3281 | __default__, which picks the longest cycles times for any | ||
| 3282 | of the machines, in order that the code run at reasonable | ||
| 3283 | rates on all MIPS cpu's. Other choices for ''cpu-type'' | ||
| 3284 | are __r2000__, __r3000__, __r4000__, and | ||
| 3285 | __r6000__. While picking a specific ''cpu-type'' will | ||
| 3286 | schedule things appropriately for that particular chip, the | ||
| 3287 | compiler will not generate any code that does not meet level | ||
| 3288 | 1 of the MIPS ISA (instruction set architecture) without the | ||
| 3289 | __-mips2__ or __-mips3__ switches being | ||
| 3290 | used. | ||
| 3291 | |||
| 3292 | |||
| 3293 | __-mips2__ | ||
| 3294 | |||
| 3295 | |||
| 3296 | Issue instructions from level 2 of the MIPS ISA (branch | ||
| 3297 | likely, square root instructions). The __-mcpu=r4000__ or | ||
| 3298 | __-mcpu=r6000__ switch must be used in conjunction with | ||
| 3299 | __-mips2__. | ||
| 3300 | |||
| 3301 | |||
| 3302 | __-mips3__ | ||
| 3303 | |||
| 3304 | |||
| 3305 | Issue instructions from level 3 of the MIPS ISA (64 bit | ||
| 3306 | instructions). The __-mcpu=r4000__ switch must be used in | ||
| 3307 | conjunction with __-mips2__. | ||
| 3308 | |||
| 3309 | |||
| 3310 | __-mint64__ | ||
| 3311 | |||
| 3312 | |||
| 3313 | __-mlong64__ | ||
| 3314 | |||
| 3315 | |||
| 3316 | __-mlonglong128__ | ||
| 3317 | |||
| 3318 | |||
| 3319 | These options don't work at present. | ||
| 3320 | |||
| 3321 | |||
| 3322 | __-mmips-as__ | ||
| 3323 | |||
| 3324 | |||
| 3325 | Generate code for the MIPS assembler, and invoke | ||
| 3326 | __mips-tfile__ to add normal debug information. This is | ||
| 3327 | the default for all platforms except for the OSF/1 reference | ||
| 3328 | platform, using the OSF/rose object format. If any of the | ||
| 3329 | __-ggdb__, __-gstabs__, or __-gstabs+__ switches | ||
| 3330 | are used, the __mips-tfile__ program will encapsulate | ||
| 3331 | the stabs within MIPS ECOFF. | ||
| 3332 | |||
| 3333 | |||
| 3334 | __-mgas__ | ||
| 3335 | |||
| 3336 | |||
| 3337 | Generate code for the GNU assembler. This is the default on | ||
| 3338 | the OSF/1 reference platform, using the OSF/rose object | ||
| 3339 | format. | ||
| 3340 | |||
| 3341 | |||
| 3342 | __-mrnames__ | ||
| 3343 | |||
| 3344 | |||
| 3345 | __-mno-rnames__ | ||
| 3346 | |||
| 3347 | |||
| 3348 | The __-mrnames__ switch says to output code using the | ||
| 3349 | MIPS software names for the registers, instead of the | ||
| 3350 | hardware names (ie, __a0__ instead of __$4__). The GNU | ||
| 3351 | assembler does not support the __-mrnames__ switch, and | ||
| 3352 | the MIPS assembler will be instructed to run the MIPS C | ||
| 3353 | preprocessor over the source file. The __-mno-rnames__ | ||
| 3354 | switch is default. | ||
| 3355 | |||
| 3356 | |||
| 3357 | __-mgpopt__ | ||
| 3358 | |||
| 3359 | |||
| 3360 | __-mno-gpopt__ | ||
| 3361 | |||
| 3362 | |||
| 3363 | The __-mgpopt__ switch says to write all of the data | ||
| 3364 | declarations before the instructions in the text section, to | ||
| 3365 | all the MIPS assembler to generate one word memory | ||
| 3366 | references instead of using two words for short global or | ||
| 3367 | static data items. This is on by default if optimization is | ||
| 3368 | selected. | ||
| 3369 | |||
| 3370 | |||
| 3371 | __-mstats__ | ||
| 3372 | |||
| 3373 | |||
| 3374 | __-mno-stats__ | ||
| 3375 | |||
| 3376 | |||
| 3377 | For each non-inline function processed, the __-mstats__ | ||
| 3378 | switch causes the compiler to emit one line to the standard | ||
| 3379 | error file to print statistics about the program (number of | ||
| 3380 | registers saved, stack size, etc.). | ||
| 3381 | |||
| 3382 | |||
| 3383 | __-mmemcpy__ | ||
| 3384 | |||
| 3385 | |||
| 3386 | __-mno-memcpy__ | ||
| 3387 | |||
| 3388 | |||
| 3389 | The __-mmemcpy__ switch makes all block moves call the | ||
| 3390 | appropriate string function (__memcpy__ or __bcopy__) | ||
| 3391 | instead of possibly generating inline code. | ||
| 3392 | |||
| 3393 | |||
| 3394 | __-mmips-tfile__ | ||
| 3395 | |||
| 3396 | |||
| 3397 | __-mno-mips-tfile__ | ||
| 3398 | |||
| 3399 | |||
| 3400 | The __-mno-mips-tfile__ switch causes the compiler not | ||
| 3401 | postprocess the object file with the __mips-tfile__ | ||
| 3402 | program, after the MIPS assembler has generated it to add | ||
| 3403 | debug support. If __mips-tfile__ is not run, then no | ||
| 3404 | local variables will be available to the debugger. In | ||
| 3405 | addition, __stage2__ and __stage3__ objects will have | ||
| 3406 | the temporary file names passed to the assembler embedded in | ||
| 3407 | the object file, which means the objects will not compare | ||
| 3408 | the same. | ||
| 3409 | |||
| 3410 | |||
| 3411 | __-msoft-float__ | ||
| 3412 | |||
| 3413 | |||
| 3414 | Generate output containing library calls for floating | ||
| 3415 | point. ''WARNING:'' the requisite libraries are not part | ||
| 3416 | of GNU CC. Normally the facilities of the machine's usual C | ||
| 3417 | compiler are used, but this can't be done directly in | ||
| 3418 | cross-compilation. You must make your own arrangements to | ||
| 3419 | provide suitable library functions for | ||
| 3420 | cross-compilation. | ||
| 3421 | |||
| 3422 | |||
| 3423 | __-mhard-float__ | ||
| 3424 | |||
| 3425 | |||
| 3426 | Generate output containing floating point instructions. | ||
| 3427 | This is the default if you use the unmodified | ||
| 3428 | sources. | ||
| 3429 | |||
| 3430 | |||
| 3431 | __-mfp64__ | ||
| 3432 | |||
| 3433 | |||
| 3434 | Assume that the __FR__ bit in the status word is on, and | ||
| 3435 | that there are 32 64-bit floating point registers, instead | ||
| 3436 | of 32 32-bit floating point registers. You must also | ||
| 3437 | specify the __-mcpu=r4000__ and __-mips3__ | ||
| 3438 | switches. | ||
| 3439 | |||
| 3440 | |||
| 3441 | __-mfp32__ | ||
| 3442 | |||
| 3443 | |||
| 3444 | Assume that there are 32 32-bit floating point registers. | ||
| 3445 | This is the default. | ||
| 3446 | |||
| 3447 | |||
| 3448 | __-mabicalls__ | ||
| 3449 | |||
| 3450 | |||
| 3451 | __-mno-abicalls__ | ||
| 3452 | |||
| 3453 | |||
| 3454 | Emit (or do not emit) the __.abicalls__, __.cpload__, | ||
| 3455 | and __.cprestore__ pseudo operations that some System V.4 | ||
| 3456 | ports use for position independent code. | ||
| 3457 | |||
| 3458 | |||
| 3459 | __-mhalf-pic__ | ||
| 3460 | |||
| 3461 | |||
| 3462 | __-mno-half-pic__ | ||
| 3463 | |||
| 3464 | |||
| 3465 | The __-mhalf-pic__ switch says to put pointers to ex- | ||
| 3466 | tern references into the data section and load them up, | ||
| 3467 | rather than put the references in the text section. This | ||
| 3468 | option does not work at present. __-G__''num'' Put | ||
| 3469 | global and static items less than or equal to ''num'' | ||
| 3470 | bytes into the small data or bss sections instead of the | ||
| 3471 | normal data or bss section. This allows the assembler to | ||
| 3472 | emit one word memory reference instructions based on the | ||
| 3473 | global pointer (__gp__ or __$28__), instead of the | ||
| 3474 | normal two words used. By default, ''num'' is 8 when the | ||
| 3475 | MIPS assembler is used, and 0 when the GNU assembler is | ||
| 3476 | used. The __-G__''num'' switch is also passed to the | ||
| 3477 | assembler and linker. All modules should be compiled with | ||
| 3478 | the same __-G__''num'' value. | ||
| 3479 | |||
| 3480 | |||
| 3481 | __-nocpp__ | ||
| 3482 | |||
| 3483 | |||
| 3484 | Tell the MIPS assembler to not run its preprocessor over | ||
| 3485 | user assembler files (with a `__.s__' suffix) when | ||
| 3486 | assembling them. | ||
| 3487 | |||
| 3488 | |||
| 3489 | These `__-m__' options are defined for the Intel 80386 | ||
| 3490 | family of computers: __-m486__ | ||
| 3491 | |||
| 3492 | |||
| 3493 | __-mno-486__ | ||
| 3494 | |||
| 3495 | |||
| 3496 | Control whether or not code is optimized for a 486 instead | ||
| 3497 | of an 386. Code generated for a 486 will run on a 386 and | ||
| 3498 | vice versa. | ||
| 3499 | |||
| 3500 | |||
| 3501 | __-msoft-float__ | ||
| 3502 | |||
| 3503 | |||
| 3504 | Generate output containing library calls for floating | ||
| 3505 | point. ''Warning:'' the requisite libraries are not part | ||
| 3506 | of GNU CC. Normally the facilities of the machine's usual C | ||
| 3507 | compiler are used, but this can't be done directly in | ||
| 3508 | cross-compilation. You must make your own arrangements to | ||
| 3509 | provide suitable library functions for | ||
| 3510 | cross-compilation. | ||
| 3511 | |||
| 3512 | |||
| 3513 | On machines where a function returns floating point results | ||
| 3514 | in the 80387 register stack, some floating point opcodes may | ||
| 3515 | be emitted even if `__-msoft-float__' is | ||
| 3516 | used. | ||
| 3517 | |||
| 3518 | |||
| 3519 | __-mno-fp-ret-in-387__ | ||
| 3520 | |||
| 3521 | |||
| 3522 | Do not use the FPU registers for return values of | ||
| 3523 | functions. | ||
| 3524 | |||
| 3525 | |||
| 3526 | The usual calling convention has functions return values of | ||
| 3527 | types __float__ and __double__ in an FPU register, | ||
| 3528 | even if there is no FPU. The idea is that the operating | ||
| 3529 | system should emulate an FPU. | ||
| 3530 | |||
| 3531 | |||
| 3532 | The option `__-mno-fp-ret-in-387__' causes such values to | ||
| 3533 | be returned in ordinary CPU registers instead. | ||
| 3534 | |||
| 3535 | |||
| 3536 | These `__-m__' options are defined for the HPPA family of | ||
| 3537 | computers: | ||
| 3538 | |||
| 3539 | |||
| 3540 | __-mpa-risc-1-0__ | ||
| 3541 | |||
| 3542 | |||
| 3543 | Generate code for a PA 1.0 processor. | ||
| 3544 | |||
| 3545 | |||
| 3546 | __-mpa-risc-1-1__ | ||
| 3547 | |||
| 3548 | |||
| 3549 | Generate code for a PA 1.1 processor. | ||
| 3550 | |||
| 3551 | |||
| 3552 | __-mkernel__ | ||
| 3553 | |||
| 3554 | |||
| 3555 | Generate code which is suitable for use in kernels. | ||
| 3556 | Specifically, avoid __add__ instructions in which one of | ||
| 3557 | the arguments is the DP register; generate __addil__ | ||
| 3558 | instructions instead. This avoids a rather serious bug in | ||
| 3559 | the HP-UX linker. | ||
| 3560 | |||
| 3561 | |||
| 3562 | __-mshared-libs__ | ||
| 3563 | |||
| 3564 | |||
| 3565 | Generate code that can be linked against HP-UX shared | ||
| 3566 | libraries. This option is not fully function yet, and is | ||
| 3567 | not on by default for any PA target. Using this option can | ||
| 3568 | cause incorrect code to be generated by the | ||
| 3569 | compiler. | ||
| 3570 | |||
| 3571 | |||
| 3572 | __-mno-shared-libs__ | ||
| 3573 | |||
| 3574 | |||
| 3575 | Don't generate code that will be linked against shared | ||
| 3576 | libraries. This is the default for all PA | ||
| 3577 | targets. | ||
| 3578 | |||
| 3579 | |||
| 3580 | __-mlong-calls__ | ||
| 3581 | |||
| 3582 | |||
| 3583 | Generate code which allows calls to functions greater than | ||
| 3584 | 256K away from the caller when the caller and callee are in | ||
| 3585 | the same source file. Do not turn this option on unless code | ||
| 3586 | refuses to link with ``branch out of range errors from the | ||
| 3587 | linker. | ||
| 3588 | |||
| 3589 | |||
| 3590 | __-mdisable-fpregs__ | ||
| 3591 | |||
| 3592 | |||
| 3593 | Prevent floating point registers from being used in any | ||
| 3594 | manner. This is necessary for compiling kernels which | ||
| 3595 | perform lazy context switching of floating point | ||
| 3596 | registers. If you use this option and attempt to perform | ||
| 3597 | floating point operations, the compiler will | ||
| 3598 | abort. | ||
| 3599 | |||
| 3600 | |||
| 3601 | __-mdisable-indexing__ | ||
| 3602 | |||
| 3603 | |||
| 3604 | Prevent the compiler from using indexing address modes. This | ||
| 3605 | avoids some rather obscure problems when compiling MIG | ||
| 3606 | generated code under MACH. | ||
| 3607 | |||
| 3608 | |||
| 3609 | __-mtrailing-colon__ | ||
| 3610 | |||
| 3611 | |||
| 3612 | Add a colon to the end of label definitions (for ELF | ||
| 3613 | assemblers). | ||
| 3614 | |||
| 3615 | |||
| 3616 | These `__-m__' options are defined for the Intel 80960 | ||
| 3617 | family of computers: | ||
| 3618 | |||
| 3619 | |||
| 3620 | __-m__''cpu-type'' | ||
| 3621 | |||
| 3622 | |||
| 3623 | Assume the defaults for the machine type ''cpu-type'' for | ||
| 3624 | instruction and addressing-mode availability and alignment. | ||
| 3625 | The default ''cpu-type'' is __kb__; other choices are | ||
| 3626 | __ka__, __mc__, __ca__, __cf__, __sa__, and | ||
| 3627 | __sb__. | ||
| 3628 | |||
| 3629 | |||
| 3630 | __-mnumerics__ | ||
| 3631 | |||
| 3632 | |||
| 3633 | __-msoft-float__ | ||
| 3634 | |||
| 3635 | |||
| 3636 | The __-mnumerics__ option indicates that the processor | ||
| 3637 | does support floating-point instructions. The | ||
| 3638 | __-msoft-float__ option indicates that floating-point | ||
| 3639 | support should not be assumed. | ||
| 3640 | |||
| 3641 | |||
| 3642 | __-mleaf-procedures__ | ||
| 3643 | |||
| 3644 | |||
| 3645 | __-mno-leaf-procedures__ | ||
| 3646 | |||
| 3647 | |||
| 3648 | Do (or do not) attempt to alter leaf procedures to be | ||
| 3649 | callable with the ''bal'' instruction as well as | ||
| 3650 | ''call''. This will result in more efficient code for | ||
| 3651 | explicit calls when the ''bal'' instruction can be sub- | ||
| 3652 | stituted by the assembler or linker, but less efficient | ||
| 3653 | code in other cases, such as calls via function pointers, | ||
| 3654 | or using a linker that doesn't support this | ||
| 3655 | optimization. | ||
| 3656 | |||
| 3657 | |||
| 3658 | __-mtail-call__ | ||
| 3659 | |||
| 3660 | |||
| 3661 | __-mno-tail-call__ | ||
| 3662 | |||
| 3663 | |||
| 3664 | Do (or do not) make additional attempts (beyond those of the | ||
| 3665 | machine-independent portions of the compiler) to optimize | ||
| 3666 | tail-recursive calls into branches. You may not want to do | ||
| 3667 | this because the detection of cases where this is not valid | ||
| 3668 | is not totally complete. The default is | ||
| 3669 | __-mno-tail-call__. | ||
| 3670 | |||
| 3671 | |||
| 3672 | __-mcomplex-addr__ | ||
| 3673 | |||
| 3674 | |||
| 3675 | __-mno-complex-addr__ | ||
| 3676 | |||
| 3677 | |||
| 3678 | Assume (or do not assume) that the use of a complex | ||
| 3679 | addressing mode is a win on this implementation of the i960. | ||
| 3680 | Complex addressing modes may not be worthwhile on the | ||
| 3681 | K-series, but they definitely are on the C-series. The | ||
| 3682 | default is currently __-mcomplex-addr__ for all | ||
| 3683 | processors except the CB and CC. | ||
| 3684 | |||
| 3685 | |||
| 3686 | __-mcode-align__ | ||
| 3687 | |||
| 3688 | |||
| 3689 | __-mno-code-align__ | ||
| 3690 | |||
| 3691 | |||
| 3692 | Align code to 8-byte boundaries for faster fetching (or | ||
| 3693 | don't bother). Currently turned on by default for C-series | ||
| 3694 | implementations only. | ||
| 3695 | |||
| 3696 | |||
| 3697 | __-mic-compat__ | ||
| 3698 | |||
| 3699 | |||
| 3700 | __-mic2.0-compat__ | ||
| 3701 | |||
| 3702 | |||
| 3703 | __-mic3.0-compat__ | ||
| 3704 | |||
| 3705 | |||
| 3706 | Enable compatibility with iC960 v2.0 or v3.0. | ||
| 3707 | |||
| 3708 | |||
| 3709 | __-masm-compat__ | ||
| 3710 | |||
| 3711 | |||
| 3712 | __-mintel-asm__ | ||
| 3713 | |||
| 3714 | |||
| 3715 | Enable compatibility with the iC960 assembler. | ||
| 3716 | |||
| 3717 | |||
| 3718 | __-mstrict-align__ | ||
| 3719 | |||
| 3720 | |||
| 3721 | __-mno-strict-align__ | ||
| 3722 | |||
| 3723 | |||
| 3724 | Do not permit (do permit) unaligned accesses. | ||
| 3725 | |||
| 3726 | |||
| 3727 | __-mold-align__ | ||
| 3728 | |||
| 3729 | |||
| 3730 | Enable structure-alignment compatibility with Intel's gcc | ||
| 3731 | release version 1.3 (based on gcc 1.37). Currently this is | ||
| 3732 | buggy in that __#pragma align 1__ is always assumed as | ||
| 3733 | well, and cannot be turned off. | ||
| 3734 | |||
| 3735 | |||
| 3736 | These `__-m__' options are defined for the DEC Alpha | ||
| 3737 | implementations: | ||
| 3738 | |||
| 3739 | |||
| 3740 | __-mno-soft-float__ | ||
| 3741 | |||
| 3742 | |||
| 3743 | __-msoft-float__ | ||
| 3744 | |||
| 3745 | |||
| 3746 | Use (do not use) the hardware floating-point instructions | ||
| 3747 | for floating-point operations. When __-msoft-float__ is | ||
| 3748 | specified, functions in `__libgcc1.c__' will be used to | ||
| 3749 | perform floating-point operations. Unless they are replaced | ||
| 3750 | by routines that emulate the floating-point operations, or | ||
| 3751 | compiled in such a way as to call such emulations routines, | ||
| 3752 | these routines will issue floating-point operations. If you | ||
| 3753 | are compiling for an Alpha without floating-point | ||
| 3754 | operations, you must ensure that the library is built so | ||
| 3755 | as not to call them. | ||
| 3756 | |||
| 3757 | |||
| 3758 | Note that Alpha implementations without floating-point | ||
| 3759 | operations are required to have floating-point | ||
| 3760 | registers. | ||
| 3761 | |||
| 3762 | |||
| 3763 | __-mfp-reg__ | ||
| 3764 | |||
| 3765 | |||
| 3766 | __-mno-fp-regs__ | ||
| 3767 | |||
| 3768 | |||
| 3769 | Generate code that uses (does not use) the floating-point | ||
| 3770 | register set. __-mno-fp-regs__ implies | ||
| 3771 | __-msoft-float__. If the floating-point register set is | ||
| 3772 | not used, floating point operands are passed in integer | ||
| 3773 | registers as if they were integers and floating-point | ||
| 3774 | results are passed in $0 instead of $f0. This is a | ||
| 3775 | non-standard calling sequence, so any function with a | ||
| 3776 | floating-point argument or return value called by code | ||
| 3777 | compiled with __-mno-fp-regs__ must also be compiled with | ||
| 3778 | that option. | ||
| 3779 | |||
| 3780 | |||
| 3781 | A typical use of this option is building a kernel that does | ||
| 3782 | not use, and hence need not save and restore, any | ||
| 3783 | floating-point registers. | ||
| 3784 | |||
| 3785 | |||
| 3786 | These additional options are available on System V Release 4 | ||
| 3787 | for compatibility with other compilers on those | ||
| 3788 | systems: | ||
| 3789 | |||
| 3790 | |||
| 3791 | __-G__ | ||
| 3792 | |||
| 3793 | |||
| 3794 | On SVr4 systems, __gcc__ accepts the option `__-G__' | ||
| 3795 | (and passes it to the system linker), for compatibility with | ||
| 3796 | other compilers. However, we suggest you use | ||
| 3797 | `__-symbolic__' or `__-shared__' as appropriate, | ||
| 3798 | instead of supplying linker options on the __gcc__ | ||
| 3799 | command line. | ||
| 3800 | |||
| 3801 | |||
| 3802 | __-Qy__ | ||
| 3803 | |||
| 3804 | |||
| 3805 | Identify the versions of each tool used by the compiler, | ||
| 3806 | in a __.ident__ assembler directive in the out- | ||
| 3807 | put. | ||
| 3808 | |||
| 3809 | |||
| 3810 | __-Qn__ | ||
| 3811 | |||
| 3812 | |||
| 3813 | Refrain from adding __.ident__ directives to the output | ||
| 3814 | file (this is the default). | ||
| 3815 | |||
| 3816 | |||
| 3817 | __-YP,__''dirs'' | ||
| 3818 | |||
| 3819 | |||
| 3820 | Search the directories ''dirs'', and no others, for li- | ||
| 3821 | braries specified with `__-l__'. You can separate di- | ||
| 3822 | rectory entries in ''dirs'' from one another with | ||
| 3823 | colons. | ||
| 3824 | |||
| 3825 | |||
| 3826 | __-Ym,__''dir'' | ||
| 3827 | |||
| 3828 | |||
| 3829 | Look in the directory ''dir'' to find the M4 preproces- | ||
| 3830 | sor. The assembler uses this option. | ||
| 3831 | !!CODE GENERATION OPTIONS | ||
| 3832 | |||
| 3833 | |||
| 3834 | These machine-independent options control the interface | ||
| 3835 | conventions used in code generation. | ||
| 3836 | |||
| 3837 | |||
| 3838 | Most of them begin with `-f'. These options have both | ||
| 3839 | positive and negative forms; the negative form of | ||
| 3840 | `__-ffoo__' would be `__-fno-foo__'. In the table | ||
| 3841 | below, only one of the forms is listed--the one which is not | ||
| 3842 | the default. You can figure out the other form by either | ||
| 3843 | removing `__no-__' or adding it. | ||
| 3844 | |||
| 3845 | |||
| 3846 | __-fnonnull-objects__ | ||
| 3847 | |||
| 3848 | |||
| 3849 | Assume that objects reached through references are not null | ||
| 3850 | (C++ only). | ||
| 3851 | |||
| 3852 | |||
| 3853 | Normally, GNU C++ makes conservative assumptions about | ||
| 3854 | objects reached through references. For example, the | ||
| 3855 | compiler must check that __a__ is not null in code like | ||
| 3856 | the following: | ||
| 3857 | |||
| 3858 | |||
| 3859 | obj | ||
| 3860 | |||
| 3861 | |||
| 3862 | Checking that references of this sort have non-null values | ||
| 3863 | requires extra code, however, and it is unnecessary for | ||
| 3864 | many programs. You can use `__-fnonnull-objects__' to | ||
| 3865 | omit the checks for null, if your program doesn't require | ||
| 3866 | checking. | ||
| 3867 | |||
| 3868 | |||
| 3869 | __-fpcc-struct-return__ | ||
| 3870 | |||
| 3871 | |||
| 3872 | Use the same convention for returning __struct__ and | ||
| 3873 | __union__ values that is used by the usual C compiler on | ||
| 3874 | your system. This convention is less efficient for small | ||
| 3875 | structures, and on many machines it fails to be reentrant; | ||
| 3876 | but it has the advantage of allowing intercallability | ||
| 3877 | between GCC-compiled code and PCC-compiled | ||
| 3878 | code. | ||
| 3879 | |||
| 3880 | |||
| 3881 | __-freg-struct-return__ | ||
| 3882 | |||
| 3883 | |||
| 3884 | Use the convention that __struct__ and __union__ | ||
| 3885 | values are returned in registers when possible. This is more | ||
| 3886 | efficient for small structures than | ||
| 3887 | __-fpcc-struct-return__. | ||
| 3888 | |||
| 3889 | |||
| 3890 | If you specify neither __-fpcc-struct-return__ nor | ||
| 3891 | __-freg-struct-return__, GNU CC defaults to whichever | ||
| 3892 | convention is standard for the target. If there is no | ||
| 3893 | standard convention, GNU CC defaults to | ||
| 3894 | __-fpcc-struct-return__. | ||
| 3895 | |||
| 3896 | |||
| 3897 | __-fshort-enums__ | ||
| 3898 | |||
| 3899 | |||
| 3900 | Allocate to an __enum__ type only as many bytes as it | ||
| 3901 | needs for the declared range of possible values. | ||
| 3902 | Specifically, the __enum__ type will be equivalent to the | ||
| 3903 | smallest integer type which has enough room. | ||
| 3904 | |||
| 3905 | |||
| 3906 | __-fshort-double__ | ||
| 3907 | |||
| 3908 | |||
| 3909 | Use the same size for __double__ as for __float__ | ||
| 3910 | . | ||
| 3911 | |||
| 3912 | |||
| 3913 | __-fshared-data__ | ||
| 3914 | |||
| 3915 | |||
| 3916 | Requests that the data and non-__const__ variables of | ||
| 3917 | this compilation be shared data rather than private data. | ||
| 3918 | The distinction makes sense only on certain operating | ||
| 3919 | systems, where shared data is shared between processes | ||
| 3920 | running the same program, while private data exists in one | ||
| 3921 | copy per process. | ||
| 3922 | |||
| 3923 | |||
| 3924 | __-fno-common__ | ||
| 3925 | |||
| 3926 | |||
| 3927 | Allocate even uninitialized global variables in the bss | ||
| 3928 | section of the object file, rather than generating them as | ||
| 3929 | common blocks. This has the effect that if the same variable | ||
| 3930 | is declared (without __extern__) in two different | ||
| 3931 | compilations, you will get an error when you link them. The | ||
| 3932 | only reason this might be useful is if you wish to verify | ||
| 3933 | that the program will work on other systems which always | ||
| 3934 | work this way. | ||
| 3935 | |||
| 3936 | |||
| 3937 | __-fno-ident__ | ||
| 3938 | |||
| 3939 | |||
| 3940 | Ignore the `__#ident__' directive. | ||
| 3941 | |||
| 3942 | |||
| 3943 | __-fno-gnu-linker__ | ||
| 3944 | |||
| 3945 | |||
| 3946 | Do not output global initializations (such as C++ | ||
| 3947 | constructors and destructors) in the form used by the GNU | ||
| 3948 | linker (on systems where the GNU linker is the standard | ||
| 3949 | method of handling them). Use this option when you want to | ||
| 3950 | use a non-GNU linker, which also requires using the | ||
| 3951 | __collect2__ program to make sure the system linker | ||
| 3952 | includes constructors and destructors. (__collect2__ is | ||
| 3953 | included in the GNU CC distribution.) For systems which | ||
| 3954 | ''must'' use __collect2__, the compiler driver | ||
| 3955 | __gcc__ is configured to do this | ||
| 3956 | automatically. | ||
| 3957 | |||
| 3958 | |||
| 3959 | __-finhibit-size-directive__ | ||
| 3960 | |||
| 3961 | |||
| 3962 | Don't output a __.size__ assembler directive, or any- | ||
| 3963 | thing else that would cause trouble if the function is split | ||
| 3964 | in the middle, and the two halves are placed at locations | ||
| 3965 | far apart in memory. This option is used when compiling | ||
| 3966 | `__crtstuff.c__'; you should not need to use it for | ||
| 3967 | anything else. | ||
| 3968 | |||
| 3969 | |||
| 3970 | __-fverbose-asm__ | ||
| 3971 | |||
| 3972 | |||
| 3973 | Put extra commentary information in the generated assembly | ||
| 3974 | code to make it more readable. This option is generally | ||
| 3975 | only of use to those who actually need to read the generated | ||
| 3976 | assembly code (perhaps while debugging the compiler | ||
| 3977 | itself). | ||
| 3978 | |||
| 3979 | |||
| 3980 | __-fvolatile__ | ||
| 3981 | |||
| 3982 | |||
| 3983 | Consider all memory references through pointers to be | ||
| 3984 | volatile. | ||
| 3985 | |||
| 3986 | |||
| 3987 | __-fvolatile-global__ | ||
| 3988 | |||
| 3989 | |||
| 3990 | Consider all memory references to extern and global data | ||
| 3991 | items to be volatile. | ||
| 3992 | |||
| 3993 | |||
| 3994 | __-fpic__ | ||
| 3995 | |||
| 3996 | |||
| 3997 | If supported for the target machines, generate po- | ||
| 3998 | sition-independent code, suitable for use in a shared | ||
| 3999 | library. | ||
| 4000 | |||
| 4001 | |||
| 4002 | __-fPIC__ | ||
| 4003 | |||
| 4004 | |||
| 4005 | If supported for the target machine, emit posi- | ||
| 4006 | tion-independent code, suitable for dynamic linking, even | ||
| 4007 | if branches need large displacements. | ||
| 4008 | |||
| 4009 | |||
| 4010 | __-ffixed-__''reg'' | ||
| 4011 | |||
| 4012 | |||
| 4013 | Treat the register named ''reg'' as a fixed register; | ||
| 4014 | generated code should never refer to it (except perhaps as a | ||
| 4015 | stack pointer, frame pointer or in some other fixed | ||
| 4016 | role). | ||
| 4017 | |||
| 4018 | |||
| 4019 | ''reg'' must be the name of a register. The register | ||
| 4020 | names accepted are machine-specific and are defined in the | ||
| 4021 | __REGISTER_NAMES__ macro in the machine description | ||
| 4022 | macro file. | ||
| 4023 | |||
| 4024 | |||
| 4025 | This flag does not have a negative form, because it | ||
| 4026 | specifies a three-way choice. | ||
| 4027 | |||
| 4028 | |||
| 4029 | __-fcall-used-__''reg'' | ||
| 4030 | |||
| 4031 | |||
| 4032 | Treat the register named ''reg'' as an allocable regis- | ||
| 4033 | ter that is clobbered by function calls. It may be allocated | ||
| 4034 | for temporaries or variables that do not live across a call. | ||
| 4035 | Functions compiled this way will not save and restore the | ||
| 4036 | register ''reg''. | ||
| 4037 | |||
| 4038 | |||
| 4039 | Use of this flag for a register that has a fixed pervasive | ||
| 4040 | role in the machine's execution model, such as the stack | ||
| 4041 | pointer or frame pointer, will produce disastrous | ||
| 4042 | results. | ||
| 4043 | |||
| 4044 | |||
| 4045 | This flag does not have a negative form, because it | ||
| 4046 | specifies a three-way choice. | ||
| 4047 | |||
| 4048 | |||
| 4049 | __-fcall-saved-__''reg'' | ||
| 4050 | |||
| 4051 | |||
| 4052 | Treat the register named ''reg'' as an allocable regis- | ||
| 4053 | ter saved by functions. It may be allocated even for | ||
| 4054 | temporaries or variables that live across a call. Functions | ||
| 4055 | compiled this way will save and restore the register | ||
| 4056 | ''reg'' if they use it. | ||
| 4057 | |||
| 4058 | |||
| 4059 | Use of this flag for a register that has a fixed pervasive | ||
| 4060 | role in the machine's execution model, such as the stack | ||
| 4061 | pointer or frame pointer, will produce disastrous | ||
| 4062 | results. | ||
| 4063 | |||
| 4064 | |||
| 4065 | A different sort of disaster will result from the use of | ||
| 4066 | this flag for a register in which function values may be | ||
| 4067 | returned. | ||
| 4068 | |||
| 4069 | |||
| 4070 | This flag does not have a negative form, because it | ||
| 4071 | specifies a three-way choice. | ||
| 4072 | !!PRAGMAS | ||
| 4073 | |||
| 4074 | |||
| 4075 | Two `__#pragma__' directives are supported for GNU C++, | ||
| 4076 | to permit using the same header file for two purposes: as a | ||
| 4077 | definition of interfaces to a given object class, and as the | ||
| 4078 | full definition of the contents of that object | ||
| 4079 | class. | ||
| 4080 | |||
| 4081 | |||
| 4082 | __#pragma interface__ | ||
| 4083 | |||
| 4084 | |||
| 4085 | (C++ only.) Use this directive in header files that define | ||
| 4086 | object classes, to save space in most of the object files | ||
| 4087 | that use those classes. Normally, local copies of certain | ||
| 4088 | information (backup copies of inline member functions, | ||
| 4089 | debugging information, and the internal tables that | ||
| 4090 | implement virtual functions) must be kept in each object | ||
| 4091 | file that includes class definitions. You can use this | ||
| 4092 | pragma to avoid such duplication. When a header file | ||
| 4093 | containing `__#pragma interface__' is included in a | ||
| 4094 | compilation, this auxiliary information will not be | ||
| 4095 | generated (unless the main input source file itself uses | ||
| 4096 | `__#pragma implementation__'). Instead, the object files | ||
| 4097 | will contain references to be resolved at link | ||
| 4098 | time. | ||
| 4099 | |||
| 4100 | |||
| 4101 | __#pragma implementation__ | ||
| 4102 | |||
| 4103 | |||
| 4104 | __#pragma implementation | ||
| 4105 | __''objects''__.h__ | ||
| 4106 | |||
| 4107 | |||
| 4108 | (C++ only.) Use this pragma in a main input file, when you | ||
| 4109 | want full output from included header files to be generated | ||
| 4110 | (and made globally visible). The included header file, in | ||
| 4111 | turn, should use `__#pragma interface__'. Backup copies | ||
| 4112 | of inline member functions, debugging information, and the | ||
| 4113 | internal tables used to implement virtual functions are | ||
| 4114 | all generated in implementation files. | ||
| 4115 | |||
| 4116 | |||
| 4117 | If you use `__#pragma implementation__' with no argu- | ||
| 4118 | ment, it applies to an include file with the same basename | ||
| 4119 | as your source file; for example, in `__allclass.cc__', | ||
| 4120 | `__#pragma implementation__' by itself is equivalent to | ||
| 4121 | `__#pragma implementation __'. | ||
| 4122 | Use the string argument if you want a single implementation | ||
| 4123 | file to include code from multiple header | ||
| 4124 | files. | ||
| 4125 | |||
| 4126 | |||
| 4127 | There is no way to split up the contents of a single | ||
| 4128 | header file into multiple implementation files. | ||
| 4129 | !!FILES | ||
| 4130 | |||
| 4131 | |||
| 4132 | file.c C source file | ||
| 4133 | file.h C header (preprocessor) file | ||
| 4134 | file.i preprocessed C source file | ||
| 4135 | file.C C++ source file | ||
| 4136 | file.cc C++ source file | ||
| 4137 | file.cxx C++ source file | ||
| 4138 | file.m Objective-C source file | ||
| 4139 | file.s assembly language file | ||
| 4140 | file.o object file | ||
| 4141 | a.out link edited output | ||
| 4142 | ''TMPDIR''/cc temporary files | ||
| 4143 | ''LIBDIR''/cpp preprocessor | ||
| 4144 | ''LIBDIR''/cc1 compiler for C | ||
| 4145 | ''LIBDIR''/cc1plus compiler for C++ | ||
| 4146 | ''LIBDIR''/collect linker front end needed on some machines | ||
| 4147 | ''LIBDIR''/libgcc.a GCC subroutine library | ||
| 4148 | /lib/crt[[01n].o start-up routine | ||
| 4149 | ''LIBDIR''/ccrt0 additional start-up routine for C++ | ||
| 4150 | /lib/libc.a standard C library, see | ||
| 4151 | intro(3) | ||
| 4152 | /usr/include standard directory for __#include__ files | ||
| 4153 | ''LIBDIR''/include standard gcc directory for __#include__ files | ||
| 4154 | ''LIBDIR''/g++-include additional g++ directory for __#include | ||
| 4155 | __''LIBDIR'' is usually __/usr/local/lib/__''machine''/''version''.'' | ||
| 4156 | TMPDIR'' comes from the environment variable __TMPDIR__ (default __/usr/tmp__ if available, else __/tmp__). | ||
| 4157 | !!EXIT STATUS | ||
| 4158 | |||
| 4159 | |||
| 4160 | Normally the exit status is 0, if compilation or link edit | ||
| 4161 | are successful, and nonzero else. The option __-Werror__ | ||
| 4162 | treats each warning as an error. | ||
| 4163 | !!SEE ALSO | ||
| 4164 | |||
| 4165 | |||
| 4166 | cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1). | ||
| 4167 | `__gcc__', `__cpp__', `__as__', `__ld__', and | ||
| 4168 | `__gdb__' entries in __info__.'' | ||
| 4169 | Using and Porting GNU CC (for version 2.0)'', Richard M. | ||
| 4170 | Stallman; ''The C Preprocessor'', Richard M. Stallman; | ||
| 4171 | ''Debugging with GDB: the GNU Source-Level Debugger'', | ||
| 4172 | Richard M. Stallman and Roland H. Pesch; ''Using as: the | ||
| 4173 | GNU Assembler'', Dean Elsner, Jay Fenlason | ||
| 4174 | ''ld: the GNU linker'', Steve Chamberlain and Roland | ||
| 4175 | Pesch. | ||
| 4176 | !!BUGS | ||
| 4177 | |||
| 4178 | |||
| 4179 | For instructions on reporting bugs, see the GCC | ||
| 4180 | manual. | ||
| 4181 | !!COPYING | ||
| 4182 | |||
| 4183 | |||
| 4184 | Copyright 1991, 1992, 1993 Free Software Foundation, | ||
| 4185 | Inc. | ||
| 4186 | |||
| 4187 | |||
| 4188 | Permission is granted to make and distribute verbatim copies | ||
| 4189 | of this manual provided the copyright notice and this | ||
| 4190 | permission notice are preserved on all copies. | ||
| 4191 | |||
| 4192 | |||
| 4193 | Permission is granted to copy and distribute modified ver- | ||
| 4194 | sions of this manual under the conditions for verbatim | ||
| 4195 | copying, provided that the entire resulting derived work is | ||
| 4196 | distributed under the terms of a permission notice identical | ||
| 4197 | to this one. | ||
| 4198 | |||
| 4199 | |||
| 4200 | Permission is granted to copy and distribute translations of | ||
| 4201 | this manual into another language, under the above con- | ||
| 4202 | ditions for modified versions, except that this permission | ||
| 4203 | notice may be included in translations approved by the Free | ||
| 4204 | Software Foundation instead of in the original En- | ||
| 4205 | glish. | ||
| 4206 | !!AUTHORS | ||
| 4207 | |||
| 4208 | |||
| 4209 | See the GNU CC Manual for the contributors to GNU | ||
| 4210 | CC. | ||
| 4211 | ---- |
lib/blame.php:177: Warning: Invalid argument supplied for foreach()