|
|
1.1 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input ! 2: file gcc.texi. ! 3: ! 4: This file documents the use and the internals of the GNU compiler. ! 5: ! 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. ! 10: ! 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. ! 14: ! 15: Permission is granted to copy and distribute modified versions of ! 16: this manual under the conditions for verbatim copying, provided also ! 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. ! 22: ! 23: Permission is granted to copy and distribute translations of this ! 24: manual into another language, under the above conditions for modified ! 25: versions, except that the sections entitled "GNU General Public ! 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: ! 31: File: gcc.info, Node: Driver, Next: Run-time Target, Up: Target Macros ! 32: ! 33: Controlling the Compilation Driver, `gcc' ! 34: ========================================= ! 35: ! 36: `SWITCH_TAKES_ARG (CHAR)' ! 37: A C expression which determines whether the option `-CHAR' takes ! 38: arguments. The value should be the number of arguments that ! 39: option takes-zero, for many options. ! 40: ! 41: By default, this macro is defined to handle the standard options ! 42: properly. You need not define it unless you wish to add additional ! 43: options which take arguments. ! 44: ! 45: `WORD_SWITCH_TAKES_ARG (NAME)' ! 46: A C expression which determines whether the option `-NAME' takes ! 47: arguments. The value should be the number of arguments that ! 48: option takes-zero, for many options. This macro rather than ! 49: `SWITCH_TAKES_ARG' is used for multi-character option names. ! 50: ! 51: By default, this macro is defined as ! 52: `DEFAULT_WORD_SWITCH_TAKES_ARG', which handles the standard options ! 53: properly. You need not define `WORD_SWITCH_TAKES_ARG' unless you ! 54: wish to add additional options which take arguments. Any ! 55: redefinition should call `DEFAULT_WORD_SWITCH_TAKES_ARG' and then ! 56: check for additional options. ! 57: ! 58: `SWITCHES_NEED_SPACES' ! 59: A string-valued C expression which is nonempty if the linker needs ! 60: a space between the `-L' or `-o' option and its argument. ! 61: ! 62: If this macro is not defined, the default value is 0. ! 63: ! 64: `CPP_SPEC' ! 65: A C string constant that tells the GNU CC driver program options to ! 66: pass to CPP. It can also specify how to translate options you ! 67: give to GNU CC into options for GNU CC to pass to the CPP. ! 68: ! 69: Do not define this macro if it does not need to do anything. ! 70: ! 71: `NO_BUILTIN_SIZE_TYPE' ! 72: If this macro is defined, the preprocessor will not define the ! 73: builtin macro `__SIZE_TYPE__'. The macro `__SIZE_TYPE__' must ! 74: then be defined by `CPP_SPEC' instead. ! 75: ! 76: This should be defined if `SIZE_TYPE' depends on target dependent ! 77: flags which are not accessible to the preprocessor. Otherwise, it ! 78: should not be defined. ! 79: ! 80: `NO_BUILTIN_PTRDIFF_TYPE' ! 81: If this macro is defined, the preprocessor will not define the ! 82: builtin macro `__PTRDIFF_TYPE__'. The macro `__PTRDIFF_TYPE__' ! 83: must then be defined by `CPP_SPEC' instead. ! 84: ! 85: This should be defined if `PTRDIFF_TYPE' depends on target ! 86: dependent flags which are not accessible to the preprocessor. ! 87: Otherwise, it should not be defined. ! 88: ! 89: `SIGNED_CHAR_SPEC' ! 90: A C string constant that tells the GNU CC driver program options to ! 91: pass to CPP. By default, this macro is defined to pass the option ! 92: `-D__CHAR_UNSIGNED__' to CPP if `char' will be treated as ! 93: `unsigned char' by `cc1'. ! 94: ! 95: Do not define this macro unless you need to override the default ! 96: definition. ! 97: ! 98: `CC1_SPEC' ! 99: A C string constant that tells the GNU CC driver program options to ! 100: pass to `cc1'. It can also specify how to translate options you ! 101: give to GNU CC into options for GNU CC to pass to the `cc1'. ! 102: ! 103: Do not define this macro if it does not need to do anything. ! 104: ! 105: `CC1PLUS_SPEC' ! 106: A C string constant that tells the GNU CC driver program options to ! 107: pass to `cc1plus'. It can also specify how to translate options ! 108: you give to GNU CC into options for GNU CC to pass to the ! 109: `cc1plus'. ! 110: ! 111: Do not define this macro if it does not need to do anything. ! 112: ! 113: `ASM_SPEC' ! 114: A C string constant that tells the GNU CC driver program options to ! 115: pass to the assembler. It can also specify how to translate ! 116: options you give to GNU CC into options for GNU CC to pass to the ! 117: assembler. See the file `sun3.h' for an example of this. ! 118: ! 119: Do not define this macro if it does not need to do anything. ! 120: ! 121: `ASM_FINAL_SPEC' ! 122: A C string constant that tells the GNU CC driver program how to ! 123: run any programs which cleanup after the normal assembler. ! 124: Normally, this is not needed. See the file `mips.h' for an ! 125: example of this. ! 126: ! 127: Do not define this macro if it does not need to do anything. ! 128: ! 129: `LINK_SPEC' ! 130: A C string constant that tells the GNU CC driver program options to ! 131: pass to the linker. It can also specify how to translate options ! 132: you give to GNU CC into options for GNU CC to pass to the linker. ! 133: ! 134: Do not define this macro if it does not need to do anything. ! 135: ! 136: `LIB_SPEC' ! 137: Another C string constant used much like `LINK_SPEC'. The ! 138: difference between the two is that `LIB_SPEC' is used at the end ! 139: of the command given to the linker. ! 140: ! 141: If this macro is not defined, a default is provided that loads the ! 142: standard C library from the usual place. See `gcc.c'. ! 143: ! 144: `STARTFILE_SPEC' ! 145: Another C string constant used much like `LINK_SPEC'. The ! 146: difference between the two is that `STARTFILE_SPEC' is used at the ! 147: very beginning of the command given to the linker. ! 148: ! 149: If this macro is not defined, a default is provided that loads the ! 150: standard C startup file from the usual place. See `gcc.c'. ! 151: ! 152: `ENDFILE_SPEC' ! 153: Another C string constant used much like `LINK_SPEC'. The ! 154: difference between the two is that `ENDFILE_SPEC' is used at the ! 155: very end of the command given to the linker. ! 156: ! 157: Do not define this macro if it does not need to do anything. ! 158: ! 159: `LINK_LIBGCC_SPECIAL' ! 160: Define this macro meaning that `gcc' should find the library ! 161: `libgcc.a' by hand, rather than passing the argument `-lgcc' to ! 162: tell the linker to do the search; also, `gcc' should not generate ! 163: `-L' options to pass to the linker (as it normally does). ! 164: ! 165: `LINK_LIBGCC_SPECIAL_1' ! 166: Define this macro meaning that `gcc' should find the library ! 167: `libgcc.a' by hand, rather than passing the argument `-lgcc' to ! 168: tell the linker to do the search. ! 169: ! 170: `RELATIVE_PREFIX_NOT_LINKDIR' ! 171: Define this macro to tell `gcc' that it should only translate a ! 172: `-B' prefix into a `-L' linker option if the prefix indicates an ! 173: absolute file name. ! 174: ! 175: `STANDARD_EXEC_PREFIX' ! 176: Define this macro as a C string constant if you wish to override ! 177: the standard choice of `/usr/local/lib/gcc-lib/' as the default ! 178: prefix to try when searching for the executable files of the ! 179: compiler. ! 180: ! 181: `MD_EXEC_PREFIX' ! 182: If defined, this macro is an additional prefix to try after ! 183: `STANDARD_EXEC_PREFIX'. `MD_EXEC_PREFIX' is not searched when the ! 184: `-b' option is used, or the compiler is built as a cross compiler. ! 185: ! 186: `STANDARD_STARTFILE_PREFIX' ! 187: Define this macro as a C string constant if you wish to override ! 188: the standard choice of `/usr/local/lib/' as the default prefix to ! 189: try when searching for startup files such as `crt0.o'. ! 190: ! 191: `MD_STARTFILE_PREFIX' ! 192: If defined, this macro supplies an additional prefix to try after ! 193: the standard prefixes. `MD_EXEC_PREFIX' is not searched when the ! 194: `-b' option is used, or when the compiler is built as a cross ! 195: compiler. ! 196: ! 197: `MD_STARTFILE_PREFIX_1' ! 198: If defined, this macro supplies yet another prefix to try after the ! 199: standard prefixes. It is not searched when the `-b' option is ! 200: used, or when the compiler is built as a cross compiler. ! 201: ! 202: `LOCAL_INCLUDE_DIR' ! 203: Define this macro as a C string constant if you wish to override ! 204: the standard choice of `/usr/local/include' as the default prefix ! 205: to try when searching for local header files. `LOCAL_INCLUDE_DIR' ! 206: comes before `SYSTEM_INCLUDE_DIR' in the search order. ! 207: ! 208: Cross compilers do not use this macro and do not search either ! 209: `/usr/local/include' or its replacement. ! 210: ! 211: `SYSTEM_INCLUDE_DIR' ! 212: Define this macro as a C string constant if you wish to specify a ! 213: system-specific directory to search for header files before the ! 214: standard directory. `SYSTEM_INCLUDE_DIR' comes before ! 215: `STANDARD_INCLUDE_DIR' in the search order. ! 216: ! 217: Cross compilers do not use this macro and do not search the ! 218: directory specified. ! 219: ! 220: `STANDARD_INCLUDE_DIR' ! 221: Define this macro as a C string constant if you wish to override ! 222: the standard choice of `/usr/include' as the default prefix to try ! 223: when searching for header files. ! 224: ! 225: Cross compilers do not use this macro and do not search either ! 226: `/usr/include' or its replacement. ! 227: ! 228: `INCLUDE_DEFAULTS' ! 229: Define this macro if you wish to override the entire default ! 230: search path for include files. The default search path includes ! 231: `GCC_INCLUDE_DIR', `LOCAL_INCLUDE_DIR', `SYSTEM_INCLUDE_DIR', ! 232: `GPLUSPLUS_INCLUDE_DIR', and `STANDARD_INCLUDE_DIR'. In addition, ! 233: `GPLUSPLUS_INCLUDE_DIR' and `GCC_INCLUDE_DIR' are defined ! 234: automatically by `Makefile', and specify private search areas for ! 235: GCC. The directory `GPLUSPLUS_INCLUDE_DIR' is used only for C++ ! 236: programs. ! 237: ! 238: The definition should be an initializer for an array of structures. ! 239: Each array element should have two elements: the directory name (a ! 240: string constant) and a flag for C++-only directories. Mark the ! 241: end of the array with a null element. For example, here is the ! 242: definition used for VMS: ! 243: ! 244: #define INCLUDE_DEFAULTS \ ! 245: { \ ! 246: { "GNU_GXX_INCLUDE:", 1}, \ ! 247: { "GNU_CC_INCLUDE:", 0}, \ ! 248: { "SYS$SYSROOT:[SYSLIB.]", 0}, \ ! 249: { ".", 0}, \ ! 250: { 0, 0} \ ! 251: } ! 252: ! 253: Here is the order of prefixes tried for exec files: ! 254: ! 255: 1. Any prefixes specified by the user with `-B'. ! 256: ! 257: 2. The environment variable `GCC_EXEC_PREFIX', if any. ! 258: ! 259: 3. The directories specified by the environment variable ! 260: `COMPILER_PATH'. ! 261: ! 262: 4. The macro `STANDARD_EXEC_PREFIX'. ! 263: ! 264: 5. `/usr/lib/gcc/'. ! 265: ! 266: 6. The macro `MD_EXEC_PREFIX', if any. ! 267: ! 268: Here is the order of prefixes tried for startfiles: ! 269: ! 270: 1. Any prefixes specified by the user with `-B'. ! 271: ! 272: 2. The environment variable `GCC_EXEC_PREFIX', if any. ! 273: ! 274: 3. The directories specified by the environment variable ! 275: `LIBRARY_PATH'. ! 276: ! 277: 4. The macro `STANDARD_EXEC_PREFIX'. ! 278: ! 279: 5. `/usr/lib/gcc/'. ! 280: ! 281: 6. The macro `MD_EXEC_PREFIX', if any. ! 282: ! 283: 7. The macro `MD_STARTFILE_PREFIX', if any. ! 284: ! 285: 8. The macro `STANDARD_STARTFILE_PREFIX'. ! 286: ! 287: 9. `/lib/'. ! 288: ! 289: 10. `/usr/lib/'. ! 290: ! 291: ! 292: File: gcc.info, Node: Run-time Target, Next: Storage Layout, Prev: Driver, Up: Target Macros ! 293: ! 294: Run-time Target Specification ! 295: ============================= ! 296: ! 297: `CPP_PREDEFINES' ! 298: Define this to be a string constant containing `-D' options to ! 299: define the predefined macros that identify this machine and system. ! 300: These macros will be predefined unless the `-ansi' option is ! 301: specified. ! 302: ! 303: In addition, a parallel set of macros are predefined, whose names ! 304: are made by appending `__' at the beginning and at the end. These ! 305: `__' macros are permitted by the ANSI standard, so they are ! 306: predefined regardless of whether `-ansi' is specified. ! 307: ! 308: For example, on the Sun, one can use the following value: ! 309: ! 310: "-Dmc68000 -Dsun -Dunix" ! 311: ! 312: The result is to define the macros `__mc68000__', `__sun__' and ! 313: `__unix__' unconditionally, and the macros `mc68000', `sun' and ! 314: `unix' provided `-ansi' is not specified. ! 315: ! 316: `STDC_VALUE' ! 317: Define the value to be assigned to the built-in macro `__STDC__'. ! 318: The default is the value `1'. ! 319: ! 320: `extern int target_flags;' ! 321: This declaration should be present. ! 322: ! 323: `TARGET_...' ! 324: This series of macros is to allow compiler command arguments to ! 325: enable or disable the use of optional features of the target ! 326: machine. For example, one machine description serves both the ! 327: 68000 and the 68020; a command argument tells the compiler whether ! 328: it should use 68020-only instructions or not. This command ! 329: argument works by means of a macro `TARGET_68020' that tests a bit ! 330: in `target_flags'. ! 331: ! 332: Define a macro `TARGET_FEATURENAME' for each such option. Its ! 333: definition should test a bit in `target_flags'; for example: ! 334: ! 335: #define TARGET_68020 (target_flags & 1) ! 336: ! 337: One place where these macros are used is in the ! 338: condition-expressions of instruction patterns. Note how ! 339: `TARGET_68020' appears frequently in the 68000 machine description ! 340: file, `m68k.md'. Another place they are used is in the ! 341: definitions of the other macros in the `MACHINE.h' file. ! 342: ! 343: `TARGET_SWITCHES' ! 344: This macro defines names of command options to set and clear bits ! 345: in `target_flags'. Its definition is an initializer with a ! 346: subgrouping for each command option. ! 347: ! 348: Each subgrouping contains a string constant, that defines the ! 349: option name, and a number, which contains the bits to set in ! 350: `target_flags'. A negative number says to clear bits instead; the ! 351: negative of the number is which bits to clear. The actual option ! 352: name is made by appending `-m' to the specified name. ! 353: ! 354: One of the subgroupings should have a null string. The number in ! 355: this grouping is the default value for `target_flags'. Any target ! 356: options act starting with that value. ! 357: ! 358: Here is an example which defines `-m68000' and `-m68020' with ! 359: opposite meanings, and picks the latter as the default: ! 360: ! 361: #define TARGET_SWITCHES \ ! 362: { { "68020", 1}, \ ! 363: { "68000", -1}, \ ! 364: { "", 1}} ! 365: ! 366: `TARGET_OPTIONS' ! 367: This macro is similar to `TARGET_SWITCHES' but defines names of ! 368: command options that have values. Its definition is an ! 369: initializer with a subgrouping for each command option. ! 370: ! 371: Each subgrouping contains a string constant, that defines the ! 372: fixed part of the option name, and the address of a variable. The ! 373: variable, type `char *', is set to the variable part of the given ! 374: option if the fixed part matches. The actual option name is made ! 375: by appending `-m' to the specified name. ! 376: ! 377: Here is an example which defines `-mshort-data-NUMBER'. If the ! 378: given option is `-mshort-data-512', the variable `m88k_short_data' ! 379: will be set to the string `"512"'. ! 380: ! 381: extern char *m88k_short_data; ! 382: #define TARGET_OPTIONS \ ! 383: { { "short-data-", &m88k_short_data } } ! 384: ! 385: `TARGET_VERSION' ! 386: This macro is a C statement to print on `stderr' a string ! 387: describing the particular machine description choice. Every ! 388: machine description should define `TARGET_VERSION'. For example: ! 389: ! 390: #ifdef MOTOROLA ! 391: #define TARGET_VERSION \ ! 392: fprintf (stderr, " (68k, Motorola syntax)"); ! 393: #else ! 394: #define TARGET_VERSION \ ! 395: fprintf (stderr, " (68k, MIT syntax)"); ! 396: #endif ! 397: ! 398: `OVERRIDE_OPTIONS' ! 399: Sometimes certain combinations of command options do not make ! 400: sense on a particular target machine. You can define a macro ! 401: `OVERRIDE_OPTIONS' to take account of this. This macro, if ! 402: defined, is executed once just after all the command options have ! 403: been parsed. ! 404: ! 405: Don't use this macro to turn on various extra optimizations for ! 406: `-O'. That is what `OPTIMIZATION_OPTIONS' is for. ! 407: ! 408: `OPTIMIZATION_OPTIONS (LEVEL)' ! 409: Some machines may desire to change what optimizations are ! 410: performed for various optimization levels. This macro, if ! 411: defined, is executed once just after the optimization level is ! 412: determined and before the remainder of the command options have ! 413: been parsed. Values set in this macro are used as the default ! 414: values for the other command line options. ! 415: ! 416: LEVEL is the optimization level specified; 2 if -O2 is specified, ! 417: 1 if -O is specified, and 0 if neither is specified. ! 418: ! 419: *Do not examine `write_symbols' in this macro!* The debugging ! 420: options are not supposed to alter the generated code. ! 421: ! 422: ! 423: File: gcc.info, Node: Storage Layout, Next: Type Layout, Prev: Run-time Target, Up: Target Macros ! 424: ! 425: Storage Layout ! 426: ============== ! 427: ! 428: Note that the definitions of the macros in this table which are ! 429: sizes or alignments measured in bits do not need to be constant. They ! 430: can be C expressions that refer to static variables, such as the ! 431: `target_flags'. *Note Run-time Target::. ! 432: ! 433: `BITS_BIG_ENDIAN' ! 434: Define this macro to be the value 1 if the most significant bit in ! 435: a byte has the lowest number; otherwise define it to be the value ! 436: zero. This means that bit-field instructions count from the most ! 437: significant bit. If the machine has no bit-field instructions, ! 438: then this must still be defined, but it doesn't matter which value ! 439: it is defined to. ! 440: ! 441: This macro does not affect the way structure fields are packed into ! 442: bytes or words; that is controlled by `BYTES_BIG_ENDIAN'. ! 443: ! 444: `BYTES_BIG_ENDIAN' ! 445: Define this macro to be 1 if the most significant byte in a word ! 446: has the lowest number. ! 447: ! 448: `WORDS_BIG_ENDIAN' ! 449: Define this macro to be 1 if, in a multiword object, the most ! 450: significant word has the lowest number. This applies to both ! 451: memory locations and registers; GNU CC fundamentally assumes that ! 452: the order of words in memory is the same as the order in registers. ! 453: ! 454: `FLOAT_WORDS_BIG_ENDIAN' ! 455: Define this macro to be 1 if `DFmode', `XFmode' or `TFmode' ! 456: floating point numbers are stored in memory with the word ! 457: containing the sign bit at the lowest address; otherwise define it ! 458: to be 0. ! 459: ! 460: You need not define this macro if the ordering is the same as for ! 461: multi-word integers. ! 462: ! 463: `BITS_PER_UNIT' ! 464: Define this macro to be the number of bits in an addressable ! 465: storage unit (byte); normally 8. ! 466: ! 467: `BITS_PER_WORD' ! 468: Number of bits in a word; normally 32. ! 469: ! 470: `MAX_BITS_PER_WORD' ! 471: Maximum number of bits in a word. If this is undefined, the ! 472: default is `BITS_PER_WORD'. Otherwise, it is the constant value ! 473: that is the largest value that `BITS_PER_WORD' can have at ! 474: run-time. ! 475: ! 476: `UNITS_PER_WORD' ! 477: Number of storage units in a word; normally 4. ! 478: ! 479: `MAX_UNITS_PER_WORD' ! 480: Maximum number of units in a word. If this is undefined, the ! 481: default is `UNITS_PER_WORD'. Otherwise, it is the constant value ! 482: that is the largest value that `UNITS_PER_WORD' can have at ! 483: run-time. ! 484: ! 485: `POINTER_SIZE' ! 486: Width of a pointer, in bits. ! 487: ! 488: `PROMOTE_MODE (M, UNSIGNEDP, TYPE)' ! 489: A macro to update M and UNSIGNEDP when an object whose type is ! 490: TYPE and which has the specified mode and signedness is to be ! 491: stored in a register. This macro is only called when TYPE is a ! 492: scalar type. ! 493: ! 494: On most RISC machines, which only have operations that operate on ! 495: a full register, define this macro to set M to `word_mode' if M is ! 496: an integer mode narrower than `BITS_PER_WORD'. In most cases, ! 497: only integer modes should be widened because wider-precision ! 498: floating-point operations are usually more expensive than their ! 499: narrower counterparts. ! 500: ! 501: For most machines, the macro definition does not change UNSIGNEDP. ! 502: However, some machines, have instructions that preferentially ! 503: handle either signed or unsigned quantities of certain modes. For ! 504: example, on the DEC Alpha, 32-bit loads from memory and 32-bit add ! 505: instructions sign-extend the result to 64 bits. On such machines, ! 506: set UNSIGNEDP according to which kind of extension is more ! 507: efficient. ! 508: ! 509: Do not define this macro if it would never modify M. ! 510: ! 511: `PROMOTE_FUNCTION_ARGS' ! 512: Define this macro if the promotion described by `PROMOTE_MODE' ! 513: should also be done for outgoing function arguments. ! 514: ! 515: `PROMOTE_FUNCTION_RETURN' ! 516: Define this macro if the promotion described by `PROMOTE_MODE' ! 517: should also be done for the return value of functions. ! 518: ! 519: If this macro is defined, `FUNCTION_VALUE' must perform the same ! 520: promotions done by `PROMOTE_MODE'. ! 521: ! 522: `PARM_BOUNDARY' ! 523: Normal alignment required for function parameters on the stack, in ! 524: bits. All stack parameters receive at least this much alignment ! 525: regardless of data type. On most machines, this is the same as the ! 526: size of an integer. ! 527: ! 528: `STACK_BOUNDARY' ! 529: Define this macro if you wish to preserve a certain alignment for ! 530: the stack pointer. The definition is a C expression for the ! 531: desired alignment (measured in bits). ! 532: ! 533: If `PUSH_ROUNDING' is not defined, the stack will always be aligned ! 534: to the specified boundary. If `PUSH_ROUNDING' is defined and ! 535: specifies a less strict alignment than `STACK_BOUNDARY', the stack ! 536: may be momentarily unaligned while pushing arguments. ! 537: ! 538: `FUNCTION_BOUNDARY' ! 539: Alignment required for a function entry point, in bits. ! 540: ! 541: `BIGGEST_ALIGNMENT' ! 542: Biggest alignment that any data type can require on this machine, ! 543: in bits. ! 544: ! 545: `BIGGEST_FIELD_ALIGNMENT' ! 546: Biggest alignment that any structure field can require on this ! 547: machine, in bits. If defined, this overrides `BIGGEST_ALIGNMENT' ! 548: for structure fields only. ! 549: ! 550: `MAX_OFILE_ALIGNMENT' ! 551: Biggest alignment supported by the object file format of this ! 552: machine. Use this macro to limit the alignment which can be ! 553: specified using the `__attribute__ ((aligned (N)))' construct. If ! 554: not defined, the default value is `BIGGEST_ALIGNMENT'. ! 555: ! 556: `DATA_ALIGNMENT (TYPE, BASIC-ALIGN)' ! 557: If defined, a C expression to compute the alignment for a static ! 558: variable. TYPE is the data type, and BASIC-ALIGN is the alignment ! 559: that the object would ordinarily have. The value of this macro is ! 560: used instead of that alignment to align the object. ! 561: ! 562: If this macro is not defined, then BASIC-ALIGN is used. ! 563: ! 564: One use of this macro is to increase alignment of medium-size data ! 565: to make it all fit in fewer cache lines. Another is to cause ! 566: character arrays to be word-aligned so that `strcpy' calls that ! 567: copy constants to character arrays can be done inline. ! 568: ! 569: `CONSTANT_ALIGNMENT (CONSTANT, BASIC-ALIGN)' ! 570: If defined, a C expression to compute the alignment given to a ! 571: constant that is being placed in memory. CONSTANT is the constant ! 572: and BASIC-ALIGN is the alignment that the object would ordinarily ! 573: have. The value of this macro is used instead of that alignment to ! 574: align the object. ! 575: ! 576: If this macro is not defined, then BASIC-ALIGN is used. ! 577: ! 578: The typical use of this macro is to increase alignment for string ! 579: constants to be word aligned so that `strcpy' calls that copy ! 580: constants can be done inline. ! 581: ! 582: `EMPTY_FIELD_BOUNDARY' ! 583: Alignment in bits to be given to a structure bit field that ! 584: follows an empty field such as `int : 0;'. ! 585: ! 586: Note that `PCC_BITFIELD_TYPE_MATTERS' also affects the alignment ! 587: that results from an empty field. ! 588: ! 589: `STRUCTURE_SIZE_BOUNDARY' ! 590: Number of bits which any structure or union's size must be a ! 591: multiple of. Each structure or union's size is rounded up to a ! 592: multiple of this. ! 593: ! 594: If you do not define this macro, the default is the same as ! 595: `BITS_PER_UNIT'. ! 596: ! 597: `STRICT_ALIGNMENT' ! 598: Define this macro to be the value 1 if instructions will fail to ! 599: work if given data not on the nominal alignment. If instructions ! 600: will merely go slower in that case, define this macro as 0. ! 601: ! 602: `PCC_BITFIELD_TYPE_MATTERS' ! 603: Define this if you wish to imitate the way many other C compilers ! 604: handle alignment of bitfields and the structures that contain them. ! 605: ! 606: The behavior is that the type written for a bitfield (`int', ! 607: `short', or other integer type) imposes an alignment for the ! 608: entire structure, as if the structure really did contain an ! 609: ordinary field of that type. In addition, the bitfield is placed ! 610: within the structure so that it would fit within such a field, not ! 611: crossing a boundary for it. ! 612: ! 613: Thus, on most machines, a bitfield whose type is written as `int' ! 614: would not cross a four-byte boundary, and would force four-byte ! 615: alignment for the whole structure. (The alignment used may not be ! 616: four bytes; it is controlled by the other alignment parameters.) ! 617: ! 618: If the macro is defined, its definition should be a C expression; ! 619: a nonzero value for the expression enables this behavior. ! 620: ! 621: Note that if this macro is not defined, or its value is zero, some ! 622: bitfields may cross more than one alignment boundary. The ! 623: compiler can support such references if there are `insv', `extv', ! 624: and `extzv' insns that can directly reference memory. ! 625: ! 626: The other known way of making bitfields work is to define ! 627: `STRUCTURE_SIZE_BOUNDARY' as large as `BIGGEST_ALIGNMENT'. Then ! 628: every structure can be accessed with fullwords. ! 629: ! 630: Unless the machine has bitfield instructions or you define ! 631: `STRUCTURE_SIZE_BOUNDARY' that way, you must define ! 632: `PCC_BITFIELD_TYPE_MATTERS' to have a nonzero value. ! 633: ! 634: If your aim is to make GNU CC use the same conventions for laying ! 635: out bitfields as are used by another compiler, here is how to ! 636: investigate what the other compiler does. Compile and run this ! 637: program: ! 638: ! 639: struct foo1 ! 640: { ! 641: char x; ! 642: char :0; ! 643: char y; ! 644: }; ! 645: ! 646: struct foo2 ! 647: { ! 648: char x; ! 649: int :0; ! 650: char y; ! 651: }; ! 652: ! 653: main () ! 654: { ! 655: printf ("Size of foo1 is %d\n", ! 656: sizeof (struct foo1)); ! 657: printf ("Size of foo2 is %d\n", ! 658: sizeof (struct foo2)); ! 659: exit (0); ! 660: } ! 661: ! 662: If this prints 2 and 5, then the compiler's behavior is what you ! 663: would get from `PCC_BITFIELD_TYPE_MATTERS'. ! 664: ! 665: `BITFIELD_NBYTES_LIMITED' ! 666: Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited to ! 667: aligning a bitfield within the structure. ! 668: ! 669: `ROUND_TYPE_SIZE (STRUCT, SIZE, ALIGN)' ! 670: Define this macro as an expression for the overall size of a ! 671: structure (given by STRUCT as a tree node) when the size computed ! 672: from the fields is SIZE and the alignment is ALIGN. ! 673: ! 674: The default is to round SIZE up to a multiple of ALIGN. ! 675: ! 676: `ROUND_TYPE_ALIGN (STRUCT, COMPUTED, SPECIFIED)' ! 677: Define this macro as an expression for the alignment of a structure ! 678: (given by STRUCT as a tree node) if the alignment computed in the ! 679: usual way is COMPUTED and the alignment explicitly specified was ! 680: SPECIFIED. ! 681: ! 682: The default is to use SPECIFIED if it is larger; otherwise, use ! 683: the smaller of COMPUTED and `BIGGEST_ALIGNMENT' ! 684: ! 685: `MAX_FIXED_MODE_SIZE' ! 686: An integer expression for the size in bits of the largest integer ! 687: machine mode that should actually be used. All integer machine ! 688: modes of this size or smaller can be used for structures and ! 689: unions with the appropriate sizes. If this macro is undefined, ! 690: `GET_MODE_BITSIZE (DImode)' is assumed. ! 691: ! 692: `CHECK_FLOAT_VALUE (MODE, VALUE)' ! 693: A C statement to validate the value VALUE (of type `double') for ! 694: mode MODE. This means that you check whether VALUE fits within ! 695: the possible range of values for mode MODE on this target machine. ! 696: The mode MODE is always `SFmode' or `DFmode'. ! 697: ! 698: If VALUE is not valid, you should call `error' to print an error ! 699: message and then assign some valid value to VALUE. Allowing an ! 700: invalid value to go through the compiler can produce incorrect ! 701: assembler code which may even cause Unix assemblers to crash. ! 702: ! 703: This macro need not be defined if there is no work for it to do. ! 704: ! 705: `TARGET_FLOAT_FORMAT' ! 706: A code distinguishing the floating point format of the target ! 707: machine. There are three defined values: ! 708: ! 709: `IEEE_FLOAT_FORMAT' ! 710: This code indicates IEEE floating point. It is the default; ! 711: there is no need to define this macro when the format is IEEE. ! 712: ! 713: `VAX_FLOAT_FORMAT' ! 714: This code indicates the peculiar format used on the Vax. ! 715: ! 716: `UNKNOWN_FLOAT_FORMAT' ! 717: This code indicates any other format. ! 718: ! 719: The value of this macro is compared with `HOST_FLOAT_FORMAT' ! 720: (*note Config::.) to determine whether the target machine has the ! 721: same format as the host machine. If any other formats are ! 722: actually in use on supported machines, new codes should be defined ! 723: for them. ! 724: ! 725: The ordering of the component words of floating point values ! 726: stored in memory is controlled by `FLOAT_WORDS_BIG_ENDIAN' for the ! 727: target machine and `HOST_FLOAT_WORDS_BIG_ENDIAN' for the host. ! 728: ! 729: ! 730: File: gcc.info, Node: Type Layout, Next: Registers, Prev: Storage Layout, Up: Target Macros ! 731: ! 732: Layout of Source Language Data Types ! 733: ==================================== ! 734: ! 735: These macros define the sizes and other characteristics of the ! 736: standard basic data types used in programs being compiled. Unlike the ! 737: macros in the previous section, these apply to specific features of C ! 738: and related languages, rather than to fundamental aspects of storage ! 739: layout. ! 740: ! 741: `INT_TYPE_SIZE' ! 742: A C expression for the size in bits of the type `int' on the ! 743: target machine. If you don't define this, the default is one word. ! 744: ! 745: `MAX_INT_TYPE_SIZE' ! 746: Maximum number for the size in bits of the type `int' on the target ! 747: machine. If this is undefined, the default is `INT_TYPE_SIZE'. ! 748: Otherwise, it is the constant value that is the largest value that ! 749: `INT_TYPE_SIZE' can have at run-time. This is used in `cpp'. ! 750: ! 751: `SHORT_TYPE_SIZE' ! 752: A C expression for the size in bits of the type `short' on the ! 753: target machine. If you don't define this, the default is half a ! 754: word. (If this would be less than one storage unit, it is rounded ! 755: up to one unit.) ! 756: ! 757: `LONG_TYPE_SIZE' ! 758: A C expression for the size in bits of the type `long' on the ! 759: target machine. If you don't define this, the default is one word. ! 760: ! 761: `MAX_LONG_TYPE_SIZE' ! 762: Maximum number for the size in bits of the type `long' on the ! 763: target machine. If this is undefined, the default is ! 764: `LONG_TYPE_SIZE'. Otherwise, it is the constant value that is the ! 765: largest value that `LONG_TYPE_SIZE' can have at run-time. This is ! 766: used in `cpp'. ! 767: ! 768: `LONG_LONG_TYPE_SIZE' ! 769: A C expression for the size in bits of the type `long long' on the ! 770: target machine. If you don't define this, the default is two ! 771: words. ! 772: ! 773: `CHAR_TYPE_SIZE' ! 774: A C expression for the size in bits of the type `char' on the ! 775: target machine. If you don't define this, the default is one ! 776: quarter of a word. (If this would be less than one storage unit, ! 777: it is rounded up to one unit.) ! 778: ! 779: `MAX_CHAR_TYPE_SIZE' ! 780: Maximum number for the size in bits of the type `char' on the ! 781: target machine. If this is undefined, the default is ! 782: `CHAR_TYPE_SIZE'. Otherwise, it is the constant value that is the ! 783: largest value that `CHAR_TYPE_SIZE' can have at run-time. This is ! 784: used in `cpp'. ! 785: ! 786: `FLOAT_TYPE_SIZE' ! 787: A C expression for the size in bits of the type `float' on the ! 788: target machine. If you don't define this, the default is one word. ! 789: ! 790: `DOUBLE_TYPE_SIZE' ! 791: A C expression for the size in bits of the type `double' on the ! 792: target machine. If you don't define this, the default is two ! 793: words. ! 794: ! 795: `LONG_DOUBLE_TYPE_SIZE' ! 796: A C expression for the size in bits of the type `long double' on ! 797: the target machine. If you don't define this, the default is two ! 798: words. ! 799: ! 800: `DEFAULT_SIGNED_CHAR' ! 801: An expression whose value is 1 or 0, according to whether the type ! 802: `char' should be signed or unsigned by default. The user can ! 803: always override this default with the options `-fsigned-char' and ! 804: `-funsigned-char'. ! 805: ! 806: `DEFAULT_SHORT_ENUMS' ! 807: A C expression to determine whether to give an `enum' type only as ! 808: many bytes as it takes to represent the range of possible values ! 809: of that type. A nonzero value means to do that; a zero value ! 810: means all `enum' types should be allocated like `int'. ! 811: ! 812: If you don't define the macro, the default is 0. ! 813: ! 814: `SIZE_TYPE' ! 815: A C expression for a string describing the name of the data type ! 816: to use for size values. The typedef name `size_t' is defined ! 817: using the contents of the string. ! 818: ! 819: The string can contain more than one keyword. If so, separate ! 820: them with spaces, and write first any length keyword, then ! 821: `unsigned' if appropriate, and finally `int'. The string must ! 822: exactly match one of the data type names defined in the function ! 823: `init_decl_processing' in the file `c-decl.c'. You may not omit ! 824: `int' or change the order--that would cause the compiler to crash ! 825: on startup. ! 826: ! 827: If you don't define this macro, the default is `"long unsigned ! 828: int"'. ! 829: ! 830: `PTRDIFF_TYPE' ! 831: A C expression for a string describing the name of the data type ! 832: to use for the result of subtracting two pointers. The typedef ! 833: name `ptrdiff_t' is defined using the contents of the string. See ! 834: `SIZE_TYPE' above for more information. ! 835: ! 836: If you don't define this macro, the default is `"long int"'. ! 837: ! 838: `WCHAR_TYPE' ! 839: A C expression for a string describing the name of the data type ! 840: to use for wide characters. The typedef name `wchar_t' is defined ! 841: using the contents of the string. See `SIZE_TYPE' above for more ! 842: information. ! 843: ! 844: If you don't define this macro, the default is `"int"'. ! 845: ! 846: `WCHAR_TYPE_SIZE' ! 847: A C expression for the size in bits of the data type for wide ! 848: characters. This is used in `cpp', which cannot make use of ! 849: `WCHAR_TYPE'. ! 850: ! 851: `MAX_WCHAR_TYPE_SIZE' ! 852: Maximum number for the size in bits of the data type for wide ! 853: characters. If this is undefined, the default is ! 854: `WCHAR_TYPE_SIZE'. Otherwise, it is the constant value that is the ! 855: largest value that `WCHAR_TYPE_SIZE' can have at run-time. This is ! 856: used in `cpp'. ! 857: ! 858: `OBJC_INT_SELECTORS' ! 859: Define this macro if the type of Objective C selectors should be ! 860: `int'. ! 861: ! 862: If this macro is not defined, then selectors should have the type ! 863: `struct objc_selector *'. ! 864: ! 865: `OBJC_SELECTORS_WITHOUT_LABELS' ! 866: Define this macro if the compiler can group all the selectors ! 867: together into a vector and use just one label at the beginning of ! 868: the vector. Otherwise, the compiler must give each selector its ! 869: own assembler label. ! 870: ! 871: On certain machines, it is important to have a separate label for ! 872: each selector because this enables the linker to eliminate ! 873: duplicate selectors. ! 874: ! 875: `TARGET_BELL' ! 876: A C constant expression for the integer value for escape sequence ! 877: `\a'. ! 878: ! 879: `TARGET_BS' ! 880: `TARGET_TAB' ! 881: `TARGET_NEWLINE' ! 882: C constant expressions for the integer values for escape sequences ! 883: `\b', `\t' and `\n'. ! 884: ! 885: `TARGET_VT' ! 886: `TARGET_FF' ! 887: `TARGET_CR' ! 888: C constant expressions for the integer values for escape sequences ! 889: `\v', `\f' and `\r'. ! 890: ! 891: ! 892: File: gcc.info, Node: Registers, Next: Register Classes, Prev: Type Layout, Up: Target Macros ! 893: ! 894: Register Usage ! 895: ============== ! 896: ! 897: This section explains how to describe what registers the target ! 898: machine has, and how (in general) they can be used. ! 899: ! 900: The description of which registers a specific instruction can use is ! 901: done with register classes; see *Note Register Classes::. For ! 902: information on using registers to access a stack frame, see *Note Frame ! 903: Registers::. For passing values in registers, see *Note Register ! 904: Arguments::. For returning values in registers, see *Note Scalar ! 905: Return::. ! 906: ! 907: * Menu: ! 908: ! 909: * Register Basics:: Number and kinds of registers. ! 910: * Allocation Order:: Order in which registers are allocated. ! 911: * Values in Registers:: What kinds of values each reg can hold. ! 912: * Leaf Functions:: Renumbering registers for leaf functions. ! 913: * Stack Registers:: Handling a register stack such as 80387. ! 914: * Obsolete Register Macros:: Macros formerly used for the 80387. ! 915: ! 916: ! 917: File: gcc.info, Node: Register Basics, Next: Allocation Order, Up: Registers ! 918: ! 919: Basic Characteristics of Registers ! 920: ---------------------------------- ! 921: ! 922: `FIRST_PSEUDO_REGISTER' ! 923: Number of hardware registers known to the compiler. They receive ! 924: numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first ! 925: pseudo register's number really is assigned the number ! 926: `FIRST_PSEUDO_REGISTER'. ! 927: ! 928: `FIXED_REGISTERS' ! 929: An initializer that says which registers are used for fixed ! 930: purposes all throughout the compiled code and are therefore not ! 931: available for general allocation. These would include the stack ! 932: pointer, the frame pointer (except on machines where that can be ! 933: used as a general register when no frame pointer is needed), the ! 934: program counter on machines where that is considered one of the ! 935: addressable registers, and any other numbered register with a ! 936: standard use. ! 937: ! 938: This information is expressed as a sequence of numbers, separated ! 939: by commas and surrounded by braces. The Nth number is 1 if ! 940: register N is fixed, 0 otherwise. ! 941: ! 942: The table initialized from this macro, and the table initialized by ! 943: the following one, may be overridden at run time either ! 944: automatically, by the actions of the macro ! 945: `CONDITIONAL_REGISTER_USAGE', or by the user with the command ! 946: options `-ffixed-REG', `-fcall-used-REG' and `-fcall-saved-REG'. ! 947: ! 948: `CALL_USED_REGISTERS' ! 949: Like `FIXED_REGISTERS' but has 1 for each register that is ! 950: clobbered (in general) by function calls as well as for fixed ! 951: registers. This macro therefore identifies the registers that are ! 952: not available for general allocation of values that must live ! 953: across function calls. ! 954: ! 955: If a register has 0 in `CALL_USED_REGISTERS', the compiler ! 956: automatically saves it on function entry and restores it on ! 957: function exit, if the register is used within the function. ! 958: ! 959: `CONDITIONAL_REGISTER_USAGE' ! 960: Zero or more C statements that may conditionally modify two ! 961: variables `fixed_regs' and `call_used_regs' (both of type `char ! 962: []') after they have been initialized from the two preceding ! 963: macros. ! 964: ! 965: This is necessary in case the fixed or call-clobbered registers ! 966: depend on target flags. ! 967: ! 968: You need not define this macro if it has no work to do. ! 969: ! 970: If the usage of an entire class of registers depends on the target ! 971: flags, you may indicate this to GCC by using this macro to modify ! 972: `fixed_regs' and `call_used_regs' to 1 for each of the registers ! 973: in the classes which should not be used by GCC. Also define the ! 974: macro `REG_CLASS_FROM_LETTER' to return `NO_REGS' if it is called ! 975: with a letter for a class that shouldn't be used. ! 976: ! 977: (However, if this class is not included in `GENERAL_REGS' and all ! 978: of the insn patterns whose constraints permit this class are ! 979: controlled by target switches, then GCC will automatically avoid ! 980: using these registers when the target switches are opposed to ! 981: them.) ! 982: ! 983: `NON_SAVING_SETJMP' ! 984: If this macro is defined and has a nonzero value, it means that ! 985: `setjmp' and related functions fail to save the registers, or that ! 986: `longjmp' fails to restore them. To compensate, the compiler ! 987: avoids putting variables in registers in functions that use ! 988: `setjmp'. ! 989: ! 990: `INCOMING_REGNO (OUT)' ! 991: Define this macro if the target machine has register windows. ! 992: This C expression returns the register number as seen by the ! 993: called function corresponding to the register number OUT as seen ! 994: by the calling function. Return OUT if register number OUT is not ! 995: an outbound register. ! 996: ! 997: `OUTGOING_REGNO (IN)' ! 998: Define this macro if the target machine has register windows. ! 999: This C expression returns the register number as seen by the ! 1000: calling function corresponding to the register number IN as seen ! 1001: by the called function. Return IN if register number IN is not an ! 1002: inbound register. ! 1003: ! 1004: ! 1005: File: gcc.info, Node: Allocation Order, Next: Values in Registers, Prev: Register Basics, Up: Registers ! 1006: ! 1007: Order of Allocation of Registers ! 1008: -------------------------------- ! 1009: ! 1010: `REG_ALLOC_ORDER' ! 1011: If defined, an initializer for a vector of integers, containing the ! 1012: numbers of hard registers in the order in which GNU CC should ! 1013: prefer to use them (from most preferred to least). ! 1014: ! 1015: If this macro is not defined, registers are used lowest numbered ! 1016: first (all else being equal). ! 1017: ! 1018: One use of this macro is on machines where the highest numbered ! 1019: registers must always be saved and the save-multiple-registers ! 1020: instruction supports only sequences of consecutive registers. On ! 1021: such machines, define `REG_ALLOC_ORDER' to be an initializer that ! 1022: lists the highest numbered allocatable register first. ! 1023: ! 1024: `ORDER_REGS_FOR_LOCAL_ALLOC' ! 1025: A C statement (sans semicolon) to choose the order in which to ! 1026: allocate hard registers for pseudo-registers local to a basic ! 1027: block. ! 1028: ! 1029: Store the desired register order in the array `reg_alloc_order'. ! 1030: Element 0 should be the register to allocate first; element 1, the ! 1031: next register; and so on. ! 1032: ! 1033: The macro body should not assume anything about the contents of ! 1034: `reg_alloc_order' before execution of the macro. ! 1035: ! 1036: On most machines, it is not necessary to define this macro. ! 1037: ! 1038: ! 1039: File: gcc.info, Node: Values in Registers, Next: Leaf Functions, Prev: Allocation Order, Up: Registers ! 1040: ! 1041: How Values Fit in Registers ! 1042: --------------------------- ! 1043: ! 1044: This section discusses the macros that describe which kinds of values ! 1045: (specifically, which machine modes) each register can hold, and how many ! 1046: consecutive registers are needed for a given mode. ! 1047: ! 1048: `HARD_REGNO_NREGS (REGNO, MODE)' ! 1049: A C expression for the number of consecutive hard registers, ! 1050: starting at register number REGNO, required to hold a value of mode ! 1051: MODE. ! 1052: ! 1053: On a machine where all registers are exactly one word, a suitable ! 1054: definition of this macro is ! 1055: ! 1056: #define HARD_REGNO_NREGS(REGNO, MODE) \ ! 1057: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \ ! 1058: / UNITS_PER_WORD)) ! 1059: ! 1060: `HARD_REGNO_MODE_OK (REGNO, MODE)' ! 1061: A C expression that is nonzero if it is permissible to store a ! 1062: value of mode MODE in hard register number REGNO (or in several ! 1063: registers starting with that one). For a machine where all ! 1064: registers are equivalent, a suitable definition is ! 1065: ! 1066: #define HARD_REGNO_MODE_OK(REGNO, MODE) 1 ! 1067: ! 1068: It is not necessary for this macro to check for the numbers of ! 1069: fixed registers, because the allocation mechanism considers them ! 1070: to be always occupied. ! 1071: ! 1072: On some machines, double-precision values must be kept in even/odd ! 1073: register pairs. The way to implement that is to define this macro ! 1074: to reject odd register numbers for such modes. ! 1075: ! 1076: The minimum requirement for a mode to be OK in a register is that ! 1077: the `movMODE' instruction pattern support moves between the ! 1078: register and any other hard register for which the mode is OK; and ! 1079: that moving a value into the register and back out not alter it. ! 1080: ! 1081: Since the same instruction used to move `SImode' will work for all ! 1082: narrower integer modes, it is not necessary on any machine for ! 1083: `HARD_REGNO_MODE_OK' to distinguish between these modes, provided ! 1084: you define patterns `movhi', etc., to take advantage of this. This ! 1085: is useful because of the interaction between `HARD_REGNO_MODE_OK' ! 1086: and `MODES_TIEABLE_P'; it is very desirable for all integer modes ! 1087: to be tieable. ! 1088: ! 1089: Many machines have special registers for floating point arithmetic. ! 1090: Often people assume that floating point machine modes are allowed ! 1091: only in floating point registers. This is not true. Any ! 1092: registers that can hold integers can safely *hold* a floating ! 1093: point machine mode, whether or not floating arithmetic can be done ! 1094: on it in those registers. Integer move instructions can be used ! 1095: to move the values. ! 1096: ! 1097: On some machines, though, the converse is true: fixed-point machine ! 1098: modes may not go in floating registers. This is true if the ! 1099: floating registers normalize any value stored in them, because ! 1100: storing a non-floating value there would garble it. In this case, ! 1101: `HARD_REGNO_MODE_OK' should reject fixed-point machine modes in ! 1102: floating registers. But if the floating registers do not ! 1103: automatically normalize, if you can store any bit pattern in one ! 1104: and retrieve it unchanged without a trap, then any machine mode ! 1105: may go in a floating register, so you can define this macro to say ! 1106: so. ! 1107: ! 1108: On some machines, such as the Sparc and the Mips, we get better ! 1109: code by defining `HARD_REGNO_MODE_OK' to forbid integers in ! 1110: floating registers, even though the hardware is capable of ! 1111: handling them. This is because transferring values between ! 1112: floating registers and general registers is so slow that it is ! 1113: better to keep the integer in memory. ! 1114: ! 1115: The primary significance of special floating registers is rather ! 1116: that they are the registers acceptable in floating point arithmetic ! 1117: instructions. However, this is of no concern to ! 1118: `HARD_REGNO_MODE_OK'. You handle it by writing the proper ! 1119: constraints for those instructions. ! 1120: ! 1121: On some machines, the floating registers are especially slow to ! 1122: access, so that it is better to store a value in a stack frame ! 1123: than in such a register if floating point arithmetic is not being ! 1124: done. As long as the floating registers are not in class ! 1125: `GENERAL_REGS', they will not be used unless some pattern's ! 1126: constraint asks for one. ! 1127: ! 1128: `MODES_TIEABLE_P (MODE1, MODE2)' ! 1129: A C expression that is nonzero if it is desirable to choose ! 1130: register allocation so as to avoid move instructions between a ! 1131: value of mode MODE1 and a value of mode MODE2. ! 1132: ! 1133: If `HARD_REGNO_MODE_OK (R, MODE1)' and `HARD_REGNO_MODE_OK (R, ! 1134: MODE2)' are ever different for any R, then `MODES_TIEABLE_P (MODE1, ! 1135: MODE2)' must be zero. ! 1136: ! 1137: ! 1138: File: gcc.info, Node: Leaf Functions, Next: Stack Registers, Prev: Values in Registers, Up: Registers ! 1139: ! 1140: Handling Leaf Functions ! 1141: ----------------------- ! 1142: ! 1143: On some machines, a leaf function (i.e., one which makes no calls) ! 1144: can run more efficiently if it does not make its own register window. ! 1145: Often this means it is required to receive its arguments in the ! 1146: registers where they are passed by the caller, instead of the registers ! 1147: where they would normally arrive. ! 1148: ! 1149: The special treatment for leaf functions generally applies only when ! 1150: other conditions are met; for example, often they may use only those ! 1151: registers for its own variables and temporaries. We use the term "leaf ! 1152: function" to mean a function that is suitable for this special ! 1153: handling, so that functions with no calls are not necessarily "leaf ! 1154: functions". ! 1155: ! 1156: GNU CC assigns register numbers before it knows whether the function ! 1157: is suitable for leaf function treatment. So it needs to renumber the ! 1158: registers in order to output a leaf function. The following macros ! 1159: accomplish this. ! 1160: ! 1161: `LEAF_REGISTERS' ! 1162: A C initializer for a vector, indexed by hard register number, ! 1163: which contains 1 for a register that is allowable in a candidate ! 1164: for leaf function treatment. ! 1165: ! 1166: If leaf function treatment involves renumbering the registers, ! 1167: then the registers marked here should be the ones before ! 1168: renumbering--those that GNU CC would ordinarily allocate. The ! 1169: registers which will actually be used in the assembler code, after ! 1170: renumbering, should not be marked with 1 in this vector. ! 1171: ! 1172: Define this macro only if the target machine offers a way to ! 1173: optimize the treatment of leaf functions. ! 1174: ! 1175: `LEAF_REG_REMAP (REGNO)' ! 1176: A C expression whose value is the register number to which REGNO ! 1177: should be renumbered, when a function is treated as a leaf ! 1178: function. ! 1179: ! 1180: If REGNO is a register number which should not appear in a leaf ! 1181: function before renumbering, then the expression should yield -1, ! 1182: which will cause the compiler to abort. ! 1183: ! 1184: Define this macro only if the target machine offers a way to ! 1185: optimize the treatment of leaf functions, and registers need to be ! 1186: renumbered to do this. ! 1187: ! 1188: `REG_LEAF_ALLOC_ORDER' ! 1189: If defined, an initializer for a vector of integers, containing the ! 1190: numbers of hard registers in the order in which the GNU CC should ! 1191: prefer to use them (from most preferred to least) in a leaf ! 1192: function. If this macro is not defined, REG_ALLOC_ORDER is used ! 1193: for both non-leaf and leaf-functions. ! 1194: ! 1195: Normally, `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE' must treat ! 1196: leaf functions specially. It can test the C variable `leaf_function' ! 1197: which is nonzero for leaf functions. (The variable `leaf_function' is ! 1198: defined only if `LEAF_REGISTERS' is defined.) ! 1199: ! 1200: ! 1201: File: gcc.info, Node: Stack Registers, Next: Obsolete Register Macros, Prev: Leaf Functions, Up: Registers ! 1202: ! 1203: Registers That Form a Stack ! 1204: --------------------------- ! 1205: ! 1206: There are special features to handle computers where some of the ! 1207: "registers" form a stack, as in the 80387 coprocessor for the 80386. ! 1208: Stack registers are normally written by pushing onto the stack, and are ! 1209: numbered relative to the top of the stack. ! 1210: ! 1211: Currently, GNU CC can only handle one group of stack-like registers, ! 1212: and they must be consecutively numbered. ! 1213: ! 1214: `STACK_REGS' ! 1215: Define this if the machine has any stack-like registers. ! 1216: ! 1217: `FIRST_STACK_REG' ! 1218: The number of the first stack-like register. This one is the top ! 1219: of the stack. ! 1220: ! 1221: `LAST_STACK_REG' ! 1222: The number of the last stack-like register. This one is the ! 1223: bottom of the stack. ! 1224:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.