home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1244 / gccinfo.zoo / gccinfo / gcc.info-13 < prev    next >
Encoding:
GNU Info File  |  1992-02-16  |  46.0 KB  |  998 lines

  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.