home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / gnu / info / gcc.info-19 (.txt) < prev    next >
GNU Info File  |  1994-12-22  |  51KB  |  861 lines

  1. This is Info file gcc.info, produced by Makeinfo-1.55 from the input
  2. file gcc.texi.
  3.    This file documents the use and the internals of the GNU compiler.
  4.    Published by the Free Software Foundation 675 Massachusetts Avenue
  5. Cambridge, MA 02139 USA
  6.    Copyright (C) 1988, 1989, 1992, 1993, 1994 Free Software Foundation,
  7.    Permission is granted to make and distribute verbatim copies of this
  8. manual provided the copyright notice and this permission notice are
  9. preserved on all copies.
  10.    Permission is granted to copy and distribute modified versions of
  11. this manual under the conditions for verbatim copying, provided also
  12. that the sections entitled "GNU General Public License," "Funding for
  13. Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
  14. included exactly as in the original, and provided that the entire
  15. resulting derived work is distributed under the terms of a permission
  16. notice identical to this one.
  17.    Permission is granted to copy and distribute translations of this
  18. manual into another language, under the above conditions for modified
  19. versions, except that the sections entitled "GNU General Public
  20. License," "Funding for Free Software," and "Protect Your Freedom--Fight
  21. `Look And Feel'", and this permission notice, may be included in
  22. translations approved by the Free Software Foundation instead of in the
  23. original English.
  24. File: gcc.info,  Node: Obsolete Register Macros,  Prev: Stack Registers,  Up: Registers
  25. Obsolete Macros for Controlling Register Usage
  26. ----------------------------------------------
  27.    These features do not work very well.  They exist because they used
  28. to be required to generate correct code for the 80387 coprocessor of the
  29. 80386.  They are no longer used by that machine description and may be
  30. removed in a later version of the compiler.  Don't use them!
  31. `OVERLAPPING_REGNO_P (REGNO)'
  32.      If defined, this is a C expression whose value is nonzero if hard
  33.      register number REGNO is an overlapping register.  This means a
  34.      hard register which overlaps a hard register with a different
  35.      number.  (Such overlap is undesirable, but occasionally it allows
  36.      a machine to be supported which otherwise could not be.)  This
  37.      macro must return nonzero for *all* the registers which overlap
  38.      each other.  GNU CC can use an overlapping register only in
  39.      certain limited ways.  It can be used for allocation within a
  40.      basic block, and may be spilled for reloading; that is all.
  41.      If this macro is not defined, it means that none of the hard
  42.      registers overlap each other.  This is the usual situation.
  43. `INSN_CLOBBERS_REGNO_P (INSN, REGNO)'
  44.      If defined, this is a C expression whose value should be nonzero if
  45.      the insn INSN has the effect of mysteriously clobbering the
  46.      contents of hard register number REGNO.  By "mysterious" we mean
  47.      that the insn's RTL expression doesn't describe such an effect.
  48.      If this macro is not defined, it means that no insn clobbers
  49.      registers mysteriously.  This is the usual situation; all else
  50.      being equal, it is best for the RTL expression to show all the
  51.      activity.
  52. `PRESERVE_DEATH_INFO_REGNO_P (REGNO)'
  53.      If defined, this is a C expression whose value is nonzero if
  54.      accurate `REG_DEAD' notes are needed for hard register number REGNO
  55.      at the time of outputting the assembler code.  When this is so, a
  56.      few optimizations that take place after register allocation and
  57.      could invalidate the death notes are not done when this register is
  58.      involved.
  59.      You would arrange to preserve death info for a register when some
  60.      of the code in the machine description which is executed to write
  61.      the assembler code looks at the death notes.  This is necessary
  62.      only when the actual hardware feature which GNU CC thinks of as a
  63.      register is not actually a register of the usual sort.  (It might,
  64.      for example, be a hardware stack.)
  65.      If this macro is not defined, it means that no death notes need to
  66.      be preserved.  This is the usual situation.
  67. File: gcc.info,  Node: Register Classes,  Next: Stack and Calling,  Prev: Registers,  Up: Target Macros
  68. Register Classes
  69. ================
  70.    On many machines, the numbered registers are not all equivalent.
  71. For example, certain registers may not be allowed for indexed
  72. addressing; certain registers may not be allowed in some instructions.
  73. These machine restrictions are described to the compiler using
  74. "register classes".
  75.    You define a number of register classes, giving each one a name and
  76. saying which of the registers belong to it.  Then you can specify
  77. register classes that are allowed as operands to particular instruction
  78. patterns.
  79.    In general, each register will belong to several classes.  In fact,
  80. one class must be named `ALL_REGS' and contain all the registers.
  81. Another class must be named `NO_REGS' and contain no registers.  Often
  82. the union of two classes will be another class; however, this is not
  83. required.
  84.    One of the classes must be named `GENERAL_REGS'.  There is nothing
  85. terribly special about the name, but the operand constraint letters `r'
  86. and `g' specify this class.  If `GENERAL_REGS' is the same as
  87. `ALL_REGS', just define it as a macro which expands to `ALL_REGS'.
  88.    Order the classes so that if class X is contained in class Y then X
  89. has a lower class number than Y.
  90.    The way classes other than `GENERAL_REGS' are specified in operand
  91. constraints is through machine-dependent operand constraint letters.
  92. You can define such letters to correspond to various classes, then use
  93. them in operand constraints.
  94.    You should define a class for the union of two classes whenever some
  95. instruction allows both classes.  For example, if an instruction allows
  96. either a floating point (coprocessor) register or a general register
  97. for a certain operand, you should define a class `FLOAT_OR_GENERAL_REGS'
  98. which includes both of them.  Otherwise you will get suboptimal code.
  99.    You must also specify certain redundant information about the
  100. register classes: for each class, which classes contain it and which
  101. ones are contained in it; for each pair of classes, the largest class
  102. contained in their union.
  103.    When a value occupying several consecutive registers is expected in a
  104. certain class, all the registers used must belong to that class.
  105. Therefore, register classes cannot be used to enforce a requirement for
  106. a register pair to start with an even-numbered register.  The way to
  107. specify this requirement is with `HARD_REGNO_MODE_OK'.
  108.    Register classes used for input-operands of bitwise-and or shift
  109. instructions have a special requirement: each such class must have, for
  110. each fixed-point machine mode, a subclass whose registers can transfer
  111. that mode to or from memory.  For example, on some machines, the
  112. operations for single-byte values (`QImode') are limited to certain
  113. registers.  When this is so, each register class that is used in a
  114. bitwise-and or shift instruction must have a subclass consisting of
  115. registers from which single-byte values can be loaded or stored.  This
  116. is so that `PREFERRED_RELOAD_CLASS' can always have a possible value to
  117. return.
  118. `enum reg_class'
  119.      An enumeral type that must be defined with all the register class
  120.      names as enumeral values.  `NO_REGS' must be first.  `ALL_REGS'
  121.      must be the last register class, followed by one more enumeral
  122.      value, `LIM_REG_CLASSES', which is not a register class but rather
  123.      tells how many classes there are.
  124.      Each register class has a number, which is the value of casting
  125.      the class name to type `int'.  The number serves as an index in
  126.      many of the tables described below.
  127. `N_REG_CLASSES'
  128.      The number of distinct register classes, defined as follows:
  129.           #define N_REG_CLASSES (int) LIM_REG_CLASSES
  130. `REG_CLASS_NAMES'
  131.      An initializer containing the names of the register classes as C
  132.      string constants.  These names are used in writing some of the
  133.      debugging dumps.
  134. `REG_CLASS_CONTENTS'
  135.      An initializer containing the contents of the register classes, as
  136.      integers which are bit masks.  The Nth integer specifies the
  137.      contents of class N.  The way the integer MASK is interpreted is
  138.