|
|
1.1.1.3 root 1: This is Info file gcc.info, produced by Makeinfo-1.55 from the input
1.1 root 2: file gcc.texi.
3:
4: This file documents the use and the internals of the GNU compiler.
5:
1.1.1.4 ! root 6: Published by the Free Software Foundation 59 Temple Place - Suite 330
! 7: Boston, MA 02111-1307 USA
1.1 root 8:
1.1.1.4 ! root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software
! 10: Foundation, Inc.
1.1 root 11:
12: Permission is granted to make and distribute verbatim copies of this
13: manual provided the copyright notice and this permission notice are
14: preserved on all copies.
15:
16: Permission is granted to copy and distribute modified versions of
17: this manual under the conditions for verbatim copying, provided also
1.1.1.3 root 18: that the sections entitled "GNU General Public License," "Funding for
19: Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
20: included exactly as in the original, and provided that the entire
21: resulting derived work is distributed under the terms of a permission
22: notice identical to this one.
1.1 root 23:
24: Permission is granted to copy and distribute translations of this
25: manual into another language, under the above conditions for modified
26: versions, except that the sections entitled "GNU General Public
1.1.1.3 root 27: License," "Funding for Free Software," and "Protect Your Freedom--Fight
28: `Look And Feel'", and this permission notice, may be included in
29: translations approved by the Free Software Foundation instead of in the
30: original English.
1.1 root 31:
32:
1.1.1.4 ! root 33: File: gcc.info, Node: Leaf Functions, Next: Stack Registers, Prev: Values in Registers, Up: Registers
1.1 root 34:
1.1.1.4 ! root 35: Handling Leaf Functions
! 36: -----------------------
1.1.1.2 root 37:
1.1.1.4 ! root 38: On some machines, a leaf function (i.e., one which makes no calls)
! 39: can run more efficiently if it does not make its own register window.
! 40: Often this means it is required to receive its arguments in the
! 41: registers where they are passed by the caller, instead of the registers
! 42: where they would normally arrive.
! 43:
! 44: The special treatment for leaf functions generally applies only when
! 45: other conditions are met; for example, often they may use only those
! 46: registers for its own variables and temporaries. We use the term "leaf
! 47: function" to mean a function that is suitable for this special
! 48: handling, so that functions with no calls are not necessarily "leaf
! 49: functions".
! 50:
! 51: GNU CC assigns register numbers before it knows whether the function
! 52: is suitable for leaf function treatment. So it needs to renumber the
! 53: registers in order to output a leaf function. The following macros
! 54: accomplish this.
! 55:
! 56: `LEAF_REGISTERS'
! 57: A C initializer for a vector, indexed by hard register number,
! 58: which contains 1 for a register that is allowable in a candidate
! 59: for leaf function treatment.
! 60:
! 61: If leaf function treatment involves renumbering the registers,
! 62: then the registers marked here should be the ones before
! 63: renumbering--those that GNU CC would ordinarily allocate. The
! 64: registers which will actually be used in the assembler code, after
! 65: renumbering, should not be marked with 1 in this vector.
! 66:
! 67: Define this macro only if the target machine offers a way to
! 68: optimize the treatment of leaf functions.
! 69:
! 70: `LEAF_REG_REMAP (REGNO)'
! 71: A C expression whose value is the register number to which REGNO
! 72: should be renumbered, when a function is treated as a leaf
! 73: function.
! 74:
! 75: If REGNO is a register number which should not appear in a leaf
! 76: function before renumbering, then the expression should yield -1,
! 77: which will cause the compiler to abort.
! 78:
! 79: Define this macro only if the target machine offers a way to
! 80: optimize the treatment of leaf functions, and registers need to be
! 81: renumbered to do this.
! 82:
! 83: Normally, `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE' must treat
! 84: leaf functions specially. It can test the C variable `leaf_function'
! 85: which is nonzero for leaf functions. (The variable `leaf_function' is
! 86: defined only if `LEAF_REGISTERS' is defined.)
1.1 root 87:
88:
1.1.1.4 ! root 89: File: gcc.info, Node: Stack Registers, Next: Obsolete Register Macros, Prev: Leaf Functions, Up: Registers
! 90:
! 91: Registers That Form a Stack
! 92: ---------------------------
! 93:
! 94: There are special features to handle computers where some of the
! 95: "registers" form a stack, as in the 80387 coprocessor for the 80386.
! 96: Stack registers are normally written by pushing onto the stack, and are
! 97: numbered relative to the top of the stack.
1.1 root 98:
1.1.1.4 ! root 99: Currently, GNU CC can only handle one group of stack-like registers,
! 100: and they must be consecutively numbered.
1.1 root 101:
1.1.1.4 ! root 102: `STACK_REGS'
! 103: Define this if the machine has any stack-like registers.
1.1 root 104:
1.1.1.4 ! root 105: `FIRST_STACK_REG'
! 106: The number of the first stack-like register. This one is the top
! 107: of the stack.
1.1.1.3 root 108:
1.1.1.4 ! root 109: `LAST_STACK_REG'
! 110: The number of the last stack-like register. This one is the
! 111: bottom of the stack.
1.1 root 112:
113:
1.1.1.4 ! root 114: File: gcc.info, Node: Obsolete Register Macros, Prev: Stack Registers, Up: Registers
1.1.1.3 root 115:
1.1.1.4 ! root 116: Obsolete Macros for Controlling Register Usage
! 117: ----------------------------------------------
1.1 root 118:
1.1.1.4 ! root 119: These features do not work very well. They exist because they used
! 120: to be required to generate correct code for the 80387 coprocessor of the
! 121: 80386. They are no longer used by that machine description and may be
! 122: removed in a later version of the compiler. Don't use them!
! 123:
! 124: `OVERLAPPING_REGNO_P (REGNO)'
! 125: If defined, this is a C expression whose value is nonzero if hard
! 126: register number REGNO is an overlapping register. This means a
! 127: hard register which overlaps a hard register with a different
! 128: number. (Such overlap is undesirable, but occasionally it allows
! 129: a machine to be supported which otherwise could not be.) This
! 130: macro must return nonzero for *all* the registers which overlap
! 131: each other. GNU CC can use an overlapping register only in
! 132: certain limited ways. It can be used for allocation within a
! 133: basic block, and may be spilled for reloading; that is all.
! 134:
! 135: If this macro is not defined, it means that none of the hard
! 136: registers overlap each other. This is the usual situation.
! 137:
! 138: `INSN_CLOBBERS_REGNO_P (INSN, REGNO)'
! 139: If defined, this is a C expression whose value should be nonzero if
! 140: the insn INSN has the effect of mysteriously clobbering the
! 141: contents of hard register number REGNO. By "mysterious" we mean
! 142: that the insn's RTL expression doesn't describe such an effect.
! 143:
! 144: If this macro is not defined, it means that no insn clobbers
! 145: registers mysteriously. This is the usual situation; all else
! 146: being equal, it is best for the RTL expression to show all the
! 147: activity.
! 148:
! 149: `PRESERVE_DEATH_INFO_REGNO_P (REGNO)'
! 150: If defined, this is a C expression whose value is nonzero if
! 151: accurate `REG_DEAD' notes are needed for hard register number REGNO
! 152: at the time of outputting the assembler code. When this is so, a
! 153: few optimizations that take place after register allocation and
! 154: could invalidate the death notes are not done when this register is
! 155: involved.
! 156:
! 157: You would arrange to preserve death info for a register when some
! 158: of the code in the machine description which is executed to write
! 159: the assembler code looks at the death notes. This is necessary
! 160: only when the actual hardware feature which GNU CC thinks of as a
! 161: register is not actually a register of the usual sort. (It might,
! 162: for example, be a hardware stack.)
1.1 root 163:
1.1.1.4 ! root 164: If this macro is not defined, it means that no death notes need to
! 165: be preserved. This is the usual situation.
1.1 root 166:
1.1.1.2 root 167:
1.1.1.4 ! root 168: File: gcc.info, Node: Register Classes, Next: Stack and Calling, Prev: Registers, Up: Target Macros
1.1 root 169:
1.1.1.4 ! root 170: Register Classes
! 171: ================
1.1 root 172:
1.1.1.4 ! root 173: On many machines, the numbered registers are not all equivalent.
! 174: For example, certain registers may not be allowed for indexed
! 175: addressing; certain registers may not be allowed in some instructions.
! 176: These machine restrictions are described to the compiler using
! 177: "register classes".
! 178:
! 179: You define a number of register classes, giving each one a name and
! 180: saying which of the registers belong to it. Then you can specify
! 181: register classes that are allowed as operands to particular instruction
! 182: patterns.
! 183:
! 184: In general, each register will belong to several classes. In fact,
! 185: one class must be named `ALL_REGS' and contain all the registers.
! 186: Another class must be named `NO_REGS' and contain no registers. Often
! 187: the union of two classes will be another class; however, this is not
! 188: required.
! 189:
! 190: One of the classes must be named `GENERAL_REGS'. There is nothing
! 191: terribly special about the name, but the operand constraint letters `r'
! 192: and `g' specify this class. If `GENERAL_REGS' is the same as
! 193: `ALL_REGS', just define it as a macro which expands to `ALL_REGS'.
! 194:
! 195: Order the classes so that if class X is contained in class Y then X
! 196: has a lower class number than Y.
! 197:
! 198: The way classes other than `GENERAL_REGS' are specified in operand
! 199: constraints is through machine-dependent operand constraint letters.
! 200: You can define such letters to correspond to various classes, then use
! 201: them in operand constraints.
! 202:
! 203: You should define a class for the union of two classes whenever some
! 204: instruction allows both classes. For example, if an instruction allows
! 205: either a floating point (coprocessor) register or a general register
! 206: for a certain operand, you should define a class `FLOAT_OR_GENERAL_REGS'
! 207: which includes both of them. Otherwise you will get suboptimal code.
! 208:
! 209: You must also specify certain redundant information about the
! 210: register classes: for each class, which classes contain it and which
! 211: ones are contained in it; for each pair of classes, the largest class
! 212: contained in their union.
! 213:
! 214: When a value occupying several consecutive registers is expected in a
! 215: certain class, all the registers used must belong to that class.
! 216: Therefore, register classes cannot be used to enforce a requirement for
! 217: a register pair to start with an even-numbered register. The way to
! 218: specify this requirement is with `HARD_REGNO_MODE_OK'.
! 219:
! 220: Register classes used for input-operands of bitwise-and or shift
! 221: instructions have a special requirement: each such class must have, for
! 222: each fixed-point machine mode, a subclass whose registers can transfer
! 223: that mode to or from memory. For example, on some machines, the
! 224: operations for single-byte values (`QImode') are limited to certain
! 225: registers. When this is so, each register class that is used in a
! 226: bitwise-and or shift instruction must have a subclass consisting of
! 227: registers from which single-byte values can be loaded or stored. This
! 228: is so that `PREFERRED_RELOAD_CLASS' can always have a possible value to
! 229: return.
! 230:
! 231: `enum reg_class'
! 232: An enumeral type that must be defined with all the register class
! 233: names as enumeral values. `NO_REGS' must be first. `ALL_REGS'
! 234: must be the last register class, followed by one more enumeral
! 235: value, `LIM_REG_CLASSES', which is not a register class but rather
! 236: tells how many classes there are.
! 237:
! 238: Each register class has a number, which is the value of casting
! 239: the class name to type `int'. The number serves as an index in
! 240: many of the tables described below.
! 241:
! 242: `N_REG_CLASSES'
! 243: The number of distinct register classes, defined as follows:
! 244:
! 245: #define N_REG_CLASSES (int) LIM_REG_CLASSES
! 246:
! 247: `REG_CLASS_NAMES'
! 248: An initializer containing the names of the register classes as C
! 249: string constants. These names are used in writing some of the
! 250: debugging dumps.
! 251:
! 252: `REG_CLASS_CONTENTS'
! 253: An initializer containing the contents of the register classes, as
! 254: integers which are bit masks. The Nth integer specifies the
! 255: contents of class N. The way the integer MASK is interpreted is
! 256: that register R is in the class if `MASK & (1 << R)' is 1.
! 257:
! 258: When the machine has more than 32 registers, an integer does not
! 259: suffice. Then the integers are replaced by sub-initializers,
! 260: braced groupings containing several integers. Each
! 261: sub-initializer must be suitable as an initializer for the type
! 262: `HARD_REG_SET' which is defined in `hard-reg-set.h'.
! 263:
! 264: `REGNO_REG_CLASS (REGNO)'
! 265: A C expression whose value is a register class containing hard
! 266: register REGNO. In general there is more than one such class;
! 267: choose a class which is "minimal", meaning that no smaller class
! 268: also contains the register.
! 269:
! 270: `BASE_REG_CLASS'
! 271: A macro whose definition is the name of the class to which a valid
! 272: base register must belong. A base register is one used in an
! 273: address which is the register value plus a displacement.
! 274:
! 275: `INDEX_REG_CLASS'
! 276: A macro whose definition is the name of the class to which a valid
! 277: index register must belong. An index register is one used in an
! 278: address where its value is either multiplied by a scale factor or
! 279: added to another register (as well as added to a displacement).
! 280:
! 281: `REG_CLASS_FROM_LETTER (CHAR)'
! 282: A C expression which defines the machine-dependent operand
! 283: constraint letters for register classes. If CHAR is such a
! 284: letter, the value should be the register class corresponding to
! 285: it. Otherwise, the value should be `NO_REGS'. The register
! 286: letter `r', corresponding to class `GENERAL_REGS', will not be
! 287: passed to this macro; you do not need to handle it.
! 288:
! 289: `REGNO_OK_FOR_BASE_P (NUM)'
! 290: A C expression which is nonzero if register number NUM is suitable
! 291: for use as a base register in operand addresses. It may be either
! 292: a suitable hard register or a pseudo register that has been
! 293: allocated such a hard register.
! 294:
! 295: `REGNO_OK_FOR_INDEX_P (NUM)'
! 296: A C expression which is nonzero if register number NUM is suitable
! 297: for use as an index register in operand addresses. It may be
! 298: either a suitable hard register or a pseudo register that has been
! 299: allocated such a hard register.
! 300:
! 301: The difference between an index register and a base register is
! 302: that the index register may be scaled. If an address involves the
! 303: sum of two registers, neither one of them scaled, then either one
! 304: may be labeled the "base" and the other the "index"; but whichever
! 305: labeling is used must fit the machine's constraints of which
! 306: registers may serve in each capacity. The compiler will try both
! 307: labelings, looking for one that is valid, and will reload one or
! 308: both registers only if neither labeling works.
1.1 root 309:
1.1.1.4 ! root 310: `PREFERRED_RELOAD_CLASS (X, CLASS)'
! 311: A C expression that places additional restrictions on the register
! 312: class to use when it is necessary to copy value X into a register
! 313: in class CLASS. The value is a register class; perhaps CLASS, or
! 314: perhaps another, smaller class. On many machines, the following
! 315: definition is safe:
! 316:
! 317: #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
! 318:
! 319: Sometimes returning a more restrictive class makes better code.
! 320: For example, on the 68000, when X is an integer constant that is
! 321: in range for a `moveq' instruction, the value of this macro is
! 322: always `DATA_REGS' as long as CLASS includes the data registers.
! 323: Requiring a data register guarantees that a `moveq' will be used.
! 324:
! 325: If X is a `const_double', by returning `NO_REGS' you can force X
! 326: into a memory constant. This is useful on certain machines where
! 327: immediate floating values cannot be loaded into certain kinds of
! 328: registers.
1.1 root 329:
1.1.1.4 ! root 330: `PREFERRED_OUTPUT_RELOAD_CLASS (X, CLASS)'
! 331: Like `PREFERRED_RELOAD_CLASS', but for output reloads instead of
! 332: input reloads. If you don't define this macro, the default is to
! 333: use CLASS, unchanged.
! 334:
! 335: `LIMIT_RELOAD_CLASS (MODE, CLASS)'
! 336: A C expression that places additional restrictions on the register
! 337: class to use when it is necessary to be able to hold a value of
! 338: mode MODE in a reload register for which class CLASS would
! 339: ordinarily be used.
! 340:
! 341: Unlike `PREFERRED_RELOAD_CLASS', this macro should be used when
! 342: there are certain modes that simply can't go in certain reload
! 343: classes.
! 344:
! 345: The value is a register class; perhaps CLASS, or perhaps another,
! 346: smaller class.
! 347:
! 348: Don't define this macro unless the target machine has limitations
! 349: which require the macro to do something nontrivial.
! 350:
! 351: `SECONDARY_RELOAD_CLASS (CLASS, MODE, X)'
! 352: `SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)'
! 353: `SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)'
! 354: Many machines have some registers that cannot be copied directly
! 355: to or from memory or even from other types of registers. An
! 356: example is the `MQ' register, which on most machines, can only be
! 357: copied to or from general registers, but not memory. Some
! 358: machines allow copying all registers to and from memory, but
! 359: require a scratch register for stores to some memory locations
! 360: (e.g., those with symbolic address on the RT, and those with
! 361: certain symbolic address on the Sparc when compiling PIC). In
! 362: some cases, both an intermediate and a scratch register are
! 363: required.
! 364:
! 365: You should define these macros to indicate to the reload phase
! 366: that it may need to allocate at least one register for a reload in
! 367: addition to the register to contain the data. Specifically, if
! 368: copying X to a register CLASS in MODE requires an intermediate
! 369: register, you should define `SECONDARY_INPUT_RELOAD_CLASS' to
! 370: return the largest register class all of whose registers can be
! 371: used as intermediate registers or scratch registers.
! 372:
! 373: If copying a register CLASS in MODE to X requires an intermediate
! 374: or scratch register, `SECONDARY_OUTPUT_RELOAD_CLASS' should be
! 375: defined to return the largest register class required. If the
! 376: requirements for input and output reloads are the same, the macro
! 377: `SECONDARY_RELOAD_CLASS' should be used instead of defining both
! 378: macros identically.
! 379:
! 380: The values returned by these macros are often `GENERAL_REGS'.
! 381: Return `NO_REGS' if no spare register is needed; i.e., if X can be
! 382: directly copied to or from a register of CLASS in MODE without
! 383: requiring a scratch register. Do not define this macro if it
! 384: would always return `NO_REGS'.
! 385:
! 386: If a scratch register is required (either with or without an
! 387: intermediate register), you should define patterns for
! 388: `reload_inM' or `reload_outM', as required (*note Standard
! 389: Names::.. These patterns, which will normally be implemented with
! 390: a `define_expand', should be similar to the `movM' patterns,
! 391: except that operand 2 is the scratch register.
! 392:
! 393: Define constraints for the reload register and scratch register
! 394: that contain a single register class. If the original reload
! 395: register (whose class is CLASS) can meet the constraint given in
! 396: the pattern, the value returned by these macros is used for the
! 397: class of the scratch register. Otherwise, two additional reload
! 398: registers are required. Their classes are obtained from the
! 399: constraints in the insn pattern.
! 400:
! 401: X might be a pseudo-register or a `subreg' of a pseudo-register,
! 402: which could either be in a hard register or in memory. Use
! 403: `true_regnum' to find out; it will return -1 if the pseudo is in
! 404: memory and the hard register number if it is in a register.
! 405:
! 406: These macros should not be used in the case where a particular
! 407: class of registers can only be copied to memory and not to another
! 408: class of registers. In that case, secondary reload registers are
! 409: not needed and would not be helpful. Instead, a stack location
! 410: must be used to perform the copy and the `movM' pattern should use
! 411: memory as a intermediate storage. This case often occurs between
! 412: floating-point and general registers.
! 413:
! 414: `SECONDARY_MEMORY_NEEDED (CLASS1, CLASS2, M)'
! 415: Certain machines have the property that some registers cannot be
! 416: copied to some other registers without using memory. Define this
! 417: macro on those machines to be a C expression that is non-zero if
! 418: objects of mode M in registers of CLASS1 can only be copied to
! 419: registers of class CLASS2 by storing a register of CLASS1 into
! 420: memory and loading that memory location into a register of CLASS2.
! 421:
! 422: Do not define this macro if its value would always be zero.
! 423:
! 424: `SECONDARY_MEMORY_NEEDED_RTX (MODE)'
! 425: Normally when `SECONDARY_MEMORY_NEEDED' is defined, the compiler
! 426: allocates a stack slot for a memory location needed for register
! 427: copies. If this macro is defined, the compiler instead uses the
! 428: memory location defined by this macro.
! 429:
! 430: Do not define this macro if you do not define
! 431: `SECONDARY_MEMORY_NEEDED'.
! 432:
! 433: `SECONDARY_MEMORY_NEEDED_MODE (MODE)'
! 434: When the compiler needs a secondary memory location to copy
! 435: between two registers of mode MODE, it normally allocates
! 436: sufficient memory to hold a quantity of `BITS_PER_WORD' bits and
! 437: performs the store and load operations in a mode that many bits
! 438: wide and whose class is the same as that of MODE.
! 439:
! 440: This is right thing to do on most machines because it ensures that
! 441: all bits of the register are copied and prevents accesses to the
! 442: registers in a narrower mode, which some machines prohibit for
! 443: floating-point registers.
! 444:
! 445: However, this default behavior is not correct on some machines,
! 446: such as the DEC Alpha, that store short integers in floating-point
! 447: registers differently than in integer registers. On those
! 448: machines, the default widening will not work correctly and you
! 449: must define this macro to suppress that widening in some cases.
! 450: See the file `alpha.h' for details.
! 451:
! 452: Do not define this macro if you do not define
! 453: `SECONDARY_MEMORY_NEEDED' or if widening MODE to a mode that is
! 454: `BITS_PER_WORD' bits wide is correct for your machine.
! 455:
! 456: `SMALL_REGISTER_CLASSES'
! 457: Normally the compiler avoids choosing registers that have been
! 458: explicitly mentioned in the rtl as spill registers (these
! 459: registers are normally those used to pass parameters and return
! 460: values). However, some machines have so few registers of certain
! 461: classes that there would not be enough registers to use as spill
! 462: registers if this were done.
! 463:
! 464: Define `SMALL_REGISTER_CLASSES' on these machines. When it is
! 465: defined, the compiler allows registers explicitly used in the rtl
! 466: to be used as spill registers but avoids extending the lifetime of
! 467: these registers.
! 468:
! 469: It is always safe to define this macro, but if you unnecessarily
! 470: define it, you will reduce the amount of optimizations that can be
! 471: performed in some cases. If you do not define this macro when it
! 472: is required, the compiler will run out of spill registers and
! 473: print a fatal error message. For most machines, you should not
! 474: define this macro.
! 475:
! 476: `CLASS_LIKELY_SPILLED_P (CLASS)'
! 477: A C expression whose value is nonzero if pseudos that have been
! 478: assigned to registers of class CLASS would likely be spilled
! 479: because registers of CLASS are needed for spill registers.
! 480:
! 481: The default value of this macro returns 1 if CLASS has exactly one
! 482: register and zero otherwise. On most machines, this default
! 483: should be used. Only define this macro to some other expression
! 484: if pseudo allocated by `local-alloc.c' end up in memory because
! 485: their hard registers were needed for spill registers. If this
! 486: macro returns nonzero for those classes, those pseudos will only
! 487: be allocated by `global.c', which knows how to reallocate the
! 488: pseudo to another register. If there would not be another
! 489: register available for reallocation, you should not change the
! 490: definition of this macro since the only effect of such a
! 491: definition would be to slow down register allocation.
! 492:
! 493: `CLASS_MAX_NREGS (CLASS, MODE)'
! 494: A C expression for the maximum number of consecutive registers of
! 495: class CLASS needed to hold a value of mode MODE.
! 496:
! 497: This is closely related to the macro `HARD_REGNO_NREGS'. In fact,
! 498: the value of the macro `CLASS_MAX_NREGS (CLASS, MODE)' should be
! 499: the maximum value of `HARD_REGNO_NREGS (REGNO, MODE)' for all
! 500: REGNO values in the class CLASS.
! 501:
! 502: This macro helps control the handling of multiple-word values in
! 503: the reload pass.
! 504:
! 505: `CLASS_CANNOT_CHANGE_SIZE'
! 506: If defined, a C expression for a class that contains registers
! 507: which the compiler must always access in a mode that is the same
! 508: size as the mode in which it loaded the register.
! 509:
! 510: For the example, loading 32-bit integer or floating-point objects
! 511: into floating-point registers on the Alpha extends them to 64-bits.
! 512: Therefore loading a 64-bit object and then storing it as a 32-bit
! 513: object does not store the low-order 32-bits, as would be the case
! 514: for a normal register. Therefore, `alpha.h' defines this macro as
! 515: `FLOAT_REGS'.
! 516:
! 517: Three other special macros describe which operands fit which
! 518: constraint letters.
! 519:
! 520: `CONST_OK_FOR_LETTER_P (VALUE, C)'
! 521: A C expression that defines the machine-dependent operand
! 522: constraint letters that specify particular ranges of integer
! 523: values. If C is one of those letters, the expression should check
! 524: that VALUE, an integer, is in the appropriate range and return 1
! 525: if so, 0 otherwise. If C is not one of those letters, the value
! 526: should be 0 regardless of VALUE.
! 527:
! 528: `CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)'
! 529: A C expression that defines the machine-dependent operand
! 530: constraint letters that specify particular ranges of
! 531: `const_double' values.
! 532:
! 533: If C is one of those letters, the expression should check that
! 534: VALUE, an RTX of code `const_double', is in the appropriate range
! 535: and return 1 if so, 0 otherwise. If C is not one of those
! 536: letters, the value should be 0 regardless of VALUE.
! 537:
! 538: `const_double' is used for all floating-point constants and for
! 539: `DImode' fixed-point constants. A given letter can accept either
! 540: or both kinds of values. It can use `GET_MODE' to distinguish
! 541: between these kinds.
! 542:
! 543: `EXTRA_CONSTRAINT (VALUE, C)'
! 544: A C expression that defines the optional machine-dependent
! 545: constraint letters that can be used to segregate specific types of
! 546: operands, usually memory references, for the target machine.
! 547: Normally this macro will not be defined. If it is required for a
! 548: particular target machine, it should return 1 if VALUE corresponds
! 549: to the operand type represented by the constraint letter C. If C
! 550: is not defined as an extra constraint, the value returned should
! 551: be 0 regardless of VALUE.
! 552:
! 553: For example, on the ROMP, load instructions cannot have their
! 554: output in r0 if the memory reference contains a symbolic address.
! 555: Constraint letter `Q' is defined as representing a memory address
! 556: that does *not* contain a symbolic address. An alternative is
! 557: specified with a `Q' constraint on the input and `r' on the
! 558: output. The next alternative specifies `m' on the input and a
! 559: register class that does not include r0 on the output.
1.1 root 560:
561:
1.1.1.4 ! root 562: File: gcc.info, Node: Stack and Calling, Next: Varargs, Prev: Register Classes, Up: Target Macros
1.1 root 563:
1.1.1.4 ! root 564: Stack Layout and Calling Conventions
! 565: ====================================
1.1 root 566:
1.1.1.4 ! root 567: This describes the stack layout and calling conventions.
1.1 root 568:
1.1.1.4 ! root 569: * Menu:
1.1 root 570:
1.1.1.4 ! root 571: * Frame Layout::
! 572: * Frame Registers::
! 573: * Elimination::
! 574: * Stack Arguments::
! 575: * Register Arguments::
! 576: * Scalar Return::
! 577: * Aggregate Return::
! 578: * Caller Saves::
! 579: * Function Entry::
! 580: * Profiling::
1.1 root 581:
1.1.1.4 ! root 582:
! 583: File: gcc.info, Node: Frame Layout, Next: Frame Registers, Up: Stack and Calling
1.1 root 584:
1.1.1.4 ! root 585: Basic Stack Layout
! 586: ------------------
1.1.1.3 root 587:
1.1.1.4 ! root 588: Here is the basic stack layout.
1.1.1.3 root 589:
1.1.1.4 ! root 590: `STACK_GROWS_DOWNWARD'
! 591: Define this macro if pushing a word onto the stack moves the stack
! 592: pointer to a smaller address.
! 593:
! 594: When we say, "define this macro if ...," it means that the
! 595: compiler checks this macro only with `#ifdef' so the precise
! 596: definition used does not matter.
! 597:
! 598: `FRAME_GROWS_DOWNWARD'
! 599: Define this macro if the addresses of local variable slots are at
! 600: negative offsets from the frame pointer.
! 601:
! 602: `ARGS_GROW_DOWNWARD'
! 603: Define this macro if successive arguments to a function occupy
! 604: decreasing addresses on the stack.
! 605:
! 606: `STARTING_FRAME_OFFSET'
! 607: Offset from the frame pointer to the first local variable slot to
! 608: be allocated.
! 609:
! 610: If `FRAME_GROWS_DOWNWARD', find the next slot's offset by
! 611: subtracting the first slot's length from `STARTING_FRAME_OFFSET'.
! 612: Otherwise, it is found by adding the length of the first slot to
! 613: the value `STARTING_FRAME_OFFSET'.
! 614:
! 615: `STACK_POINTER_OFFSET'
! 616: Offset from the stack pointer register to the first location at
! 617: which outgoing arguments are placed. If not specified, the
! 618: default value of zero is used. This is the proper value for most
! 619: machines.
! 620:
! 621: If `ARGS_GROW_DOWNWARD', this is the offset to the location above
! 622: the first location at which outgoing arguments are placed.
! 623:
! 624: `FIRST_PARM_OFFSET (FUNDECL)'
! 625: Offset from the argument pointer register to the first argument's
! 626: address. On some machines it may depend on the data type of the
! 627: function.
! 628:
! 629: If `ARGS_GROW_DOWNWARD', this is the offset to the location above
! 630: the first argument's address.
! 631:
! 632: `STACK_DYNAMIC_OFFSET (FUNDECL)'
! 633: Offset from the stack pointer register to an item dynamically
! 634: allocated on the stack, e.g., by `alloca'.
! 635:
! 636: The default value for this macro is `STACK_POINTER_OFFSET' plus the
! 637: length of the outgoing arguments. The default is correct for most
! 638: machines. See `function.c' for details.
! 639:
! 640: `DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)'
! 641: A C expression whose value is RTL representing the address in a
! 642: stack frame where the pointer to the caller's frame is stored.
! 643: Assume that FRAMEADDR is an RTL expression for the address of the
! 644: stack frame itself.
! 645:
! 646: If you don't define this macro, the default is to return the value
! 647: of FRAMEADDR--that is, the stack frame address is also the address
! 648: of the stack word that points to the previous frame.
! 649:
! 650: `SETUP_FRAME_ADDRESSES ()'
! 651: If defined, a C expression that produces the machine-specific code
! 652: to setup the stack so that arbitrary frames can be accessed. For
! 653: example, on the Sparc, we must flush all of the register windows
! 654: to the stack before we can access arbitrary stack frames. This
! 655: macro will seldom need to be defined.
! 656:
! 657: `RETURN_ADDR_RTX (COUNT, FRAMEADDR)'
! 658: A C expression whose value is RTL representing the value of the
! 659: return address for the frame COUNT steps up from the current frame.
! 660: fRAMEADDR is the frame pointer of the COUNT frame, or the frame
! 661: pointer of the COUNT - 1 frame if `RETURN_ADDR_IN_PREVIOUS_FRAME'
! 662: is defined.
! 663:
! 664: `RETURN_ADDR_IN_PREVIOUS_FRAME'
! 665: Define this if the return address of a particular stack frame is
! 666: accessed from the frame pointer of the previous stack frame.
1.1 root 667:
1.1.1.2 root 668:
1.1.1.4 ! root 669: File: gcc.info, Node: Frame Registers, Next: Elimination, Prev: Frame Layout, Up: Stack and Calling
1.1 root 670:
1.1.1.4 ! root 671: Registers That Address the Stack Frame
! 672: --------------------------------------
1.1 root 673:
1.1.1.4 ! root 674: This discusses registers that address the stack frame.
1.1 root 675:
1.1.1.4 ! root 676: `STACK_POINTER_REGNUM'
! 677: The register number of the stack pointer register, which must also
! 678: be a fixed register according to `FIXED_REGISTERS'. On most
! 679: machines, the hardware determines which register this is.
! 680:
! 681: `FRAME_POINTER_REGNUM'
! 682: The register number of the frame pointer register, which is used to
! 683: access automatic variables in the stack frame. On some machines,
! 684: the hardware determines which register this is. On other
! 685: machines, you can choose any register you wish for this purpose.
! 686:
! 687: `HARD_FRAME_POINTER_REGNUM'
! 688: On some machines the offset between the frame pointer and starting
! 689: offset of the automatic variables is not known until after register
! 690: allocation has been done (for example, because the saved registers
! 691: are between these two locations). On those machines, define
! 692: `FRAME_POINTER_REGNUM' the number of a special, fixed register to
! 693: be used internally until the offset is known, and define
! 694: `HARD_FRAME_POINTER_REGNUM' to be actual the hard register number
! 695: used for the frame pointer.
! 696:
! 697: You should define this macro only in the very rare circumstances
! 698: when it is not possible to calculate the offset between the frame
! 699: pointer and the automatic variables until after register
! 700: allocation has been completed. When this macro is defined, you
! 701: must also indicate in your definition of `ELIMINABLE_REGS' how to
! 702: eliminate `FRAME_POINTER_REGNUM' into either
! 703: `HARD_FRAME_POINTER_REGNUM' or `STACK_POINTER_REGNUM'.
! 704:
! 705: Do not define this macro if it would be the same as
! 706: `FRAME_POINTER_REGNUM'.
! 707:
! 708: `ARG_POINTER_REGNUM'
! 709: The register number of the arg pointer register, which is used to
! 710: access the function's argument list. On some machines, this is
! 711: the same as the frame pointer register. On some machines, the
! 712: hardware determines which register this is. On other machines,
! 713: you can choose any register you wish for this purpose. If this is
! 714: not the same register as the frame pointer register, then you must
! 715: mark it as a fixed register according to `FIXED_REGISTERS', or
! 716: arrange to be able to eliminate it (*note Elimination::.).
! 717:
! 718: `STATIC_CHAIN_REGNUM'
! 719: `STATIC_CHAIN_INCOMING_REGNUM'
! 720: Register numbers used for passing a function's static chain
! 721: pointer. If register windows are used, the register number as
! 722: seen by the called function is `STATIC_CHAIN_INCOMING_REGNUM',
! 723: while the register number as seen by the calling function is
! 724: `STATIC_CHAIN_REGNUM'. If these registers are the same,
! 725: `STATIC_CHAIN_INCOMING_REGNUM' need not be defined.
! 726:
! 727: The static chain register need not be a fixed register.
! 728:
! 729: If the static chain is passed in memory, these macros should not be
! 730: defined; instead, the next two macros should be defined.
! 731:
! 732: `STATIC_CHAIN'
! 733: `STATIC_CHAIN_INCOMING'
! 734: If the static chain is passed in memory, these macros provide rtx
! 735: giving `mem' expressions that denote where they are stored.
! 736: `STATIC_CHAIN' and `STATIC_CHAIN_INCOMING' give the locations as
! 737: seen by the calling and called functions, respectively. Often the
! 738: former will be at an offset from the stack pointer and the latter
! 739: at an offset from the frame pointer.
! 740:
! 741: The variables `stack_pointer_rtx', `frame_pointer_rtx', and
! 742: `arg_pointer_rtx' will have been initialized prior to the use of
! 743: these macros and should be used to refer to those items.
1.1 root 744:
1.1.1.4 ! root 745: If the static chain is passed in a register, the two previous
! 746: macros should be defined instead.
1.1 root 747:
1.1.1.4 ! root 748:
! 749: File: gcc.info, Node: Elimination, Next: Stack Arguments, Prev: Frame Registers, Up: Stack and Calling
1.1 root 750:
1.1.1.4 ! root 751: Eliminating Frame Pointer and Arg Pointer
! 752: -----------------------------------------
1.1 root 753:
1.1.1.4 ! root 754: This is about eliminating the frame pointer and arg pointer.
1.1 root 755:
1.1.1.4 ! root 756: `FRAME_POINTER_REQUIRED'
! 757: A C expression which is nonzero if a function must have and use a
! 758: frame pointer. This expression is evaluated in the reload pass.
! 759: If its value is nonzero the function will have a frame pointer.
! 760:
! 761: The expression can in principle examine the current function and
! 762: decide according to the facts, but on most machines the constant 0
! 763: or the constant 1 suffices. Use 0 when the machine allows code to
! 764: be generated with no frame pointer, and doing so saves some time
! 765: or space. Use 1 when there is no possible advantage to avoiding a
! 766: frame pointer.
! 767:
! 768: In certain cases, the compiler does not know how to produce valid
! 769: code without a frame pointer. The compiler recognizes those cases
! 770: and automatically gives the function a frame pointer regardless of
! 771: what `FRAME_POINTER_REQUIRED' says. You don't need to worry about
! 772: them.
! 773:
! 774: In a function that does not require a frame pointer, the frame
! 775: pointer register can be allocated for ordinary usage, unless you
! 776: mark it as a fixed register. See `FIXED_REGISTERS' for more
! 777: information.
! 778:
! 779: `INITIAL_FRAME_POINTER_OFFSET (DEPTH-VAR)'
! 780: A C statement to store in the variable DEPTH-VAR the difference
! 781: between the frame pointer and the stack pointer values immediately
! 782: after the function prologue. The value would be computed from
! 783: information such as the result of `get_frame_size ()' and the
! 784: tables of registers `regs_ever_live' and `call_used_regs'.
! 785:
! 786: If `ELIMINABLE_REGS' is defined, this macro will be not be used and
! 787: need not be defined. Otherwise, it must be defined even if
! 788: `FRAME_POINTER_REQUIRED' is defined to always be true; in that
! 789: case, you may set DEPTH-VAR to anything.
! 790:
! 791: `ELIMINABLE_REGS'
! 792: If defined, this macro specifies a table of register pairs used to
! 793: eliminate unneeded registers that point into the stack frame. If
! 794: it is not defined, the only elimination attempted by the compiler
! 795: is to replace references to the frame pointer with references to
! 796: the stack pointer.
! 797:
! 798: The definition of this macro is a list of structure
! 799: initializations, each of which specifies an original and
! 800: replacement register.
! 801:
! 802: On some machines, the position of the argument pointer is not
! 803: known until the compilation is completed. In such a case, a
! 804: separate hard register must be used for the argument pointer.
! 805: This register can be eliminated by replacing it with either the
! 806: frame pointer or the argument pointer, depending on whether or not
! 807: the frame pointer has been eliminated.
! 808:
! 809: In this case, you might specify:
! 810: #define ELIMINABLE_REGS \
! 811: {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
! 812: {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
! 813: {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
! 814:
! 815: Note that the elimination of the argument pointer with the stack
! 816: pointer is specified first since that is the preferred elimination.
! 817:
! 818: `CAN_ELIMINATE (FROM-REG, TO-REG)'
! 819: A C expression that returns non-zero if the compiler is allowed to
! 820: try to replace register number FROM-REG with register number
! 821: TO-REG. This macro need only be defined if `ELIMINABLE_REGS' is
! 822: defined, and will usually be the constant 1, since most of the
! 823: cases preventing register elimination are things that the compiler
! 824: already knows about.
! 825:
! 826: `INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)'
! 827: This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
! 828: specifies the initial difference between the specified pair of
! 829: registers. This macro must be defined if `ELIMINABLE_REGS' is
! 830: defined.
! 831:
! 832: `LONGJMP_RESTORE_FROM_STACK'
! 833: Define this macro if the `longjmp' function restores registers from
! 834: the stack frames, rather than from those saved specifically by
! 835: `setjmp'. Certain quantities must not be kept in registers across
! 836: a call to `setjmp' on such machines.
1.1 root 837:
1.1.1.4 ! root 838:
! 839: File: gcc.info, Node: Stack Arguments, Next: Register Arguments, Prev: Elimination, Up: Stack and Calling
1.1 root 840:
1.1.1.4 ! root 841: Passing Function Arguments on the Stack
! 842: ---------------------------------------
1.1.1.3 root 843:
1.1.1.4 ! root 844: The macros in this section control how arguments are passed on the
! 845: stack. See the following section for other macros that control passing
! 846: certain arguments in registers.
! 847:
! 848: `PROMOTE_PROTOTYPES'
! 849: Define this macro if an argument declared in a prototype as an
! 850: integral type smaller than `int' should actually be passed as an
! 851: `int'. In addition to avoiding errors in certain cases of
! 852: mismatch, it also makes for better code on certain machines.
! 853:
! 854: `PUSH_ROUNDING (NPUSHED)'
! 855: A C expression that is the number of bytes actually pushed onto the
! 856: stack when an instruction attempts to push NPUSHED bytes.
! 857:
! 858: If the target machine does not have a push instruction, do not
! 859: define this macro. That directs GNU CC to use an alternate
! 860: strategy: to allocate the entire argument block and then store the
! 861: arguments into it.
! 862:
! 863: On some machines, the definition
! 864:
! 865: #define PUSH_ROUNDING(BYTES) (BYTES)
! 866:
! 867: will suffice. But on other machines, instructions that appear to
! 868: push one byte actually push two bytes in an attempt to maintain
! 869: alignment. Then the definition should be
! 870:
! 871: #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
! 872:
! 873: `ACCUMULATE_OUTGOING_ARGS'
! 874: If defined, the maximum amount of space required for outgoing
! 875: arguments will be computed and placed into the variable
! 876: `current_function_outgoing_args_size'. No space will be pushed
! 877: onto the stack for each call; instead, the function prologue should
! 878: increase the stack frame size by this amount.
! 879:
! 880: Defining both `PUSH_ROUNDING' and `ACCUMULATE_OUTGOING_ARGS' is
! 881: not proper.
! 882:
! 883: `REG_PARM_STACK_SPACE (FNDECL)'
! 884: Define this macro if functions should assume that stack space has
! 885: been allocated for arguments even when their values are passed in
! 886: registers.
1.1.1.3 root 887:
1.1.1.4 ! root 888: The value of this macro is the size, in bytes, of the area
! 889: reserved for arguments passed in registers for the function
! 890: represented by FNDECL.
! 891:
! 892: This space can be allocated by the caller, or be a part of the
! 893: machine-dependent stack frame: `OUTGOING_REG_PARM_STACK_SPACE' says
! 894: which.
! 895:
! 896: `MAYBE_REG_PARM_STACK_SPACE'
! 897: `FINAL_REG_PARM_STACK_SPACE (CONST_SIZE, VAR_SIZE)'
! 898: Define these macros in addition to the one above if functions might
! 899: allocate stack space for arguments even when their values are
! 900: passed in registers. These should be used when the stack space
! 901: allocated for arguments in registers is not a simple constant
! 902: independent of the function declaration.
! 903:
! 904: The value of the first macro is the size, in bytes, of the area
! 905: that we should initially assume would be reserved for arguments
! 906: passed in registers.
! 907:
! 908: The value of the second macro is the actual size, in bytes, of the
! 909: area that will be reserved for arguments passed in registers.
! 910: This takes two arguments: an integer representing the number of
! 911: bytes of fixed sized arguments on the stack, and a tree
! 912: representing the number of bytes of variable sized arguments on
! 913: the stack.
! 914:
! 915: When these macros are defined, `REG_PARM_STACK_SPACE' will only be
! 916: called for libcall functions, the current function, or for a
! 917: function being called when it is known that such stack space must
! 918: be allocated. In each case this value can be easily computed.
! 919:
! 920: When deciding whether a called function needs such stack space,
! 921: and how much space to reserve, GNU CC uses these two macros
! 922: instead of `REG_PARM_STACK_SPACE'.
! 923:
! 924: `OUTGOING_REG_PARM_STACK_SPACE'
! 925: Define this if it is the responsibility of the caller to allocate
! 926: the area reserved for arguments passed in registers.
! 927:
! 928: If `ACCUMULATE_OUTGOING_ARGS' is defined, this macro controls
! 929: whether the space for these arguments counts in the value of
! 930: `current_function_outgoing_args_size'.
! 931:
! 932: `STACK_PARMS_IN_REG_PARM_AREA'
! 933: Define this macro if `REG_PARM_STACK_SPACE' is defined, but the
! 934: stack parameters don't skip the area specified by it.
! 935:
! 936: Normally, when a parameter is not passed in registers, it is
! 937: placed on the stack beyond the `REG_PARM_STACK_SPACE' area.
! 938: Defining this macro suppresses this behavior and causes the
! 939: parameter to be passed on the stack in its natural location.
! 940:
! 941: `RETURN_POPS_ARGS (FUNDECL, FUNTYPE, STACK-SIZE)'
! 942: A C expression that should indicate the number of bytes of its own
! 943: arguments that a function pops on returning, or 0 if the function
! 944: pops no arguments and the caller must therefore pop them all after
! 945: the function returns.
! 946:
! 947: FUNDECL is a C variable whose value is a tree node that describes
! 948: the function in question. Normally it is a node of type
! 949: `FUNCTION_DECL' that describes the declaration of the function.
! 950: From this it is possible to obtain the DECL_MACHINE_ATTRIBUTES of
! 951: the function.
! 952:
! 953: FUNTYPE is a C variable whose value is a tree node that describes
! 954: the function in question. Normally it is a node of type
! 955: `FUNCTION_TYPE' that describes the data type of the function.
! 956: From this it is possible to obtain the data types of the value and
! 957: arguments (if known).
! 958:
! 959: When a call to a library function is being considered, FUNTYPE
! 960: will contain an identifier node for the library function. Thus, if
! 961: you need to distinguish among various library functions, you can
! 962: do so by their names. Note that "library function" in this
! 963: context means a function used to perform arithmetic, whose name is
! 964: known specially in the compiler and was not mentioned in the C
! 965: code being compiled.
! 966:
! 967: STACK-SIZE is the number of bytes of arguments passed on the
! 968: stack. If a variable number of bytes is passed, it is zero, and
! 969: argument popping will always be the responsibility of the calling
! 970: function.
! 971:
! 972: On the Vax, all functions always pop their arguments, so the
! 973: definition of this macro is STACK-SIZE. On the 68000, using the
! 974: standard calling convention, no functions pop their arguments, so
! 975: the value of the macro is always 0 in this case. But an
! 976: alternative calling convention is available in which functions
! 977: that take a fixed number of arguments pop them but other functions
! 978: (such as `printf') pop nothing (the caller pops all). When this
! 979: convention is in use, FUNTYPE is examined to determine whether a
! 980: function takes a fixed number of arguments.
1.1 root 981:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.