home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / gnu / gcc-2.5.8-bin.lha / info / gcc.info-19 < prev    next >
Encoding:
GNU Info File  |  1994-02-21  |  49.2 KB  |  1,074 lines

  1. This is Info file gcc.info, produced by Makeinfo-1.55 from the input
  2. file gcc.texi.
  3.  
  4.    This file documents the use and the internals of the GNU compiler.
  5.  
  6.    Published by the Free Software Foundation 675 Massachusetts Avenue
  7. Cambridge, MA 02139 USA
  8.  
  9.    Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
  10.  
  11.    Permission is granted to make and distribute verbatim copies of this
  12. manual provided the copyright notice and this permission notice are
  13. preserved on all copies.
  14.  
  15.    Permission is granted to copy and distribute modified versions of
  16. this manual under the conditions for verbatim copying, provided also
  17. that the sections entitled "GNU General Public License" and "Protect
  18. Your Freedom--Fight `Look And Feel'" are included exactly as in the
  19. original, and provided that the entire resulting derived work is
  20. distributed under the terms of a permission notice identical to this
  21. one.
  22.  
  23.    Permission is granted to copy and distribute translations of this
  24. manual into another language, under the above conditions for modified
  25. versions, except that the sections entitled "GNU General Public
  26. License" and "Protect Your Freedom--Fight `Look And Feel'", and this
  27. permission notice, may be included in translations approved by the Free
  28. Software Foundation instead of in the original English.
  29.  
  30. 
  31. File: gcc.info,  Node: Scalar Return,  Next: Aggregate Return,  Prev: Register Arguments,  Up: Stack and Calling
  32.  
  33. How Scalar Function Values Are Returned
  34. ---------------------------------------
  35.  
  36.    This section discusses the macros that control returning scalars as
  37. values--values that can fit in registers.
  38.  
  39. `TRADITIONAL_RETURN_FLOAT'
  40.      Define this macro if `-traditional' should not cause functions
  41.      declared to return `float' to convert the value to `double'.
  42.  
  43. `FUNCTION_VALUE (VALTYPE, FUNC)'
  44.      A C expression to create an RTX representing the place where a
  45.      function returns a value of data type VALTYPE.  VALTYPE is a tree
  46.      node representing a data type.  Write `TYPE_MODE (VALTYPE)' to get
  47.      the machine mode used to represent that type.  On many machines,
  48.      only the mode is relevant.  (Actually, on most machines, scalar
  49.      values are returned in the same place regardless of mode).
  50.  
  51.      If `PROMOTE_FUNCTION_RETURN' is defined, you must apply the same
  52.      promotion rules specified in `PROMOTE_MODE' if VALTYPE is a scalar
  53.      type.
  54.  
  55.      If the precise function being called is known, FUNC is a tree node
  56.      (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.  This
  57.      makes it possible to use a different value-returning convention
  58.      for specific functions when all their calls are known.
  59.  
  60.      `FUNCTION_VALUE' is not used for return vales with aggregate data
  61.      types, because these are returned in another way.  See
  62.      `STRUCT_VALUE_REGNUM' and related macros, below.
  63.  
  64. `FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
  65.      Define this macro if the target machine has "register windows" so
  66.      that the register in which a function returns its value is not the
  67.      same as the one in which the caller sees the value.
  68.  
  69.      For such machines, `FUNCTION_VALUE' computes the register in which
  70.      the caller will see the value.  `FUNCTION_OUTGOING_VALUE' should be
  71.      defined in a similar fashion to tell the function where to put the
  72.      value.
  73.  
  74.      If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE'
  75.      serves both purposes.
  76.  
  77.      `FUNCTION_OUTGOING_VALUE' is not used for return vales with
  78.      aggregate data types, because these are returned in another way.
  79.      See `STRUCT_VALUE_REGNUM' and related macros, below.
  80.  
  81. `LIBCALL_VALUE (MODE)'
  82.      A C expression to create an RTX representing the place where a
  83.      library function returns a value of mode MODE.  If the precise
  84.      function being called is known, FUNC is a tree node
  85.      (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.  This
  86.      makes it possible to use a different value-returning convention
  87.      for specific functions when all their calls are known.
  88.  
  89.      Note that "library function" in this context means a compiler
  90.      support routine, used to perform arithmetic, whose name is known
  91.      specially by the compiler and was not mentioned in the C code being
  92.      compiled.
  93.  
  94.      The definition of `LIBRARY_VALUE' need not be concerned aggregate
  95.      data types, because none of the library functions returns such
  96.      types.
  97.  
  98. `FUNCTION_VALUE_REGNO_P (REGNO)'
  99.      A C expression that is nonzero if REGNO is the number of a hard
  100.      register in which the values of called function may come back.
  101.  
  102.      A register whose use for returning values is limited to serving as
  103.      the second of a pair (for a value of type `double', say) need not
  104.      be recognized by this macro.  So for most machines, this definition
  105.      suffices:
  106.  
  107.           #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
  108.  
  109.      If the machine has register windows, so that the caller and the
  110.      called function use different registers for the return value, this
  111.      macro should recognize only the caller's register numbers.
  112.  
  113. `APPLY_RESULT_SIZE'
  114.      Define this macro if `untyped_call' and `untyped_return' need more
  115.      space than is implied by `FUNCTION_VALUE_REGNO_P' for saving and
  116.      restoring an arbitrary return value.
  117.  
  118. 
  119. File: gcc.info,  Node: Aggregate Return,  Next: Caller Saves,  Prev: Scalar Return,  Up: Stack and Calling
  120.  
  121. How Large Values Are Returned
  122. -----------------------------
  123.  
  124.    When a function value's mode is `BLKmode' (and in some other cases),
  125. the value is not returned according to `FUNCTION_VALUE' (*note Scalar
  126. Return::.).  Instead, the caller passes the address of a block of
  127. memory in which the value should be stored.  This address is called the
  128. "structure value address".
  129.  
  130.    This section describes how to control returning structure values in
  131. memory.
  132.  
  133. `RETURN_IN_MEMORY (TYPE)'
  134.      A C expression which can inhibit the returning of certain function
  135.      values in registers, based on the type of value.  A nonzero value
  136.      says to return the function value in memory, just as large
  137.      structures are always returned.  Here TYPE will be a C expression
  138.      of type `tree', representing the data type of the value.
  139.  
  140.      Note that values of mode `BLKmode' must be explicitly handled by
  141.      this macro.  Also, the option `-fpcc-struct-return' takes effect
  142.      regardless of this macro.  On most systems, it is possible to
  143.      leave the macro undefined; this causes a default definition to be
  144.      used, whose value is the constant 1 for `BLKmode' values, and 0
  145.      otherwise.
  146.  
  147.      Do not use this macro to indicate that structures and unions
  148.      should always be returned in memory.  You should instead use
  149.      `DEFAULT_PCC_STRUCT_RETURN' to indicate this.
  150.  
  151. `DEFAULT_PCC_STRUCT_RETURN'
  152.      Define this macro to be 1 if all structure and union return values
  153.      must be in memory.  Since this results in slower code, this should
  154.      be defined only if needed for compatibility with other compilers
  155.      or with an ABI.  If you define this macro to be 0, then the
  156.      conventions used for structure and union return values are decided
  157.      by the `RETURN_IN_MEMORY' macro.
  158.  
  159.      If not defined, this defaults to the value 1.
  160.  
  161. `STRUCT_VALUE_REGNUM'
  162.      If the structure value address is passed in a register, then
  163.      `STRUCT_VALUE_REGNUM' should be the number of that register.
  164.  
  165. `STRUCT_VALUE'
  166.      If the structure value address is not passed in a register, define
  167.      `STRUCT_VALUE' as an expression returning an RTX for the place
  168.      where the address is passed.  If it returns 0, the address is
  169.      passed as an "invisible" first argument.
  170.  
  171. `STRUCT_VALUE_INCOMING_REGNUM'
  172.      On some architectures the place where the structure value address
  173.      is found by the called function is not the same place that the
  174.      caller put it.  This can be due to register windows, or it could
  175.      be because the function prologue moves it to a different place.
  176.  
  177.      If the incoming location of the structure value address is in a
  178.      register, define this macro as the register number.
  179.  
  180. `STRUCT_VALUE_INCOMING'
  181.      If the incoming location is not a register, then you should define
  182.      `STRUCT_VALUE_INCOMING' as an expression for an RTX for where the
  183.      called function should find the value.  If it should find the
  184.      value on the stack, define this to create a `mem' which refers to
  185.      the frame pointer.  A definition of 0 means that the address is
  186.      passed as an "invisible" first argument.
  187.  
  188. `PCC_STATIC_STRUCT_RETURN'
  189.      Define this macro if the usual system convention on the target
  190.      machine for returning structures and unions is for the called
  191.      function to return the address of a static variable containing the
  192.      value.
  193.  
  194.      Do not define this if the usual system convention is for the
  195.      caller to pass an address to the subroutine.
  196.  
  197.      This macro has effect in `-fpcc-struct-return' mode, but it does
  198.      nothing when you use `-freg-struct-return' mode.
  199.  
  200. 
  201. File: gcc.info,  Node: Caller Saves,  Next: Function Entry,  Prev: Aggregate Return,  Up: Stack and Calling
  202.  
  203. Caller-Saves Register Allocation
  204. --------------------------------
  205.  
  206.    If you enable it, GNU CC can save registers around function calls.
  207. This makes it possible to use call-clobbered registers to hold
  208. variables that must live across calls.
  209.  
  210. `DEFAULT_CALLER_SAVES'
  211.      Define this macro if function calls on the target machine do not
  212.      preserve any registers; in other words, if `CALL_USED_REGISTERS'
  213.      has 1 for all registers.  This macro enables `-fcaller-saves' by
  214.      default.  Eventually that option will be enabled by default on all
  215.      machines and both the option and this macro will be eliminated.
  216.  
  217. `CALLER_SAVE_PROFITABLE (REFS, CALLS)'
  218.      A C expression to determine whether it is worthwhile to consider
  219.      placing a pseudo-register in a call-clobbered hard register and
  220.      saving and restoring it around each function call.  The expression
  221.      should be 1 when this is worth doing, and 0 otherwise.
  222.  
  223.      If you don't define this macro, a default is used which is good on
  224.      most machines: `4 * CALLS < REFS'.
  225.  
  226. 
  227. File: gcc.info,  Node: Function Entry,  Next: Profiling,  Prev: Caller Saves,  Up: Stack and Calling
  228.  
  229. Function Entry and Exit
  230. -----------------------
  231.  
  232.    This section describes the macros that output function entry
  233. ("prologue") and exit ("epilogue") code.
  234.  
  235. `FUNCTION_PROLOGUE (FILE, SIZE)'
  236.      A C compound statement that outputs the assembler code for entry
  237.      to a function.  The prologue is responsible for setting up the
  238.      stack frame, initializing the frame pointer register, saving
  239.      registers that must be saved, and allocating SIZE additional bytes
  240.      of storage for the local variables.  SIZE is an integer.  FILE is
  241.      a stdio stream to which the assembler code should be output.
  242.  
  243.      The label for the beginning of the function need not be output by
  244.      this macro.  That has already been done when the macro is run.
  245.  
  246.      To determine which registers to save, the macro can refer to the
  247.      array `regs_ever_live': element R is nonzero if hard register R is
  248.      used anywhere within the function.  This implies the function
  249.      prologue should save register R, provided it is not one of the
  250.      call-used registers.  (`FUNCTION_EPILOGUE' must likewise use
  251.      `regs_ever_live'.)
  252.  
  253.      On machines that have "register windows", the function entry code
  254.      does not save on the stack the registers that are in the windows,
  255.      even if they are supposed to be preserved by function calls;
  256.      instead it takes appropriate steps to "push" the register stack,
  257.      if any non-call-used registers are used in the function.
  258.  
  259.      On machines where functions may or may not have frame-pointers, the
  260.      function entry code must vary accordingly; it must set up the frame
  261.      pointer if one is wanted, and not otherwise.  To determine whether
  262.      a frame pointer is in wanted, the macro can refer to the variable
  263.      `frame_pointer_needed'.  The variable's value will be 1 at run
  264.      time in a function that needs a frame pointer.  *Note
  265.      Elimination::.
  266.  
  267.      The function entry code is responsible for allocating any stack
  268.      space required for the function.  This stack space consists of the
  269.      regions listed below.  In most cases, these regions are allocated
  270.      in the order listed, with the last listed region closest to the
  271.      top of the stack (the lowest address if `STACK_GROWS_DOWNWARD' is
  272.      defined, and the highest address if it is not defined).  You can
  273.      use a different order for a machine if doing so is more convenient
  274.      or required for compatibility reasons.  Except in cases where
  275.      required by standard or by a debugger, there is no reason why the
  276.      stack layout used by GCC need agree with that used by other
  277.      compilers for a machine.
  278.  
  279.         * A region of `current_function_pretend_args_size' bytes of
  280.           uninitialized space just underneath the first argument
  281.           arriving on the stack.  (This may not be at the very start of
  282.           the allocated stack region if the calling sequence has pushed
  283.           anything else since pushing the stack arguments.  But
  284.           usually, on such machines, nothing else has been pushed yet,
  285.           because the function prologue itself does all the pushing.)
  286.           This region is used on machines where an argument may be
  287.           passed partly in registers and partly in memory, and, in some
  288.           cases to support the features in `varargs.h' and `stdargs.h'.
  289.  
  290.         * An area of memory used to save certain registers used by the
  291.           function.  The size of this area, which may also include
  292.           space for such things as the return address and pointers to
  293.           previous stack frames, is machine-specific and usually
  294.           depends on which registers have been used in the function.
  295.           Machines with register windows often do not require a save
  296.           area.
  297.  
  298.         * A region of at least SIZE bytes, possibly rounded up to an
  299.           allocation boundary, to contain the local variables of the
  300.           function.  On some machines, this region and the save area
  301.           may occur in the opposite order, with the save area closer to
  302.           the top of the stack.
  303.  
  304.         * Optionally, when `ACCUMULATE_OUTGOING_ARGS' is defined, a
  305.           region of `current_function_outgoing_args_size' bytes to be
  306.           used for outgoing argument lists of the function.  *Note
  307.           Stack Arguments::.
  308.  
  309.      Normally, it is necessary for the macros `FUNCTION_PROLOGUE' and
  310.      `FUNCTION_EPILOGUE' to treat leaf functions specially.  The C
  311.      variable `leaf_function' is nonzero for such a function.
  312.  
  313. `EXIT_IGNORE_STACK'
  314.      Define this macro as a C expression that is nonzero if the return
  315.      instruction or the function epilogue ignores the value of the stack
  316.      pointer; in other words, if it is safe to delete an instruction to
  317.      adjust the stack pointer before a return from the function.
  318.  
  319.      Note that this macro's value is relevant only for functions for
  320.      which frame pointers are maintained.  It is never safe to delete a
  321.      final stack adjustment in a function that has no frame pointer,
  322.      and the compiler knows this regardless of `EXIT_IGNORE_STACK'.
  323.  
  324. `FUNCTION_EPILOGUE (FILE, SIZE)'
  325.      A C compound statement that outputs the assembler code for exit
  326.      from a function.  The epilogue is responsible for restoring the
  327.      saved registers and stack pointer to their values when the
  328.      function was called, and returning control to the caller.  This
  329.      macro takes the same arguments as the macro `FUNCTION_PROLOGUE',
  330.      and the registers to restore are determined from `regs_ever_live'
  331.      and `CALL_USED_REGISTERS' in the same way.
  332.  
  333.      On some machines, there is a single instruction that does all the
  334.      work of returning from the function.  On these machines, give that
  335.      instruction the name `return' and do not define the macro
  336.      `FUNCTION_EPILOGUE' at all.
  337.  
  338.      Do not define a pattern named `return' if you want the
  339.      `FUNCTION_EPILOGUE' to be used.  If you want the target switches
  340.      to control whether return instructions or epilogues are used,
  341.      define a `return' pattern with a validity condition that tests the
  342.      target switches appropriately.  If the `return' pattern's validity
  343.      condition is false, epilogues will be used.
  344.  
  345.      On machines where functions may or may not have frame-pointers, the
  346.      function exit code must vary accordingly.  Sometimes the code for
  347.      these two cases is completely different.  To determine whether a
  348.      frame pointer is wanted, the macro can refer to the variable
  349.      `frame_pointer_needed'.  The variable's value will be 1 when
  350.      compiling a function that needs a frame pointer.
  351.  
  352.      Normally, `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE' must treat
  353.      leaf functions specially.  The C variable `leaf_function' is
  354.      nonzero for such a function.  *Note Leaf Functions::.
  355.  
  356.      On some machines, some functions pop their arguments on exit while
  357.      others leave that for the caller to do.  For example, the 68020
  358.      when given `-mrtd' pops arguments in functions that take a fixed
  359.      number of arguments.
  360.  
  361.      Your definition of the macro `RETURN_POPS_ARGS' decides which
  362.      functions pop their own arguments.  `FUNCTION_EPILOGUE' needs to
  363.      know what was decided.  The variable that is called
  364.      `current_function_pops_args' is the number of bytes of its
  365.      arguments that a function should pop.  *Note Scalar Return::.
  366.  
  367. `DELAY_SLOTS_FOR_EPILOGUE'
  368.      Define this macro if the function epilogue contains delay slots to
  369.      which instructions from the rest of the function can be "moved".
  370.      The definition should be a C expression whose value is an integer
  371.      representing the number of delay slots there.
  372.  
  373. `ELIGIBLE_FOR_EPILOGUE_DELAY (INSN, N)'
  374.      A C expression that returns 1 if INSN can be placed in delay slot
  375.      number N of the epilogue.
  376.  
  377.      The argument N is an integer which identifies the delay slot now
  378.      being considered (since different slots may have different rules of
  379.      eligibility).  It is never negative and is always less than the
  380.      number of epilogue delay slots (what `DELAY_SLOTS_FOR_EPILOGUE'
  381.      returns).  If you reject a particular insn for a given delay slot,
  382.      in principle, it may be reconsidered for a subsequent delay slot.
  383.      Also, other insns may (at least in principle) be considered for
  384.      the so far unfilled delay slot.
  385.  
  386.      The insns accepted to fill the epilogue delay slots are put in an
  387.      RTL list made with `insn_list' objects, stored in the variable
  388.      `current_function_epilogue_delay_list'.  The insn for the first
  389.      delay slot comes first in the list.  Your definition of the macro
  390.      `FUNCTION_EPILOGUE' should fill the delay slots by outputting the
  391.      insns in this list, usually by calling `final_scan_insn'.
  392.  
  393.      You need not define this macro if you did not define
  394.      `DELAY_SLOTS_FOR_EPILOGUE'.
  395.  
  396. 
  397. File: gcc.info,  Node: Profiling,  Prev: Function Entry,  Up: Stack and Calling
  398.  
  399. Generating Code for Profiling
  400. -----------------------------
  401.  
  402.    These macros will help you generate code for profiling.
  403.  
  404. `FUNCTION_PROFILER (FILE, LABELNO)'
  405.      A C statement or compound statement to output to FILE some
  406.      assembler code to call the profiling subroutine `mcount'.  Before
  407.      calling, the assembler code must load the address of a counter
  408.      variable into a register where `mcount' expects to find the
  409.      address.  The name of this variable is `LP' followed by the number
  410.      LABELNO, so you would generate the name using `LP%d' in a
  411.      `fprintf'.
  412.  
  413.      The details of how the address should be passed to `mcount' are
  414.      determined by your operating system environment, not by GNU CC.  To
  415.      figure them out, compile a small program for profiling using the
  416.      system's installed C compiler and look at the assembler code that
  417.      results.
  418.  
  419. `PROFILE_BEFORE_PROLOGUE'
  420.      Define this macro if the code for function profiling should come
  421.      before the function prologue.  Normally, the profiling code comes
  422.      after.
  423.  
  424. `FUNCTION_BLOCK_PROFILER (FILE, LABELNO)'
  425.      A C statement or compound statement to output to FILE some
  426.      assembler code to initialize basic-block profiling for the current
  427.      object module.  This code should call the subroutine
  428.      `__bb_init_func' once per object module, passing it as its sole
  429.      argument the address of a block allocated in the object module.
  430.  
  431.      The name of the block is a local symbol made with this statement:
  432.  
  433.           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
  434.  
  435.      Of course, since you are writing the definition of
  436.      `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
  437.      can take a short cut in the definition of this macro and use the
  438.      name that you know will result.
  439.  
  440.      The first word of this block is a flag which will be nonzero if the
  441.      object module has already been initialized.  So test this word
  442.      first, and do not call `__bb_init_func' if the flag is nonzero.
  443.  
  444. `BLOCK_PROFILER (FILE, BLOCKNO)'
  445.      A C statement or compound statement to increment the count
  446.      associated with the basic block number BLOCKNO.  Basic blocks are
  447.      numbered separately from zero within each compilation.  The count
  448.      associated with block number BLOCKNO is at index BLOCKNO in a
  449.      vector of words; the name of this array is a local symbol made
  450.      with this statement:
  451.  
  452.           ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
  453.  
  454.      Of course, since you are writing the definition of
  455.      `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
  456.      can take a short cut in the definition of this macro and use the
  457.      name that you know will result.
  458.  
  459. `BLOCK_PROFILER_CODE'
  460.      A C function or functions which are needed in the library to
  461.      support block profiling.
  462.  
  463. 
  464. File: gcc.info,  Node: Varargs,  Next: Trampolines,  Prev: Stack and Calling,  Up: Target Macros
  465.  
  466. Implementing the Varargs Macros
  467. ===============================
  468.  
  469.    GNU CC comes with an implementation of `varargs.h' and `stdarg.h'
  470. that work without change on machines that pass arguments on the stack.
  471. Other machines require their own implementations of varargs, and the
  472. two machine independent header files must have conditionals to include
  473. it.
  474.  
  475.    ANSI `stdarg.h' differs from traditional `varargs.h' mainly in the
  476. calling convention for `va_start'.  The traditional implementation
  477. takes just one argument, which is the variable in which to store the
  478. argument pointer.  The ANSI implementation of `va_start' takes an
  479. additional second argument.  The user is supposed to write the last
  480. named argument of the function here.
  481.  
  482.    However, `va_start' should not use this argument.  The way to find
  483. the end of the named arguments is with the built-in functions described
  484. below.
  485.  
  486. `__builtin_saveregs ()'
  487.      Use this built-in function to save the argument registers in
  488.      memory so that the varargs mechanism can access them.  Both ANSI
  489.      and traditional versions of `va_start' must use
  490.      `__builtin_saveregs', unless you use `SETUP_INCOMING_VARARGS' (see
  491.      below) instead.
  492.  
  493.      On some machines, `__builtin_saveregs' is open-coded under the
  494.      control of the macro `EXPAND_BUILTIN_SAVEREGS'.  On other machines,
  495.      it calls a routine written in assembler language, found in
  496.      `libgcc2.c'.
  497.  
  498.      Code generated for the call to `__builtin_saveregs' appears at the
  499.      beginning of the function, as opposed to where the call to
  500.      `__builtin_saveregs' is written, regardless of what the code is.
  501.      This is because the registers must be saved before the function
  502.      starts to use them for its own purposes.
  503.  
  504. `__builtin_args_info (CATEGORY)'
  505.      Use this built-in function to find the first anonymous arguments in
  506.      registers.
  507.  
  508.      In general, a machine may have several categories of registers
  509.      used for arguments, each for a particular category of data types.
  510.      (For example, on some machines, floating-point registers are used
  511.      for floating-point arguments while other arguments are passed in
  512.      the general registers.) To make non-varargs functions use the
  513.      proper calling convention, you have defined the `CUMULATIVE_ARGS'
  514.      data type to record how many registers in each category have been
  515.      used so far
  516.  
  517.      `__builtin_args_info' accesses the same data structure of type
  518.      `CUMULATIVE_ARGS' after the ordinary argument layout is finished
  519.      with it, with CATEGORY specifying which word to access.  Thus, the
  520.      value indicates the first unused register in a given category.
  521.  
  522.      Normally, you would use `__builtin_args_info' in the implementation
  523.      of `va_start', accessing each category just once and storing the
  524.      value in the `va_list' object.  This is because `va_list' will
  525.      have to update the values, and there is no way to alter the values
  526.      accessed by `__builtin_args_info'.
  527.  
  528. `__builtin_next_arg ()'
  529.      This is the equivalent of `__builtin_args_info', for stack
  530.      arguments.  It returns the address of the first anonymous stack
  531.      argument, as type `void *'. If `ARGS_GROW_DOWNWARD', it returns
  532.      the address of the location above the first anonymous stack
  533.      argument. Use it in `va_start' to initialize the pointer for
  534.      fetching arguments from the stack.
  535.  
  536. `__builtin_classify_type (OBJECT)'
  537.      Since each machine has its own conventions for which data types are
  538.      passed in which kind of register, your implementation of `va_arg'
  539.      has to embody these conventions.  The easiest way to categorize the
  540.      specified data type is to use `__builtin_classify_type' together
  541.      with `sizeof' and `__alignof__'.
  542.  
  543.      `__builtin_classify_type' ignores the value of OBJECT, considering
  544.      only its data type.  It returns an integer describing what kind of
  545.      type that is--integer, floating, pointer, structure, and so on.
  546.  
  547.      The file `typeclass.h' defines an enumeration that you can use to
  548.      interpret the values of `__builtin_classify_type'.
  549.  
  550.    These machine description macros help implement varargs:
  551.  
  552. `EXPAND_BUILTIN_SAVEREGS (ARGS)'
  553.      If defined, is a C expression that produces the machine-specific
  554.      code for a call to `__builtin_saveregs'.  This code will be moved
  555.      to the very beginning of the function, before any parameter access
  556.      are made.  The return value of this function should be an RTX that
  557.      contains the value to use as the return of `__builtin_saveregs'.
  558.  
  559.      The argument ARGS is a `tree_list' containing the arguments that
  560.      were passed to `__builtin_saveregs'.
  561.  
  562.      If this macro is not defined, the compiler will output an ordinary
  563.      call to the library function `__builtin_saveregs'.
  564.  
  565. `SETUP_INCOMING_VARARGS (ARGS_SO_FAR, MODE, TYPE,'
  566.      PRETEND_ARGS_SIZE, SECOND_TIME) This macro offers an alternative
  567.      to using `__builtin_saveregs' and defining the macro
  568.      `EXPAND_BUILTIN_SAVEREGS'.  Use it to store the anonymous register
  569.      arguments into the stack so that all the arguments appear to have
  570.      been passed consecutively on the stack.  Once this is done, you
  571.      can use the standard implementation of varargs that works for
  572.      machines that pass all their arguments on the stack.
  573.  
  574.      The argument ARGS_SO_FAR is the `CUMULATIVE_ARGS' data structure,
  575.      containing the values that obtain after processing of the named
  576.      arguments.  The arguments MODE and TYPE describe the last named
  577.      argument--its machine mode and its data type as a tree node.
  578.  
  579.      The macro implementation should do two things: first, push onto the
  580.      stack all the argument registers *not* used for the named
  581.      arguments, and second, store the size of the data thus pushed into
  582.      the `int'-valued variable whose name is supplied as the argument
  583.      PRETEND_ARGS_SIZE.  The value that you store here will serve as
  584.      additional offset for setting up the stack frame.
  585.  
  586.      Because you must generate code to push the anonymous arguments at
  587.      compile time without knowing their data types,
  588.      `SETUP_INCOMING_VARARGS' is only useful on machines that have just
  589.      a single category of argument register and use it uniformly for
  590.      all data types.
  591.  
  592.      If the argument SECOND_TIME is nonzero, it means that the
  593.      arguments of the function are being analyzed for the second time.
  594.      This happens for an inline function, which is not actually
  595.      compiled until the end of the source file.  The macro
  596.      `SETUP_INCOMING_VARARGS' should not generate any instructions in
  597.      this case.
  598.  
  599. 
  600. File: gcc.info,  Node: Trampolines,  Next: Library Calls,  Prev: Varargs,  Up: Target Macros
  601.  
  602. Trampolines for Nested Functions
  603. ================================
  604.  
  605.    A "trampoline" is a small piece of code that is created at run time
  606. when the address of a nested function is taken.  It normally resides on
  607. the stack, in the stack frame of the containing function.  These macros
  608. tell GNU CC how to generate code to allocate and initialize a
  609. trampoline.
  610.  
  611.    The instructions in the trampoline must do two things: load a
  612. constant address into the static chain register, and jump to the real
  613. address of the nested function.  On CISC machines such as the m68k,
  614. this requires two instructions, a move immediate and a jump.  Then the
  615. two addresses exist in the trampoline as word-long immediate operands.
  616. On RISC machines, it is often necessary to load each address into a
  617. register in two parts.  Then pieces of each address form separate
  618. immediate operands.
  619.  
  620.    The code generated to initialize the trampoline must store the
  621. variable parts--the static chain value and the function address--into
  622. the immediate operands of the instructions.  On a CISC machine, this is
  623. simply a matter of copying each address to a memory reference at the
  624. proper offset from the start of the trampoline.  On a RISC machine, it
  625. may be necessary to take out pieces of the address and store them
  626. separately.
  627.  
  628. `TRAMPOLINE_TEMPLATE (FILE)'
  629.      A C statement to output, on the stream FILE, assembler code for a
  630.      block of data that contains the constant parts of a trampoline.
  631.      This code should not include a label--the label is taken care of
  632.      automatically.
  633.  
  634. `TRAMPOLINE_SECTION'
  635.      The name of a subroutine to switch to the section in which the
  636.      trampoline template is to be placed (*note Sections::.).  The
  637.      default is a value of `readonly_data_section', which places the
  638.      trampoline in the section containing read-only data.
  639.  
  640. `TRAMPOLINE_SIZE'
  641.      A C expression for the size in bytes of the trampoline, as an
  642.      integer.
  643.  
  644. `TRAMPOLINE_ALIGNMENT'
  645.      Alignment required for trampolines, in bits.
  646.  
  647.      If you don't define this macro, the value of `BIGGEST_ALIGNMENT'
  648.      is used for aligning trampolines.
  649.  
  650. `INITIALIZE_TRAMPOLINE (ADDR, FNADDR, STATIC_CHAIN)'
  651.      A C statement to initialize the variable parts of a trampoline.
  652.      aDDR is an RTX for the address of the trampoline; FNADDR is an RTX
  653.      for the address of the nested function; STATIC_CHAIN is an RTX for
  654.      the static chain value that should be passed to the function when
  655.      it is called.
  656.  
  657. `ALLOCATE_TRAMPOLINE (FP)'
  658.      A C expression to allocate run-time space for a trampoline.  The
  659.      expression value should be an RTX representing a memory reference
  660.      to the space for the trampoline.
  661.  
  662.      If this macro is not defined, by default the trampoline is
  663.      allocated as a stack slot.  This default is right for most
  664.      machines.  The exceptions are machines where it is impossible to
  665.      execute instructions in the stack area.  On such machines, you may
  666.      have to implement a separate stack, using this macro in
  667.      conjunction with `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE'.
  668.  
  669.      FP points to a data structure, a `struct function', which
  670.      describes the compilation status of the immediate containing
  671.      function of the function which the trampoline is for.  Normally
  672.      (when `ALLOCATE_TRAMPOLINE' is not defined), the stack slot for the
  673.      trampoline is in the stack frame of this containing function.
  674.      Other allocation strategies probably must do something analogous
  675.      with this information.
  676.  
  677.    Implementing trampolines is difficult on many machines because they
  678. have separate instruction and data caches.  Writing into a stack
  679. location fails to clear the memory in the instruction cache, so when
  680. the program jumps to that location, it executes the old contents.
  681.  
  682.    Here are two possible solutions.  One is to clear the relevant parts
  683. of the instruction cache whenever a trampoline is set up.  The other is
  684. to make all trampolines identical, by having them jump to a standard
  685. subroutine.  The former technique makes trampoline execution faster; the
  686. latter makes initialization faster.
  687.  
  688.    To clear the instruction cache when a trampoline is initialized,
  689. define the following macros which describe the shape of the cache.
  690.  
  691. `INSN_CACHE_SIZE'
  692.      The total size in bytes of the cache.
  693.  
  694. `INSN_CACHE_LINE_WIDTH'
  695.      The length in bytes of each cache line.  The cache is divided into
  696.      cache lines which are disjoint slots, each holding a contiguous
  697.      chunk of data fetched from memory.  Each time data is brought into
  698.      the cache, an entire line is read at once.  The data loaded into a
  699.      cache line is always aligned on a boundary equal to the line size.
  700.  
  701. `INSN_CACHE_DEPTH'
  702.      The number of alternative cache lines that can hold any particular
  703.      memory location.
  704.  
  705.    Alternatively, if the machine has system calls or instructions to
  706. clear the instruction cache directly, you can define the following
  707. macro.
  708.  
  709. `'
  710.      If defined, expands to a C expression clearing the *instruction
  711.      cache* in the specified interval.  If it is not defined, and the
  712.      macro INSN_CACHE_SIZE is defined, some generic code is generated
  713.      to clear the cache.  The definition of this macro would typically
  714.      be a series of `asm' statements.  Both BEG and END are both pointer
  715.      expressions.
  716.  
  717.    To use a standard subroutine, define the following macro.  In
  718. addition, you must make sure that the instructions in a trampoline fill
  719. an entire cache line with identical instructions, or else ensure that
  720. the beginning of the trampoline code is always aligned at the same
  721. point in its cache line.  Look in `m68k.h' as a guide.
  722.  
  723. `TRANSFER_FROM_TRAMPOLINE'
  724.      Define this macro if trampolines need a special subroutine to do
  725.      their work.  The macro should expand to a series of `asm'
  726.      statements which will be compiled with GNU CC.  They go in a
  727.      library function named `__transfer_from_trampoline'.
  728.  
  729.      If you need to avoid executing the ordinary prologue code of a
  730.      compiled C function when you jump to the subroutine, you can do so
  731.      by placing a special label of your own in the assembler code.  Use
  732.      one `asm' statement to generate an assembler label, and another to
  733.      make the label global.  Then trampolines can use that label to
  734.      jump directly to your special assembler code.
  735.  
  736. 
  737. File: gcc.info,  Node: Library Calls,  Next: Addressing Modes,  Prev: Trampolines,  Up: Target Macros
  738.  
  739. Implicit Calls to Library Routines
  740. ==================================
  741.  
  742. `MULSI3_LIBCALL'
  743.      A C string constant giving the name of the function to call for
  744.      multiplication of one signed full-word by another.  If you do not
  745.      define this macro, the default name is used, which is `__mulsi3',
  746.      a function defined in `libgcc.a'.
  747.  
  748. `DIVSI3_LIBCALL'
  749.      A C string constant giving the name of the function to call for
  750.      division of one signed full-word by another.  If you do not define
  751.      this macro, the default name is used, which is `__divsi3', a
  752.      function defined in `libgcc.a'.
  753.  
  754. `UDIVSI3_LIBCALL'
  755.      A C string constant giving the name of the function to call for
  756.      division of one unsigned full-word by another.  If you do not
  757.      define this macro, the default name is used, which is `__udivsi3',
  758.      a function defined in `libgcc.a'.
  759.  
  760. `MODSI3_LIBCALL'
  761.      A C string constant giving the name of the function to call for the
  762.      remainder in division of one signed full-word by another.  If you
  763.      do not define this macro, the default name is used, which is
  764.      `__modsi3', a function defined in `libgcc.a'.
  765.  
  766. `UMODSI3_LIBCALL'
  767.      A C string constant giving the name of the function to call for the
  768.      remainder in division of one unsigned full-word by another.  If
  769.      you do not define this macro, the default name is used, which is
  770.      `__umodsi3', a function defined in `libgcc.a'.
  771.  
  772. `MULDI3_LIBCALL'
  773.      A C string constant giving the name of the function to call for
  774.      multiplication of one signed double-word by another.  If you do not
  775.      define this macro, the default name is used, which is `__muldi3',
  776.      a function defined in `libgcc.a'.
  777.  
  778. `DIVDI3_LIBCALL'
  779.      A C string constant giving the name of the function to call for
  780.      division of one signed double-word by another.  If you do not
  781.      define this macro, the default name is used, which is `__divdi3', a
  782.      function defined in `libgcc.a'.
  783.  
  784. `UDIVDI3_LIBCALL'
  785.      A C string constant giving the name of the function to call for
  786.      division of one unsigned full-word by another.  If you do not
  787.      define this macro, the default name is used, which is `__udivdi3',
  788.      a function defined in `libgcc.a'.
  789.  
  790. `MODDI3_LIBCALL'
  791.      A C string constant giving the name of the function to call for the
  792.      remainder in division of one signed double-word by another.  If
  793.      you do not define this macro, the default name is used, which is
  794.      `__moddi3', a function defined in `libgcc.a'.
  795.  
  796. `UMODDI3_LIBCALL'
  797.      A C string constant giving the name of the function to call for the
  798.      remainder in division of one unsigned full-word by another.  If
  799.      you do not define this macro, the default name is used, which is
  800.      `__umoddi3', a function defined in `libgcc.a'.
  801.  
  802. `TARGET_EDOM'
  803.      The value of `EDOM' on the target machine, as a C integer constant
  804.      expression.  If you don't define this macro, GNU CC does not
  805.      attempt to deposit the value of `EDOM' into `errno' directly.
  806.      Look in `/usr/include/errno.h' to find the value of `EDOM' on your
  807.      system.
  808.  
  809.      If you do not define `TARGET_EDOM', then compiled code reports
  810.      domain errors by calling the library function and letting it
  811.      report the error.  If mathematical functions on your system use
  812.      `matherr' when there is an error, then you should leave
  813.      `TARGET_EDOM' undefined so that `matherr' is used normally.
  814.  
  815. `GEN_ERRNO_RTX'
  816.      Define this macro as a C expression to create an rtl expression
  817.      that refers to the global "variable" `errno'.  (On certain systems,
  818.      `errno' may not actually be a variable.)  If you don't define this
  819.      macro, a reasonable default is used.
  820.  
  821. `TARGET_MEM_FUNCTIONS'
  822.      Define this macro if GNU CC should generate calls to the System V
  823.      (and ANSI C) library functions `memcpy' and `memset' rather than
  824.      the BSD functions `bcopy' and `bzero'.
  825.  
  826. `LIBGCC_NEEDS_DOUBLE'
  827.      Define this macro if only `float' arguments cannot be passed to
  828.      library routines (so they must be converted to `double').  This
  829.      macro affects both how library calls are generated and how the
  830.      library routines in `libgcc1.c' accept their arguments.  It is
  831.      useful on machines where floating and fixed point arguments are
  832.      passed differently, such as the i860.
  833.  
  834. `FLOAT_ARG_TYPE'
  835.      Define this macro to override the type used by the library
  836.      routines to pick up arguments of type `float'.  (By default, they
  837.      use a union of `float' and `int'.)
  838.  
  839.      The obvious choice would be `float'--but that won't work with
  840.      traditional C compilers that expect all arguments declared as
  841.      `float' to arrive as `double'.  To avoid this conversion, the
  842.      library routines ask for the value as some other type and then
  843.      treat it as a `float'.
  844.  
  845.      On some systems, no other type will work for this.  For these
  846.      systems, you must use `LIBGCC_NEEDS_DOUBLE' instead, to force
  847.      conversion of the values `double' before they are passed.
  848.  
  849. `FLOATIFY (PASSED-VALUE)'
  850.      Define this macro to override the way library routines redesignate
  851.      a `float' argument as a `float' instead of the type it was passed
  852.      as.  The default is an expression which takes the `float' field of
  853.      the union.
  854.  
  855. `FLOAT_VALUE_TYPE'
  856.      Define this macro to override the type used by the library
  857.      routines to return values that ought to have type `float'.  (By
  858.      default, they use `int'.)
  859.  
  860.      The obvious choice would be `float'--but that won't work with
  861.      traditional C compilers gratuitously convert values declared as
  862.      `float' into `double'.
  863.  
  864. `INTIFY (FLOAT-VALUE)'
  865.      Define this macro to override the way the value of a
  866.      `float'-returning library routine should be packaged in order to
  867.      return it.  These functions are actually declared to return type
  868.      `FLOAT_VALUE_TYPE' (normally `int').
  869.  
  870.      These values can't be returned as type `float' because traditional
  871.      C compilers would gratuitously convert the value to a `double'.
  872.  
  873.      A local variable named `intify' is always available when the macro
  874.      `INTIFY' is used.  It is a union of a `float' field named `f' and
  875.      a field named `i' whose type is `FLOAT_VALUE_TYPE' or `int'.
  876.  
  877.      If you don't define this macro, the default definition works by
  878.      copying the value through that union.
  879.  
  880. `nongcc_SI_type'
  881.      Define this macro as the name of the data type corresponding to
  882.      `SImode' in the system's own C compiler.
  883.  
  884.      You need not define this macro if that type is `long int', as it
  885.      usually is.
  886.  
  887. `nongcc_word_type'
  888.      Define this macro as the name of the data type corresponding to the
  889.      word_mode in the system's own C compiler.
  890.  
  891.      You need not define this macro if that type is `long int', as it
  892.      usually is.
  893.  
  894. `perform_...'
  895.      Define these macros to supply explicit C statements to carry out
  896.      various arithmetic operations on types `float' and `double' in the
  897.      library routines in `libgcc1.c'.  See that file for a full list of
  898.      these macros and their arguments.
  899.  
  900.      On most machines, you don't need to define any of these macros,
  901.      because the C compiler that comes with the system takes care of
  902.      doing them.
  903.  
  904. `NEXT_OBJC_RUNTIME'
  905.      Define this macro to generate code for Objective C message sending
  906.      using the calling convention of the NeXT system.  This calling
  907.      convention involves passing the object, the selector and the
  908.      method arguments all at once to the method-lookup library function.
  909.  
  910.      The default calling convention passes just the object and the
  911.      selector to the lookup function, which returns a pointer to the
  912.      method.
  913.  
  914. 
  915. File: gcc.info,  Node: Addressing Modes,  Next: Condition Code,  Prev: Library Calls,  Up: Target Macros
  916.  
  917. Addressing Modes
  918. ================
  919.  
  920. `HAVE_POST_INCREMENT'
  921.      Define this macro if the machine supports post-increment
  922.      addressing.
  923.  
  924. `HAVE_PRE_INCREMENT'
  925. `HAVE_POST_DECREMENT'
  926. `HAVE_PRE_DECREMENT'
  927.      Similar for other kinds of addressing.
  928.  
  929. `CONSTANT_ADDRESS_P (X)'
  930.      A C expression that is 1 if the RTX X is a constant which is a
  931.      valid address.  On most machines, this can be defined as
  932.      `CONSTANT_P (X)', but a few machines are more restrictive in which
  933.      constant addresses are supported.
  934.  
  935.      `CONSTANT_P' accepts integer-values expressions whose values are
  936.      not explicitly known, such as `symbol_ref', `label_ref', and
  937.      `high' expressions and `const' arithmetic expressions, in addition
  938.      to `const_int' and `const_double' expressions.
  939.  
  940. `MAX_REGS_PER_ADDRESS'
  941.      A number, the maximum number of registers that can appear in a
  942.      valid memory address.  Note that it is up to you to specify a
  943.      value equal to the maximum number that `GO_IF_LEGITIMATE_ADDRESS'
  944.      would ever accept.
  945.  
  946. `GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)'
  947.      A C compound statement with a conditional `goto LABEL;' executed
  948.      if X (an RTX) is a legitimate memory address on the target machine
  949.      for a memory operand of mode MODE.
  950.  
  951.      It usually pays to define several simpler macros to serve as
  952.      subroutines for this one.  Otherwise it may be too complicated to
  953.      understand.
  954.  
  955.      This macro must exist in two variants: a strict variant and a
  956.      non-strict one.  The strict variant is used in the reload pass.  It
  957.      must be defined so that any pseudo-register that has not been
  958.      allocated a hard register is considered a memory reference.  In
  959.      contexts where some kind of register is required, a pseudo-register
  960.      with no hard register must be rejected.
  961.  
  962.      The non-strict variant is used in other passes.  It must be
  963.      defined to accept all pseudo-registers in every context where some
  964.      kind of register is required.
  965.  
  966.      Compiler source files that want to use the strict variant of this
  967.      macro define the macro `REG_OK_STRICT'.  You should use an `#ifdef
  968.      REG_OK_STRICT' conditional to define the strict variant in that
  969.      case and the non-strict variant otherwise.
  970.  
  971.      Subroutines to check for acceptable registers for various purposes
  972.      (one for base registers, one for index registers, and so on) are
  973.      typically among the subroutines used to define
  974.      `GO_IF_LEGITIMATE_ADDRESS'.  Then only these subroutine macros
  975.      need have two variants; the higher levels of macros may be the
  976.      same whether strict or not.
  977.  
  978.      Normally, constant addresses which are the sum of a `symbol_ref'
  979.      and an integer are stored inside a `const' RTX to mark them as
  980.      constant.  Therefore, there is no need to recognize such sums
  981.      specifically as legitimate addresses.  Normally you would simply
  982.      recognize any `const' as legitimate.
  983.  
  984.      Usually `PRINT_OPERAND_ADDRESS' is not prepared to handle constant
  985.      sums that are not marked with  `const'.  It assumes that a naked
  986.      `plus' indicates indexing.  If so, then you *must* reject such
  987.      naked constant sums as illegitimate addresses, so that none of
  988.      them will be given to `PRINT_OPERAND_ADDRESS'.
  989.  
  990.      On some machines, whether a symbolic address is legitimate depends
  991.      on the section that the address refers to.  On these machines,
  992.      define the macro `ENCODE_SECTION_INFO' to store the information
  993.      into the `symbol_ref', and then check for it here.  When you see a
  994.      `const', you will have to look inside it to find the `symbol_ref'
  995.      in order to determine the section.  *Note Assembler Format::.
  996.  
  997.      The best way to modify the name string is by adding text to the
  998.      beginning, with suitable punctuation to prevent any ambiguity.
  999.      Allocate the new name in `saveable_obstack'.  You will have to
  1000.      modify `ASM_OUTPUT_LABELREF' to remove and decode the added text
  1001.      and output the name accordingly, and define `STRIP_NAME_ENCODING'
  1002.      to access the original name string.
  1003.  
  1004.      You can check the information stored here into the `symbol_ref' in
  1005.      the definitions of the macros `GO_IF_LEGITIMATE_ADDRESS' and
  1006.      `PRINT_OPERAND_ADDRESS'.
  1007.  
  1008. `REG_OK_FOR_BASE_P (X)'
  1009.      A C expression that is nonzero if X (assumed to be a `reg' RTX) is
  1010.      valid for use as a base register.  For hard registers, it should
  1011.      always accept those which the hardware permits and reject the
  1012.      others.  Whether the macro accepts or rejects pseudo registers
  1013.      must be controlled by `REG_OK_STRICT' as described above.  This
  1014.      usually requires two variant definitions, of which `REG_OK_STRICT'
  1015.      controls the one actually used.
  1016.  
  1017. `REG_OK_FOR_INDEX_P (X)'
  1018.      A C expression that is nonzero if X (assumed to be a `reg' RTX) is
  1019.      valid for use as an index register.
  1020.  
  1021.      The difference between an index register and a base register is
  1022.      that the index register may be scaled.  If an address involves the
  1023.      sum of two registers, neither one of them scaled, then either one
  1024.      may be labeled the "base" and the other the "index"; but whichever
  1025.      labeling is used must fit the machine's constraints of which
  1026.      registers may serve in each capacity.  The compiler will try both
  1027.      labelings, looking for one that is valid, and will reload one or
  1028.      both registers only if neither labeling works.
  1029.  
  1030. `LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)'
  1031.      A C compound statement that attempts to replace X with a valid
  1032.      memory address for an operand of mode MODE.  WIN will be a C
  1033.      statement label elsewhere in the code; the macro definition may use
  1034.  
  1035.           GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
  1036.  
  1037.      to avoid further processing if the address has become legitimate.
  1038.  
  1039.      X will always be the result of a call to `break_out_memory_refs',
  1040.      and OLDX will be the operand that was given to that function to
  1041.      produce X.
  1042.  
  1043.      The code generated by this macro should not alter the substructure
  1044.      of X.  If it transforms X into a more legitimate form, it should
  1045.      assign X (which will always be a C variable) a new value.
  1046.  
  1047.      It is not necessary for this macro to come up with a legitimate
  1048.      address.  The compiler has standard ways of doing so in all cases.
  1049.      In fact, it is safe for this macro to do nothing.  But often a
  1050.      machine-dependent strategy can generate better code.
  1051.  
  1052. `GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)'
  1053.      A C statement or compound statement with a conditional `goto
  1054.      LABEL;' executed if memory address X (an RTX) can have different
  1055.      meanings depending on the machine mode of the memory reference it
  1056.      is used for or if the address is valid for some modes but not
  1057.      others.
  1058.  
  1059.      Autoincrement and autodecrement addresses typically have
  1060.      mode-dependent effects because the amount of the increment or
  1061.      decrement is the size of the operand being addressed.  Some
  1062.      machines have other mode-dependent addresses.  Many RISC machines
  1063.      have no mode-dependent addresses.
  1064.  
  1065.      You may assume that ADDR is a valid address for the machine.
  1066.  
  1067. `LEGITIMATE_CONSTANT_P (X)'
  1068.      A C expression that is nonzero if X is a legitimate constant for
  1069.      an immediate operand on the target machine.  You can assume that X
  1070.      satisfies `CONSTANT_P', so you need not check this.  In fact, `1'
  1071.      is a suitable definition for this macro on machines where anything
  1072.      `CONSTANT_P' is valid.
  1073.  
  1074.