|
|
1.1.1.5 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input 1.1 root 2: file gcc.texi. 3: 4: This file documents the use and the internals of the GNU compiler. 5: 1.1.1.5 ! root 6: Published by the Free Software Foundation 675 Massachusetts Avenue ! 7: Cambridge, MA 02139 USA ! 8: ! 9: Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc. 1.1 root 10: 1.1.1.3 root 11: Permission is granted to make and distribute verbatim copies of this 12: manual provided the copyright notice and this permission notice are 13: preserved on all copies. 1.1 root 14: 15: Permission is granted to copy and distribute modified versions of 16: this manual under the conditions for verbatim copying, provided also 1.1.1.4 root 17: that the sections entitled "GNU General Public License" and "Protect 18: Your Freedom--Fight `Look And Feel'" are included exactly as in the 19: original, and provided that the entire resulting derived work is 20: distributed under the terms of a permission notice identical to this 21: one. 1.1 root 22: 23: Permission is granted to copy and distribute translations of this 24: manual into another language, under the above conditions for modified 1.1.1.3 root 25: versions, except that the sections entitled "GNU General Public 1.1.1.4 root 26: License" and "Protect Your Freedom--Fight `Look And Feel'", and this 27: permission notice, may be included in translations approved by the Free 28: Software Foundation instead of in the original English. 29: 30: 1.1.1.5 ! root 31: File: gcc.info, Node: Preprocessor Options, Next: Assembler Options, Prev: Optimize Options, Up: Invoking GCC ! 32: ! 33: Options Controlling the Preprocessor ! 34: ==================================== ! 35: ! 36: These options control the C preprocessor, which is run on each C ! 37: source file before actual compilation. ! 38: ! 39: If you use the `-E' option, nothing is done except preprocessing. ! 40: Some of these options make sense only together with `-E' because they ! 41: cause the preprocessor output to be unsuitable for actual compilation. ! 42: ! 43: `-include FILE' ! 44: Process FILE as input before processing the regular input file. ! 45: In effect, the contents of FILE are compiled first. Any `-D' and ! 46: `-U' options on the command line are always processed before ! 47: `-include FILE', regardless of the order in which they are ! 48: written. All the `-include' and `-imacros' options are processed ! 49: in the order in which they are written. ! 50: ! 51: `-imacros FILE' ! 52: Process FILE as input, discarding the resulting output, before ! 53: processing the regular input file. Because the output generated ! 54: from FILE is discarded, the only effect of `-imacros FILE' is to ! 55: make the macros defined in FILE available for use in the main ! 56: input. ! 57: ! 58: Any `-D' and `-U' options on the command line are always processed ! 59: before `-imacros FILE', regardless of the order in which they are ! 60: written. All the `-include' and `-imacros' options are processed ! 61: in the order in which they are written. ! 62: ! 63: `-idirafter DIR' ! 64: Add the directory DIR to the second include path. The directories ! 65: on the second include path are searched when a header file is not ! 66: found in any of the directories in the main include path (the one ! 67: that `-I' adds to). ! 68: ! 69: `-iprefix PREFIX' ! 70: Specify PREFIX as the prefix for subsequent `-iwithprefix' options. ! 71: ! 72: `-iwithprefix DIR' ! 73: Add a directory to the second include path. The directory's name ! 74: is made by concatenating PREFIX and DIR, where PREFIX was ! 75: specified previously with `-iprefix'. ! 76: ! 77: `-nostdinc' ! 78: Do not search the standard system directories for header files. ! 79: Only the directories you have specified with `-I' options (and the ! 80: current directory, if appropriate) are searched. *Note Directory ! 81: Options::, for information on `-I'. ! 82: ! 83: By using both `-nostdinc' and `-I-', you can limit the include-file ! 84: search path to only those directories you specify explicitly. ! 85: ! 86: `-undef' ! 87: Do not predefine any nonstandard macros. (Including architecture ! 88: flags). ! 89: ! 90: `-E' ! 91: Run only the C preprocessor. Preprocess all the C source files ! 92: specified and output the results to standard output or to the ! 93: specified output file. ! 94: ! 95: `-C' ! 96: Tell the preprocessor not to discard comments. Used with the `-E' ! 97: option. ! 98: ! 99: `-P' ! 100: Tell the preprocessor not to generate `#line' commands. Used with ! 101: the `-E' option. ! 102: ! 103: `-M' ! 104: Tell the preprocessor to output a rule suitable for `make' ! 105: describing the dependencies of each object file. For each source ! 106: file, the preprocessor outputs one `make'-rule whose target is the ! 107: object file name for that source file and whose dependencies are ! 108: all the `#include' header files it uses. This rule may be a ! 109: single line or may be continued with `\'-newline if it is long. ! 110: The list of rules is printed on standard output instead of the ! 111: preprocessed C program. ! 112: ! 113: `-M' implies `-E'. ! 114: ! 115: Another way to specify output of a `make' rule is by setting the ! 116: environment variable `DEPENDENCIES_OUTPUT' (*note Environment ! 117: Variables::.). ! 118: ! 119: `-MM' ! 120: Like `-M' but the output mentions only the user header files ! 121: included with `#include "FILE"'. System header files included ! 122: with `#include <FILE>' are omitted. ! 123: ! 124: `-MD' ! 125: Like `-M' but the dependency information is written to files with ! 126: names made by replacing `.o' with `.d' at the end of the output ! 127: file names. This is in addition to compiling the input files as ! 128: specified--`-MD' does not inhibit ordinary compilation the way ! 129: `-M' does. ! 130: ! 131: The Mach utility `md' can be used to merge the `.d' files into a ! 132: single dependency file suitable for using with the `make' command. ! 133: ! 134: `-MMD' ! 135: Like `-MD' except mention only user header files, not system ! 136: header files. ! 137: ! 138: `-H' ! 139: Print the name of each header file used, in addition to other ! 140: normal activities. ! 141: ! 142: `-AQUESTION(ANSWER)' ! 143: Assert the answer ANSWER for QUESTION, in case it is tested with a ! 144: preprocessor conditional such as `#if #QUESTION(ANSWER)'. `-A-' ! 145: disables the standard assertions that normally describe the target ! 146: machine. ! 147: ! 148: `-DMACRO' ! 149: Define macro MACRO with the string `1' as its definition. ! 150: ! 151: `-DMACRO=DEFN' ! 152: Define macro MACRO as DEFN. All instances of `-D' on the command ! 153: line are processed before any `-U' options. ! 154: ! 155: `-UMACRO' ! 156: Undefine macro MACRO. `-U' options are evaluated after all `-D' ! 157: options, but before any `-include' and `-imacros' options. ! 158: ! 159: `-dM' ! 160: Tell the preprocessor to output only a list of the macro ! 161: definitions that are in effect at the end of preprocessing. Used ! 162: with the `-E' option. ! 163: ! 164: `-dD' ! 165: Tell the preprocessing to pass all macro definitions into the ! 166: output, in their proper sequence in the rest of the output. ! 167: ! 168: `-dN' ! 169: Like `-dD' except that the macro arguments and contents are ! 170: omitted. Only `#define NAME' is included in the output. ! 171: ! 172: `-trigraphs' ! 173: Support ANSI C trigraphs. You don't want to know about this ! 174: brain-damage. The `-ansi' option also has this effect. ! 175: ! 176: ! 177: File: gcc.info, Node: Assembler Options, Next: Link Options, Prev: Preprocessor Options, Up: Invoking GCC ! 178: ! 179: Passing Options to the Assembler ! 180: ================================ ! 181: ! 182: `-Wa,OPTION' ! 183: Pass OPTION as an option to the assembler. If OPTION contains ! 184: commas, it is split into multiple options at the commas. ! 185: ! 186: 1.1.1.4 root 187: File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invoking GCC 188: 189: Options for Linking 190: =================== 191: 192: These options come into play when the compiler links object files 193: into an executable output file. They are meaningless if the compiler is 194: not doing a link step. 195: 196: `OBJECT-FILE-NAME' 197: A file name that does not end in a special recognized suffix is 198: considered to name an object file or library. (Object files are 199: distinguished from libraries by the linker according to the file 200: contents.) If linking is done, these object files are used as 201: input to the linker. 202: 203: `-c' 204: `-S' 205: `-E' 206: If any of these options is used, then the linker is not run, and 207: object file names should not be used as arguments. *Note Overall 208: Options::. 209: 210: `-lLIBRARY' 211: Search the library named LIBRARY when linking. 212: 213: It makes a difference where in the command you write this option; 214: the linker searches processes libraries and object files in the 215: order they are specified. Thus, `foo.o -lz bar.o' searches 216: library `z' after file `foo.o' but before `bar.o'. If `bar.o' 217: refers to functions in `z', those functions may not be loaded. 218: 219: The linker searches a standard list of directories for the library, 220: which is actually a file named `libLIBRARY.a'. The linker then 221: uses this file as if it had been specified precisely by name. 222: 223: The directories searched include several standard system 224: directories plus any that you specify with `-L'. 225: 226: Normally the files found this way are library files--archive files 227: whose members are object files. The linker handles an archive 228: file by scanning through it for members which define symbols that 229: have so far been referenced but not defined. But if the file that 230: is found is an ordinary object file, it is linked in the usual 231: fashion. The only difference between using an `-l' option and 232: specifying a file name is that `-l' surrounds LIBRARY with `lib' 233: and `.a' and searches several directories. 234: 235: `-lobjc' 1.1.1.5 ! root 236: You need this special case of the `-l' option in order to link an ! 237: Objective C program. ! 238: ! 239: `-nostartfiles' ! 240: Do not use the standard system startup files when linking. The ! 241: standard libraries are used normally. 1.1.1.4 root 242: 243: `-nostdlib' 244: Don't use the standard system libraries and startup files when 1.1.1.5 ! root 245: linking. Only the files you specify will be passed to the linker. 1.1.1.4 root 246: 247: `-static' 248: On systems that support dynamic linking, this prevents linking 249: with the shared libraries. On other systems, this option has no 250: effect. 251: 252: `-shared' 253: Produce a shared object which can then be linked with other 254: objects to form an executable. Only a few systems support this 255: option. 256: 257: `-symbolic' 1.1.1.5 ! root 258: Bind references to global symbols when building a shared object. 1.1.1.4 root 259: Warn about any unresolved references (unless overridden by the 260: link editor option `-Xlinker -z -Xlinker defs'). Only a few 261: systems support this option. 262: 263: `-Xlinker OPTION' 264: Pass OPTION as an option to the linker. You can use this to 265: supply system-specific linker options which GNU CC does not know 266: how to recognize. 267: 268: If you want to pass an option that takes an argument, you must use 269: `-Xlinker' twice, once for the option and once for the argument. 270: For example, to pass `-assert definitions', you must write 271: `-Xlinker -assert -Xlinker definitions'. It does not work to write 272: `-Xlinker "-assert definitions"', because this passes the entire 273: string as a single argument, which is not what the linker expects. 274: 275: `-Wl,OPTION' 276: Pass OPTION as an option to the linker. If OPTION contains 277: commas, it is split into multiple options at the commas. 278: 279: `-u SYMBOL' 280: Pretend the symbol SYMBOL is undefined, to force linking of 281: library modules to define it. You can use `-u' multiple times with 282: different symbols to force loading of additional library modules. 283: 284: 285: File: gcc.info, Node: Directory Options, Next: Target Options, Prev: Link Options, Up: Invoking GCC 286: 287: Options for Directory Search 288: ============================ 289: 290: These options specify directories to search for header files, for 291: libraries and for parts of the compiler: 292: 293: `-IDIR' 294: Append directory DIR to the list of directories searched for 295: include files. 296: 297: `-I-' 298: Any directories you specify with `-I' options before the `-I-' 299: option are searched only for the case of `#include "FILE"'; they 300: are not searched for `#include <FILE>'. 301: 302: If additional directories are specified with `-I' options after 303: the `-I-', these directories are searched for all `#include' 304: directives. (Ordinarily *all* `-I' directories are used this way.) 305: 306: In addition, the `-I-' option inhibits the use of the current 307: directory (where the current input file came from) as the first 308: search directory for `#include "FILE"'. There is no way to 309: override this effect of `-I-'. With `-I.' you can specify 310: searching the directory which was current when the compiler was 311: invoked. That is not exactly the same as what the preprocessor 312: does by default, but it is often satisfactory. 313: 314: `-I-' does not inhibit the use of the standard system directories 315: for header files. Thus, `-I-' and `-nostdinc' are independent. 316: 317: `-LDIR' 318: Add directory DIR to the list of directories to be searched for 319: `-l'. 320: 321: `-BPREFIX' 322: This option specifies where to find the executables, libraries and 323: data files of the compiler itself. 324: 325: The compiler driver program runs one or more of the subprograms 326: `cpp', `cc1', `as' and `ld'. It tries PREFIX as a prefix for each 327: program it tries to run, both with and without `MACHINE/VERSION/' 328: (*note Target Options::.). 329: 330: For each subprogram to be run, the compiler driver first tries the 331: `-B' prefix, if any. If that name is not found, or if `-B' was 332: not specified, the driver tries two standard prefixes, which are 333: `/usr/lib/gcc/' and `/usr/local/lib/gcc-lib/'. If neither of 334: those results in a file name that is found, the unmodified program 335: name is searched for using the directories specified in your 336: `PATH' environment variable. 337: 338: `-B' prefixes that effectively specify directory names also apply 339: to libraries in the linker, because the compiler translates these 340: options into `-L' options for the linker. 341: 342: The run-time support file `libgcc.a' can also be searched for using 343: the `-B' prefix, if needed. If it is not found there, the two 344: standard prefixes above are tried, and that is all. The file is 345: left out of the link if it is not found by those means. 346: 347: Another way to specify a prefix much like the `-B' prefix is to use 348: the environment variable `GCC_EXEC_PREFIX'. *Note Environment 349: Variables::. 350: 351: 352: File: gcc.info, Node: Target Options, Next: Submodel Options, Prev: Directory Options, Up: Invoking GCC 353: 354: Specifying Target Machine and Compiler Version 355: ============================================== 356: 357: By default, GNU CC compiles code for the same type of machine that 358: you are using. However, it can also be installed as a cross-compiler, 359: to compile for some other type of machine. In fact, several different 360: configurations of GNU CC, for different target machines, can be 361: installed side by side. Then you specify which one to use with the 362: `-b' option. 363: 364: In addition, older and newer versions of GNU CC can be installed side 365: by side. One of them (probably the newest) will be the default, but 366: you may sometimes wish to use another. 367: 368: `-b MACHINE' 369: The argument MACHINE specifies the target machine for compilation. 370: This is useful when you have installed GNU CC as a cross-compiler. 371: 372: The value to use for MACHINE is the same as was specified as the 373: machine type when configuring GNU CC as a cross-compiler. For 374: example, if a cross-compiler was configured with `configure 375: i386v', meaning to compile for an 80386 running System V, then you 376: would specify `-b i386v' to run that cross compiler. 377: 378: When you do not specify `-b', it normally means to compile for the 379: same type of machine that you are using. 380: 381: `-V VERSION' 382: The argument VERSION specifies which version of GNU CC to run. 383: This is useful when multiple versions are installed. For example, 384: VERSION might be `2.0', meaning to run GNU CC version 2.0. 385: 386: The default version, when you do not specify `-V', is controlled 387: by the way GNU CC is installed. Normally, it will be a version 388: that is recommended for general use. 389: 390: The `-b' and `-V' options actually work by controlling part of the 391: file name used for the executable files and libraries used for 392: compilation. A given version of GNU CC, for a given target machine, is 393: normally kept in the directory `/usr/local/lib/gcc-lib/MACHINE/VERSION'. 394: 1.1.1.5 ! root 395: Thus, sites can customize the effect of `-b' or `-V' either by ! 396: changing the names of these directories or adding alternate names (or ! 397: symbolic links). If in directory `/usr/local/lib/gcc-lib/' the file ! 398: `80386' is a link to the file `i386v', then `-b 80386' becomes an alias ! 399: for `-b i386v'. 1.1.1.4 root 400: 401: In one respect, the `-b' or `-V' do not completely change to a 402: different compiler: the top-level driver program `gcc' that you 403: originally invoked continues to run and invoke the other executables 404: (preprocessor, compiler per se, assembler and linker) that do the real 405: work. However, since no real work is done in the driver program, it 406: usually does not matter that the driver program in use is not the one 407: for the specified target and version. 408: 409: The only way that the driver program depends on the target machine is 410: in the parsing and handling of special machine-specific options. 411: However, this is controlled by a file which is found, along with the 412: other executables, in the directory for the specified version and 413: target machine. As a result, a single installed driver program adapts 414: to any specified target machine and compiler version. 415: 416: The driver program executable does control one significant thing, 417: however: the default version and target machine. Therefore, you can 418: install different instances of the driver program, compiled for 419: different targets or versions, under different names. 420: 421: For example, if the driver for version 2.0 is installed as `ogcc' 422: and that for version 2.1 is installed as `gcc', then the command `gcc' 1.1.1.5 ! root 423: will use version 2.1 by default, while `ogcc' will use 2.0 by default. 1.1.1.4 root 424: However, you can choose either version with either command with the 425: `-V' option. 426: 427: 428: File: gcc.info, Node: Submodel Options, Next: Code Gen Options, Prev: Target Options, Up: Invoking GCC 429: 1.1.1.5 ! root 430: Hardware Models and Configurations ! 431: ================================== 1.1.1.4 root 432: 433: Earlier we discussed the standard option `-b' which chooses among 434: different installed compilers for completely different target machines, 435: such as Vax vs. 68000 vs. 80386. 436: 437: In addition, each of these target machine types can have its own 438: special options, starting with `-m', to choose among various hardware 439: models or configurations--for example, 68010 vs 68020, floating 440: coprocessor or none. A single installed version of the compiler can 441: compile for any model or configuration, according to the options 442: specified. 443: 444: Some configurations of the compiler also support additional special 445: options, usually for compatibility with other compilers on the same 446: platform. 447: 448: These options are defined by the macro `TARGET_SWITCHES' in the 449: machine description. The default for the options is also defined by 450: that macro, which enables you to change the defaults. 451: 452: * Menu: 453: 454: * M680x0 Options:: 455: * VAX Options:: 456: * SPARC Options:: 457: * Convex Options:: 458: * AMD29K Options:: 459: * M88K Options:: 460: * RS/6000 Options:: 461: * RT Options:: 462: * MIPS Options:: 463: * i386 Options:: 464: * HPPA Options:: 465: * Intel 960 Options:: 466: * DEC Alpha Options:: 467: * System V Options:: 468: 469: 470: File: gcc.info, Node: M680x0 Options, Next: VAX Options, Up: Submodel Options 471: 472: M680x0 Options 473: -------------- 474: 475: These are the `-m' options defined for the 68000 series. The default 476: values for these options depends on which style of 68000 was selected 477: when the compiler was configured; the defaults for the most common 478: choices are given below. 479: 480: `-m68000' 481: `-mc68000' 482: Generate output for a 68000. This is the default when the 483: compiler is configured for 68000-based systems. 484: 485: `-m68020' 486: `-mc68020' 487: Generate output for a 68020. This is the default when the 488: compiler is configured for 68020-based systems. 489: 490: `-m68881' 491: Generate output containing 68881 instructions for floating point. 492: This is the default for most 68020 systems unless `-nfp' was 493: specified when the compiler was configured. 494: 495: `-m68030' 496: Generate output for a 68030. This is the default when the 497: compiler is configured for 68030-based systems. 498: 499: `-m68040' 500: Generate output for a 68040. This is the default when the 501: compiler is configured for 68040-based systems. 502: 503: `-m68020-40' 504: Generate output for a 68040, without using any of the new 1.1.1.5 ! root 505: instructions. This results in code which can run relatively 1.1.1.4 root 506: efficiently on either a 68020/68881 or a 68030 or a 68040. 507: 508: `-mfpa' 509: Generate output containing Sun FPA instructions for floating point. 510: 511: `-msoft-float' 512: Generate output containing library calls for floating point. 513: *Warning:* the requisite libraries are not part of GNU CC. 514: Normally the facilities of the machine's usual C compiler are 515: used, but this can't be done directly in cross-compilation. You 516: must make your own arrangements to provide suitable library 517: functions for cross-compilation. 518: 519: `-mshort' 520: Consider type `int' to be 16 bits wide, like `short int'. 521: 522: `-mnobitfield' 1.1.1.5 ! root 523: Do not use the bit-field instructions. The `-m68000' option ! 524: implies `-mnobitfield'. 1.1.1.4 root 525: 526: `-mbitfield' 1.1.1.5 ! root 527: Do use the bit-field instructions. The `-m68020' option implies ! 528: `-mbitfield'. This is the default if you use a configuration ! 529: designed for a 68020. 1.1.1.4 root 530: 531: `-mrtd' 532: Use a different function-calling convention, in which functions 533: that take a fixed number of arguments return with the `rtd' 534: instruction, which pops their arguments while returning. This 535: saves one instruction in the caller since there is no need to pop 536: the arguments there. 537: 538: This calling convention is incompatible with the one normally used 539: on Unix, so you cannot use it if you need to call libraries 540: compiled with the Unix compiler. 541: 542: Also, you must provide function prototypes for all functions that 543: take variable numbers of arguments (including `printf'); otherwise 544: incorrect code will be generated for calls to those functions. 545: 546: In addition, seriously incorrect code will result if you call a 547: function with too many arguments. (Normally, extra arguments are 548: harmlessly ignored.) 549: 550: The `rtd' instruction is supported by the 68010 and 68020 551: processors, but not by the 68000. 552: 553: 554: File: gcc.info, Node: VAX Options, Next: SPARC Options, Prev: M680x0 Options, Up: Submodel Options 555: 556: VAX Options 557: ----------- 558: 559: These `-m' options are defined for the Vax: 560: 561: `-munix' 562: Do not output certain jump instructions (`aobleq' and so on) that 563: the Unix assembler for the Vax cannot handle across long ranges. 564: 565: `-mgnu' 566: Do output those jump instructions, on the assumption that you will 567: assemble with the GNU assembler. 568: 569: `-mg' 570: Output code for g-format floating point numbers instead of 571: d-format. 572: 573: 1.1.1.5 ! root 574: File: gcc.info, Node: SPARC Options, Next: Convex Options, Prev: VAX Options, Up: Submodel Options 1.1.1.4 root 575: 576: SPARC Options 577: ------------- 578: 1.1.1.5 ! root 579: These `-m' switches are supported on the SPARC: 1.1.1.4 root 580: 1.1.1.5 ! root 581: `-mfpu' ! 582: `-mhard-float' ! 583: Generate output containing floating point instructions. This is ! 584: the default. ! 585: ! 586: `-mno-fpu' ! 587: `-msoft-float' ! 588: Generate output containing library calls for floating point. ! 589: *Warning:* there is no GNU floating-point library for SPARC. ! 590: Normally the facilities of the machine's usual C compiler are ! 591: used, but this cannot be done directly in cross-compilation. You ! 592: must make your own arrangements to provide suitable library ! 593: functions for cross-compilation. ! 594: ! 595: `-msoft-float' changes the calling convention in the output file; ! 596: therefore, it is only useful if you compile *all* of a program with ! 597: this option. In particular, you need to compile `libgcc.a', the ! 598: library that comes with GNU CC, with `-msoft-float' in order for ! 599: this to work. 1.1.1.4 root 600: 601: `-mno-epilogue' 1.1.1.5 ! root 602: `-mepilogue' ! 603: With `-mepilogue' (the default), the compiler always emits code for ! 604: function exit at the end of each function. Any function exit in ! 605: the middle of the function (such as a return statement in C) will ! 606: generate a jump to the exit code at the end of the function. ! 607: ! 608: With `-mno-epilogue', the compiler tries to emit exit code inline ! 609: at every function exit. ! 610: ! 611: `-mv8' ! 612: `-msparclite' ! 613: These two options select variations on the SPARC architecture. ! 614: ! 615: By default (unless specifically configured for the Fujitsu ! 616: SPARClite), GCC generates code for the v7 variant of the SPARC ! 617: architecture. ! 618: ! 619: `-mv8' will give you SPARC v8 code. The only difference from v7 ! 620: code is that the compiler emits the integer multiply and integer ! 621: divide instructions which exist in SPARC v8 but not in SPARC v7. ! 622: ! 623: `-msparclite' will give you SPARClite code. This adds the integer ! 624: multiply, integer divide step and scan (`ffs') instructions which ! 625: exist in SPARClite but not in SPARC v7. 1.1.1.4 root 626: 627: 628: File: gcc.info, Node: Convex Options, Next: AMD29K Options, Prev: SPARC Options, Up: Submodel Options 629: 630: Convex Options 631: -------------- 632: 1.1.1.5 ! root 633: These `-m' options are defined for Convex: 1.1.1.4 root 634: 635: `-mc1' 1.1.1.5 ! root 636: Generate output for C1. The code will run on any Convex machine. ! 637: The preprocessor symbol `__convex__c1__' is defined. 1.1.1.4 root 638: 639: `-mc2' 1.1.1.5 ! root 640: Generate output for C2. Uses instructions not available on C1. ! 641: Scheduling and other optimizations are chosen for max performance ! 642: on C2. The preprocessor symbol `__convex_c2__' is defined. ! 643: ! 644: `-mc32' ! 645: Generate output for C32xx. Uses instructions not available on C1. ! 646: Scheduling and other optimizations are chosen for max performance ! 647: on C32. The preprocessor symbol `__convex_c32__' is defined. ! 648: ! 649: `-mc34' ! 650: Generate output for C34xx. Uses instructions not available on C1. ! 651: Scheduling and other optimizations are chosen for max performance ! 652: on C34. The preprocessor symbol `__convex_c34__' is defined. ! 653: ! 654: `-mc38' ! 655: Generate output for C38xx. Uses instructions not available on C1. ! 656: Scheduling and other optimizations are chosen for max performance ! 657: on C38. The preprocessor symbol `__convex_c38__' is defined. 1.1.1.4 root 658: 659: `-margcount' 660: Generate code which puts an argument count in the word preceding 1.1.1.5 ! root 661: each argument list. This is compatible with regular CC, and a few ! 662: programs may need the argument count word. GDB and other ! 663: source-level debuggers do not need it; this info is in the symbol ! 664: table. 1.1.1.4 root 665: 666: `-mnoargcount' 1.1.1.5 ! root 667: Omit the argument count word. This is the default. ! 668: ! 669: `-mvolatile-cache' ! 670: Allow volatile references to be cached. This is the default. ! 671: ! 672: `-mvolatile-nocache' ! 673: Volatile references bypass the data cache, going all the way to ! 674: memory. This is only needed for multi-processor code that does ! 675: not use standard synchronization instructions. Making ! 676: non-volatile references to volatile locations will not necessarily ! 677: work. ! 678: ! 679: `-mlong32' ! 680: Type long is 32 bits, the same as type int. This is the default. ! 681: ! 682: `-mlong64' ! 683: Type long is 64 bits, the same as type long long. This option is ! 684: useless, because no library support exists for it. 1.1.1.4 root 685: 686: 687: File: gcc.info, Node: AMD29K Options, Next: M88K Options, Prev: Convex Options, Up: Submodel Options 688: 689: AMD29K Options 690: -------------- 691: 692: These `-m' options are defined for the AMD Am29000: 693: 694: `-mdw' 695: Generate code that assumes the `DW' bit is set, i.e., that byte and 696: halfword operations are directly supported by the hardware. This 697: is the default. 698: 699: `-mnodw' 700: Generate code that assumes the `DW' bit is not set. 701: 702: `-mbw' 703: Generate code that assumes the system supports byte and halfword 704: write operations. This is the default. 705: 706: `-mnbw' 707: Generate code that assumes the systems does not support byte and 708: halfword write operations. `-mnbw' implies `-mnodw'. 709: 710: `-msmall' 711: Use a small memory model that assumes that all function addresses 712: are either within a single 256 KB segment or at an absolute 1.1.1.5 ! root 713: address of less than 256k. This allows the `call' instruction to 1.1.1.4 root 714: be used instead of a `const', `consth', `calli' sequence. 715: 716: `-mlarge' 717: Do not assume that the `call' instruction can be used; this is the 718: default. 719: 720: `-m29050' 721: Generate code for the Am29050. 722: 723: `-m29000' 724: Generate code for the Am29000. This is the default. 725: 726: `-mkernel-registers' 1.1.1.5 ! root 727: Generate references to registers `gr64-gr95' instead of to ! 728: registers `gr96-gr127'. This option can be used when compiling ! 729: kernel code that wants a set of global registers disjoint from ! 730: that used by user-mode code. 1.1.1.4 root 731: 732: Note that when this option is used, register names in `-f' flags 733: must use the normal, user-mode, names. 734: 735: `-muser-registers' 736: Use the normal set of global registers, `gr96-gr127'. This is the 737: default. 738: 739: `-mstack-check' 740: Insert a call to `__msp_check' after each stack adjustment. This 741: is often used for kernel code. 1.1 root 742: 743: 744: File: gcc.info, Node: M88K Options, Next: RS/6000 Options, Prev: AMD29K Options, Up: Submodel Options 745: 746: M88K Options 747: ------------ 748: 1.1.1.5 ! root 749: These `-m' options are defined for Motorola 88k architectures: 1.1 root 750: 751: `-m88000' 752: Generate code that works well on both the m88100 and the m88110. 753: 754: `-m88100' 1.1.1.4 root 755: Generate code that works best for the m88100, but that also runs 756: on the m88110. 1.1 root 757: 758: `-m88110' 759: Generate code that works best for the m88110, and may not run on 760: the m88100. 761: 1.1.1.5 ! root 762: `-mbig-pic' ! 763: Obsolete option to be removed from the next revision. Use `-fPIC'. ! 764: 1.1 root 765: `-midentify-revision' 766: Include an `ident' directive in the assembler output recording the 767: source file name, compiler name and version, timestamp, and 768: compilation flags used. 769: 770: `-mno-underscores' 1.1.1.3 root 771: In assembler output, emit symbol names without adding an underscore 772: character at the beginning of each name. The default is to use an 773: underscore as prefix on each name. 1.1 root 774: 775: `-mocs-debug-info' 776: `-mno-ocs-debug-info' 777: Include (or omit) additional debugging information (about 778: registers used in each stack frame) as specified in the 88open 779: Object Compatibility Standard, "OCS". This extra information 780: allows debugging of code that has had the frame pointer 781: eliminated. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is 782: to include this information; other 88k configurations omit this 783: information by default. 784: 785: `-mocs-frame-position' 786: When emitting COFF debugging information for automatic variables 787: and parameters stored on the stack, use the offset from the 788: canonical frame address, which is the stack pointer (register 31) 789: on entry to the function. The DG/UX, SVr4, Delta88 SVr3.2, and 790: BCS configurations use `-mocs-frame-position'; other 88k 791: configurations have the default `-mno-ocs-frame-position'. 792: 793: `-mno-ocs-frame-position' 794: When emitting COFF debugging information for automatic variables 795: and parameters stored on the stack, use the offset from the frame 796: pointer register (register 30). When this option is in effect, 797: the frame pointer is not eliminated when debugging information is 798: selected by the -g switch. 799: 800: `-moptimize-arg-area' 801: `-mno-optimize-arg-area' 1.1.1.5 ! root 802: Control how function arguments are stored in stack frames. ! 803: `-moptimize-arg-area' saves space by optimizing them, but this ! 804: conflicts with the 88open specifications. The opposite ! 805: alternative, `-mno-optimize-arg-area', agrees with 88open 1.1.1.4 root 806: standards. By default GNU CC does not optimize the argument area. 1.1 root 807: 808: `-mshort-data-NUM' 809: Generate smaller data references by making them relative to `r0', 810: which allows loading a value using a single instruction (rather 811: than the usual two). You control which data references are 812: affected by specifying NUM with this option. For example, if you 813: specify `-mshort-data-512', then the data references affected are 1.1.1.3 root 814: those involving displacements of less than 512 bytes. 1.1.1.5 ! root 815: `-mshort-data-NUM' is not effective for NUM greater than 64k. 1.1 root 816: 1.1.1.4 root 817: `-mserialize-volatile' 818: `-mno-serialize-volatile' 1.1.1.5 ! root 819: Do, or do not, generate code to guarantee sequential consistency of 1.1.1.4 root 820: volatile memory references. 821: 822: GNU CC always guarantees consistency by default, for the preferred 823: processor submodel. How this is done depends on the submodel. 824: 825: The m88100 processor does not reorder memory references and so 826: always provides sequential consistency. If you use `-m88100', GNU 827: CC does not generate any special instructions for sequential 828: consistency. 829: 830: The order of memory references made by the m88110 processor does 831: not always match the order of the instructions requesting those 1.1.1.5 ! root 832: references. In particular, a load instruction may execute before ! 833: a preceding store instruction. Such reordering violates ! 834: sequential consistency of volatile memory references, when there ! 835: are multiple processors. When you use `-m88000' or `-m88110', GNU ! 836: CC generates special instructions when appropriate, to force ! 837: execution in the proper order. 1.1.1.4 root 838: 839: The extra code generated to guarantee consistency may affect the 840: performance of your application. If you know that you can safely 1.1.1.5 ! root 841: forgo this guarantee, you may use the option ! 842: `-mno-serialize-volatile'. 1.1.1.4 root 843: 1.1.1.5 ! root 844: If you use the `-m88100' option but require sequential consistency ! 845: when running on the m88110 processor, you should use 1.1.1.4 root 846: `-mserialize-volatile'. 847: 1.1 root 848: `-msvr4' 849: `-msvr3' 850: Turn on (`-msvr4') or off (`-msvr3') compiler extensions related 851: to System V release 4 (SVr4). This controls the following: 852: 853: 1. Which variant of the assembler syntax to emit (which you can 854: select independently using `-mversion-03.00'). 855: 856: 2. `-msvr4' makes the C preprocessor recognize `#pragma weak' 857: that is used on System V release 4. 858: 1.1.1.3 root 859: 3. `-msvr4' makes GNU CC issue additional declaration directives 860: used in SVr4. 1.1 root 861: 1.1.1.5 ! root 862: `-msvr3' is the default for all m88k configurations except the 1.1 root 863: SVr4 configuration. 864: 865: `-mversion-03.00' 866: In the DG/UX configuration, there are two flavors of SVr4. This 867: option modifies `-msvr4' to select whether the hybrid-COFF or 868: real-ELF flavor is used. All other configurations ignore this 869: option. 870: 871: `-mno-check-zero-division' 872: `-mcheck-zero-division' 1.1.1.5 ! root 873: Early models of the 88k architecture had problems with division by 1.1.1.3 root 874: zero; in particular, many of them didn't trap. Use these options 875: to avoid including (or to include explicitly) additional code to 876: detect division by zero and signal an exception. All GNU CC 1.1.1.5 ! root 877: configurations for the 88k use `-mcheck-zero-division' by default. 1.1 root 878: 879: `-muse-div-instruction' 880: Do not emit code to check both the divisor and dividend when doing 881: signed integer division to see if either is negative, and adjust 1.1.1.5 ! root 882: the signs so the divide is done using non-negative numbers. 1.1 root 883: Instead, rely on the operating system to calculate the correct 1.1.1.3 root 884: value when the `div' instruction traps. This results in different 885: behavior when the most negative number is divided by -1, but is 886: useful when most or all signed integer divisions are done with 887: positive numbers. 1.1 root 888: 889: `-mtrap-large-shift' 890: `-mhandle-large-shift' 891: Include code to detect bit-shifts of more than 31 bits; 892: respectively, trap such shifts or emit code to handle them 893: properly. By default GNU CC makes no special provision for large 894: bit shifts. 895: 896: `-mwarn-passed-structs' 1.1.1.3 root 897: Warn when a function passes a struct as an argument or result. 898: Structure-passing conventions have changed during the evolution of 1.1.1.5 ! root 899: the C language, and are often the source of portability problems. 1.1.1.3 root 900: By default, GNU CC issues no such warning. 1.1 root 901: 902: 903: File: gcc.info, Node: RS/6000 Options, Next: RT Options, Prev: M88K Options, Up: Submodel Options 904: 905: IBM RS/6000 Options 906: ------------------- 907: 908: Only one pair of `-m' options is defined for the IBM RS/6000: 909: 910: `-mfp-in-toc' 911: `-mno-fp-in-toc' 912: Control whether or not floating-point constants go in the Table of 913: Contents (TOC), a table of all global variable and function 1.1.1.3 root 914: addresses. By default GNU CC puts floating-point constants there; 915: if the TOC overflows, `-mno-fp-in-toc' will reduce the size of the 916: TOC, which may avoid the overflow. 1.1 root 917: 918: 919: File: gcc.info, Node: RT Options, Next: MIPS Options, Prev: RS/6000 Options, Up: Submodel Options 920: 921: IBM RT Options 922: -------------- 923: 924: These `-m' options are defined for the IBM RT PC: 925: 926: `-min-line-mul' 927: Use an in-line code sequence for integer multiplies. This is the 928: default. 929: 930: `-mcall-lib-mul' 931: Call `lmul$$' for integer multiples. 932: 933: `-mfull-fp-blocks' 934: Generate full-size floating point data blocks, including the 935: minimum amount of scratch space recommended by IBM. This is the 936: default. 937: 938: `-mminimum-fp-blocks' 1.1.1.5 ! root 939: Do not include extra scratch space in floating point data blocks. 1.1.1.3 root 940: This results in smaller code, but slower execution, since scratch 941: space must be allocated dynamically. 1.1 root 942: 943: `-mfp-arg-in-fpregs' 944: Use a calling sequence incompatible with the IBM calling 945: convention in which floating point arguments are passed in 1.1.1.5 ! root 946: floating point registers. Note that `varargs.h' and `stdargs.h' 1.1 root 947: will not work with floating point operands if this option is 948: specified. 949: 950: `-mfp-arg-in-gregs' 1.1.1.5 ! root 951: Use the normal calling convention for floating point arguments. 1.1 root 952: This is the default. 953: 954: `-mhc-struct-return' 1.1.1.3 root 955: Return structures of more than one word in memory, rather than in a 956: register. This provides compatibility with the MetaWare HighC (hc) 1.1.1.5 ! root 957: compiler. Use the option `-fpcc-struct-return' for compatibility ! 958: with the Portable C Compiler (pcc). 1.1 root 959: 960: `-mnohc-struct-return' 961: Return some structures of more than one word in registers, when 962: convenient. This is the default. For compatibility with the 1.1.1.5 ! root 963: IBM-supplied compilers, use the option `-fpcc-struct-return' or the ! 964: option `-mhc-struct-return'. 1.1 root 965: 966: 1.1.1.2 root 967: File: gcc.info, Node: MIPS Options, Next: i386 Options, Prev: RT Options, Up: Submodel Options 1.1 root 968: 969: MIPS Options 970: ------------ 971: 972: These `-m' options are defined for the MIPS family of computers: 973: 974: `-mcpu=CPU TYPE' 975: Assume the defaults for the machine type CPU TYPE when scheduling 1.1.1.2 root 976: instructions. The default CPU TYPE is `default', which picks the 1.1 root 977: longest cycles times for any of the machines, in order that the 1.1.1.3 root 978: code run at reasonable rates on all MIPS cpu's. Other choices for 979: CPU TYPE are `r2000', `r3000', `r4000', and `r6000'. While 980: picking a specific CPU TYPE will schedule things appropriately for 981: that particular chip, the compiler will not generate any code that 982: does not meet level 1 of the MIPS ISA (instruction set 983: architecture) without the `-mips2' or `-mips3' switches being used. 1.1 root 984: 985: `-mips2' 986: Issue instructions from level 2 of the MIPS ISA (branch likely, 987: square root instructions). The `-mcpu=r4000' or `-mcpu=r6000' 1.1.1.3 root 988: switch must be used in conjunction with `-mips2'. 1.1 root 989: 990: `-mips3' 991: Issue instructions from level 3 of the MIPS ISA (64 bit 1.1.1.5 ! root 992: instructions). You must use the `-mcpu=r4000' switch along with 1.1 root 993: `-mips3'. 994: 995: `-mint64' 996: `-mlong64' 997: `-mlonglong128' 998: These options don't work at present. 999: 1000: `-mmips-as' 1001: Generate code for the MIPS assembler, and invoke `mips-tfile' to 1002: add normal debug information. This is the default for all 1003: platforms except for the OSF/1 reference platform, using the 1004: OSF/rose object format. If the either of the `-gstabs' or 1005: `-gstabs+' switches are used, the `mips-tfile' program will 1006: encapsulate the stabs within MIPS ECOFF. 1007: 1008: `-mgas' 1009: Generate code for the GNU assembler. This is the default on the 1010: OSF/1 reference platform, using the OSF/rose object format. 1011: 1012: `-mrnames' 1013: `-mno-rnames' 1014: The `-mrnames' switch says to output code using the MIPS software 1015: names for the registers, instead of the hardware names (ie, A0 1.1.1.3 root 1016: instead of $4). The GNU assembler does not support the `-mrnames' 1017: switch, and the MIPS assembler will be instructed to run the MIPS 1018: C preprocessor over the source file. The `-mno-rnames' switch is 1019: default. 1.1 root 1020: 1021: `-mgpopt' 1022: `-mno-gpopt' 1023: The `-mgpopt' switch says to write all of the data declarations 1.1.1.2 root 1024: before the instructions in the text section, this allows the MIPS 1.1 root 1025: assembler to generate one word memory references instead of using 1026: two words for short global or static data items. This is on by 1027: default if optimization is selected. 1028: 1029: `-mstats' 1030: `-mno-stats' 1031: For each non-inline function processed, the `-mstats' switch 1032: causes the compiler to emit one line to the standard error file to 1033: print statistics about the program (number of registers saved, 1034: stack size, etc.). 1035: 1036: `-mmemcpy' 1037: `-mno-memcpy' 1038: The `-mmemcpy' switch makes all block moves call the appropriate 1039: string function (`memcpy' or `bcopy') instead of possibly 1040: generating inline code. 1041: 1042: `-mmips-tfile' 1043: `-mno-mips-tfile' 1044: The `-mno-mips-tfile' switch causes the compiler not postprocess 1045: the object file with the `mips-tfile' program, after the MIPS 1046: assembler has generated it to add debug support. If `mips-tfile' 1047: is not run, then no local variables will be available to the 1048: debugger. In addition, `stage2' and `stage3' objects will have 1049: the temporary file names passed to the assembler embedded in the 1.1.1.5 ! root 1050: object file, which means the objects will not compare the same. 1.1.1.2 root 1051: The `-mno-mips-tfile' switch should only be used when there are 1052: bugs in the `mips-tfile' program that prevents compilation. 1.1 root 1053: 1054: `-msoft-float' 1.1.1.3 root 1055: Generate output containing library calls for floating point. 1056: *Warning:* the requisite libraries are not part of GNU CC. 1.1 root 1057: Normally the facilities of the machine's usual C compiler are 1058: used, but this can't be done directly in cross-compilation. You 1059: must make your own arrangements to provide suitable library 1060: functions for cross-compilation. 1061: 1062: `-mhard-float' 1063: Generate output containing floating point instructions. This is 1064: the default if you use the unmodified sources. 1065: 1066: `-mfp64' 1067: Assume that the FR bit in the status word is on, and that there 1068: are 32 64-bit floating point registers, instead of 32 32-bit 1.1.1.3 root 1069: floating point registers. You must also specify the `-mcpu=r4000' 1070: and `-mips3' switches. 1.1 root 1071: 1072: `-mfp32' 1.1.1.3 root 1073: Assume that there are 32 32-bit floating point registers. This is 1074: the default. 1.1 root 1075: 1076: `-mabicalls' 1077: `-mno-abicalls' 1.1.1.5 ! root 1078: Emit (or do not emit) the pseudo operations `.abicalls', ! 1079: `.cpload', and `.cprestore' that some System V.4 ports use for ! 1080: position independent code. ! 1081: ! 1082: `-mlong-calls' ! 1083: `-mlong-calls' ! 1084: Do all calls with the `JALR' instruction, which requires loading ! 1085: up a function's address into a register before the call. You need ! 1086: to use this switch, if you call outside of the current 512 ! 1087: megabyte segment to functions that are not through pointers. 1.1 root 1088: 1089: `-mhalf-pic' 1090: `-mno-half-pic' 1091: Put pointers to extern references into the data section and load 1.1.1.5 ! root 1092: them up, rather than put the references in the text section. 1.1 root 1093: 1094: `-G NUM' 1095: Put global and static items less than or equal to NUM bytes into 1096: the small data or bss sections instead of the normal data or bss 1097: section. This allows the assembler to emit one word memory 1098: reference instructions based on the global pointer (GP or $28), 1099: instead of the normal two words used. By default, NUM is 8 when 1.1.1.5 ! root 1100: the MIPS assembler is used, and 0 when the GNU assembler is used. 1.1.1.3 root 1101: The `-G NUM' switch is also passed to the assembler and linker. 1.1 root 1102: All modules should be compiled with the same `-G NUM' value. 1103: 1.1.1.2 root 1104: `-nocpp' 1105: Tell the MIPS assembler to not run it's preprocessor over user 1106: assembler files (with a `.s' suffix) when assembling them. 1107: 1.1 root 1108: These options are defined by the macro `TARGET_SWITCHES' in the 1109: machine description. The default for the options is also defined by 1110: that macro, which enables you to change the defaults. 1111: 1112: 1.1.1.4 root 1113: File: gcc.info, Node: i386 Options, Next: HPPA Options, Prev: MIPS Options, Up: Submodel Options 1.1.1.2 root 1114: 1115: Intel 386 Options 1116: ----------------- 1117: 1118: These `-m' options are defined for the i386 family of computers: 1119: 1120: `-m486' 1.1.1.4 root 1121: `-mno-486' 1.1.1.2 root 1122: Control whether or not code is optimized for a 486 instead of an 1123: 386. Code generated for an 486 will run on a 386 and vice versa. 1124: 1125: `-msoft-float' 1.1.1.3 root 1126: Generate output containing library calls for floating point. 1127: *Warning:* the requisite libraries are not part of GNU CC. 1.1.1.2 root 1128: Normally the facilities of the machine's usual C compiler are 1129: used, but this can't be done directly in cross-compilation. You 1130: must make your own arrangements to provide suitable library 1131: functions for cross-compilation. 1132: 1.1.1.4 root 1133: On machines where a function returns floating point results in the 1.1.1.3 root 1134: 80387 register stack, some floating point opcodes may be emitted 1135: even if `-msoft-float' is used. 1.1.1.2 root 1136: 1.1.1.4 root 1137: `-mno-fp-ret-in-387' 1.1.1.5 ! root 1138: Do not use the FPU registers for return values of functions. 1.1.1.4 root 1139: 1140: The usual calling convention has functions return values of types 1.1.1.5 ! root 1141: `float' and `double' in an FPU register, even if there is no FPU. 1.1.1.4 root 1142: The idea is that the operating system should emulate an FPU. 1143: 1144: The option `-mno-fp-ret-in-387' causes such values to be returned 1145: in ordinary CPU registers instead. 1146: 1147: 1148: File: gcc.info, Node: HPPA Options, Next: Intel 960 Options, Prev: i386 Options, Up: Submodel Options 1149: 1150: HPPA Options 1151: ------------ 1152: 1.1.1.5 ! root 1153: These `-m' options are defined for the HPPA family of computers: 1.1.1.4 root 1154: 1155: `-mpa-risc-1-0' 1156: Generate code for a PA 1.0 processor. 1157: 1158: `-mpa-risc-1-1' 1159: Generate code for a PA 1.1 processor. 1160: 1161: `-mkernel' 1162: Generate code which is suitable for use in kernels. Specifically, 1163: avoid `add' instructions in which one of the arguments is the DP 1164: register; generate `addil' instructions instead. This avoids a 1165: rather serious bug in the HP-UX linker. 1166: 1167: `-mshared-libs' 1.1.1.5 ! root 1168: Generate code that can be linked against HP-UX shared libraries. 1.1.1.4 root 1169: This option is not fully function yet, and is not on by default 1.1.1.5 ! root 1170: for any PA target. Using this option can cause incorrect code to ! 1171: be generated by the compiler. 1.1.1.4 root 1172: 1173: `-mno-shared-libs' 1.1.1.5 ! root 1174: Don't generate code that will be linked against shared libraries. 1.1.1.4 root 1175: This is the default for all PA targets. 1176: 1177: `-mlong-calls' 1.1.1.5 ! root 1178: Generate code which allows calls to functions greater than 256k 1.1.1.4 root 1179: away from the caller when the caller and callee are in the same 1180: source file. Do not turn this option on unless code refuses to 1181: link with "branch out of range errors" from the linker. 1182: 1.1.1.5 ! root 1183: `-mdisable-fpregs' ! 1184: Prevent floating point registers from being used in any manner. ! 1185: This is necessary for compiling kernels which perform lazy context ! 1186: switching of floating point registers. If you use this option and ! 1187: attempt to perform floating point operations, the compiler will ! 1188: abort. ! 1189: ! 1190: `-mdisable-indexing' ! 1191: Prevent the compiler from using indexing address modes. This ! 1192: avoids some rather obscure problems when compiling MIG generated ! 1193: code under MACH. ! 1194: ! 1195: `-mtrailing-colon' ! 1196: Add a colon to the end of label definitions (for ELF assemblers). ! 1197: 1.1.1.4 root 1198: 1199: File: gcc.info, Node: Intel 960 Options, Next: DEC Alpha Options, Prev: HPPA Options, Up: Submodel Options 1200: 1201: Intel 960 Options 1202: ----------------- 1203: 1204: These `-m' options are defined for the Intel 960 implementations: 1205: 1206: `-mCPU TYPE' 1207: Assume the defaults for the machine type CPU TYPE for some of the 1208: other options, including instruction scheduling, floating point 1209: support, and addressing modes. The choices for CPU TYPE are `ka', 1.1.1.5 ! root 1210: `kb', `mc', `ca', `cf', `sa', and `sb'. The default is `kb'. 1.1.1.4 root 1211: 1212: `-mnumerics' 1213: `-msoft-float' 1214: The `-mnumerics' option indicates that the processor does support 1215: floating-point instructions. The `-msoft-float' option indicates 1216: that floating-point support should not be assumed. 1217: 1218: `-mleaf-procedures' 1219: `-mno-leaf-procedures' 1220: Do (or do not) attempt to alter leaf procedures to be callable 1221: with the `bal' instruction as well as `call'. This will result in 1222: more efficient code for explicit calls when the `bal' instruction 1223: can be substituted by the assembler or linker, but less efficient 1224: code in other cases, such as calls via function pointers, or using 1225: a linker that doesn't support this optimization. 1226: 1227: `-mtail-call' 1228: `-mno-tail-call' 1229: Do (or do not) make additional attempts (beyond those of the 1230: machine-independent portions of the compiler) to optimize 1231: tail-recursive calls into branches. You may not want to do this 1232: because the detection of cases where this is not valid is not 1233: totally complete. The default is `-mno-tail-call'. 1234: 1235: `-mcomplex-addr' 1236: `-mno-complex-addr' 1237: Assume (or do not assume) that the use of a complex addressing 1238: mode is a win on this implementation of the i960. Complex 1239: addressing modes may not be worthwhile on the K-series, but they 1.1.1.5 ! root 1240: definitely are on the C-series. The default is currently 1.1.1.4 root 1241: `-mcomplex-addr' for all processors except the CB and CC. 1242: 1243: `-mcode-align' 1244: `-mno-code-align' 1245: Align code to 8-byte boundaries for faster fetching (or don't 1.1.1.5 ! root 1246: bother). Currently turned on by default for C-series 1.1.1.4 root 1247: implementations only. 1248: 1249: `-mic-compat' 1250: `-mic2.0-compat' 1251: `-mic3.0-compat' 1252: Enable compatibility with iC960 v2.0 or v3.0. 1253: 1254: `-masm-compat' 1255: `-mintel-asm' 1256: Enable compatibility with the iC960 assembler. 1257: 1258: `-mstrict-align' 1259: `-mno-strict-align' 1260: Do not permit (do permit) unaligned accesses. 1261: 1262: `-mold-align' 1263: Enable structure-alignment compatibility with Intel's gcc release 1264: version 1.3 (based on gcc 1.37). Currently this is buggy in that 1265: `#pragma align 1' is always assumed as well, and cannot be turned 1266: off. 1267:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.