|
|
1.1 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.43 from the input ! 2: file gcc.texi. ! 3: ! 4: This file documents the use and the internals of the GNU compiler. ! 5: ! 6: Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc. ! 7: ! 8: Permission is granted to make and distribute verbatim copies of ! 9: this manual provided the copyright notice and this permission notice ! 10: are preserved on all copies. ! 11: ! 12: Permission is granted to copy and distribute modified versions of ! 13: this manual under the conditions for verbatim copying, provided also ! 14: that the section entitled "GNU General Public License" is included ! 15: exactly as in the original, and provided that the entire resulting ! 16: derived work is distributed under the terms of a permission notice ! 17: identical to this one. ! 18: ! 19: Permission is granted to copy and distribute translations of this ! 20: manual into another language, under the above conditions for modified ! 21: versions, except that the section entitled "GNU General Public ! 22: License" and this permission notice may be included in translations ! 23: approved by the Free Software Foundation instead of in the original ! 24: English. ! 25: ! 26: ! 27: File: gcc.info, Node: Storage Layout, Next: Type Layout, Prev: Run-time Target, Up: Machine Macros ! 28: ! 29: Storage Layout ! 30: ============== ! 31: ! 32: Note that the definitions of the macros in this table which are ! 33: sizes or alignments measured in bits do not need to be constant. They ! 34: can be C expressions that refer to static variables, such as the ! 35: `target_flags'. *Note Run-time Target::. ! 36: ! 37: `BITS_BIG_ENDIAN' ! 38: Define this macro to be the value 1 if the most significant bit ! 39: in a byte has the lowest number; otherwise define it to be the ! 40: value zero. This means that bit-field instructions count from ! 41: the most significant bit. If the machine has no bit-field ! 42: instructions, this macro is irrelevant. ! 43: ! 44: This macro does not affect the way structure fields are packed ! 45: into bytes or words; that is controlled by `BYTES_BIG_ENDIAN'. ! 46: ! 47: `BYTES_BIG_ENDIAN' ! 48: Define this macro to be 1 if the most significant byte in a word ! 49: has the lowest number. ! 50: ! 51: `WORDS_BIG_ENDIAN' ! 52: Define this macro to be 1 if, in a multiword object, the most ! 53: significant word has the lowest number. ! 54: ! 55: `BITS_PER_UNIT' ! 56: Number of bits in an addressable storage unit (byte); normally 8. ! 57: ! 58: `BITS_PER_WORD' ! 59: Number of bits in a word; normally 32. ! 60: ! 61: `MAX_BITS_PER_WORD' ! 62: Maximum number of bits in a word. If this is undefined, the ! 63: default is `BITS_PER_WORD'. Otherwise, it is the constant value ! 64: that is the largest value that `BITS_PER_WORD' can have at ! 65: run-time. ! 66: ! 67: `UNITS_PER_WORD' ! 68: Number of storage units in a word; normally 4. ! 69: ! 70: `POINTER_SIZE' ! 71: Width of a pointer, in bits. ! 72: ! 73: `PARM_BOUNDARY' ! 74: Normal alignment required for function parameters on the stack, in ! 75: bits. All stack parameters receive least this much alignment ! 76: regardless of data type. On most machines, this is the same as ! 77: the size of an integer. ! 78: ! 79: `STACK_BOUNDARY' ! 80: Define this macro if you wish to preserve a certain alignment for ! 81: the stack pointer. The definition is a C expression for the ! 82: desired alignment (measured in bits). ! 83: ! 84: If `PUSH_ROUNDING' is not defined, the stack will always be ! 85: aligned to the specified boundary. If `PUSH_ROUNDING' is defined ! 86: and specifies a less strict alignment than `STACK_BOUNDARY', the ! 87: stack may be momentarily unaligned while pushing arguments. ! 88: ! 89: `FUNCTION_BOUNDARY' ! 90: Alignment required for a function entry point, in bits. ! 91: ! 92: `BIGGEST_ALIGNMENT' ! 93: Biggest alignment that any data type can require on this machine, ! 94: in bits. ! 95: ! 96: `BIGGEST_FIELD_ALIGNMENT' ! 97: Biggest alignment that any structure field can require on this ! 98: machine, in bits. ! 99: ! 100: `MAX_OFILE_ALIGNMENT' ! 101: Biggest alignment supported by the object file format of this ! 102: machine. Use this macro to limit the alignment which can be ! 103: specified using the `__attribute__ ((aligned (N)))' construct. ! 104: If not defined, the default value is `BIGGEST_ALIGNMENT'. ! 105: ! 106: `DATA_ALIGNMENT (TYPE, BASIC-ALIGN)' ! 107: If defined, a C expression to compute the alignment for a static ! 108: variable. TYPE is the data type, and BASIC-ALIGN is the ! 109: alignment that the object would ordinarily have. The value of ! 110: this macro is used instead of that alignment to align the object. ! 111: ! 112: If this macro is not defined, then BASIC-ALIGN is used. ! 113: ! 114: One use of this macro is to increase alignment of medium-size ! 115: data to make it all fit in fewer cache lines. Another is to ! 116: cause character arrays to be word-aligned so that `strcpy' calls ! 117: that copy constants to character arrays can be done inline. ! 118: ! 119: `CONSTANT_ALIGNMENT (CONSTANT, BASIC-ALIGN)' ! 120: If defined, a C expression to compute the alignment given to a ! 121: constant that is being placed in memory. CONSTANT is the ! 122: constant and BASIC-ALIGN is the alignment that the object would ! 123: ordinarily have. The value of this macro is used instead of that ! 124: alignment to align the object. ! 125: ! 126: If this macro is not defined, then BASIC-ALIGN is used. ! 127: ! 128: The typical use of this macro is to increase alignment for string ! 129: constants to be word aligned so that `strcpy' calls that copy ! 130: constants can be done inline. ! 131: ! 132: `EMPTY_FIELD_BOUNDARY' ! 133: Alignment in bits to be given to a structure bit field that ! 134: follows an empty field such as `int : 0;'. ! 135: ! 136: `STRUCTURE_SIZE_BOUNDARY' ! 137: Number of bits which any structure or union's size must be a ! 138: multiple of. Each structure or union's size is rounded up to a ! 139: multiple of this. ! 140: ! 141: If you do not define this macro, the default is the same as ! 142: `BITS_PER_UNIT'. ! 143: ! 144: `STRICT_ALIGNMENT' ! 145: Define this if instructions will fail to work if given data not ! 146: on the nominal alignment. If instructions will merely go slower ! 147: in that case, do not define this macro. ! 148: ! 149: `PCC_BITFIELD_TYPE_MATTERS' ! 150: Define this if you wish to imitate the way many other C compilers ! 151: handle alignment of bitfields and the structures that contain ! 152: them. ! 153: ! 154: The behavior is that the type written for a bitfield (`int', ! 155: `short', or other integer type) imposes an alignment for the ! 156: entire structure, as if the structure really did contain an ! 157: ordinary field of that type. In addition, the bitfield is placed ! 158: within the structure so that it would fit within such a field, ! 159: not crossing a boundary for it. ! 160: ! 161: Thus, on most machines, a bitfield whose type is written as `int' ! 162: would not cross a four-byte boundary, and would force four-byte ! 163: alignment for the whole structure. (The alignment used may not ! 164: be four bytes; it is controlled by the other alignment ! 165: parameters.) ! 166: ! 167: If the macro is defined, its definition should be a C expression; ! 168: a nonzero value for the expression enables this behavior. ! 169: ! 170: Note that if this macro is not defined, or its value is zero, some ! 171: bitfields may cross more than one alignment boundary. The ! 172: compiler can support such references if there are `insv', `extv', ! 173: and `extzv' insns that can directly reference memory. ! 174: ! 175: The other known way of making bitfields work is to define ! 176: `STRUCTURE_SIZE_BOUNDARY' as large as `BIGGEST_ALIGNMENT'. Then ! 177: every structure can be accessed with fullwords. ! 178: ! 179: Unless the machine has bitfield instructions or you define ! 180: `STRUCTURE_SIZE_BOUNDARY' that way, you must define ! 181: `PCC_BITFIELD_TYPE_MATTERS' to have a nonzero value. ! 182: ! 183: `BITFIELD_NBYTES_LIMITED' ! 184: Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited ! 185: to aligning a bitfield within the structure. ! 186: ! 187: `ROUND_TYPE_SIZE (STRUCT, SIZE, ALIGN)' ! 188: Define this macro as an expression for the overall size of a ! 189: structure (given by STRUCT as a tree node) when the size computed ! 190: from the fields is SIZE and the alignment is ALIGN. ! 191: ! 192: The default is to round SIZE up to a multiple of ALIGN. ! 193: ! 194: `ROUND_TYPE_ALIGN (STRUCT, COMPUTED, SPECIFIED)' ! 195: Define this macro as an expression for the alignment of a ! 196: structure (given by STRUCT as a tree node) if the alignment ! 197: computed in the usual way is COMPUTED and the alignment ! 198: explicitly specified was SPECIFIED. ! 199: ! 200: The default is to use SPECIFIED if it is larger; otherwise, use ! 201: the smaller of COMPUTED and `BIGGEST_ALIGNMENT' ! 202: ! 203: `MAX_FIXED_MODE_SIZE' ! 204: An integer expression for the size in bits of the largest integer ! 205: machine mode that should actually be used. All integer machine ! 206: modes of this size or smaller can be used for structures and ! 207: unions with the appropriate sizes. If this macro is undefined, ! 208: `GET_MODE_BITSIZE (DImode)' is assumed. ! 209: ! 210: `CHECK_FLOAT_VALUE (MODE, VALUE)' ! 211: A C statement to validate the value VALUE (of type `double') for ! 212: mode MODE. This means that you check whether VALUE fits within ! 213: the possible range of values for mode MODE on this target ! 214: machine. The mode MODE is always `SFmode' or `DFmode'. ! 215: ! 216: If VALUE is not valid, you should call `error' to print an error ! 217: message and then assign some valid value to VALUE. Allowing an ! 218: invalid value to go through the compiler can produce incorrect ! 219: assembler code which may even cause Unix assemblers to crash. ! 220: ! 221: This macro need not be defined if there is no work for it to do. ! 222: ! 223: `TARGET_FLOAT_FORMAT' ! 224: A code distinguishing the floating point format of the target ! 225: machine. There are three defined values: ! 226: ! 227: `IEEE_FLOAT_FORMAT' ! 228: This code indicates IEEE floating point. It is the default; ! 229: there is no need to define this macro when the format is ! 230: IEEE. ! 231: ! 232: `VAX_FLOAT_FORMAT' ! 233: This code indicates the peculiar format used on the Vax. ! 234: ! 235: `UNKNOWN_FLOAT_FORMAT' ! 236: This code indicates any other format. ! 237: ! 238: The value of this macro is compared with `HOST_FLOAT_FORMAT' ! 239: (*note Config::.) to determine whether the target machine has the ! 240: same format as the host machine. If any other formats are ! 241: actually in use on supported machines, new codes should be ! 242: defined for them. ! 243: ! 244: ! 245: File: gcc.info, Node: Type Layout, Next: Registers, Prev: Storage Layout, Up: Machine Macros ! 246: ! 247: Layout of Source Language Data Types ! 248: ==================================== ! 249: ! 250: These macros define the sizes and other characteristics of the ! 251: standard basic data types used in programs being compiled. Unlike the ! 252: macros in the previous section, these apply to specific features of C ! 253: and related languages, rather than to fundamental aspects of storage ! 254: layout. ! 255: ! 256: `INT_TYPE_SIZE' ! 257: A C expression for the size in bits of the type `int' on the ! 258: target machine. If you don't define this, the default is one ! 259: word. ! 260: ! 261: `SHORT_TYPE_SIZE' ! 262: A C expression for the size in bits of the type `short' on the ! 263: target machine. If you don't define this, the default is half a ! 264: word. (If this would be less than one storage unit, it is ! 265: rounded up to one unit.) ! 266: ! 267: `LONG_TYPE_SIZE' ! 268: A C expression for the size in bits of the type `long' on the ! 269: target machine. If you don't define this, the default is one ! 270: word. ! 271: ! 272: `LONG_LONG_TYPE_SIZE' ! 273: A C expression for the size in bits of the type `long long' on the ! 274: target machine. If you don't define this, the default is two ! 275: words. ! 276: ! 277: `CHAR_TYPE_SIZE' ! 278: A C expression for the size in bits of the type `char' on the ! 279: target machine. If you don't define this, the default is one ! 280: quarter of a word. (If this would be less than one storage unit, ! 281: it is rounded up to one unit.) ! 282: ! 283: `FLOAT_TYPE_SIZE' ! 284: A C expression for the size in bits of the type `float' on the ! 285: target machine. If you don't define this, the default is one ! 286: word. ! 287: ! 288: `DOUBLE_TYPE_SIZE' ! 289: A C expression for the size in bits of the type `double' on the ! 290: target machine. If you don't define this, the default is two ! 291: words. ! 292: ! 293: `LONG_DOUBLE_TYPE_SIZE' ! 294: A C expression for the size in bits of the type `long double' on ! 295: the target machine. If you don't define this, the default is two ! 296: words. ! 297: ! 298: `DEFAULT_SIGNED_CHAR' ! 299: An expression whose value is 1 or 0, according to whether the type ! 300: `char' should be signed or unsigned by default. The user can ! 301: always override this default with the options `-fsigned-char' and ! 302: `-funsigned-char'. ! 303: ! 304: `DEFAULT_SHORT_ENUMS' ! 305: A C expression to determine whether to give an `enum' type only ! 306: as many bytes as it takes to represent the range of possible ! 307: values of that type. A nonzero value means to do that; a zero ! 308: value means all `enum' types should be allocated like `int'. ! 309: ! 310: If you don't define the macro, the default is 0. ! 311: ! 312: `SIZE_TYPE' ! 313: A C expression for a string describing the name of the data type ! 314: to use for size values. The typedef name `size_t' is defined ! 315: using the contents of the string. ! 316: ! 317: The string can contain more than one keyword. If so, separate ! 318: them with spaces, and write first any length keyword, then ! 319: `unsigned' if appropriate, and finally `int'. The string must ! 320: exactly match one of the data type names defined in the function ! 321: `init_decl_processing' in the file `c-decl.c'. You may not omit ! 322: `int' or change the order--that would cause the compiler to crash ! 323: on startup. ! 324: ! 325: If you don't define this macro, the default is `"long unsigned ! 326: int"'. ! 327: ! 328: `PTRDIFF_TYPE' ! 329: A C expression for a string describing the name of the data type ! 330: to use for the result of subtracting two pointers. The typedef ! 331: name `ptrdiff_t' is defined using the contents of the string. See ! 332: `SIZE_TYPE' above for more information. ! 333: ! 334: If you don't define this macro, the default is `"long int"'. ! 335: ! 336: `WCHAR_TYPE' ! 337: A C expression for a string describing the name of the data type ! 338: to use for wide characters. The typedef name `wchar_t' is ! 339: defined using the contents of the string. See `SIZE_TYPE' above ! 340: for more information. ! 341: ! 342: If you don't define this macro, the default is `"int"'. ! 343: ! 344: `WCHAR_TYPE_SIZE' ! 345: A C expression for the size in bits of the data type for wide ! 346: characters. This is used in `cpp', which cannot make use of ! 347: `WCHAR_TYPE'. ! 348: ! 349: `OBJC_INT_SELECTORS' ! 350: Define this macro if the type of Objective C selectors should be ! 351: `int'. ! 352: ! 353: If this macro is not defined, then selectors should have the type ! 354: `struct objc_selector *'. ! 355: ! 356: `OBJC_NONUNIQUE_SELECTORS' ! 357: Define this macro if Objective C selector-references will be made ! 358: unique by the linker (this is the default). In this case, each ! 359: selector-reference will be given a separate assembler label. ! 360: Otherwise, the selector-references will be gathered into an array ! 361: with a single assembler label. ! 362: ! 363: `MULTIBYTE_CHARS' ! 364: Define this macro to enable support for multibyte characters in ! 365: the input to GNU CC. This requires that the host system support ! 366: the ANSI C library functions for converting multibyte characters ! 367: to wide characters. ! 368: ! 369: `TARGET_BELL' ! 370: A C constant expression for the integer value for escape sequence ! 371: `\a'. ! 372: ! 373: `TARGET_BS' ! 374: `TARGET_TAB' ! 375: `TARGET_NEWLINE' ! 376: C constant expressions for the integer values for escape sequences ! 377: `\b', `\t' and `\n'. ! 378: ! 379: `TARGET_VT' ! 380: `TARGET_FF' ! 381: `TARGET_CR' ! 382: C constant expressions for the integer values for escape sequences ! 383: `\v', `\f' and `\r'. ! 384: ! 385: ! 386: File: gcc.info, Node: Registers, Next: Register Classes, Prev: Type Layout, Up: Machine Macros ! 387: ! 388: Register Usage ! 389: ============== ! 390: ! 391: This section explains how to describe what registers the target ! 392: machine has, and how (in general) they can be used. ! 393: ! 394: The description of which registers a specific instruction can use is ! 395: done with register classes; see *Note Register Classes::. For ! 396: information on using registers to access a stack frame, see *Note ! 397: Frame Registers::. For passing values in registers, see *Note ! 398: Register Arguments::. For returning values in registers, see *Note ! 399: Scalar Return::. ! 400: ! 401: * Menu: ! 402: ! 403: * Register Basics:: Number and kinds of registers. ! 404: * Allocation Order:: Order in which registers are allocated. ! 405: * Values in Registers:: What kinds of values each reg can hold. ! 406: * Leaf Functions:: Renumbering registers for leaf functions. ! 407: * Stack Registers:: Handling a register stack such as 80387. ! 408: * Obsolete Register Macros:: Macros formerly used for the 80387. ! 409: ! 410: ! 411: File: gcc.info, Node: Register Basics, Next: Allocation Order, Up: Registers ! 412: ! 413: Basic Characteristics of Registers ! 414: ---------------------------------- ! 415: ! 416: `FIRST_PSEUDO_REGISTER' ! 417: Number of hardware registers known to the compiler. They receive ! 418: numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first ! 419: pseudo register's number really is assigned the number ! 420: `FIRST_PSEUDO_REGISTER'. ! 421: ! 422: `FIXED_REGISTERS' ! 423: An initializer that says which registers are used for fixed ! 424: purposes all throughout the compiled code and are therefore not ! 425: available for general allocation. These would include the stack ! 426: pointer, the frame pointer (except on machines where that can be ! 427: used as a general register when no frame pointer is needed), the ! 428: program counter on machines where that is considered one of the ! 429: addressable registers, and any other numbered register with a ! 430: standard use. ! 431: ! 432: This information is expressed as a sequence of numbers, separated ! 433: by commas and surrounded by braces. The Nth number is 1 if ! 434: register N is fixed, 0 otherwise. ! 435: ! 436: The table initialized from this macro, and the table initialized ! 437: by the following one, may be overridden at run time either ! 438: automatically, by the actions of the macro ! 439: `CONDITIONAL_REGISTER_USAGE', or by the user with the command ! 440: options `-ffixed-REG', `-fcall-used-REG' and `-fcall-saved-REG'. ! 441: ! 442: `CALL_USED_REGISTERS' ! 443: Like `FIXED_REGISTERS' but has 1 for each register that is ! 444: clobbered (in general) by function calls as well as for fixed ! 445: registers. This macro therefore identifies the registers that ! 446: are not available for general allocation of values that must live ! 447: across function calls. ! 448: ! 449: If a register has 0 in `CALL_USED_REGISTERS', the compiler ! 450: automatically saves it on function entry and restores it on ! 451: function exit, if the register is used within the function. ! 452: ! 453: `CONDITIONAL_REGISTER_USAGE' ! 454: Zero or more C statements that may conditionally modify two ! 455: variables `fixed_regs' and `call_used_regs' (both of type `char ! 456: []') after they have been initialized from the two preceding ! 457: macros. ! 458: ! 459: This is necessary in case the fixed or call-clobbered registers ! 460: depend on target flags. ! 461: ! 462: You need not define this macro if it has no work to do. ! 463: ! 464: If the usage of an entire class of registers depends on the target ! 465: flags, you may indicate this to GCC by using this macro to modify ! 466: `fixed_regs' and `call_used_regs' to 1 for each of the registers ! 467: in the classes which should not be used by GCC. Also define the ! 468: macro `REG_CLASS_FROM_LETTER' to return `NO_REGS' if it is called ! 469: with a letter for a class that shouldn't be used. ! 470: ! 471: (However, if this class is not included in `GENERAL_REGS' and all ! 472: of the insn patterns whose constraints permit this class are ! 473: controlled by target switches, then GCC will automatically avoid ! 474: using these registers when the target switches are opposed to ! 475: them.) ! 476: ! 477: `NON_SAVING_SETJMP' ! 478: If this macro is defined and has a nonzero value, it means that ! 479: `setjmp' and related functions fail to save the registers, or that ! 480: `longjmp' fails to restore them. To compensate, the compiler ! 481: avoids putting variables in registers in functions that use ! 482: `setjmp'. ! 483: ! 484: ! 485: File: gcc.info, Node: Allocation Order, Next: Values in Registers, Prev: Register Basics, Up: Registers ! 486: ! 487: Order of Allocation of Registers ! 488: -------------------------------- ! 489: ! 490: `REG_ALLOC_ORDER' ! 491: If defined, an initializer for a vector of integers, containing ! 492: the numbers of hard registers in the order in which GNU CC should ! 493: prefer to use them (from most preferred to least). ! 494: ! 495: If this macro is not defined, registers are used lowest numbered ! 496: first (all else being equal). ! 497: ! 498: One use of this macro is on machines where the highest numbered ! 499: registers must always be saved and the save-multiple-registers ! 500: instruction supports only sequences of consecutive registers. On ! 501: such machines, define `REG_ALLOC_ORDER' to be an initializer that ! 502: lists the highest numbered allocatable register first. ! 503: ! 504: `ORDER_REGS_FOR_LOCAL_ALLOC' ! 505: A C statement (sans semicolon) to choose the order in which to ! 506: allocate hard registers for pseudo-registers local to a basic ! 507: block. ! 508: ! 509: Store the desired order of registers in the array ! 510: `reg_alloc_order'. Element 0 should be the register to allocate ! 511: first; element 1, the next register; and so on. ! 512: ! 513: The macro body should not assume anything about the contents of ! 514: `reg_alloc_order' before execution of the macro. ! 515: ! 516: On most machines, it is not necessary to define this macro. ! 517: ! 518: ! 519: File: gcc.info, Node: Values in Registers, Next: Leaf Functions, Prev: Allocation Order, Up: Registers ! 520: ! 521: How Values Fit in Registers ! 522: --------------------------- ! 523: ! 524: This section discusses the macros that describe which kinds of ! 525: values (specifically, which machine modes) each register can hold, and ! 526: how many consecutive registers are needed for a given mode. ! 527: ! 528: `HARD_REGNO_NREGS (REGNO, MODE)' ! 529: A C expression for the number of consecutive hard registers, ! 530: starting at register number REGNO, required to hold a value of ! 531: mode MODE. ! 532: ! 533: On a machine where all registers are exactly one word, a suitable ! 534: definition of this macro is ! 535: ! 536: #define HARD_REGNO_NREGS(REGNO, MODE) \ ! 537: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \ ! 538: / UNITS_PER_WORD)) ! 539: ! 540: `HARD_REGNO_MODE_OK (REGNO, MODE)' ! 541: A C expression that is nonzero if it is permissible to store a ! 542: value of mode MODE in hard register number REGNO (or in several ! 543: registers starting with that one). For a machine where all ! 544: registers are equivalent, a suitable definition is ! 545: ! 546: #define HARD_REGNO_MODE_OK(REGNO, MODE) 1 ! 547: ! 548: It is not necessary for this macro to check for the numbers of ! 549: fixed registers, because the allocation mechanism considers them ! 550: to be always occupied. ! 551: ! 552: On some machines, double-precision values must be kept in even/odd ! 553: register pairs. The way to implement that is to define this macro ! 554: to reject odd register numbers for such modes. ! 555: ! 556: The minimum requirement for a mode to be OK in a register is that ! 557: the `movMODE' instruction pattern support moves between the ! 558: register and any other hard register for which the mode is OK; ! 559: and that moving a value into the register and back out not alter ! 560: it. ! 561: ! 562: Since the same instruction used to move `SImode' will work for all ! 563: narrower integer modes, it is not necessary on any machine for ! 564: `HARD_REGNO_MODE_OK' to distinguish between these modes, provided ! 565: you define patterns `movhi', etc., to take advantage of this. ! 566: This is useful because of the interaction between ! 567: `HARD_REGNO_MODE_OK' and `MODES_TIEABLE_P'; it is very desirable ! 568: for all integer modes to be tieable. ! 569: ! 570: Many machines have special registers for floating point ! 571: arithmetic. Often people assume that floating point machine ! 572: modes are allowed only in floating point registers. This is not ! 573: true. Any registers that can hold integers can safely *hold* a ! 574: floating point machine mode, whether or not floating arithmetic ! 575: can be done on it in those registers. Integer move instructions ! 576: can be used to move the values. ! 577: ! 578: On some machines, though, the converse is true: fixed-point ! 579: machine modes may not go in floating registers. This is true if ! 580: the floating registers normalize any value stored in them, ! 581: because storing a non-floating value there would garble it. In ! 582: this case, `HARD_REGNO_MODE_OK' should reject fixed-point machine ! 583: modes in floating registers. But if the floating registers do ! 584: not automatically normalize, if you can store any bit pattern in ! 585: one and retrieve it unchanged without a trap, then any machine ! 586: mode may go in a floating register and this macro should say so. ! 587: ! 588: The primary significance of special floating registers is rather ! 589: that they are the registers acceptable in floating point ! 590: arithmetic instructions. However, this is of no concern to ! 591: `HARD_REGNO_MODE_OK'. You handle it by writing the proper ! 592: constraints for those instructions. ! 593: ! 594: On some machines, the floating registers are especially slow to ! 595: access, so that it is better to store a value in a stack frame ! 596: than in such a register if floating point arithmetic is not being ! 597: done. As long as the floating registers are not in class ! 598: `GENERAL_REGS', they will not be used unless some pattern's ! 599: constraint asks for one. ! 600: ! 601: `MODES_TIEABLE_P (MODE1, MODE2)' ! 602: A C expression that is nonzero if it is desirable to choose ! 603: register allocation so as to avoid move instructions between a ! 604: value of mode MODE1 and a value of mode MODE2. ! 605: ! 606: If `HARD_REGNO_MODE_OK (R, MODE1)' and `HARD_REGNO_MODE_OK (R, ! 607: MODE2)' are ever different for any R, then `MODES_TIEABLE_P ! 608: (MODE1, MODE2)' must be zero. ! 609: ! 610: ! 611: File: gcc.info, Node: Leaf Functions, Next: Stack Registers, Prev: Values in Registers, Up: Registers ! 612: ! 613: Handling Leaf Functions ! 614: ----------------------- ! 615: ! 616: On some machines, a leaf function (i.e., one which make no calls) ! 617: can run more efficiently if it does not make its own register window. ! 618: Often this means it is required to receive its arguments in the ! 619: registers where they are passed by the caller, instead of the ! 620: registers where they would normally arrive. Also, the leaf function ! 621: may use only those registers for its own variables and temporaries. ! 622: ! 623: GNU CC assigns register numbers before it knows whether the ! 624: function is suitable for leaf function treatment. So it needs to ! 625: renumber the registers in order to output a leaf function. The ! 626: following macros accomplish this. ! 627: ! 628: `LEAF_REGISTERS' ! 629: A C initializer for a vector, indexed by hard register number, ! 630: which contains 1 for a register that is allowable in a candidate ! 631: for leaf function treatment. ! 632: ! 633: If leaf function treatment involves renumbering the registers, ! 634: then the registers marked here should be the ones before ! 635: renumbering--those that GNU CC would ordinarily allocate. The ! 636: registers which will actually be used in the assembler code, ! 637: after renumbering, should not be marked with 1 in this vector. ! 638: ! 639: Define this macro only if the target machine offers a way to ! 640: optimize the treatment of leaf functions. ! 641: ! 642: `LEAF_REG_REMAP (REGNO)' ! 643: A C expression whose value is the register number to which REGNO ! 644: should be renumbered, when a function is treated as a leaf ! 645: function. ! 646: ! 647: If REGNO is a register number which should not appear in a leaf ! 648: function before renumbering, then the expression should yield -1, ! 649: which will cause the compiler to abort. ! 650: ! 651: Define this macro only if the target machine offers a way to ! 652: optimize the treatment of leaf functions, and registers need to ! 653: be renumbered to do this. ! 654: ! 655: `REG_LEAF_ALLOC_ORDER' ! 656: If defined, an initializer for a vector of integers, containing ! 657: the numbers of hard registers in the order in which the GNU CC ! 658: should prefer to use them (from most preferred to least) in a ! 659: leaf function. If this macro is not defined, REG_ALLOC_ORDER is ! 660: used for both non-leaf and leaf-functions. ! 661: ! 662: Normally, it is necessary for `FUNCTION_PROLOGUE' and ! 663: `FUNCTION_EPILOGUE' to treat leaf functions specially. The C variable ! 664: `leaf_function' is nonzero for such a function. ! 665: ! 666: ! 667: File: gcc.info, Node: Stack Registers, Next: Obsolete Register Macros, Prev: Leaf Functions, Up: Registers ! 668: ! 669: Registers That Form a Stack ! 670: --------------------------- ! 671: ! 672: There are special features to handle computers where some of the ! 673: "registers" form a stack, as in the 80387 coprocessor for the 80386. ! 674: Stack registers are normally written by pushing onto the stack, and are ! 675: numbered relative to the top of the stack. ! 676: ! 677: Currently, GNU CC can only handle one group of stack-like ! 678: registers, and they must be consecutively numbered. ! 679: ! 680: `STACK_REGS' ! 681: Define this if the machine has any stack-like registers. ! 682: ! 683: `FIRST_STACK_REG' ! 684: The number of the first stack-like register. This one is the top ! 685: of the stack. ! 686: ! 687: `LAST_STACK_REG' ! 688: The number of the last stack-like register. This one is the ! 689: bottom of the stack. ! 690: ! 691: ! 692: File: gcc.info, Node: Obsolete Register Macros, Prev: Stack Registers, Up: Registers ! 693: ! 694: Obsolete Macros for Controlling Register Usage ! 695: ---------------------------------------------- ! 696: ! 697: These features do not work very well. They exist because they used ! 698: to be required to generate correct code for the 80387 coprocessor of ! 699: the 80386. They are no longer used by that machine description and ! 700: may be removed in a later version of the compiler. Don't use them! ! 701: ! 702: `OVERLAPPING_REGNO_P (REGNO)' ! 703: If defined, this is a C expression whose value is nonzero if hard ! 704: register number REGNO is an overlapping register. This means a ! 705: hard register which overlaps a hard register with a different ! 706: number. (Such overlap is undesirable, but occasionally it allows ! 707: a machine to be supported which otherwise could not be.) This ! 708: macro must return nonzero for *all* the registers which overlap ! 709: each other. GNU CC can use an overlapping register only in ! 710: certain limited ways. It can be used for allocation within a ! 711: basic block, and may be spilled for reloading; that is all. ! 712: ! 713: If this macro is not defined, it means that none of the hard ! 714: registers overlap each other. This is the usual situation. ! 715: ! 716: `INSN_CLOBBERS_REGNO_P (INSN, REGNO)' ! 717: If defined, this is a C expression whose value should be nonzero ! 718: if the insn INSN has the effect of mysteriously clobbering the ! 719: contents of hard register number REGNO. By "mysterious" we mean ! 720: that the insn's RTL expression doesn't describe such an effect. ! 721: ! 722: If this macro is not defined, it means that no insn clobbers ! 723: registers mysteriously. This is the usual situation; all else ! 724: being equal, it is best for the RTL expression to show all the ! 725: activity. ! 726: ! 727: `PRESERVE_DEATH_INFO_REGNO_P (REGNO)' ! 728: If defined, this is a C expression whose value is nonzero if ! 729: accurate `REG_DEAD' notes are needed for hard register number ! 730: REGNO at the time of outputting the assembler code. When this is ! 731: so, a few optimizations that take place after register allocation ! 732: and could invalidate the death notes are not done when this ! 733: register is involved. ! 734: ! 735: You would arrange to preserve death info for a register when some ! 736: of the code in the machine description which is executed to write ! 737: the assembler code looks at the death notes. This is necessary ! 738: only when the actual hardware feature which GNU CC thinks of as a ! 739: register is not actually a register of the usual sort. (It ! 740: might, for example, be a hardware stack.) ! 741: ! 742: If this macro is not defined, it means that no death notes need ! 743: to be preserved. This is the usual situation. ! 744: ! 745: ! 746: File: gcc.info, Node: Register Classes, Next: Stack and Calling, Prev: Registers, Up: Machine Macros ! 747: ! 748: Register Classes ! 749: ================ ! 750: ! 751: On many machines, the numbered registers are not all equivalent. ! 752: For example, certain registers may not be allowed for indexed ! 753: addressing; certain registers may not be allowed in some instructions. ! 754: These machine restrictions are described to the compiler using ! 755: "register classes". ! 756: ! 757: You define a number of register classes, giving each one a name and ! 758: saying which of the registers belong to it. Then you can specify ! 759: register classes that are allowed as operands to particular ! 760: instruction patterns. ! 761: ! 762: In general, each register will belong to several classes. In fact, ! 763: one class must be named `ALL_REGS' and contain all the registers. ! 764: Another class must be named `NO_REGS' and contain no registers. Often ! 765: the union of two classes will be another class; however, this is not ! 766: required. ! 767: ! 768: One of the classes must be named `GENERAL_REGS'. There is nothing ! 769: terribly special about the name, but the operand constraint letters ! 770: `r' and `g' specify this class. If `GENERAL_REGS' is the same as ! 771: `ALL_REGS', just define it as a macro which expands to `ALL_REGS'. ! 772: ! 773: Order the classes so that if class X is contained in class Y then X ! 774: has a lower class number than Y. ! 775: ! 776: The way classes other than `GENERAL_REGS' are specified in operand ! 777: constraints is through machine-dependent operand constraint letters. ! 778: You can define such letters to correspond to various classes, then use ! 779: them in operand constraints. ! 780: ! 781: You should define a class for the union of two classes whenever some ! 782: instruction allows both classes. For example, if an instruction allows ! 783: either a floating point (coprocessor) register or a general register ! 784: for a certain operand, you should define a class ! 785: `FLOAT_OR_GENERAL_REGS' which includes both of them. Otherwise you ! 786: will get suboptimal code. ! 787: ! 788: You must also specify certain redundant information about the ! 789: register classes: for each class, which classes contain it and which ! 790: ones are contained in it; for each pair of classes, the largest class ! 791: contained in their union. ! 792: ! 793: When a value occupying several consecutive registers is expected in ! 794: a certain class, all the registers used must belong to that class. ! 795: Therefore, register classes cannot be used to enforce a requirement for ! 796: a register pair to start with an even-numbered register. The way to ! 797: specify this requirement is with `HARD_REGNO_MODE_OK'. ! 798: ! 799: Register classes used for input-operands of bitwise-and or shift ! 800: instructions have a special requirement: each such class must have, for ! 801: each fixed-point machine mode, a subclass whose registers can transfer ! 802: that mode to or from memory. For example, on some machines, the ! 803: operations for single-byte values (`QImode') are limited to certain ! 804: registers. When this is so, each register class that is used in a ! 805: bitwise-and or shift instruction must have a subclass consisting of ! 806: registers from which single-byte values can be loaded or stored. This ! 807: is so that `PREFERRED_RELOAD_CLASS' can always have a possible value ! 808: to return. ! 809: ! 810: `enum reg_class' ! 811: An enumeral type that must be defined with all the register class ! 812: names as enumeral values. `NO_REGS' must be first. `ALL_REGS' ! 813: must be the last register class, followed by one more enumeral ! 814: value, `LIM_REG_CLASSES', which is not a register class but rather ! 815: tells how many classes there are. ! 816: ! 817: Each register class has a number, which is the value of casting ! 818: the class name to type `int'. The number serves as an index in ! 819: many of the tables described below. ! 820: ! 821: `N_REG_CLASSES' ! 822: The number of distinct register classes, defined as follows: ! 823: ! 824: #define N_REG_CLASSES (int) LIM_REG_CLASSES ! 825: ! 826: `REG_CLASS_NAMES' ! 827: An initializer containing the names of the register classes as C ! 828: string constants. These names are used in writing some of the ! 829: debugging dumps. ! 830: ! 831: `REG_CLASS_CONTENTS' ! 832: An initializer containing the contents of the register classes, ! 833: as integers which are bit masks. The Nth integer specifies the ! 834: contents of class N. The way the integer MASK is interpreted is ! 835: that register R is in the class if `MASK & (1 << R)' is 1. ! 836: ! 837: When the machine has more than 32 registers, an integer does not ! 838: suffice. Then the integers are replaced by sub-initializers, ! 839: braced groupings containing several integers. Each ! 840: sub-initializer must be suitable as an initializer for the type ! 841: `HARD_REG_SET' which is defined in `hard-reg-set.h'. ! 842: ! 843: `REGNO_REG_CLASS (REGNO)' ! 844: A C expression whose value is a register class containing hard ! 845: register REGNO. In general there is more that one such class; ! 846: choose a class which is "minimal", meaning that no smaller class ! 847: also contains the register. ! 848: ! 849: `BASE_REG_CLASS' ! 850: A macro whose definition is the name of the class to which a valid ! 851: base register must belong. A base register is one used in an ! 852: address which is the register value plus a displacement. ! 853: ! 854: `INDEX_REG_CLASS' ! 855: A macro whose definition is the name of the class to which a valid ! 856: index register must belong. An index register is one used in an ! 857: address where its value is either multiplied by a scale factor or ! 858: added to another register (as well as added to a displacement). ! 859: ! 860: `REG_CLASS_FROM_LETTER (CHAR)' ! 861: A C expression which defines the machine-dependent operand ! 862: constraint letters for register classes. If CHAR is such a ! 863: letter, the value should be the register class corresponding to ! 864: it. Otherwise, the value should be `NO_REGS'. ! 865: ! 866: `REGNO_OK_FOR_BASE_P (NUM)' ! 867: A C expression which is nonzero if register number NUM is ! 868: suitable for use as a base register in operand addresses. It may ! 869: be either a suitable hard register or a pseudo register that has ! 870: been allocated such a hard register. ! 871: ! 872: `REGNO_OK_FOR_INDEX_P (NUM)' ! 873: A C expression which is nonzero if register number NUM is ! 874: suitable for use as an index register in operand addresses. It ! 875: may be either a suitable hard register or a pseudo register that ! 876: has been allocated such a hard register. ! 877: ! 878: The difference between an index register and a base register is ! 879: that the index register may be scaled. If an address involves ! 880: the sum of two registers, neither one of them scaled, then either ! 881: one may be labeled the "base" and the other the "index"; but ! 882: whichever labeling is used must fit the machine's constraints of ! 883: which registers may serve in each capacity. The compiler will ! 884: try both labelings, looking for one that is valid, and will ! 885: reload one or both registers only if neither labeling works. ! 886: ! 887: `PREFERRED_RELOAD_CLASS (X, CLASS)' ! 888: A C expression that places additional restrictions on the ! 889: register class to use when it is necessary to copy value X into a ! 890: register in class CLASS. The value is a register class; perhaps ! 891: CLASS, or perhaps another, smaller class. On many machines, the ! 892: definition ! 893: ! 894: #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS ! 895: ! 896: is safe. ! 897: ! 898: Sometimes returning a more restrictive class makes better code. ! 899: For example, on the 68000, when X is an integer constant that is ! 900: in range for a `moveq' instruction, the value of this macro is ! 901: always `DATA_REGS' as long as CLASS includes the data registers. ! 902: Requiring a data register guarantees that a `moveq' will be used. ! 903: ! 904: If X is a `const_double', by returning `NO_REGS' you can force X ! 905: into a memory constant. This is useful on certain machines where ! 906: immediate floating values cannot be loaded into certain kinds of ! 907: registers. ! 908: ! 909: `LIMIT_RELOAD_CLASS (MODE, CLASS)' ! 910: A C expression that places additional restrictions on the ! 911: register class to use when it is necessary to be able to hold a ! 912: value of mode MODE in a reload register for which class CLASS ! 913: would ordinarily be used. ! 914: ! 915: Unlike `PREFERRED_RELOAD_CLASS', this macro should be used when ! 916: there are certain modes that simply can't go in certain reload ! 917: classes. ! 918: ! 919: The value is a register class; perhaps CLASS, or perhaps another, ! 920: smaller class. ! 921: ! 922: Don't define this macro unless the target machine has limitations ! 923: which require the macro to do something nontrivial. ! 924: ! 925: `SECONDARY_RELOAD_CLASS (CLASS, MODE, X)' ! 926: `SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)' ! 927: `SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)' ! 928: Many machines have some registers that cannot be copied directly ! 929: to or from memory or even from other types of registers. An ! 930: example is the `MQ' register, which on most machines, can only be ! 931: copied to or from general registers, but not memory. Some ! 932: machines allow copying all registers to and from memory, but ! 933: require a scratch register for stores to some memory locations ! 934: (e.g., those with symbolic address on the RT, and those with ! 935: certain symbolic address on the Sparc when compiling PIC). In ! 936: some cases, both an intermediate and a scratch register are ! 937: required. ! 938: ! 939: You should define these macros to indicate to the reload phase ! 940: that it may need to allocate at least one register for a reload ! 941: in addition to the register to contain the data. Specifically, ! 942: if copying X to a register CLASS in MODE requires an intermediate ! 943: register, you should define `SECONDARY_INPUT_RELOAD_CLASS' to ! 944: return the largest register class all of whose registers can be ! 945: used as intermediate registers or scratch registers. ! 946: ! 947: If copying a register CLASS in MODE to X requires an intermediate ! 948: or scratch register, you should define ! 949: `SECONDARY_OUTPUT_RELOAD_CLASS' to return the largest register ! 950: class required. If the requirements for input and output reloads ! 951: are the same, the macro `SECONDARY_RELOAD_CLASS' should be used ! 952: instead of defining both macros identically. ! 953: ! 954: The values returned by these macros are often `GENERAL_REGS'. ! 955: Return `NO_REGS' if no spare register is needed; i.e., if X can ! 956: be directly copied to or from a register of CLASS in MODE without ! 957: requiring a scratch register. Do not define this macro if it ! 958: would always return `NO_REGS'. ! 959: ! 960: If a scratch register is required (either with or without an ! 961: intermediate register), you should define patterns for ! 962: `reload_inM' or `reload_outM', as required (*note Standard ! 963: Names::.. These patterns, which will normally be implemented ! 964: with a `define_expand', should be similar to the `movM' patterns, ! 965: except that operand 2 is the scratch register. ! 966: ! 967: Define constraints for the reload register and scratch register ! 968: that contain a single register class. If the original reload ! 969: register (whose class is CLASS) can meet the constraint given in ! 970: the pattern, the value returned by these macros is used for the ! 971: class of the scratch register. Otherwise, two additional reload ! 972: registers are required. Their classes are obtained from the ! 973: constraints in the insn pattern. ! 974: ! 975: X might be a pseudo-register or a `subreg' of a pseudo-register, ! 976: which could either be in a hard register or in memory. Use ! 977: `true_regnum' to find out; it will return -1 if the pseudo is in ! 978: memory and the hard register number if it is in a register. ! 979: ! 980: These macros should not be used in the case where a particular ! 981: class of registers can only be copied to memory and not to ! 982: another class of registers. In that case, secondary reload ! 983: registers are not needed and would not be helpful. Instead, a ! 984: stack location must be used to perform the copy and the `movM' ! 985: pattern should use memory as a intermediate storage. This case ! 986: often occurs between floating-point and general registers. ! 987: ! 988: `SMALL_REGISTER_CLASSES' ! 989: Normally the compiler will avoid choosing spill registers from ! 990: registers that have been explicitly mentioned in the rtl (these ! 991: registers are normally those used to pass parameters and return ! 992: values). However, some machines have so few registers of certain ! 993: classes that there would not be enough registers to use as spill ! 994: registers if this were done. ! 995: ! 996: On those machines, you should define `SMALL_REGISTER_CLASSES'. ! 997: When it is defined, the compiler allows registers explicitly used ! 998: in the rtl to be used as spill registers but prevents the ! 999: compiler from extending the lifetime of these registers. ! 1000: ! 1001: Defining this macro is always safe, but unnecessarily defining ! 1002: this macro will reduce the amount of optimizations that can be ! 1003: performed in some cases. If this macro is not defined but needs ! 1004: to be, the compiler will run out of reload registers and print a ! 1005: fatal error message. ! 1006: ! 1007: For most machines, this macro should not be defined. ! 1008: ! 1009: `CLASS_MAX_NREGS (CLASS, MODE)' ! 1010: A C expression for the maximum number of consecutive registers of ! 1011: class CLASS needed to hold a value of mode MODE. ! 1012: ! 1013: This is closely related to the macro `HARD_REGNO_NREGS'. In ! 1014: fact, the value of the macro `CLASS_MAX_NREGS (CLASS, MODE)' ! 1015: should be the maximum value of `HARD_REGNO_NREGS (REGNO, MODE)' ! 1016: for all REGNO values in the class CLASS. ! 1017: ! 1018: This macro helps control the handling of multiple-word values in ! 1019: the reload pass. ! 1020: ! 1021: Three other special macros describe which operands fit which ! 1022: constraint letters. ! 1023: ! 1024: `CONST_OK_FOR_LETTER_P (VALUE, C)' ! 1025: A C expression that defines the machine-dependent operand ! 1026: constraint letters that specify particular ranges of integer ! 1027: values. If C is one of those letters, the expression should ! 1028: check that VALUE, an integer, is in the appropriate range and ! 1029: return 1 if so, 0 otherwise. If C is not one of those letters, ! 1030: the value should be 0 regardless of VALUE. ! 1031: ! 1032: `CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)' ! 1033: A C expression that defines the machine-dependent operand ! 1034: constraint letters that specify particular ranges of ! 1035: `const_double' values. ! 1036: ! 1037: If C is one of those letters, the expression should check that ! 1038: VALUE, an RTX of code `const_double', is in the appropriate range ! 1039: and return 1 if so, 0 otherwise. If C is not one of those ! 1040: letters, the value should be 0 regardless of VALUE. ! 1041: ! 1042: `const_double' is used for all floating-point constants and for ! 1043: `DImode' fixed-point constants. A given letter can accept either ! 1044: or both kinds of values. It can use `GET_MODE' to distinguish ! 1045: between these kinds. ! 1046: ! 1047: `EXTRA_CONSTRAINT (VALUE, C)' ! 1048: A C expression that defines the optional machine-dependent ! 1049: constraint letters that can be used to segregate specific types ! 1050: of operands, usually memory references, for the target machine. ! 1051: Normally this macro will not be defined. If it is required for a ! 1052: particular target machine, it should return 1 if VALUE ! 1053: corresponds to the operand type represented by the constraint ! 1054: letter C. If C is not defined as an extra constraint, the value ! 1055: returned should be 0 regardless of VALUE. ! 1056: ! 1057: For example, on the ROMP, load instructions cannot have their ! 1058: output in r0 if the memory reference contains a symbolic address. ! 1059: Constraint letter `Q' is defined as representing a memory ! 1060: address that does *not* contain a symbolic address. An ! 1061: alternative is specified with a `Q' constraint on the input and ! 1062: `r' on the output. The next alternative specifies `m' on the ! 1063: input and a register class that does not include r0 on the output. ! 1064: ! 1065: ! 1066: File: gcc.info, Node: Stack and Calling, Next: Varargs, Prev: Register Classes, Up: Machine Macros ! 1067: ! 1068: Describing Stack Layout and Calling Conventions ! 1069: =============================================== ! 1070: ! 1071: * Menu: ! 1072: ! 1073: * Frame Layout:: ! 1074: * Frame Registers:: ! 1075: * Elimination:: ! 1076: * Stack Arguments:: ! 1077: * Register Arguments:: ! 1078: * Scalar Return:: ! 1079: * Aggregate Return:: ! 1080: * Caller Saves:: ! 1081: * Function Entry:: ! 1082: * Profiling:: ! 1083: ! 1084: ! 1085: File: gcc.info, Node: Frame Layout, Next: Frame Registers, Up: Stack and Calling ! 1086: ! 1087: Basic Stack Layout ! 1088: ------------------ ! 1089: ! 1090: `STACK_GROWS_DOWNWARD' ! 1091: Define this macro if pushing a word onto the stack moves the stack ! 1092: pointer to a smaller address. ! 1093: ! 1094: When we say, "define this macro if ...," it means that the ! 1095: compiler checks this macro only with `#ifdef' so the precise ! 1096: definition used does not matter. ! 1097: ! 1098: `FRAME_GROWS_DOWNWARD' ! 1099: Define this macro if the addresses of local variable slots are at ! 1100: negative offsets from the frame pointer. ! 1101: ! 1102: `ARGS_GROW_DOWNWARD' ! 1103: Define this macro if successive arguments to a function occupy ! 1104: decreasing addresses on the stack. ! 1105: ! 1106: `STARTING_FRAME_OFFSET' ! 1107: Offset from the frame pointer to the first local variable slot to ! 1108: be allocated. ! 1109: ! 1110: If `FRAME_GROWS_DOWNWARD', the next slot's offset is found by ! 1111: subtracting the length of the first slot from ! 1112: `STARTING_FRAME_OFFSET'. Otherwise, it is found by adding the ! 1113: length of the first slot to the value `STARTING_FRAME_OFFSET'. ! 1114: ! 1115: `STACK_POINTER_OFFSET' ! 1116: Offset from the stack pointer register to the first location at ! 1117: which outgoing arguments are placed. If not specified, the ! 1118: default value of zero is used. This is the proper value for most ! 1119: machines. ! 1120: ! 1121: If `ARGS_GROW_DOWNWARD', this is the offset to the location above ! 1122: the first location at which outgoing arguments are placed. ! 1123: ! 1124: `FIRST_PARM_OFFSET (FUNDECL)' ! 1125: Offset from the argument pointer register to the first argument's ! 1126: address. On some machines it may depend on the data type of the ! 1127: function. ! 1128: ! 1129: If `ARGS_GROW_DOWNWARD', this is the offset to the location above ! 1130: the first argument's address. ! 1131: ! 1132: `STACK_DYNAMIC_OFFSET (FUNDECL)' ! 1133: Offset from the stack pointer register to an item dynamically ! 1134: allocated on the stack, e.g., by `alloca'. ! 1135: ! 1136: The default value for this macro is `STACK_POINTER_OFFSET' plus ! 1137: the length of the outgoing arguments. The default is correct for ! 1138: most machines. See `function.c' for details. ! 1139: ! 1140: `DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)' ! 1141: A C expression whose value is RTL representing the address in a ! 1142: stack frame where the pointer to the caller's frame is stored. ! 1143: Assume that FRAMEADDR is an RTL expression for the address of the ! 1144: stack frame itself. ! 1145: ! 1146: If you don't define this macro, the default is to return the value ! 1147: of FRAMEADDR--that is, the stack frame address is also the ! 1148: address of the stack word that points to the previous frame. ! 1149: ! 1150:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.