Annotation of gcc/gcc.info-13, revision 1.1.1.1

1.1       root        1: This is Info file gcc.info, produced by Makeinfo-1.43 from the input
                      2: file gcc.texi.
                      3: 
                      4:    This file documents the use and the internals of the GNU compiler.
                      5: 
                      6:    Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
                      7: 
                      8:    Permission is granted to make and distribute verbatim copies of
                      9: this manual provided the copyright notice and this permission notice
                     10: are preserved on all copies.
                     11: 
                     12:    Permission is granted to copy and distribute modified versions of
                     13: this manual under the conditions for verbatim copying, provided also
                     14: that the section entitled "GNU General Public License" is included
                     15: exactly as in the original, and provided that the entire resulting
                     16: derived work is distributed under the terms of a permission notice
                     17: identical to this one.
                     18: 
                     19:    Permission is granted to copy and distribute translations of this
                     20: manual into another language, under the above conditions for modified
                     21: versions, except that the section entitled "GNU General Public
                     22: License" and this permission notice may be included in translations
                     23: approved by the Free Software Foundation instead of in the original
                     24: English.
                     25: 
                     26: 
                     27: File: gcc.info,  Node: Frame Registers,  Next: Elimination,  Prev: Frame Layout,  Up: Stack and Calling
                     28: 
                     29: Registers That Address the Stack Frame
                     30: --------------------------------------
                     31: 
                     32: `STACK_POINTER_REGNUM'
                     33:      The register number of the stack pointer register, which must
                     34:      also be a fixed register according to `FIXED_REGISTERS'.  On most
                     35:      machines, the hardware determines which register this is.
                     36: 
                     37: `FRAME_POINTER_REGNUM'
                     38:      The register number of the frame pointer register, which is used
                     39:      to access automatic variables in the stack frame.  On some
                     40:      machines, the hardware determines which register this is.  On
                     41:      other machines, you can choose any register you wish for this
                     42:      purpose.
                     43: 
                     44: `ARG_POINTER_REGNUM'
                     45:      The register number of the arg pointer register, which is used to
                     46:      access the function's argument list.  On some machines, this is
                     47:      the same as the frame pointer register.  On some machines, the
                     48:      hardware determines which register this is.  On other machines,
                     49:      you can choose any register you wish for this purpose.  If this
                     50:      is not the same register as the frame pointer register, then you
                     51:      must mark it as a fixed register according to `FIXED_REGISTERS',
                     52:      or arrange to be able to eliminate it (*note Elimination::.).
                     53: 
                     54: `STATIC_CHAIN_REGNUM'
                     55: `STATIC_CHAIN_INCOMING_REGNUM'
                     56:      Register numbers used for passing a function's static chain
                     57:      pointer.  If register windows are used,
                     58:      `STATIC_CHAIN_INCOMING_REGNUM' is the register number as seen by
                     59:      the called function, while `STATIC_CHAIN_REGNUM' is the register
                     60:      number as seen by the calling function.  If these registers are
                     61:      the same, `STATIC_CHAIN_INCOMING_REGNUM' need not be defined.
                     62: 
                     63:      The static chain register need not be a fixed register.
                     64: 
                     65:      If the static chain is passed in memory, these macros should not
                     66:      be defined; instead, the next two macros should be defined.
                     67: 
                     68: `STATIC_CHAIN'
                     69: `STATIC_CHAIN_INCOMING'
                     70:      If the static chain is passed in memory, these macros provide rtx
                     71:      giving `mem' expressions that denote where they are stored. 
                     72:      `STATIC_CHAIN' and `STATIC_CHAIN_INCOMING' give the locations as
                     73:      seen by the calling and called functions, respectively.  Often
                     74:      the former will be at an offset from the stack pointer and the
                     75:      latter at an offset from the frame pointer.
                     76: 
                     77:      The variables `stack_pointer_rtx', `frame_pointer_rtx', and
                     78:      `arg_pointer_rtx' will have been initialized prior to the use of
                     79:      these macros and should be used to refer to those items.
                     80: 
                     81:      If the static chain is passed in a register, the two previous
                     82:      macros should be defined instead.
                     83: 
                     84: 
                     85: File: gcc.info,  Node: Elimination,  Next: Stack Arguments,  Prev: Frame Registers,  Up: Stack and Calling
                     86: 
                     87: Eliminating Frame Pointer and Arg Pointer
                     88: -----------------------------------------
                     89: 
                     90: `FRAME_POINTER_REQUIRED'
                     91:      A C expression which is nonzero if a function must have and use a
                     92:      frame pointer.  This expression is evaluated  in the reload pass.
                     93:       If its value is nonzero the function will have a frame pointer.
                     94: 
                     95:      The expression can in principle examine the current function and
                     96:      decide according to the facts, but on most machines the constant
                     97:      0 or the constant 1 suffices.  Use 0 when the machine allows code
                     98:      to be generated with no frame pointer, and doing so saves some
                     99:      time or space.  Use 1 when there is no possible advantage to
                    100:      avoiding a frame pointer.
                    101: 
                    102:      In certain cases, the compiler does not know how to produce valid
                    103:      code without a frame pointer.  The compiler recognizes those
                    104:      cases and automatically gives the function a frame pointer
                    105:      regardless of what `FRAME_POINTER_REQUIRED' says.  You don't need
                    106:      to worry about them.
                    107: 
                    108:      In a function that does not require a frame pointer, the frame
                    109:      pointer register can be allocated for ordinary usage, unless you
                    110:      mark it as a fixed register.  See `FIXED_REGISTERS' for more
                    111:      information.
                    112: 
                    113:      This macro is ignored and need not be defined if `ELIMINABLE_REGS'
                    114:      is defined.
                    115: 
                    116: `INITIAL_FRAME_POINTER_OFFSET (DEPTH-VAR)'
                    117:      A C statement to store in the variable DEPTH-VAR the difference
                    118:      between the frame pointer and the stack pointer values
                    119:      immediately after the function prologue.  The value would be
                    120:      computed from information such as the result of `get_frame_size
                    121:      ()' and the tables of registers `regs_ever_live' and
                    122:      `call_used_regs'.
                    123: 
                    124:      If `ELIMINABLE_REGS' is defined, this macro will be not be used
                    125:      and need not be defined.  Otherwise, it must be defined even if
                    126:      `FRAME_POINTER_REQUIRED' is defined to always be true; in that
                    127:      case, you may set DEPTH-VAR to anything.
                    128: 
                    129: `ELIMINABLE_REGS'
                    130:      If defined, this macro specifies a table of register pairs used to
                    131:      eliminate unneeded registers that point into the stack frame.  If
                    132:      it is not defined, the only elimination attempted by the compiler
                    133:      is to replace references to the frame pointer with references to
                    134:      the stack pointer.
                    135: 
                    136:      The definition of this macro is a list of structure
                    137:      initializations, each of which specifies an original and
                    138:      replacement register.
                    139: 
                    140:      On some machines, the position of the argument pointer is not
                    141:      known until the compilation is completed.  In such a case, a
                    142:      separate hard register must be used for the argument pointer. 
                    143:      This register can be eliminated by replacing it with either the
                    144:      frame pointer or the argument pointer, depending on whether or
                    145:      not the frame pointer has been eliminated.
                    146: 
                    147:      In this case, you might specify:
                    148:           #define ELIMINABLE_REGS  \
                    149:           {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
                    150:            {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
                    151:            {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
                    152: 
                    153:      Note that the elimination of the argument pointer with the stack
                    154:      pointer is specified first since that is the preferred
                    155:      elimination.
                    156: 
                    157: `CAN_ELIMINATE (FROM-REG, TO-REG)'
                    158:      A C expression that returns non-zero if the compiler is allowed
                    159:      to try to replace register number FROM-REG with register number
                    160:      TO-REG.  This macro need only be defined if `ELIMINABLE_REGS' is
                    161:      defined, and will usually be the constant 1, since most of the
                    162:      cases preventing register elimination are things that the
                    163:      compiler already knows about.
                    164: 
                    165: `INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)'
                    166:      This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'.  It
                    167:      specifies the initial difference between the specified pair of
                    168:      registers.  This macro must be defined if `ELIMINABLE_REGS' is
                    169:      defined.
                    170: 
                    171: `LONGJMP_RESTORE_FROM_STACK'
                    172:      Define this macro if the `longjmp' function restores registers
                    173:      from the stack frames, rather than from those saved specifically
                    174:      by `setjmp'.  Certain quantities must not be kept in registers
                    175:      across a call to `setjmp' on such machines.
                    176: 
                    177: 
                    178: File: gcc.info,  Node: Stack Arguments,  Next: Register Arguments,  Prev: Elimination,  Up: Stack and Calling
                    179: 
                    180: Passing Function Arguments on the Stack
                    181: ---------------------------------------
                    182: 
                    183:    The macros in this section control how arguments are passed on the
                    184: stack.  See the following section for other macros that control
                    185: passing certain arguments in registers.
                    186: 
                    187: `PROMOTE_PROTOTYPES'
                    188:      Define this macro if an argument declared as `char' or `short' in
                    189:      a prototype should actually be passed as an `int'.  In addition
                    190:      to avoiding errors in certain cases of mismatch, it also makes
                    191:      for better code on certain machines.
                    192: 
                    193: `PUSH_ROUNDING (NPUSHED)'
                    194:      A C expression that is the number of bytes actually pushed onto
                    195:      the stack when an instruction attempts to push NPUSHED bytes.
                    196: 
                    197:      If the target machine does not have a push instruction, do not
                    198:      define this macro.  That directs GNU CC to use an alternate
                    199:      strategy: to allocate the entire argument block and then store
                    200:      the arguments into it.
                    201: 
                    202:      On some machines, the definition
                    203: 
                    204:           #define PUSH_ROUNDING(BYTES) (BYTES)
                    205: 
                    206:      will suffice.  But on other machines, instructions that appear to
                    207:      push one byte actually push two bytes in an attempt to maintain
                    208:      alignment.  Then the definition should be
                    209: 
                    210:           #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
                    211: 
                    212: `ACCUMULATE_OUTGOING_ARGS'
                    213:      If defined, the maximum amount of space required for outgoing
                    214:      arguments will be computed and placed into the variable
                    215:      `current_function_outgoing_args_size'.  No space will be pushed
                    216:      onto the stack for each call; instead, the function prologue
                    217:      should increase the stack frame size by this amount.
                    218: 
                    219:      It is not proper to define both `PUSH_ROUNDING' and
                    220:      `ACCUMULATE_OUTGOING_ARGS'.
                    221: 
                    222: `REG_PARM_STACK_SPACE'
                    223:      Define this macro if functions should assume that stack space has
                    224:      been allocated for arguments even when their values are passed in
                    225:      registers.
                    226: 
                    227:      The value of this macro is the size, in bytes, of the area
                    228:      reserved for arguments passed in registers.
                    229: 
                    230:      This space can either be allocated by the caller or be a part of
                    231:      the machine-dependent stack frame: `OUTGOING_REG_PARM_STACK_SPACE'
                    232:      says which.
                    233: 
                    234: `OUTGOING_REG_PARM_STACK_SPACE'
                    235:      Define this if it is the responsibility of the caller to allocate
                    236:      the area reserved for arguments passed in registers.
                    237: 
                    238:      If `ACCUMULATE_OUTGOING_ARGS' is defined, this macro controls
                    239:      whether the space for these arguments counts in the value of
                    240:      `current_function_outgoing_args_size'.
                    241: 
                    242: `STACK_PARMS_IN_REG_PARM_AREA'
                    243:      Define this macro if `REG_PARM_STACK_SPACE' is defined but stack
                    244:      parameters don't skip the area specified by
                    245:      `REG_PARM_STACK_SPACE'.
                    246: 
                    247:      Normally, when a parameter is not passed in registers, it is
                    248:      placed on the stack beyond the `REG_PARM_STACK_SPACE' area. 
                    249:      Defining this macro suppresses this behavior and causes the
                    250:      parameter to be passed on the stack in its natural location.
                    251: 
                    252: `RETURN_POPS_ARGS (FUNTYPE, STACK-SIZE)'
                    253:      A C expression that should indicate the number of bytes of its own
                    254:      arguments that a function pops on returning, or 0 if the function
                    255:      pops no arguments and the caller must therefore pop them all
                    256:      after the function returns.
                    257: 
                    258:      FUNTYPE is a C variable whose value is a tree node that describes
                    259:      the function in question.  Normally it is a node of type
                    260:      `FUNCTION_TYPE' that describes the data type of the function. 
                    261:      From this it is possible to obtain the data types of the value and
                    262:      arguments (if known).
                    263: 
                    264:      When a call to a library function is being considered, FUNTYPE
                    265:      will contain an identifier node for the library function.  Thus,
                    266:      if you need to distinguish among various library functions, you
                    267:      can do so by their names.  Note that "library function" in this
                    268:      context means a function used to perform arithmetic, whose name
                    269:      is known specially in the compiler and was not mentioned in the C
                    270:      code being compiled.
                    271: 
                    272:      STACK-SIZE is the number of bytes of arguments passed on the
                    273:      stack.  If a variable number of bytes is passed, it is zero, and
                    274:      argument popping will always be the responsibility of the calling
                    275:      function.
                    276: 
                    277:      On the Vax, all functions always pop their arguments, so the
                    278:      definition of this macro is STACK-SIZE.  On the 68000, using the
                    279:      standard calling convention, no functions pop their arguments, so
                    280:      the value of the macro is always 0 in this case.  But an
                    281:      alternative calling convention is available in which functions
                    282:      that take a fixed number of arguments pop them but other
                    283:      functions (such as `printf') pop nothing (the caller pops all). 
                    284:      When this convention is in use, FUNTYPE is examined to determine
                    285:      whether a function takes a fixed number of arguments.
                    286: 
                    287: 
                    288: File: gcc.info,  Node: Register Arguments,  Next: Scalar Return,  Prev: Stack Arguments,  Up: Stack and Calling
                    289: 
                    290: Passing Arguments in Registers
                    291: ------------------------------
                    292: 
                    293:    This section describes the macros which let you control how various
                    294: types of arguments are passed in registers or how they are arranged in
                    295: the stack.
                    296: 
                    297: `FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
                    298:      A C expression that controls whether a function argument is passed
                    299:      in a register, and which register.
                    300: 
                    301:      The arguments are CUM, which summarizes all the previous
                    302:      arguments; MODE, the machine mode of the argument; TYPE, the data
                    303:      type of the argument as a tree node or 0 if that is not known
                    304:      (which happens for C support library functions); and NAMED, which
                    305:      is 1 for an ordinary argument and 0 for nameless arguments that
                    306:      correspond to `...' in the called function's prototype.
                    307: 
                    308:      The value of the expression should either be a `reg' RTX for the
                    309:      hard register in which to pass the argument, or zero to pass the
                    310:      argument on the stack.
                    311: 
                    312:      For machines like the Vax and 68000, where normally all arguments
                    313:      are pushed, zero suffices as a definition.
                    314: 
                    315:      The usual way to make the ANSI library `stdarg.h' work on a
                    316:      machine where some arguments are usually passed in registers, is
                    317:      to cause nameless arguments to be passed on the stack instead. 
                    318:      This is done by making `FUNCTION_ARG' return 0 whenever NAMED is
                    319:      0.
                    320: 
                    321:      You may use the macro `MUST_PASS_IN_STACK (MODE, TYPE)' in the
                    322:      definition of this macro to determine if this argument is of a
                    323:      type that must be passed in the stack.  If `REG_PARM_STACK_SPACE'
                    324:      is not defined and `FUNCTION_ARG' returns non-zero for such an
                    325:      argument, the compiler will abort.  If `REG_PARM_STACK_SPACE' is
                    326:      defined, the argument will be computed in the stack and then
                    327:      loaded into a register.
                    328: 
                    329: `FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
                    330:      Define this macro if the target machine has "register windows", so
                    331:      that the register in which a function sees an arguments is not
                    332:      necessarily the same as the one in which the caller passed the
                    333:      argument.
                    334: 
                    335:      For such machines, `FUNCTION_ARG' computes the register in which
                    336:      the caller passes the value, and `FUNCTION_INCOMING_ARG' should
                    337:      be defined in a similar fashion to tell the function being called
                    338:      where the arguments will arrive.
                    339: 
                    340:      If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
                    341:      both purposes.
                    342: 
                    343: `FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
                    344:      A C expression for the number of words, at the beginning of an
                    345:      argument, must be put in registers.  The value must be zero for
                    346:      arguments that are passed entirely in registers or that are
                    347:      entirely pushed on the stack.
                    348: 
                    349:      On some machines, certain arguments must be passed partially in
                    350:      registers and partially in memory.  On these machines, typically
                    351:      the first N words of arguments are passed in registers, and the
                    352:      rest on the stack.  If a multi-word argument (a `double' or a
                    353:      structure) crosses that boundary, its first few words must be
                    354:      passed in registers and the rest must be pushed.  This macro
                    355:      tells the compiler when this occurs, and how many of the words
                    356:      should go in registers.
                    357: 
                    358:      `FUNCTION_ARG' for these arguments should return the first
                    359:      register to be used by the caller for this argument; likewise
                    360:      `FUNCTION_INCOMING_ARG', for the called function.
                    361: 
                    362: `FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)'
                    363:      A C expression that indicates when an argument must be passed by
                    364:      reference.  If nonzero for an argument, a copy of that argument
                    365:      is made in memory and a pointer to the argument is passed instead
                    366:      of the argument itself.  The pointer is passed in whatever way is
                    367:      appropriate for passing a pointer to that type.
                    368: 
                    369:      On machines where `REG_PARM_STACK_SPACE' is not defined, a
                    370:      suitable definition of this macro might be
                    371:           #define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED)  \
                    372:             MUST_PASS_IN_STACK (MODE, TYPE)
                    373: 
                    374: `CUMULATIVE_ARGS'
                    375:      A C type for declaring a variable that is used as the first
                    376:      argument of `FUNCTION_ARG' and other related values.  For some
                    377:      target machines, the type `int' suffices and can hold the number
                    378:      of bytes of argument so far.
                    379: 
                    380:      There is no need to record in `CUMULATIVE_ARGS' anything about the
                    381:      arguments that have been passed on the stack.  The compiler has
                    382:      other variables to keep track of that.  For target machines on
                    383:      which all arguments are passed on the stack, there is no need to
                    384:      store anything in `CUMULATIVE_ARGS'; however, the data structure
                    385:      must exist and should not be empty, so use `int'.
                    386: 
                    387: `INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME)'
                    388:      A C statement (sans semicolon) for initializing the variable CUM
                    389:      for the state at the beginning of the argument list.  The
                    390:      variable has type `CUMULATIVE_ARGS'.  The value of FNTYPE is the
                    391:      tree node for the data type of the function which will receive
                    392:      the args, or 0 if the args are to a compiler support library
                    393:      function.
                    394: 
                    395:      When processing a call to a compiler support library function,
                    396:      LIBNAME identifies which one.  It is a `symbol_ref' rtx which
                    397:      contains the name of the function, as a string.  LIBNAME is 0 when
                    398:      an ordinary C function call is being processed.  Thus, each time
                    399:      this macro is called, either LIBNAME or FNTYPE is nonzero, but
                    400:      never both of them at once.
                    401: 
                    402: `INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)'
                    403:      Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
                    404:      finding the arguments for the function being compiled.  If this
                    405:      macro is undefined, `INIT_CUMULATIVE_ARGS' is used instead.
                    406: 
                    407:      The argument LIBNAME exists for symmetry with
                    408:      `INIT_CUMULATIVE_ARGS'.  The value passed for LIBNAME is always
                    409:      0, since library routines with special calling conventions are
                    410:      never compiled with GNU CC.
                    411: 
                    412: `FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
                    413:      A C statement (sans semicolon) to update the summarizer variable
                    414:      CUM to advance past an argument in the argument list.  The values
                    415:      MODE, TYPE and NAMED describe that argument.  Once this is done,
                    416:      the variable CUM is suitable for analyzing the *following*
                    417:      argument with `FUNCTION_ARG', etc.
                    418: 
                    419:      This macro need not do anything if the argument in question was
                    420:      passed on the stack.  The compiler knows how to track the amount
                    421:      of stack space used for arguments without any special help.
                    422: 
                    423: `FUNCTION_ARG_PADDING (MODE, TYPE)'
                    424:      If defined, a C expression which determines whether, and in which
                    425:      direction, to pad out an argument with extra space.  The value
                    426:      should be of type `enum direction': either `upward' to pad above
                    427:      the argument, `downward' to pad below, or `none' to inhibit
                    428:      padding.
                    429: 
                    430:      This macro does not control the *amount* of padding; that is
                    431:      always just enough to reach the next multiple of
                    432:      `FUNCTION_ARG_BOUNDARY'.
                    433: 
                    434:      This macro has a default definition which is right for most
                    435:      systems.  For little-endian machines, the default is to pad
                    436:      upward.  For big-endian machines, the default is to pad downward
                    437:      for an argument of constant size shorter than an `int', and
                    438:      upward otherwise.
                    439: 
                    440: `FUNCTION_ARG_BOUNDARY (MODE, TYPE)'
                    441:      If defined, a C expression that gives the alignment boundary, in
                    442:      bits, of an argument with the specified mode and type.  If it is
                    443:      not defined, `PARM_BOUNDARY' is used for all arguments.
                    444: 
                    445: `FUNCTION_ARG_REGNO_P (REGNO)'
                    446:      A C expression that is nonzero if REGNO is the number of a hard
                    447:      register in which function arguments are sometimes passed.  This
                    448:      does *not* include implicit arguments such as the static chain and
                    449:      the structure-value address.  On many machines, no registers can
                    450:      be used for this purpose since all function arguments are pushed
                    451:      on the stack.
                    452: 
                    453: 
                    454: File: gcc.info,  Node: Scalar Return,  Next: Aggregate Return,  Prev: Register Arguments,  Up: Stack and Calling
                    455: 
                    456: How Scalar Function Values Are Returned
                    457: ---------------------------------------
                    458: 
                    459:    This section discusses the macros that control returning scalars as
                    460: values--values that can fit in registers.
                    461: 
                    462: `TRADITIONAL_RETURN_FLOAT'
                    463:      Define this macro if `-traditional' should not cause functions
                    464:      declared to return `float' to convert the value to `double'.
                    465: 
                    466: `FUNCTION_VALUE (VALTYPE, FUNC)'
                    467:      A C expression to create an RTX representing the place where a
                    468:      function returns a value of data type VALTYPE.  VALTYPE is a tree
                    469:      node representing a data type.  Write `TYPE_MODE (VALTYPE)' to
                    470:      get the machine mode used to represent that type.  On many
                    471:      machines, only the mode is relevant.  (Actually, on most
                    472:      machines, scalar values are returned in the same place regardless
                    473:      of mode).
                    474: 
                    475:      If the precise function being called is known, FUNC is a tree
                    476:      node (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.
                    477:       This makes it possible to use a different value-returning
                    478:      convention for specific functions when all their calls are known.
                    479: 
                    480:      `FUNCTION_VALUE' is not used for return vales with aggregate data
                    481:      types, because these are returned in another way.  See
                    482:      `STRUCT_VALUE_REGNUM' and related macros, below.
                    483: 
                    484: `FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
                    485:      Define this macro if the target machine has "register windows" so
                    486:      that the register in which a function returns its value is not
                    487:      the same as the one in which the caller sees the value.
                    488: 
                    489:      For such machines, `FUNCTION_VALUE' computes the register in
                    490:      which the caller will see the value, and
                    491:      `FUNCTION_OUTGOING_VALUE' should be defined in a similar fashion
                    492:      to tell the function where to put the value.
                    493: 
                    494:      If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE'
                    495:      serves both purposes.
                    496: 
                    497:      `FUNCTION_OUTGOING_VALUE' is not used for return vales with
                    498:      aggregate data types, because these are returned in another way. 
                    499:      See `STRUCT_VALUE_REGNUM' and related macros, below.
                    500: 
                    501: `LIBCALL_VALUE (MODE)'
                    502:      A C expression to create an RTX representing the place where a
                    503:      library function returns a value of mode MODE.  If the precise
                    504:      function being called is known, FUNC is a tree node
                    505:      (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer. 
                    506:      This makes it possible to use a different value-returning
                    507:      convention for specific functions when all their calls are known.
                    508: 
                    509:      Note that "library function" in this context means a compiler
                    510:      support routine, used to perform arithmetic, whose name is known
                    511:      specially by the compiler and was not mentioned in the C code
                    512:      being compiled.
                    513: 
                    514:      The definition of `LIBRARY_VALUE' need not be concerned aggregate
                    515:      data types, because none of the library functions returns such
                    516:      types.
                    517: 
                    518: `FUNCTION_VALUE_REGNO_P (REGNO)'
                    519:      A C expression that is nonzero if REGNO is the number of a hard
                    520:      register in which the values of called function may come back.
                    521: 
                    522:      A register whose use for returning values is limited to serving
                    523:      as the second of a pair (for a value of type `double', say) need
                    524:      not be recognized by this macro.  So for most machines, this
                    525:      definition suffices:
                    526: 
                    527:           #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
                    528: 
                    529:      If the machine has register windows, so that the caller and the
                    530:      called function use different registers for the return value,
                    531:      this macro should recognize only the caller's register numbers.
                    532: 
                    533: 
                    534: File: gcc.info,  Node: Aggregate Return,  Next: Caller Saves,  Prev: Scalar Return,  Up: Stack and Calling
                    535: 
                    536: How Large Values Are Returnd
                    537: ----------------------------
                    538: 
                    539:    When a function value's mode is `BLKmode' (and in some other
                    540: cases), the value is not returned according to `FUNCTION_VALUE' (*note
                    541: Scalar Return::.).  Instead, the caller passes the address of a block
                    542: of memory in which the value should be stored.  This address is called
                    543: the "structure value address".
                    544: 
                    545:    This section describes how to control returning structure values in
                    546: memory.
                    547: 
                    548: `RETURN_IN_MEMORY (TYPE)'
                    549:      A C expression which can inhibit the returning of certain function
                    550:      values in registers, based on the type of value.  A nonzero value
                    551:      says to return the function value in memory, just as large
                    552:      structures are always returned.  Here TYPE will be a C expression
                    553:      of type `tree', representing the data type of the value.
                    554: 
                    555:      Note that values of mode `BLKmode' are returned in memory
                    556:      regardless of this macro.  Also, the option `-fpcc-struct-return'
                    557:      takes effect regardless of this macro.  On most systems, it is
                    558:      possible to leave the macro undefined; this causes a default
                    559:      definition to be used, whose value is the constant 0.
                    560: 
                    561: `STRUCT_VALUE_REGNUM'
                    562:      If the structure value address is passed in a register, then
                    563:      `STRUCT_VALUE_REGNUM' should be the number of that register.
                    564: 
                    565: `STRUCT_VALUE'
                    566:      If the structure value address is not passed in a register, define
                    567:      `STRUCT_VALUE' as an expression returning an RTX for the place
                    568:      where the address is passed.  If it returns 0, the address is
                    569:      passed as an "invisible" first argument.
                    570: 
                    571: `STRUCT_VALUE_INCOMING_REGNUM'
                    572:      On some architectures the place where the structure value address
                    573:      is found by the called function is not the same place that the
                    574:      caller put it.  This can be due to register windows, or it could
                    575:      be because the function prologue moves it to a different place.
                    576: 
                    577:      If the incoming location of the structure value address is in a
                    578:      register, define this macro as the register number.
                    579: 
                    580: `STRUCT_VALUE_INCOMING'
                    581:      If the incoming location is not a register, define
                    582:      `STRUCT_VALUE_INCOMING' as an expression for an RTX for where the
                    583:      called function should find the value.  If it should find the
                    584:      value on the stack, define this to create a `mem' which refers to
                    585:      the frame pointer.  A definition of 0 means that the address is
                    586:      passed as an "invisible" first argument.
                    587: 
                    588: `PCC_STATIC_STRUCT_RETURN'
                    589:      Define this macro if the usual system convention on the target
                    590:      machine for returning structures and unions is for the called
                    591:      function to return the address of a static variable containing
                    592:      the value.  GNU CC does not normally use this convention, even if
                    593:      it is the usual one, but does use it if `-fpcc-struct-value' is
                    594:      specified.
                    595: 
                    596:      Do not define this if the usual system convention is for the
                    597:      caller to pass an address to the subroutine.
                    598: 
                    599: 
                    600: File: gcc.info,  Node: Caller Saves,  Next: Function Entry,  Prev: Aggregate Return,  Up: Stack and Calling
                    601: 
                    602: Caller-Saves Register Allocation
                    603: --------------------------------
                    604: 
                    605:    If you enable it, GNU CC can save registers around function calls. 
                    606: This makes it possible to use call-clobbered registers to hold
                    607: variables that must live across calls.
                    608: 
                    609: `DEFAULT_CALLER_SAVES'
                    610:      Define this macro if function calls on the target machine do not
                    611:      preserve any registers; in other words, if `CALL_USED_REGISTERS'
                    612:      has 1 for all registers.  This macro enables `-fcaller-saves' by
                    613:      default.  Eventually that option will be enabled by default on
                    614:      all machines and both the option and this macro will be
                    615:      eliminated.
                    616: 
                    617: `CALLER_SAVE_PROFITABLE (REFS, CALLS)'
                    618:      A C expression to determine whether it is worthwhile to consider
                    619:      placing a pseudo-register in a call-clobbered hard register and
                    620:      saving and restoring it around each function call.  The
                    621:      expression should be 1 when this is worth doing, and 0 otherwise.
                    622: 
                    623:      If you don't define this macro, a default is used which is good
                    624:      on most machines: `4 * CALLS < REFS'.
                    625: 
                    626: 
                    627: File: gcc.info,  Node: Function Entry,  Next: Profiling,  Prev: Caller Saves,  Up: Stack and Calling
                    628: 
                    629: Function Entry and Exit
                    630: -----------------------
                    631: 
                    632:    This section describes the macros that output function entry
                    633: ("prologue") and exit ("epilogue") code.
                    634: 
                    635: `FUNCTION_PROLOGUE (FILE, SIZE)'
                    636:      A C compound statement that outputs the assembler code for entry
                    637:      to a function.  The prologue is responsible for setting up the
                    638:      stack frame, initializing the frame pointer register, saving
                    639:      registers that must be saved, and allocating SIZE additional
                    640:      bytes of storage for the local variables.  SIZE is an integer. 
                    641:      FILE is a stdio stream to which the assembler code should be
                    642:      output.
                    643: 
                    644:      The label for the beginning of the function need not be output by
                    645:      this macro.  That has already been done when the macro is run.
                    646: 
                    647:      To determine which registers to save, the macro can refer to the
                    648:      array `regs_ever_live': element R is nonzero if hard register R
                    649:      is used anywhere within the function.  This implies the function
                    650:      prologue should save register R, provided it is not one of the
                    651:      call-used registers.  (`FUNCTION_EPILOGUE' must likewise use
                    652:      `regs_ever_live'.)
                    653: 
                    654:      On machines that have "register windows", the function entry code
                    655:      does not save on the stack the registers that are in the windows,
                    656:      even if they are supposed to be preserved by function calls;
                    657:      instead it takes appropriate steps to "push" the register stack,
                    658:      if any non-call-used registers are used in the function.
                    659: 
                    660:      On machines where functions may or may not have frame-pointers,
                    661:      the function entry code must vary accordingly; it must set up the
                    662:      frame pointer if one is wanted, and not otherwise.  To determine
                    663:      whether a frame pointer is in wanted, the macro can refer to the
                    664:      variable `frame_pointer_needed'.  The variable's value will be 1
                    665:      at run time in a function that needs a frame pointer.  *Note
                    666:      Elimination::.
                    667: 
                    668:      The function entry code is responsible for allocating any stack
                    669:      space required for the function.  This stack space consists of
                    670:      the regions listed below.  In most cases, these regions are
                    671:      allocated in the order listed, with the last listed region
                    672:      closest to the top of the stack (the lowest address if
                    673:      `STACK_GROWS_DOWNWARD' is defined, and the highest address if it
                    674:      is not defined).  You can use a different order for a machine if
                    675:      doing so is more convenient or required for compatibility
                    676:      reasons.  Except in cases where required by standard or by a
                    677:      debugger, there is no reason why the stack layout used by GCC
                    678:      need agree with that used by other compilers for a machine.
                    679: 
                    680:         * A region of `current_function_pretend_args_size' bytes of
                    681:           uninitialized space just underneath the first argument
                    682:           arriving on the stack.  (This may not be at the very start
                    683:           of the allocated stack region if the calling sequence has
                    684:           pushed anything else since pushing the stack arguments.  But
                    685:           usually, on such machines, nothing else has been pushed yet,
                    686:           because the function prologue itself does all the pushing.) 
                    687:           This region is used on machines where an argument may be
                    688:           passed partly in registers and partly in memory, and, in
                    689:           some cases to support the features in `varargs.h' and
                    690:           `stdargs.h'.
                    691: 
                    692:         * An area of memory used to save certain registers used by the
                    693:           function.  The size of this area, which may also include
                    694:           space for such things as the return address and pointers to
                    695:           previous stack frames, is machine-specific and usually
                    696:           depends on which registers have been used in the function. 
                    697:           Machines with register windows often do not require a save
                    698:           area.
                    699: 
                    700:         * A region of at least SIZE bytes, possibly rounded up to an
                    701:           allocation boundary, to contain the local variables of the
                    702:           function.  On some machines, this region and the save area
                    703:           may occur in the opposite order, with the save area closer
                    704:           to the top of the stack.
                    705: 
                    706:         * Optionally, in the case that `ACCUMULATE_OUTGOING_ARGS' is
                    707:           defined, a region of `current_function_outgoing_args_size'
                    708:           bytes to be used for outgoing argument lists of the
                    709:           function.  *Note Stack Arguments::.
                    710: 
                    711:      Normally, it is necessary for `FUNCTION_PROLOGUE' and
                    712:      `FUNCTION_EPILOGUE' to treat leaf functions specially.  The C
                    713:      variable `leaf_function' is nonzero for such a function.
                    714: 
                    715: `EXIT_IGNORE_STACK'
                    716:      Define this macro as a C expression that is nonzero if the return
                    717:      instruction or the function epilogue ignores the value of the
                    718:      stack pointer; in other words, if it is safe to delete an
                    719:      instruction to adjust the stack pointer before a return from the
                    720:      function.
                    721: 
                    722:      Note that this macro's value is relevant only for functions for
                    723:      which frame pointers are maintained.  It is never safe to delete
                    724:      a final stack adjustment in a function that has no frame pointer,
                    725:      and the compiler knows this regardless of `EXIT_IGNORE_STACK'.
                    726: 
                    727: `FUNCTION_EPILOGUE (FILE, SIZE)'
                    728:      A C compound statement that outputs the assembler code for exit
                    729:      from a function.  The epilogue is responsible for restoring the
                    730:      saved registers and stack pointer to their values when the
                    731:      function was called, and returning control to the caller.  This
                    732:      macro takes the same arguments as the macro `FUNCTION_PROLOGUE',
                    733:      and the registers to restore are determined from `regs_ever_live'
                    734:      and `CALL_USED_REGISTERS' in the same way.
                    735: 
                    736:      On some machines, there is a single instruction that does all the
                    737:      work of returning from the function.  On these machines, give that
                    738:      instruction the name `return' and do not define the macro
                    739:      `FUNCTION_EPILOGUE' at all.
                    740: 
                    741:      Do not define a pattern named `return' if you want the
                    742:      `FUNCTION_EPILOGUE' to be used.  If you want the target switches
                    743:      to control whether return instructions or epilogues are used,
                    744:      define a `return' pattern with a validity condition that tests
                    745:      the target switches appropriately.  If the `return' pattern's
                    746:      validity condition is false, epilogues will be used.
                    747: 
                    748:      On machines where functions may or may not have frame-pointers,
                    749:      the function exit code must vary accordingly.  Sometimes the code
                    750:      for these two cases is completely different.  To determine
                    751:      whether a frame pointer is in wanted, the macro can refer to the
                    752:      variable `frame_pointer_needed'.  The variable's value will be 1
                    753:      at run time in a function that needs a frame pointer.
                    754: 
                    755:      Normally, it is necessary for `FUNCTION_PROLOGUE' and
                    756:      `FUNCTION_EPILOGUE' to treat leaf functions specially.  The C
                    757:      variable `leaf_function' is nonzero for such a function.  *Note
                    758:      Leaf Functions::.
                    759: 
                    760:      On some machines, some functions pop their arguments on exit while
                    761:      others leave that for the caller to do.  For example, the 68020
                    762:      when given `-mrtd' pops arguments in functions that take a fixed
                    763:      number of arguments.
                    764: 
                    765:      Your definition of the macro `RETURN_POPS_ARGS' decides which
                    766:      functions pop their own arguments.  `FUNCTION_EPILOGUE' needs to
                    767:      know what was decided.  The variable `current_function_pops_args'
                    768:      is the number of bytes of its arguments that a function should
                    769:      pop.  *Note Scalar Return::.
                    770: 
                    771: `DELAY_SLOTS_FOR_EPILOGUE'
                    772:      Define this macro if the function epilogue contains delay slots
                    773:      to which instructions from the rest of the function can be
                    774:      "moved".  The definition should be a C expression whose value is
                    775:      an integer representing the number of delay slots there.
                    776: 
                    777: `ELIGIBLE_FOR_EPILOGUE_DELAY (INSN, N)'
                    778:      A C expression that returns 1 if INSN can be placed in delay slot
                    779:      number N of the epilogue.
                    780: 
                    781:      The argument N is an integer which identifies the delay slot now
                    782:      being considered (since different slots may have different rules
                    783:      of eligibility).  It is never negative and is always less than
                    784:      the number of epilogue delay slots (what
                    785:      `DELAY_SLOTS_FOR_EPILOGUE' returns).  If you reject a particular
                    786:      insn for a given delay slot, in principle, it may be reconsidered
                    787:      for a subsequent delay slot.  Also, other insns may (at least in
                    788:      principle) be considered for the so far unfilled delay slot.
                    789: 
                    790:      The insns accepted to fill the epilogue delay slots are put in an
                    791:      RTL list made with `insn_list' objects, stored in the variable
                    792:      `current_function_epilogue_delay_list'.  The insn for the first
                    793:      delay slot comes first in the list.  Your definition of the macro
                    794:      `FUNCTION_EPILOGUE' should fill the delay slots by outputting the
                    795:      insns in this list, usually by calling `final_scan_insn'.
                    796: 
                    797:      You need not define this macro if you did not define
                    798:      `DELAY_SLOTS_FOR_EPILOGUE'.
                    799: 
                    800: 
                    801: File: gcc.info,  Node: Profiling,  Prev: Function Entry,  Up: Stack and Calling
                    802: 
                    803: Generating Code for Profiling
                    804: -----------------------------
                    805: 
                    806: `FUNCTION_PROFILER (FILE, LABELNO)'
                    807:      A C statement or compound statement to output to FILE some
                    808:      assembler code to call the profiling subroutine `mcount'.  Before
                    809:      calling, the assembler code must load the address of a counter
                    810:      variable into a register where `mcount' expects to find the
                    811:      address.  The name of this variable is `LP' followed by the
                    812:      number LABELNO, so you would generate the name using `LP%d' in a
                    813:      `fprintf'.
                    814: 
                    815:      The details of how the address should be passed to `mcount' are
                    816:      determined by your operating system environment, not by GNU CC. 
                    817:      To figure them out, compile a small program for profiling using
                    818:      the system's installed C compiler and look at the assembler code
                    819:      that results.
                    820: 
                    821: `PROFILE_BEFORE_PROLOGUE'
                    822:      Define this macro if the code for function profiling should come
                    823:      before the function prologue.  Normally, the profiling code comes
                    824:      after.
                    825: 
                    826: `FUNCTION_BLOCK_PROFILER (FILE, LABELNO)'
                    827:      A C statement or compound statement to output to FILE some
                    828:      assembler code to initialize basic-block profiling for the current
                    829:      object module.  This code should call the subroutine
                    830:      `__bb_init_func' once per object module, passing it as its sole
                    831:      argument the address of a block allocated in the object module.
                    832: 
                    833:      The name of the block is a local symbol made with this statement:
                    834: 
                    835:           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
                    836: 
                    837:      Of course, since you are writing the definition of
                    838:      `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
                    839:      can take a short cut in the definition of this macro and use the
                    840:      name that you know will result.
                    841: 
                    842:      The first word of this block is a flag which will be nonzero if
                    843:      the object module has already been initialized.  So test this
                    844:      word first, and do not call `__bb_init_func' if the flag is
                    845:      nonzero.
                    846: 
                    847: `BLOCK_PROFILER (FILE, BLOCKNO)'
                    848:      A C statement or compound statement to increment the count
                    849:      associated with the basic block number BLOCKNO.  Basic blocks are
                    850:      numbered separately from zero within each compilation.  The count
                    851:      associated with block number BLOCKNO is at index BLOCKNO in a
                    852:      vector of words; the name of this array is a local symbol made
                    853:      with this statement:
                    854: 
                    855:           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
                    856: 
                    857:      Of course, since you are writing the definition of
                    858:      `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
                    859:      can take a short cut in the definition of this macro and use the
                    860:      name that you know will result.
                    861: 
                    862: 
                    863: File: gcc.info,  Node: Varargs,  Next: Trampolines,  Prev: Stack and Calling,  Up: Machine Macros
                    864: 
                    865: Implementing the Varargs Macros
                    866: ===============================
                    867: 
                    868:    GNU CC comes with an implementation of `varargs.h' and `stdarg.h'
                    869: that work without change on machines that pass arguments on the stack.
                    870:  Other machines require their own implementations of varargs, and the
                    871: two machine independent header files must have conditionals to include
                    872: it.
                    873: 
                    874:    ANSI `stdarg.h' differs from traditional `varargs.h' mainly in the
                    875: calling convention for `va_start'.  The traditional implementation
                    876: takes just one argument, which is the variable in which to store the
                    877: argument pointer.  The ANSI implementation takes an additional first
                    878: argument, which is the last named argument of the function.  However,
                    879: it should not use this argument.  The way to find the end of the named
                    880: arguments is with the built-in functions described below.
                    881: 
                    882: `__builtin_saveregs ()'
                    883:      Use this built-in function to save the argument registers in
                    884:      memory so that the varargs mechanism can access them.  Both ANSI
                    885:      and traditional versions of `va_start' must use
                    886:      `__builtin_saveregs', unless you use `SETUP_INCOMING_VARARGS'
                    887:      (see below) instead.
                    888: 
                    889:      On some machines, `__builtin_saveregs' is open-coded under the
                    890:      control of the macro `EXPAND_BUILTIN_SAVEREGS'.  On other
                    891:      machines, it calls a routine written in assembler language, found
                    892:      in `libgcc2.c'.
                    893: 
                    894:      Regardless of what code is generated for the call to
                    895:      `__builtin_saveregs', it appears at the beginning of the function,
                    896:      not where the call to `__builtin_saveregs' is written.  This is
                    897:      because the registers must be saved before the function starts to
                    898:      use them for its own purposes.
                    899: 
                    900: `__builtin_args_info (CATEGORY)'
                    901:      Use this built-in function to find the first anonymous arguments
                    902:      in registers.
                    903: 
                    904:      In general, a machine may have several categories of registers
                    905:      used for arguments, each for a particular category of data types.
                    906:       (For example, on some machines, floating-point registers are
                    907:      used for floating-point arguments while other arguments are
                    908:      passed in the general registers.) To make non-varargs functions
                    909:      use the proper calling convention, you have defined the
                    910:      `CUMULATIVE_ARGS' data type to record how many registers in each
                    911:      category have been used so far
                    912: 
                    913:      `__builtin_args_info' accesses the same data structure of type
                    914:      `CUMULATIVE_ARGS' after the ordinary argument layout is finished
                    915:      with it, with CATEGORY specifying which word to access.  Thus, the
                    916:      value indicates the first unused register in a given category.
                    917: 
                    918:      Normally, you would use `__builtin_args_info' in the
                    919:      implementation of `va_start', accessing each category just once
                    920:      and storing the value in the `va_list' object.  This is because
                    921:      `va_list' will have to update the values, and there is no way to
                    922:      alter the values accessed by `__builtin_args_info'.
                    923: 
                    924: `__builtin_next_arg ()'
                    925:      This is the equivalent of `__builtin_args_info', for stack
                    926:      arguments.  It returns the address of the first anonymous stack
                    927:      argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns
                    928:      the address of the location above the first anonymous stack
                    929:      argument. Use it in `va_start' to initialize the pointer for
                    930:      fetching arguments from the stack.
                    931: 
                    932: `__builtin_classify_type (OBJECT)'
                    933:      Since each machine has its own conventions for which data types
                    934:      are passed in which kind of register, your implementation of
                    935:      `va_arg' has to embody these conventions.  The easiest way to
                    936:      categorize the specified data type is to use
                    937:      `__builtin_classify_type' together with `sizeof' and
                    938:      `__alignof__'.
                    939: 
                    940:      `__builtin_classify_type' ignores the value of OBJECT,
                    941:      considering only its data type.  It returns an integer describing
                    942:      what kind of type that is--integer, floating, pointer, structure,
                    943:      and so on.
                    944: 
                    945:      The file `typeclass.h' defines an enumeration that you can use to
                    946:      interpret the values of `__builtin_classify_type'.
                    947: 
                    948:    These machine description macros help implement varargs:
                    949: 
                    950: `EXPAND_BUILTIN_SAVEREGS (ARGS)'
                    951:      If defined, is a C expression that produces the machine-specific
                    952:      code for a call to `__builtin_saveregs'.  This code will be moved
                    953:      to the very beginning of the function, before any parameter
                    954:      access are made.  The return value of this function should be an
                    955:      RTX that contains the value to use as the return of
                    956:      `__builtin_saveregs'.
                    957: 
                    958:      The argument ARGS is a `tree_list' containing the arguments that
                    959:      were passed to `__builtin_saveregs'.
                    960: 
                    961:      If this macro is not defined, the compiler will output an ordinary
                    962:      call to the library function `__builtin_saveregs'.
                    963: 
                    964: `SETUP_INCOMING_VARARGS (ARGS_SO_FAR, MODE, TYPE, PRETEND_ARGS_SIZE, SECOND_TIME)'
                    965:      This macro offers an alternative to using `__builtin_saveregs' and
                    966:      defining the macro `EXPAND_BUILTIN_SAVEREGS'.  Use it to store the
                    967:      anonymous register arguments into the stack so that all the
                    968:      arguments appear to have been passed consecutively on the stack. 
                    969:      Once this is done, you can use the standard implementation of
                    970:      varargs that works for machines that pass all their arguments on
                    971:      the stack.
                    972: 
                    973:      The argument ARGS_SO_FAR is the `CUMULATIVE_ARGS' data structure,
                    974:      containing the values that obtain after processing of the named
                    975:      arguments.  The arguments MODE and TYPE describe the last named
                    976:      argument--its machine mode and its data type as a tree node.
                    977: 
                    978:      The macro implementation should do two things: first, push onto
                    979:      the stack all the argument registers *not* used for the named
                    980:      arguments, and second, store the size of the data thus pushed
                    981:      into the `int'-valued variable whose name is supplied as the
                    982:      argument PRETEND_ARGS_SIZE.  The value that you store here will
                    983:      serve as additional offset for setting up the stack frame.
                    984: 
                    985:      Because you must generate code to push the anonymous arguments at
                    986:      compile time without knowing their data types,
                    987:      `SETUP_INCOMING_VARARGS' is only useful on machines that have just
                    988:      a single category of argument register and use it uniformly for
                    989:      all data types.
                    990: 
                    991:      If the argument SECOND_TIME is nonzero, it means that the
                    992:      arguments of the function are being analyzed for the second time.
                    993:       This happens for an inline function, which is not actually
                    994:      compiled until the end of the source file.  The macro
                    995:      `SETUP_INCOMING_VARARGS' should not generate any instructions in
                    996:      this case.
                    997: 
                    998: 

unix.superglobalmegacorp.com

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