Annotation of gcc/gcc.info-20, revision 1.1.1.5

1.1.1.5 ! root        1: This is Info file gcc.info, produced by Makeinfo version 1.67 from the
        !             2: input file gcc.texi.
1.1       root        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.
1.1.1.5 ! root      660:      FRAMEADDR is the frame pointer of the COUNT frame, or the frame
1.1.1.4   root      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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.