home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1244 / gccinfo.zoo / gccinfo / gcc.info-14 < prev    next >
Encoding:
GNU Info File  |  1992-02-16  |  47.6 KB  |  1,090 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: Trampolines,  Next: Library Calls,  Prev: Varargs,  Up: Machine Macros
  28.  
  29. Trampolines for Nested Functions
  30. ================================
  31.  
  32.    A "trampoline" is a small piece of code that is created at run time
  33. when the address of a nested function is taken.  It normally resides on
  34. the stack, in the stack frame of the containing function.  These macros
  35. tell GNU CC how to generate code to allocate and initialize a
  36. trampoline.
  37.  
  38.    The instructions in the trampoline must do two things: load a
  39. constant address into the static chain register, and jump to the real
  40. address of the nested function.  On CISC machines such as the m68k,
  41. this requires two instructions, a move immediate and a jump.  Then the
  42. two addresses exist in the trampoline as word-long immediate operands.
  43.  On RISC machines, it is often necessary to load each address into a
  44. register in two parts.  Then pieces of each address form separate
  45. immediate operands.
  46.  
  47.    The code generated to initialize the trampoline must store the
  48. variable parts--the static chain value and the function address--into
  49. the immediate operands of the instructions.  On a CISC machine, this is
  50. simply a matter of copying each address to a memory reference at the
  51. proper offset from the start of the trampoline.  On a RISC machine, it
  52. may be necessary to take out pieces of the address and store them
  53. separately.
  54.  
  55. `TRAMPOLINE_TEMPLATE (FILE)'
  56.      A C statement to output, on the stream FILE, assembler code for a
  57.      block of data that contains the constant parts of a trampoline. 
  58.      This code should not include a label--the label is taken care of
  59.      automatically.
  60.  
  61. `TRAMPOLINE_SIZE'
  62.      A C expression for the size in bytes of the trampoline, as an
  63.      integer.
  64.  
  65. `TRAMPOLINE_ALIGNMENT'
  66.      Alignment required for trampolines, in bits.
  67.  
  68.      If you don't define this macro, the value of `BIGGEST_ALIGNMENT'
  69.      is used for aligning trampolines.
  70.  
  71. `INITIALIZE_TRAMPOLINE (ADDR, FNADDR, STATIC_CHAIN)'
  72.      A C statement to initialize the variable parts of a trampoline. 
  73.      ADDR is an RTX for the address of the trampoline; FNADDR is an
  74.      RTX for the address of the nested function; STATIC_CHAIN is an
  75.      RTX for the static chain value that should be passed to the
  76.      function when it is called.
  77.  
  78. `ALLOCATE_TRAMPOLINE (FP)'
  79.      A C expression to allocate run-time space for a trampoline.  The
  80.      expression value should be an RTX representing a memory reference
  81.      to the space for the trampoline.
  82.  
  83.      If this macro is not defined, by default the trampoline is
  84.      allocated as a stack slot.  This default is right for most
  85.      machines.  The exceptions are machines where it is impossible to
  86.      execute instructions in the stack area.  On such machines, you
  87.      may have to implement a separate stack, using this macro in
  88.      conjunction with `FUNCTION_PROLOGUE' and `FUNCTION_EPILOGUE'.
  89.  
  90.      FP points to a data structure, a `struct function', which
  91.      describes the compilation status of the immediate containing
  92.      function of the function which the trampoline is for.  Normally
  93.      (when `ALLOCATE_TRAMPOLINE' is not defined), the stack slot for
  94.      the trampoline is in the stack frame of this containing function.
  95.       Other allocation strategies probably must do something analogous
  96.      with this information.
  97.  
  98.    Implementing trampolines is difficult on many machines because they
  99. have separate instruction and data caches.  Writing into a stack
  100. location fails to clear the memory in the instruction cache, so when
  101. the program jumps to that location, it executes the old contents.
  102.  
  103.    Here are two possible solutions.  One is to clear the relevant
  104. parts of the instruction cache whenever a trampoline is set up.  The
  105. other is to make all trampolines identical, by having them jump to a
  106. standard subroutine.  The former technique makes trampoline execution
  107. faster; the latter makes initialization faster.
  108.  
  109.    To clear the instruction cache when a trampoline is initialized,
  110. define the following macros which describe the shape of the cache.
  111.  
  112. `INSN_CACHE_SIZE'
  113.      The total size in bytes of the cache.
  114.  
  115. `INSN_CACHE_LINE_WIDTH'
  116.      The length in bytes of each cache line.  The cache is divided
  117.      into cache lines which are disjoint slots, each holding a
  118.      contiguous chunk of data fetched from memory.  Each time data is
  119.      brought into the cache, an entire line is read at once.  The data
  120.      loaded into a cache line is always aligned on a boundary equal to
  121.      the line size.
  122.  
  123. `INSN_CACHE_DEPTH'
  124.      The number of alternative cache lines that can hold any
  125.      particular memory location.
  126.  
  127.    To use a standard subroutine, define the following macro.  In
  128. addition, you must make sure that the instructions in a trampoline
  129. fill an entire cache line with identical instructions, or else ensure
  130. that the beginning of the trampoline code is always aligned at the
  131. same point in its cache line.  Look in `m68k.h' as a guide.
  132.  
  133. `TRANSFER_FROM_TRAMPOLINE'
  134.      Define this macro if trampolines need a special subroutine to do
  135.      their work.  The macro should expand to a series of `asm'
  136.      statements which will be compiled with GNU CC.  They go in a
  137.      library function named `__transfer_from_trampoline'.
  138.  
  139.      If you need to avoid executing the ordinary prologue code of a
  140.      compiled C function when you jump to the subroutine, you can do
  141.      so by placing a special label of your own in the assembler code. 
  142.      Use one `asm' statement to generate an assembler label, and
  143.      another to make the label global.  Then trampolines can use that
  144.      label to jump directly to your special assembler code.
  145.  
  146. 
  147. File: gcc.info,  Node: Library Calls,  Next: Addressing Modes,  Prev: Trampolines,  Up: Machine Macros
  148.  
  149. Implicit Calls to Library Routines
  150. ==================================
  151.  
  152. `MULSI3_LIBCALL'
  153.      A C string constant giving the name of the function to call for
  154.      multiplication of one signed full-word by another.  If you do not
  155.      define this macro, the default name is used, which is `__mulsi3',
  156.      a function defined in `libgcc.a'.
  157.  
  158. `DIVSI3_LIBCALL'
  159.      A C string constant giving the name of the function to call for
  160.      division of one signed full-word by another.  If you do not define
  161.      this macro, the default name is used, which is `__divsi3', a
  162.      function defined in `libgcc.a'.
  163.  
  164. `UDIVSI3_LIBCALL'
  165.      A C string constant giving the name of the function to call for
  166.      division of one unsigned full-word by another.  If you do not
  167.      define this macro, the default name is used, which is
  168.      `__udivsi3', a function defined in `libgcc.a'.
  169.  
  170. `MODSI3_LIBCALL'
  171.      A C string constant giving the name of the function to call for
  172.      the remainder in division of one signed full-word by another.  If
  173.      you do not define this macro, the default name is used, which is
  174.      `__modsi3', a function defined in `libgcc.a'.
  175.  
  176. `UMODSI3_LIBCALL'
  177.      A C string constant giving the name of the function to call for
  178.      the remainder in division of one unsigned full-word by another. 
  179.      If you do not define this macro, the default name is used, which
  180.      is `__umodsi3', a function defined in `libgcc.a'.
  181.  
  182. `MULDI3_LIBCALL'
  183.      A C string constant giving the name of the function to call for
  184.      multiplication of one signed double-word by another.  If you do
  185.      not define this macro, the default name is used, which is
  186.      `__muldi3', a function defined in `libgcc.a'.
  187.  
  188. `DIVDI3_LIBCALL'
  189.      A C string constant giving the name of the function to call for
  190.      division of one signed double-word by another.  If you do not
  191.      define this macro, the default name is used, which is `__divdi3',
  192.      a function defined in `libgcc.a'.
  193.  
  194. `UDIVDI3_LIBCALL'
  195.      A C string constant giving the name of the function to call for
  196.      division of one unsigned full-word by another.  If you do not
  197.      define this macro, the default name is used, which is
  198.      `__udivdi3', a function defined in `libgcc.a'.
  199.  
  200. `MODDI3_LIBCALL'
  201.      A C string constant giving the name of the function to call for
  202.      the remainder in division of one signed double-word by another. 
  203.      If you do not define this macro, the default name is used, which
  204.      is `__moddi3', a function defined in `libgcc.a'.
  205.  
  206. `UMODDI3_LIBCALL'
  207.      A C string constant giving the name of the function to call for
  208.      the remainder in division of one unsigned full-word by another. 
  209.      If you do not define this macro, the default name is used, which
  210.      is `__umoddi3', a function defined in `libgcc.a'.
  211.  
  212. `TARGET_MEM_FUNCTIONS'
  213.      Define this macro if GNU CC should generate calls to the System V
  214.      (and ANSI C) library functions `memcpy' and `memset' rather than
  215.      the BSD functions `bcopy' and `bzero'.
  216.  
  217. `LIBGCC_NEEDS_DOUBLE'
  218.      Define this macro if only `float' arguments cannot be passed to
  219.      library routines (so they must be converted to `double').  This
  220.      macro affects both how library calls are generated and how the
  221.      library routines in `libgcc1.c' accept their arguments.  It is
  222.      useful on machines where floating and fixed point arguments are
  223.      passed differently, such as the i860.
  224.  
  225. `FLOAT_ARG_TYPE'
  226.      Define this macro to override the type used by the library
  227.      routines to pick up arguments of type `float'.  (By default, they
  228.      use a union of `float' and `int'.)
  229.  
  230.      The obvious choice would be `float'--but that won't work with
  231.      traditional C compilers that expect all arguments declared as
  232.      `float' to arrive as `double'.  To avoid this conversion, the
  233.      library routines ask for the value as some other type and then
  234.      treat it as a `float'.
  235.  
  236.      On some systems, no other type will work for this.  For these
  237.      systems, you must use `LIBGCC_NEEDS_DOUBLE' instead, to force
  238.      conversion of the values `double' before they are passed.
  239.  
  240. `FLOATIFY (PASSED-VALUE)'
  241.      Define this macro to override the way library routines
  242.      redesignate a `float' argument as a `float' instead of the type
  243.      it was passed as.  The default is an expression which takes the
  244.      `float' field of the union.
  245.  
  246. `FLOAT_VALUE_TYPE'
  247.      Define this macro to override the type used by the library
  248.      routines to return values that ought to have type `float'.  (By
  249.      default, they use `int'.)
  250.  
  251.      The obvious choice would be `float'--but that won't work with
  252.      traditional C compilers gratuitously convert values declared as
  253.      `float' into `double'.
  254.  
  255. `INTIFY (FLOAT-VALUE)'
  256.      Define this macro to override the way the value of a
  257.      `float'-returning library routine should be packaged in order to
  258.      return it.  These functions are actually declared to return type
  259.      `FLOAT_VALUE_TYPE' (normally `int').
  260.  
  261.      These values can't be returned as type `float' because traditional
  262.      C compilers would gratuitously convert the value to a `double'.
  263.  
  264.      A local variable named `intify' is always available when the macro
  265.      `INTIFY' is used.  It is a union of a `float' field named `f' and
  266.      a field named `i' whose type is `FLOAT_VALUE_TYPE' or `int'.
  267.  
  268.      If you don't define this macro, the default definition works by
  269.      copying the value through that union.
  270.  
  271. `SItype'
  272.      Define this macro as the name of the data type corresponding to
  273.      `SImode' in the system's own C compiler.
  274.  
  275.      You need not define this macro if that type is `int', as it
  276.      usually is.
  277.  
  278. `perform_...'
  279.      Define these macros to supply explicit C statements to carry out
  280.      various arithmetic operations on types `float' and `double' in the
  281.      library routines in `libgcc1.c'.  See that file for a full list
  282.      of these macros and their arguments.
  283.  
  284.      On most machines, you don't need to define any of these macros,
  285.      because the C compiler that comes with the system takes care of
  286.      doing them.
  287.  
  288. `NEXT_OBJC_RUNTIME'
  289.      Define this macro to generate code for Objective C message
  290.      sending using the calling convention of the NeXT system.  This
  291.      calling convention involves passing the object, the selector and
  292.      the method arguments all at once to the method-lookup library
  293.      function.
  294.  
  295.      The default calling convention passes just the object and the
  296.      selector to the lookup function, which returns a pointer to the
  297.      method.
  298.  
  299. 
  300. File: gcc.info,  Node: Addressing Modes,  Next: Condition Code,  Prev: Library Calls,  Up: Machine Macros
  301.  
  302. Addressing Modes
  303. ================
  304.  
  305. `HAVE_POST_INCREMENT'
  306.      Define this macro if the machine supports post-increment
  307.      addressing.
  308.  
  309. `HAVE_PRE_INCREMENT'
  310. `HAVE_POST_DECREMENT'
  311. `HAVE_PRE_DECREMENT'
  312.      Similar for other kinds of addressing.
  313.  
  314. `CONSTANT_ADDRESS_P (X)'
  315.      A C expression that is 1 if the RTX X is a constant which is a
  316.      valid address.  On most machines, this can be defined as
  317.      `CONSTANT_P (X)', but a few machines are more restrictive in
  318.      which constant addresses are supported.
  319.  
  320.      `CONSTANT_P' accepts integer-values expressions whose values are
  321.      not explicitly known, such as `symbol_ref', `label_ref', and
  322.      `high' expressions and `const' arithmetic expressions, in
  323.      addition to `const_int' and `const_double' expressions.
  324.  
  325. `MAX_REGS_PER_ADDRESS'
  326.      A number, the maximum number of registers that can appear in a
  327.      valid memory address.  Note that it is up to you to specify a
  328.      value equal to the maximum number that `GO_IF_LEGITIMATE_ADDRESS'
  329.      would ever accept.
  330.  
  331. `GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)'
  332.      A C compound statement with a conditional `goto LABEL;' executed
  333.      if X (an RTX) is a legitimate memory address on the target
  334.      machine for a memory operand of mode MODE.
  335.  
  336.      It usually pays to define several simpler macros to serve as
  337.      subroutines for this one.  Otherwise it may be too complicated to
  338.      understand.
  339.  
  340.      This macro must exist in two variants: a strict variant and a
  341.      non-strict one.  The strict variant is used in the reload pass. 
  342.      It must be defined so that any pseudo-register that has not been
  343.      allocated a hard register is considered a memory reference.  In
  344.      contexts where some kind of register is required, a
  345.      pseudo-register with no hard register must be rejected.
  346.  
  347.      The non-strict variant is used in other passes.  It must be
  348.      defined to accept all pseudo-registers in every context where
  349.      some kind of register is required.
  350.  
  351.      Compiler source files that want to use the strict variant of this
  352.      macro define the macro `REG_OK_STRICT'.  You should use an
  353.      `#ifdef REG_OK_STRICT' conditional to define the strict variant
  354.      in that case and the non-strict variant otherwise.
  355.  
  356.      Typically among the subroutines used to define
  357.      `GO_IF_LEGITIMATE_ADDRESS' are subroutines to check for
  358.      acceptable registers for various purposes (one for base
  359.      registers, one for index registers, and so on).  Then only these
  360.      subroutine macros need have two variants; the higher levels of
  361.      macros may be the same whether strict or not.
  362.  
  363.      Normally, constant addresses which are the sum of a `symbol_ref'
  364.      and an integer are stored inside a `const' RTX to mark them as
  365.      constant.  Therefore, there is no need to recognize such sums
  366.      specifically as legitimate addresses.  Normally you would simply
  367.      recognize any `const' as legitimate.
  368.  
  369.      Usually `PRINT_OPERAND_ADDRESS' is not prepared to handle constant
  370.      sums that are not marked with  `const'.  It assumes that a naked
  371.      `plus' indicates indexing.  If so, then you *must* reject such
  372.      naked constant sums as illegitimate addresses, so that none of
  373.      them will be given to `PRINT_OPERAND_ADDRESS'.
  374.  
  375.      On some machines, whether a symbolic address is legitimate
  376.      depends on the section that the address refers to.  On these
  377.      machines, define the macro `ENCODE_SECTION_INFO' to store the
  378.      information into the `symbol_ref', and then check for it here. 
  379.      When you see a `const', you will have to look inside it to find
  380.      the `symbol_ref' in order to determine the section.  *Note
  381.      Assembler Format::.
  382.  
  383.      The best way to modify the name string is by adding text to the
  384.      beginning, with suitable punctuation to prevent any ambiguity. 
  385.      Allocate the new name in `saveable_obstack'.  You will have to
  386.      modify `ASM_OUTPUT_LABELREF' to remove and decode the added text
  387.      and output the name accordingly.
  388.  
  389.      You can check the information stored here into the `symbol_ref' in
  390.      the definitions of `GO_IF_LEGITIMATE_ADDRESS' and
  391.      `PRINT_OPERAND_ADDRESS'.
  392.  
  393. `REG_OK_FOR_BASE_P (X)'
  394.      A C expression that is nonzero if X (assumed to be a `reg' RTX)
  395.      is valid for use as a base register.  For hard registers, it
  396.      should always accept those which the hardware permits and reject
  397.      the others.  Whether the macro accepts or rejects pseudo
  398.      registers must be controlled by `REG_OK_STRICT' as described
  399.      above.  This usually requires two variant definitions, of which
  400.      `REG_OK_STRICT' controls the one actually used.
  401.  
  402. `REG_OK_FOR_INDEX_P (X)'
  403.      A C expression that is nonzero if X (assumed to be a `reg' RTX)
  404.      is valid for use as an index register.
  405.  
  406.      The difference between an index register and a base register is
  407.      that the index register may be scaled.  If an address involves
  408.      the sum of two registers, neither one of them scaled, then either
  409.      one may be labeled the "base" and the other the "index"; but
  410.      whichever labeling is used must fit the machine's constraints of
  411.      which registers may serve in each capacity.  The compiler will
  412.      try both labelings, looking for one that is valid, and will
  413.      reload one or both registers only if neither labeling works.
  414.  
  415. `LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)'
  416.      A C compound statement that attempts to replace X with a valid
  417.      memory address for an operand of mode MODE.  WIN will be a C
  418.      statement label elsewhere in the code; the macro definition may
  419.      use
  420.  
  421.           GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
  422.  
  423.      to avoid further processing if the address has become legitimate.
  424.  
  425.      X will always be the result of a call to `break_out_memory_refs',
  426.      and OLDX will be the operand that was given to that function to
  427.      produce X.
  428.  
  429.      The code generated by this macro should not alter the
  430.      substructure of X.  If it transforms X into a more legitimate
  431.      form, it should assign X (which will always be a C variable) a
  432.      new value.
  433.  
  434.      It is not necessary for this macro to come up with a legitimate
  435.      address.  The compiler has standard ways of doing so in all
  436.      cases.  In fact, it is safe for this macro to do nothing.  But
  437.      often a machine-dependent strategy can generate better code.
  438.  
  439. `GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)'
  440.      A C statement or compound statement with a conditional `goto
  441.      LABEL;' executed if memory address X (an RTX) can have different
  442.      meanings depending on the machine mode of the memory reference it
  443.      is used for.
  444.  
  445.      Autoincrement and autodecrement addresses typically have
  446.      mode-dependent effects because the amount of the increment or
  447.      decrement is the size of the operand being addressed.  Some
  448.      machines have other mode-dependent addresses.  Many RISC machines
  449.      have no mode-dependent addresses.
  450.  
  451.      You may assume that ADDR is a valid address for the machine.
  452.  
  453. `LEGITIMATE_CONSTANT_P (X)'
  454.      A C expression that is nonzero if X is a legitimate constant for
  455.      an immediate operand on the target machine.  You can assume that
  456.      X satisfies `CONSTANT_P', so you need not check this.  In fact,
  457.      `1' is a suitable definition for this macro on machines where
  458.      anything `CONSTANT_P' is valid.
  459.  
  460. `LEGITIMATE_PIC_OPERAND_P (X)'
  461.      A C expression that is nonzero if X is a legitimate immediate
  462.      operand on the target machine when generating position
  463.      independent code.  You can assume that X satisfies `CONSTANT_P',
  464.      so you need not check this.  You can also assume FLAG_PIC is
  465.      true, so you need not check it either.  You need not define this
  466.      macro if all constants (including `SYMBOL_REF') can be immediate
  467.      operands when generating position independent code.
  468.  
  469. 
  470. File: gcc.info,  Node: Condition Code,  Next: Costs,  Prev: Addressing Modes,  Up: Machine Macros
  471.  
  472. Condition Code Status
  473. =====================
  474.  
  475.    The file `conditions.h' defines a variable `cc_status' to describe
  476. how the condition code was computed (in case the interpretation of the
  477. condition code depends on the instruction that it was set by).  This
  478. variable contains the RTL expressions on which the condition code is
  479. currently based, and several standard flags.
  480.  
  481.    Sometimes additional machine-specific flags must be defined in the
  482. machine description header file.  It can also add additional
  483. machine-specific information by defining `CC_STATUS_MDEP'.
  484.  
  485. `CC_STATUS_MDEP'
  486.      C code for a data type which is used for declaring the `mdep'
  487.      component of `cc_status'.  It defaults to `int'.
  488.  
  489.      This macro is not used on machines that do not use `cc0'.
  490.  
  491. `CC_STATUS_MDEP_INIT'
  492.      A C expression to initialize the `mdep' field to "empty".  The
  493.      default definition does nothing, since most machines don't use
  494.      the field anyway.  If you want to use the field, you should
  495.      probably define this macro to initialize it.
  496.  
  497.      This macro is not used on machines that do not use `cc0'.
  498.  
  499. `NOTICE_UPDATE_CC (EXP, INSN)'
  500.      A C compound statement to set the components of `cc_status'
  501.      appropriately for an insn INSN whose body is EXP.  It is this
  502.      macro's responsibility to recognize insns that set the condition
  503.      code as a byproduct of other activity as well as those that
  504.      explicitly set `(cc0)'.
  505.  
  506.      This macro is not used on machines that do not use `cc0'.
  507.  
  508.      If there are insns that do not set the condition code but do alter
  509.      other machine registers, this macro must check to see whether they
  510.      invalidate the expressions that the condition code is recorded as
  511.      reflecting.  For example, on the 68000, insns that store in
  512.      address registers do not set the condition code, which means that
  513.      usually `NOTICE_UPDATE_CC' can leave `cc_status' unaltered for
  514.      such insns.  But suppose that the previous insn set the condition
  515.      code based on location `a4@(102)' and the current insn stores a
  516.      new value in `a4'.  Although the condition code is not changed by
  517.      this, it will no longer be true that it reflects the contents of
  518.      `a4@(102)'.  Therefore, `NOTICE_UPDATE_CC' must alter `cc_status'
  519.      in this case to say that nothing is known about the condition
  520.      code value.
  521.  
  522.      The definition of `NOTICE_UPDATE_CC' must be prepared to deal
  523.      with the results of peephole optimization: insns whose patterns
  524.      are `parallel' RTXs containing various `reg', `mem' or constants
  525.      which are just the operands.  The RTL structure of these insns is
  526.      not sufficient to indicate what the insns actually do.  What
  527.      `NOTICE_UPDATE_CC' should do when it sees one is just to run
  528.      `CC_STATUS_INIT'.
  529.  
  530.      A possible definition of `NOTICE_UPDATE_CC' is to call a function
  531.      that looks at an attribute (*note Insn Attributes::.) named, for
  532.      example, `cc'.  This avoids having detailed information about
  533.      patterns in two places, the `md' file and in `NOTICE_UPDATE_CC'.
  534.  
  535. `EXTRA_CC_MODES'
  536.      A list of names to be used for additional modes for condition code
  537.      values in registers (*note Jump Patterns::.).  These names are
  538.      added to `enum machine_mode' and all have class `MODE_CC'.  By
  539.      convention, they should start with `CC' and end with `mode'.
  540.  
  541.      You should only define this macro if your machine does not use
  542.      `cc0' and only if additional modes are required.
  543.  
  544. `EXTRA_CC_NAMES'
  545.      A list of C strings giving the names for the modes listed in
  546.      `EXTRA_CC_MODES'.  For example, the Sparc defines this macro and
  547.      `EXTRA_CC_MODES' as
  548.  
  549.           #define EXTRA_CC_MODES CC_NOOVmode, CCFPmode
  550.           #define EXTRA_CC_NAMES "CC_NOOV", "CCFP"
  551.  
  552.      This macro is not required if `EXTRA_CC_MODES' is not defined.
  553.  
  554. `SELECT_CC_MODE (OP, X)'
  555.      Returns a mode from class `MODE_CC' to be used when comparison
  556.      operation code OP is applied to rtx X.  For example, on the Sparc,
  557.      `SELECT_CC_MODE' is defined as (see *note Jump Patterns::. for a
  558.      description of the reason for this definition)
  559.  
  560.           #define SELECT_CC_MODE(OP,X) \
  561.             (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT ? CCFPmode    \
  562.              : (GET_CODE (X) == PLUS || GET_CODE (X) == MINUS         \
  563.                 || GET_CODE (X) == NEG)                      \
  564.              ? CC_NOOVmode : CCmode)
  565.  
  566.      This macro is not required if `EXTRA_CC_MODES' is not defined.
  567.  
  568. 
  569. File: gcc.info,  Node: Costs,  Next: Sections,  Prev: Condition Code,  Up: Machine Macros
  570.  
  571. Describing Relative Costs of Operations
  572. =======================================
  573.  
  574.    These macros let you describe the relative speed of various
  575. operations on the target machine.
  576.  
  577. `CONST_COSTS (X, CODE)'
  578.      A part of a C `switch' statement that describes the relative costs
  579.      of constant RTL expressions.  It must contain `case' labels for
  580.      expression codes `const_int', `const', `symbol_ref', `label_ref'
  581.      and `const_double'.  Each case must ultimately reach a `return'
  582.      statement to return the relative cost of the use of that kind of
  583.      constant value in an expression.  The cost may depend on the
  584.      precise value of the constant, which is available for examination
  585.      in X.
  586.  
  587.      CODE is the expression code--redundant, since it can be obtained
  588.      with `GET_CODE (X)'.
  589.  
  590. `RTX_COSTS (X, CODE)'
  591.      Like `CONST_COSTS' but applies to nonconstant RTL expressions. 
  592.      This can be used, for example, to indicate how costly a multiply
  593.      instruction is.  In writing this macro, you can use the construct
  594.      `COSTS_N_INSNS (N)' to specify a cost equal to N fast
  595.      instructions.
  596.  
  597.      This macro is optional; do not define it if the default cost
  598.      assumptions are adequate for the target machine.
  599.  
  600. `ADDRESS_COST (ADDRESS)'
  601.      An expression giving the cost of an addressing mode that contains
  602.      ADDRESS.  If not defined, the cost is computed from the ADDRESS
  603.      expression and the `CONST_COSTS' values.
  604.  
  605.      For most CISC machines, the default cost is a good approximation
  606.      of the true cost of the addressing mode.  However, on RISC
  607.      machines, all instructions normally have the same length and
  608.      execution time.  Hence all addresses will have equal costs.
  609.  
  610.      In cases where more than one form of an address is known, the
  611.      form with the lowest cost will be used.  If multiple forms have
  612.      the same, lowest, cost, the one that is the most complex will be
  613.      used.
  614.  
  615.      For example, suppose an address that is equal to the sum of a
  616.      register and a constant is used twice in the same basic block. 
  617.      When this macro is not defined, the address will be computed in a
  618.      register and memory references will be indirect through that
  619.      register.  On machines where the cost of the addressing mode
  620.      containing the sum is no higher than that of a simple indirect
  621.      reference, this will produce an additional instruction and
  622.      possibly require an additional register.  Proper specification of
  623.      this macro eliminates this overhead for such machines.
  624.  
  625.      Similar use of this macro is made in strength reduction of loops.
  626.  
  627.      ADDRESS need not be valid as an address.  In such a case, the cost
  628.      is not relevant and can be any value; invalid addresses need not
  629.      be assigned a different cost.
  630.  
  631.      On machines where an address involving more than one register is
  632.      as cheap as an address computation involving only one register,
  633.      defining `ADDRESS_COST' to reflect this can cause two registers
  634.      to be live over a region of code where only one would have been if
  635.      `ADDRESS_COST' were not defined in that manner.  This effect
  636.      should be considered in the definition of this macro.  Equivalent
  637.      costs should probably only be given to addresses with different
  638.      numbers of registers on machines with lots of registers.
  639.  
  640.      This macro will normally either not be defined or be defined as a
  641.      constant.
  642.  
  643. `REGISTER_MOVE_COST (FROM, TO)'
  644.      A C expression for the cost of moving data from a register in
  645.      class FROM to one in class TO.  The classes are expressed using
  646.      the enumeration values such as `GENERAL_REGS'.  A value of 2 is
  647.      the default; other values are interpreted relative to that.
  648.  
  649.      It is not required that the cost always equal 2 when FROM is the
  650.      same as TO; on some machines it is expensive to move between
  651.      registers if they are not general registers.
  652.  
  653.      If reload sees an insn consisting of a single `set' between two
  654.      hard registers, and if `REGISTER_MOVE_COST' applied to their
  655.      classes returns a value of 2, reload does not check to ensure
  656.      that the constraints of the insn are met.  Setting a cost of
  657.      other than 2 will allow reload to verify that the constraints are
  658.      met.  You should do this if the `movM' pattern's constraints do
  659.      not allow such copying.
  660.  
  661. `MEMORY_MOVE_COST (M)'
  662.      A C expression for the cost of moving data of mode M between a
  663.      register and memory.  A value of 2 is the default; this cost is
  664.      relative to those in `REGISTER_MOVE_COST'.
  665.  
  666.      If moving between registers and memory is more expensive than
  667.      between two registers, you should define this macro to express
  668.      the relative cost.
  669.  
  670. `BRANCH_COST'
  671.      A C expression for the cost of a branch instruction.  A value of
  672.      1 is the default; other values are interpreted relative to that.
  673.  
  674.    Here are additional macros which do not specify precise relative
  675. costs, but only that certain actions are more expensive than GNU CC
  676. would ordinarily expect.
  677.  
  678. `SLOW_BYTE_ACCESS'
  679.      Define this macro as a C expression which is nonzero if accessing
  680.      less than a word of memory (i.e. a `char' or a `short') is no
  681.      faster than accessing a word of memory, i.e., if such access
  682.      require more than one instruction or if there is no difference in
  683.      cost between byte and (aligned) word loads.
  684.  
  685.      When this macro is not defined, the compiler will access a field
  686.      by finding the smallest containing object; when it is defined, a
  687.      fullword load will be used if alignment permits.  Unless bytes
  688.      accesses are faster than word accesses, using word accesses is
  689.      preferable since it may eliminate subsequent memory access if
  690.      subsequent accesses occur to other fields in the same word of the
  691.      structure, but to different bytes.
  692.  
  693. `SLOW_ZERO_EXTEND'
  694.      Define this macro if zero-extension (of a `char' or `short' to an
  695.      `int') can be done faster if the destination is a register that
  696.      is known to be zero.
  697.  
  698.      If you define this macro, you must have instruction patterns that
  699.      recognize RTL structures like this:
  700.  
  701.           (set (strict_low_part (subreg:QI (reg:SI ...) 0)) ...)
  702.  
  703.      and likewise for `HImode'.
  704.  
  705. `SLOW_UNALIGNED_ACCESS'
  706.      Define this macro if unaligned accesses have a cost many times
  707.      greater than aligned accesses, for example if they are emulated
  708.      in a trap handler.
  709.  
  710.      When this macro is defined, the compiler will act as if
  711.      `STRICT_ALIGNMENT' were defined when generating code for block
  712.      moves.  This can cause significantly more instructions to be
  713.      produced.  Therefore, do not define this macro if unaligned
  714.      accesses only add a cycle or two to the time for a memory access.
  715.  
  716. `DONT_REDUCE_ADDR'
  717.      Define this macro to inhibit strength reduction of memory
  718.      addresses.  (On some machines, such strength reduction seems to
  719.      do harm rather than good.)
  720.  
  721. `MOVE_RATIO'
  722.      The number of scalar move insns which should be generated instead
  723.      of a string move insn or a library call.  Increasing the value
  724.      will always make code faster, but eventually incurs high cost in
  725.      increased code size.
  726.  
  727.      If you don't define this, a reasonable default is used.
  728.  
  729. `NO_FUNCTION_CSE'
  730.      Define this macro if it is as good or better to call a constant
  731.      function address than to call an address kept in a register.
  732.  
  733. `NO_RECURSIVE_FUNCTION_CSE'
  734.      Define this macro if it is as good or better for a function to
  735.      call itself with an explicit address than to call an address kept
  736.      in a register.
  737.  
  738. 
  739. File: gcc.info,  Node: Sections,  Next: PIC,  Prev: Costs,  Up: Machine Macros
  740.  
  741. Dividing the Output into Sections (Texts, Data, ...)
  742. ====================================================
  743.  
  744.    An object file is divided into sections containing different types
  745. of data.  In the most common case, there are three sections: the "text
  746. section", which holds instructions and read-only data; the "data
  747. section", which holds initialized writable data; and the "bss
  748. section", which holds uninitialized data.  Some systems have other
  749. kinds of sections.
  750.  
  751.    The compiler must tell the assembler when to switch sections.  These
  752. macros control what commands to output to tell the assembler this.  You
  753. can also define additional sections.
  754.  
  755. `TEXT_SECTION_ASM_OP'
  756.      A C string constant for the assembler operation that should
  757.      precede instructions and read-only data.  Normally `".text"' is
  758.      right.
  759.  
  760. `DATA_SECTION_ASM_OP'
  761.      A C string constant for the assembler operation to identify the
  762.      following data as writable initialized data.  Normally `".data"'
  763.      is right.
  764.  
  765. `SHARED_SECTION_ASM_OP'
  766.      If defined, a C string constant for the assembler operation to
  767.      identify the following data as shared data.  If not defined,
  768.      `DATA_SECTION_ASM_OP' will be used.
  769.  
  770. `INIT_SECTION_ASM_OP'
  771.      If defined, a C string constant for the assembler operation to
  772.      identify the following data as initialization code.  If not
  773.      defined, GNU CC will assume such a section does not exist.
  774.  
  775. `EXTRA_SECTIONS'
  776.      A list of names for sections other than the standard two, which
  777.      are `in_text' and `in_data'.  You need not define this macro on a
  778.      system with no other sections (that GCC needs to use).
  779.  
  780. `EXTRA_SECTION_FUNCTIONS'
  781.      One or more functions to be defined in `varasm.c'.  These
  782.      functions should do jobs analogous to those of `text_section' and
  783.      `data_section', for your additional sections.  Do not define this
  784.      macro if you do not define `EXTRA_SECTIONS'.
  785.  
  786. `READONLY_DATA_SECTION'
  787.      On most machines, read-only variables, constants, and jump tables
  788.      are placed in the text section.  If this is not the case on your
  789.      machine, this macro should be defined to be the name of a
  790.      function (either `data_section' or a function defined in
  791.      `EXTRA_SECTIONS') that switches to the section to be used for
  792.      read-only items.
  793.  
  794.      If these items should be placed in the text section, this macro
  795.      should not be defined.
  796.  
  797. `SELECT_SECTION (EXP, RELOC)'
  798.      A C statement or statements to switch to the appropriate section
  799.      for output of EXP.  You can assume that EXP is either a
  800.      `VAR_DECL' node or a constant of some sort.  RELOC indicates
  801.      whether the initial value of EXP requires link-time relocations. 
  802.      Select the section by calling `text_section' or one of the
  803.      alternatives for other sections.
  804.  
  805.      Do not define this macro if you put all read-only variables and
  806.      constants in the read-only data section (usually the text
  807.      section).
  808.  
  809. `SELECT_RTX_SECTION (MODE, RTX)'
  810.      A C statement or statements to switch to the appropriate section
  811.      for output of RTX in mode MODE.  You can assume that RTX is some
  812.      kind of constant in RTL.  The argument MODE is redundant except
  813.      in the case of a `const_int' rtx.  Select the section by calling
  814.      `text_section' or one of the alternatives for other sections.
  815.  
  816.      Do not define this macro if you put all constants in the read-only
  817.      data section.
  818.  
  819. `JUMP_TABLES_IN_TEXT_SECTION'
  820.      Define this macro if jump tables (for `tablejump' insns) should be
  821.      output in the text section, along with the assembler instructions. 
  822.      Otherwise, the readonly data section is used.
  823.  
  824.      This macro is irrelevant if there is no separate readonly data
  825.      section.
  826.  
  827. `ENCODE_SECTION_INFO (DECL)'
  828.      Define this macro if references to a symbol must be treated
  829.      differently depending on something about the variable or function
  830.      named by the symbol (such as what section it is in).
  831.  
  832.      The macro definition, if any, is executed immediately after the
  833.      rtl for DECL has been created and stored in `DECL_RTL (DECL)'. 
  834.      The value of the rtl will be a `mem' whose address is a
  835.      `symbol_ref'.
  836.  
  837.      The usual thing for this macro to do is to record a flag in the
  838.      `symbol_ref' (such as `SYMBOL_REF_FLAG') or to store a modified
  839.      name string in the `symbol_ref' (if one bit is not enough
  840.      information).
  841.  
  842. 
  843. File: gcc.info,  Node: PIC,  Next: Assembler Format,  Prev: Sections,  Up: Machine Macros
  844.  
  845. Position Independent Code
  846. =========================
  847.  
  848.    This section describes macros that help implement generation of
  849. position independent code.  Simply defining these macros is not enough
  850. to generate valid PIC; you must also add support to the macros
  851. `GO_IF_LEGITIMATE_ADDRESS' and `LEGITIMIZE_ADDRESS', and
  852. `PRINT_OPERAND_ADDRESS' as well.  You must modify the definition of
  853. `movsi' to do something appropriate when the source operand contains a
  854. symbolic address.  You may also need to alter the handling of switch
  855. statements so that they use relative addresses.
  856.  
  857. `PIC_OFFSET_TABLE_REGNUM'
  858.      The register number of the register used to address a table of
  859.      static data addresses in memory.  In some cases this register is
  860.      defined by a processor's "application binary interface" (ABI). 
  861.      When this macro is defined, RTL is generated for this register
  862.      once, as with the stack pointer and frame pointer registers.  If
  863.      this macro is not defined, it is up to the machine-dependent
  864.      files to allocate such a register (if necessary).
  865.  
  866. `FINALIZE_PIC'
  867.      By generating position-independent code, when two different
  868.      programs (A and B) share a common library (libC.a), the text of
  869.      the library can be shared whether or not the library is linked at
  870.      the same address for both programs.  In some of these
  871.      environments, position-independent code requires not only the use
  872.      of different addressing modes, but also special code to enable
  873.      the use of these addressing modes.
  874.  
  875.      The `FINALIZE_PIC' macro serves as a hook to emit these special
  876.      codes once the function is being compiled into assembly code, but
  877.      not before.  (It is not done before, because in the case of
  878.      compiling an inline function, it would lead to multiple PIC
  879.      prologues being included in functions which used inline functions
  880.      and were compiled to assembly language.)
  881.  
  882. 
  883. File: gcc.info,  Node: Assembler Format,  Next: Debugging Info,  Prev: PIC,  Up: Machine Macros
  884.  
  885. Defining the Output Assembler Language
  886. ======================================
  887.  
  888.    This section describes macros whose principal purpose is to
  889. describe how to write instructions in assembler language--rather than
  890. what the instructions do.
  891.  
  892. * Menu:
  893.  
  894. * File Framework::       Structural information for the assembler file.
  895. * Data Output::          Output of constants (numbers, strings, addresses).
  896. * Uninitialized Data::   Output of uninitialized variables.
  897. * Label Output::         Output and generation of labels.
  898. * Constructor Output::     Output of initialization and termination routines.
  899. * Instruction Output::   Output of actual instructions.
  900. * Dispatch Tables::      Output of jump tables.
  901. * Alignment Output::     Pseudo ops for alignment and skipping data.
  902.  
  903. 
  904. File: gcc.info,  Node: File Framework,  Next: Data Output,  Prev: Assembler Format,  Up: Assembler Format
  905.  
  906. The Overall Framework of an Assembler File
  907. ------------------------------------------
  908.  
  909. `ASM_FILE_START (STREAM)'
  910.      A C expression which outputs to the stdio stream STREAM some
  911.      appropriate text to go at the start of an assembler file.
  912.  
  913.      Normally this macro is defined to output a line containing
  914.      `#NO_APP', which is a comment that has no effect on most
  915.      assemblers but tells the GNU assembler that it can save time by
  916.      not checking for certain assembler constructs.
  917.  
  918.      On systems that use SDB, it is necessary to output certain
  919.      commands; see `attasm.h'.
  920.  
  921. `ASM_FILE_END (STREAM)'
  922.      A C expression which outputs to the stdio stream STREAM some
  923.      appropriate text to go at the end of an assembler file.
  924.  
  925.      If this macro is not defined, the default is to output nothing
  926.      special at the end of the file.  Most systems don't require any
  927.      definition.
  928.  
  929.      On systems that use SDB, it is necessary to output certain
  930.      commands; see `attasm.h'.
  931.  
  932. `ASM_IDENTIFY_GCC (FILE)'
  933.      A C statement to output assembler commands which will identify
  934.      the object file as having been compiled with GNU CC (or another
  935.      GNU compiler).
  936.  
  937.      If you don't define this macro, the string `gcc_compiled.:' is
  938.      output.  This string is calculated to define a symbol which, on
  939.      BSD systems, will never be defined for any other reason.  GDB
  940.      checks for the presence of this symbol when reading the symbol
  941.      table of an executable.
  942.  
  943.      On non-BSD systems, you must arrange communication with GDB in
  944.      some other fashion.  If GDB is not used on your system, you can
  945.      define this macro with an empty body.
  946.  
  947. `ASM_COMMENT_START'
  948.      A C string constant describing how to begin a comment in the
  949.      target assembler language.  The compiler assumes that the comment
  950.      will end at the end of the line.
  951.  
  952. `ASM_APP_ON'
  953.      A C string constant for text to be output before each `asm'
  954.      statement or group of consecutive ones.  Normally this is
  955.      `"#APP"', which is a comment that has no effect on most
  956.      assemblers but tells the GNU assembler that it must check the
  957.      lines that follow for all valid assembler constructs.
  958.  
  959. `ASM_APP_OFF'
  960.      A C string constant for text to be output after each `asm'
  961.      statement or group of consecutive ones.  Normally this is
  962.      `"#NO_APP"', which tells the GNU assembler to resume making the
  963.      time-saving assumptions that are valid for ordinary compiler
  964.      output.
  965.  
  966. `ASM_OUTPUT_SOURCE_FILENAME (STREAM, NAME)'
  967.      A C statement to output COFF information or DWARF debugging
  968.      information which indicates that filename NAME is the current
  969.      source file to the stdio stream STREAM.
  970.  
  971.      This macro need not be defined if the standard form of output for
  972.      the file format in use is appropriate.
  973.  
  974. `ASM_OUTPUT_SOURCE_LINE (STREAM, LINE)'
  975.      A C statement to output DBX or SDB debugging information before
  976.      code for line number LINE of the current source file to the stdio
  977.      stream STREAM.
  978.  
  979.      This macro need not be defined if the standard form of debugging
  980.      information for the debugger in use is appropriate.
  981.  
  982. `ASM_OUTPUT_IDENT (STREAM, STRING)'
  983.      A C statement to output something to the assembler file to handle
  984.      a `#ident' directive containing the text STRING.  If this macro
  985.      is not defined, nothing is output for a `#ident' directive.
  986.  
  987. `OBJC_PROLOGUE'
  988.      A C statement to output any assembler statements which are
  989.      required to precede any Objective C object definitions or message
  990.      sending.  The statement is executed only when compiling an
  991.      Objective C program.
  992.  
  993. 
  994. File: gcc.info,  Node: Data Output,  Next: Uninitialized Data,  Prev: File Framework,  Up: Assembler Format
  995.  
  996. Output of Data
  997. --------------
  998.  
  999. `ASM_OUTPUT_LONG_DOUBLE (STREAM, VALUE)'
  1000. `ASM_OUTPUT_DOUBLE (STREAM, VALUE)'
  1001. `ASM_OUTPUT_FLOAT (STREAM, VALUE)'
  1002.      A C statement to output to the stdio stream STREAM an assembler
  1003.      instruction to assemble a floating-point constant of `TFmode',
  1004.      `DFmode' or `SFmode', respectively, whose value is VALUE.  VALUE
  1005.      will be a C expression of type `REAL_VALUE__TYPE', usually
  1006.      `double'.
  1007.  
  1008. `ASM_OUTPUT_QUADRUPLE_INT (STREAM, EXP)'
  1009. `ASM_OUTPUT_DOUBLE_INT (STREAM, EXP)'
  1010. `ASM_OUTPUT_INT (STREAM, EXP)'
  1011. `ASM_OUTPUT_SHORT (STREAM, EXP)'
  1012. `ASM_OUTPUT_CHAR (STREAM, EXP)'
  1013.      A C statement to output to the stdio stream STREAM an assembler
  1014.      instruction to assemble an integer of 16, 8, 4, 2 or 1 bytes,
  1015.      respectively, whose value is VALUE.  The argument EXP will be an
  1016.      RTL expression which represents a constant value.  Use
  1017.      `output_addr_const (STREAM, EXP)' to output this value as an
  1018.      assembler expression.
  1019.  
  1020.      For sizes larger than `UNITS_PER_WORD', if the action of a macro
  1021.      would be identical to repeatedly calling the macro corresponding
  1022.      to a size of `UNITS_PER_WORD', once for each word, you need not
  1023.      define the macro.
  1024.  
  1025. `ASM_OUTPUT_BYTE (STREAM, VALUE)'
  1026.      A C statement to output to the stdio stream STREAM an assembler
  1027.      instruction to assemble a single byte containing the number VALUE.
  1028.  
  1029. `ASM_BYTE_OP'
  1030.      A C string constant giving the pseudo-op to use for a sequence of
  1031.      single-byte constants.  If this macro is not defined, the default
  1032.      is `"byte"'.
  1033.  
  1034. `ASM_OUTPUT_ASCII (STREAM, PTR, LEN)'
  1035.      A C statement to output to the stdio stream STREAM an assembler
  1036.      instruction to assemble a string constant containing the LEN
  1037.      bytes at PTR.  PTR will be a C expression of type `char *' and
  1038.      LEN a C expression of type `int'.
  1039.  
  1040.      If the assembler has a `.ascii' pseudo-op as found in the
  1041.      Berkeley Unix assembler, do not define the macro
  1042.      `ASM_OUTPUT_ASCII'.
  1043.  
  1044. `ASM_OUTPUT_POOL_PROLOGUE (FILE FUNNAME FUNDECL SIZE)'
  1045.      A C statement to output assembler commands to define the start of
  1046.      the constant pool for a function.  FUNNAME is a string giving the
  1047.      name of the function.  Should the return type of the function be
  1048.      required, it can be obtained via FUNDECL.  SIZE is the size, in
  1049.      bytes, of the constant pool that will be written immediately
  1050.      after this call.
  1051.  
  1052.      If no constant-pool prefix is required, the usual case, this
  1053.      macro need not be defined.
  1054.  
  1055. `ASM_OUTPUT_SPECIAL_POOL_ENTRY (FILE, X, MODE, ALIGN, LABELNO, JUMPTO)'
  1056.      A C statement (with or without semicolon) to output a constant in
  1057.      the constant pool, if it needs special treatment.  (This macro
  1058.      need not do anything for RTL expressions that can be output
  1059.      normally.)
  1060.  
  1061.      The argument FILE is the standard I/O stream to output the
  1062.      assembler code on.  X is the RTL expression for the constant to
  1063.      output, and MODE is the machine mode (in case X is a
  1064.      `const_int').  ALIGN is the required alignment for the value X;
  1065.      you should output an assembler directive to force this much
  1066.      alignment.
  1067.  
  1068.      The argument LABELNO is a number to use in an internal label for
  1069.      the address of this pool entry.  The definition of this macro is
  1070.      responsible for outputting the label definition at the proper
  1071.      place.  Here is how to do this:
  1072.  
  1073.           ASM_OUTPUT_INTERNAL_LABEL (FILE, "LC", LABELNO);
  1074.  
  1075.      When you output a pool entry specially, you should end with a
  1076.      `goto' to the label JUMPTO.  This will prevent the same pool
  1077.      entry from being output a second time in the usual manner.
  1078.  
  1079.      You need not define this macro if it would do nothing.
  1080.  
  1081. `ASM_OPEN_PAREN'
  1082. `ASM_CLOSE_PAREN'
  1083.      These macros are defined as C string constant, describing the
  1084.      syntax in the assembler for grouping arithmetic expressions.  The
  1085.      following definitions are correct for most assemblers:
  1086.  
  1087.           #define ASM_OPEN_PAREN "("
  1088.           #define ASM_CLOSE_PAREN ")"
  1089.  
  1090.