Annotation of researchv10dc/cmd/gcc/internals-6, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: File: internals,  Node: Registers,  Next: Register Classes,  Prev: Storage Layout,  Up: Machine Macros
                      4: 
                      5: Register Usage
                      6: ==============
                      7: 
                      8: `FIRST_PSEUDO_REGISTER'
                      9:      Number of hardware registers known to the compiler.  They receive
                     10:      numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first pseudo
                     11:      register's number really is assigned the number `FIRST_PSEUDO_REGISTER'.
                     12: 
                     13: `FIXED_REGISTERS'
                     14:      An initializer that says which registers are used for fixed purposes
                     15:      all throughout the compiled code and are therefore not available for
                     16:      general allocation.  These would include the stack pointer, the frame
                     17:      pointer, the program counter on machines where that is considered one
                     18:      of the addressable registers, and any other numbered register with a
                     19:      standard use.
                     20: 
                     21:      This information is expressed as a sequence of numbers, separated by
                     22:      commas and surrounded by braces.  The Nth number is 1 if register N is
                     23:      fixed, 0 otherwise.
                     24: 
                     25:      The table initialized from this macro, and the table initialized by
                     26:      the following one, may be overridden at run time either automatically,
                     27:      by the actions of the macro `CONDITIONAL_REGISTER_USAGE', or by the
                     28:      user with the command options `-ffixed-REG', `-fcall-used-REG' and
                     29:      `-fcall-saved-REG'.
                     30: 
                     31: `CALL_USED_REGISTERS'
                     32:      Like `FIXED_REGISTERS' but has 1 for each register that is clobbered
                     33:      (in general) by function calls as well as for fixed registers.  This
                     34:      macro therefore identifies the registers that are not available for
                     35:      general allocation of values that must live across function calls.
                     36: 
                     37:      If a register has 0 in `CALL_USED_REGISTERS', the compiler
                     38:      automatically saves it on function entry and restores it on function
                     39:      exit, if the register is used within the function.
                     40: 
                     41: `CONDITIONAL_REGISTER_USAGE'
                     42:      Zero or more C statements that may conditionally modify two variables
                     43:      `fixed_regs' and `call_used_regs' (both of type `char []') after they
                     44:      have been initialized from the two preceding macros.
                     45: 
                     46:      This is necessary in case the fixed or call-clobbered registers depend
                     47:      on target flags.
                     48: 
                     49:      You need not define this macro if it has no work to do.
                     50: 
                     51: `HARD_REGNO_REGS (REGNO, MODE)'
                     52:      A C expression for the number of consecutive hard registers, starting
                     53:      at register number REGNO, required to hold a value of mode MODE.
                     54: 
                     55:      On a machine where all registers are exactly one word, a suitable
                     56:      definition of this macro is
                     57: 
                     58:           #define HARD_REGNO_NREGS(REGNO, MODE)            \
                     59:              ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
                     60:               / UNITS_PER_WORD))
                     61: 
                     62: `HARD_REGNO_MODE_OK (REGNO, MODE)'
                     63:      A C expression that is nonzero if it is permissible to store a value
                     64:      of mode MODE in hard register number REGNO (or in several registers
                     65:      starting with that one).  For a machine where all registers are
                     66:      equivalent, a suitable definition is
                     67: 
                     68:           #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
                     69: 
                     70:      It is not necessary for this macro to check for fixed register numbers
                     71:      because the allocation mechanism considers them to be always occupied.
                     72: 
                     73:      Many machines have special registers for floating point arithmetic. 
                     74:      Often people assume that floating point machine modes are allowed only
                     75:      in floating point registers.  This is not true.  Any registers that
                     76:      can hold integers can safely *hold* a floating point machine mode,
                     77:      whether or not floating arithmetic can be done on it in those registers.
                     78: 
                     79:      The true significance of special floating registers is rather than
                     80:      non-floating-point machine modes *may not* go in those registers. 
                     81:      This is true if the floating registers normalize any value stored in
                     82:      them, because storing a non-floating value there would garble it.  If
                     83:      the floating registers do not automatically normalize, if you can
                     84:      store any bit pattern in one and retrieve it unchanged without a trap,
                     85:      then any machine mode may go in a floating register and this macro
                     86:      should say so.
                     87: 
                     88:      Sometimes there are floating registers that are especially slow to
                     89:      access, so that it is better to store a value in a stack frame than in
                     90:      such a register if floating point arithmetic is not being done.  As
                     91:      long as the floating registers are not in class `GENERAL_REGS', they
                     92:      will not be used unless some insn's constraint asks for one.
                     93: 
                     94:      It is obligatory to support floating point `move' instructions into
                     95:      and out of general registers, because unions and structures (which
                     96:      have modes `SImode' or `DImode') can be in those registers and they
                     97:      may have floating point members.
                     98: 
                     99: `MODES_TIEABLE_P (MODE1, MODE2)'
                    100:      A C expression that is nonzero if it is desirable to choose register
                    101:      allocation so as to avoid move instructions between a value of mode
                    102:      MODE1 and a value of mode MODE2.
                    103: 
                    104:      If `HARD_REGNO_MODE_OK (R, MODE1)' and `HARD_REGNO_MODE_OK (R, MODE2)'
                    105:      are ever different for any R, then `MODES_TIEABLE_P (MODE1, MODE2)'
                    106:      must be zero.
                    107: 
                    108: `PC_REGNUM'
                    109:      If the program counter has a register number, define this as that
                    110:      register number.  Otherwise, do not define it.
                    111: 
                    112: `STACK_POINTER_REGNUM'
                    113:      The register number of the stack pointer register, which must also be
                    114:      a fixed register according to `FIXED_REGISTERS'.  On many machines,
                    115:      the hardware determines which register this is.
                    116: 
                    117: `FRAME_POINTER_REGNUM'
                    118:      The register number of the frame pointer register, which is used to
                    119:      access automatic variables in the stack frame.  On some machines, the
                    120:      hardware determines which register this is.  On other machines, you
                    121:      can choose any register you wish for this purpose.
                    122: 
                    123: `FRAME_POINTER_REQUIRED'
                    124:      A C expression which is nonzero if a function must have and use a
                    125:      frame pointer.  This expression is evaluated in the reload pass, in
                    126:      the function `reload', and it can in principle examine the current
                    127:      function and decide according to the facts, but on most machines the
                    128:      constant 0 or the constant 1 suffices.  Use 0 when the machine allows
                    129:      code to be generated with no frame pointer, and doing so saves some
                    130:      time or space.  Use 1 when there is no possible advantage to avoiding
                    131:      a frame pointer.
                    132: 
                    133:      In certain cases, the compiler does not know how to do without a frame
                    134:      pointer.  The compiler recognizes those cases and automatically gives
                    135:      the function a frame pointer regardless of what
                    136:      `FRAME_POINTER_REQUIRED' says.  You don't need to worry about them.
                    137: 
                    138:      In a function that does not require a frame pointer, the frame pointer
                    139:      register can be allocated for ordinary usage, provided it is not
                    140:      marked as a fixed register.  See `FIXED_REGISTERS' for more information.
                    141: 
                    142: `ARG_POINTER_REGNUM'
                    143:      The register number of the arg pointer register, which is used to
                    144:      access the function's argument list.  On some machines, this is the
                    145:      same as the frame pointer register.  On some machines, the hardware
                    146:      determines which register this is.  On other machines, you can choose
                    147:      any register you wish for this purpose.  It must in any case be a
                    148:      fixed register according to `FIXED_REGISTERS'.
                    149: 
                    150: `STATIC_CHAIN_REGNUM'
                    151:      The register number used for passing a function's static chain
                    152:      pointer.  This is needed for languages such as Pascal and Algol where
                    153:      functions defined within other functions can access the local
                    154:      variables of the outer functions; it is not currently used because C
                    155:      does not provide this feature.
                    156: 
                    157:      The static chain register need not be a fixed register.
                    158: 
                    159: `STRUCT_VALUE_REGNUM'
                    160:      When a function's value's mode is `BLKmode', the value is not returned
                    161:      according to `FUNCTION_VALUE'.  Instead, the caller passes the address
                    162:      of a block of memory in which the value should be stored. 
                    163:      `STRUCT_VALUE_REGNUM' is the register in which this address is passed.
                    164: 
                    165: 
                    166: File: internals,  Node: Register Classes,  Next: Stack Layout,  Prev: Registers,  Up: Machine Macros
                    167: 
                    168: Register Classes
                    169: ================
                    170: 
                    171: On many machines, the numbered registers are not all equivalent.  For
                    172: example, certain registers may not be allowed for indexed addressing;
                    173: certain registers may not be allowed in some instructions.  These machine
                    174: restrictions are described to the compiler using "register classes".
                    175: 
                    176: You define a number of register classes, giving each one a name and saying
                    177: which of the registers belong to it.  Then you can specify register classes
                    178: that are allowed as operands to particular instruction patterns.
                    179: 
                    180: In general, each register will belong to several classes.  In fact, one
                    181: class must be named `ALL_REGS' and contain all the registers.  Another
                    182: class must be named `NO_REGS' and contain no registers.  Often the union of
                    183: two classes will be another class; however, this is not required.
                    184: 
                    185: One of the classes must be named `GENERAL_REGS'.  There is nothing terribly
                    186: special about the name, but the operand constraint letters `r' and `g'
                    187: specify this class.  If `GENERAL_REGS' is the same as `ALL_REGS', just
                    188: define it as a macro which expands to `ALL_REGS'.
                    189: 
                    190: The way classes other than `GENERAL_REGS' are specified in operand
                    191: constraints is through machine-dependent operand constraint letters.  You
                    192: can define such letters to correspond to various classes, then use them in
                    193: operand constraints.
                    194: 
                    195: You should define a class for the union of two classes whenever some
                    196: instruction allows both classes.  For example, if an instruction allows
                    197: either a floating-point (coprocessor) register or a general register for a
                    198: certain operand, you should define a class `FLOAT_OR_GENERAL_REGS' which
                    199: includes both of them.  Otherwise you will get suboptimal code.
                    200: 
                    201: You must also specify certain redundant information about the register
                    202: classes: for each class, which classes contain it and which ones are
                    203: contained in it; for each pair of classes, the largest class contained in
                    204: their union.
                    205: 
                    206: `enum reg_class'
                    207:      An enumeral type that must be defined with all the register class
                    208:      names as enumeral values.  `NO_REGS' must be first.  `ALL_REGS' must
                    209:      be the last register class, followed by one more enumeral value,
                    210:      `LIM_REG_CLASSES', which is not a register class but rather tells how
                    211:      many classes there are.
                    212: 
                    213:      Each register class has a number, which is the value of casting the
                    214:      class name to type `int'.  The number serves as an index in many of
                    215:      the tables described below.
                    216: 
                    217: `REG_CLASS_NAMES'
                    218:      An initializer containing the names of the register classes as C
                    219:      string constants.  These names are used in writing some of the
                    220:      debugging dumps.
                    221: 
                    222: `REG_CLASS_CONTENTS'
                    223:      An initializer containing the contents of the register classes, as
                    224:      integers which are bit masks.  The Nth integer specifies the contents
                    225:      of class N.  The way the integer MASK is interpreted is that register
                    226:      R is in the class if `MASK & (1 << R)' is 1.
                    227: 
                    228:      When the machine has more than 32 registers, an integer does not
                    229:      suffice.  Then the integers are replaced by sub-initializers, braced
                    230:      groupings containing several integers.  Each sub-initializer must be
                    231:      suitable as an initializer for the type `HARD_REG_SET' which is
                    232:      defined in `hard-reg-set.h'.
                    233: 
                    234: `REGNO_REG_CLASS (REGNO)'
                    235:      A C expression whose value is a register class containing hard
                    236:      regiSTER REGNO.  In general there is more that one such class; choose
                    237:      a class which is "minimal", meaning that no smaller class also
                    238:      contains the register.
                    239: 
                    240: `INDEX_REG_CLASS'
                    241:      A macro whose definition is the name of the class to which a valid
                    242:      index register must belong.
                    243: 
                    244: `REG_CLASS_FROM_LETTER (CHAR)'
                    245:      A C expression which defines the machine-dependent operand constraint
                    246:      letters for register classes.  If CHAR is such a letter, the value
                    247:      should be the register class corresponding to it.  Otherwise, the
                    248:      value should be `NO_REGS'.
                    249: 
                    250: `REGNO_OK_FOR_BASE_P (NUM)'
                    251:      A C expression which is nonzero if register number NUM is suitable for
                    252:      use as a base register in operand addresses.  It may be either a
                    253:      suitable hard register or a pseudo register that has been allocated
                    254:      such a hard register.
                    255: 
                    256: `REGNO_OK_FOR_INDEX_P (NUM)'
                    257:      A C expression which is nonzero if register number NUM is suitable for
                    258:      use as an index register in operand addresses.  It may be either a
                    259:      suitable hard register or a pseudo register that has been allocated
                    260:      such a hard register.
                    261: 
                    262:      The difference between an index register and a base register is that
                    263:      the index register may be scaled.  If an address involves the sum of
                    264:      two registers, neither one of them scaled, then either one may be
                    265:      labeled the ``base'' and the other the ``index''; but whichever
                    266:      labeling is used must fit the machine's constraints of which registers
                    267:      may serve in each capacity.  The compiler will try both labelings,
                    268:      looking for one that is valid, and reload one or both registers only
                    269:      if neither labeling works.
                    270: 
                    271: `PREFERRED_RELOAD_CLASS (X, CLASS)'
                    272:      A C expression that places additional restrictions on the register
                    273:      class to use when it is necessary to copy value X into a register in
                    274:      class CLASS.  The value is a register class; perhaps CLASS, or perhaps
                    275:      another, smaller class.  CLASS is always safe as a value.  In fact,
                    276:      the definition
                    277: 
                    278:           #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
                    279: 
                    280:      is always safe.  However, sometimes returning a more restrictive class
                    281:      makes better code.  For example, on the 68000, when X is an integer
                    282:      constant that is in range for a `moveq' instruction, the value of this
                    283:      macro is always `DATA_REGS' as long as CLASS includes the data
                    284:      registers.  Requiring a data register guarantees that a `moveq' will
                    285:      be used.
                    286: 
                    287: `CLASS_MAX_NREGS (CLASS, MODE)'
                    288:      A C expression for the maximum number of consecutive registers of
                    289:      cLASS CLASS needed to hold a value of mode MODE.
                    290: 
                    291:      This is closely related to the macro `HARD_REGNO_NREGS'.  In fact, the
                    292:      value of the macro `CLASS_MAX_NREGS (CLASS, MODE)' should be the
                    293:      maximum value of `HARD_REGNO_NREGS (REGNO, MODE)' for all REGNO values
                    294:      in the class CLASS.
                    295: 
                    296:      This macro helps control the handling of multiple-word values in the
                    297:      reload pass.
                    298: 
                    299: Two other special macros describe which constants fit which constraint
                    300: letters.
                    301: 
                    302: `CONST_OK_FOR_LETTER_P (VALUE, C)'
                    303:      A C expression that defines the machine-dependent operand constraint
                    304:      letters that specify particular ranges of integer values.  If C is one
                    305:      of those letters, the expression should check that VALUE, an integer,
                    306:      is in the appropriate range and return 1 if so, 0 otherwise.  If C is
                    307:      not one of those letters, the value should be 0 regardless of VALUE.
                    308: 
                    309: `CONST_DOUBLE_OK_FOR_LETTER_P (VALUE, C)'
                    310:      A C expression that defines the machine-dependent operand constraint
                    311:      letters that specify particular ranges of floating values.  If C is
                    312:      one of those letters, the expression should check that VALUE, an RTX
                    313:      of code `const_double', is in the appropriate range and return 1 if
                    314:      so, 0 otherwise.  If C is not one of those letters, the value should
                    315:      be 0 regardless of VALUE.
                    316: 
                    317: 
                    318: File: internals,  Node: Stack Layout,  Next: Library Names,  Prev: Register Classes,  Up: Machine Macros
                    319: 
                    320: Describing Stack Layout
                    321: =======================
                    322: 
                    323: `STACK_GROWS_DOWNWARD'
                    324:      Define this macro if pushing a word onto the stack moves the stack
                    325:      pointer to a smaller address.
                    326: 
                    327:      When we say, ``define this macro if ...,'' it means that the compiler
                    328:      checks this macro only with `#ifdef' so the precise definition used
                    329:      does not matter.
                    330: 
                    331: `FRAME_GROWS_DOWNWARD'
                    332:      Define this macro if the addresses of local variable slots are at
                    333:      negative offsets from the frame pointer.
                    334: 
                    335: `STARTING_FRAME_OFFSET'
                    336:      Offset from the frame pointer to the first local variable slot to be
                    337:      allocated.
                    338: 
                    339:      If `FRAME_GROWS_DOWNWARD', the next slot's offset is found by
                    340:      subtracting the length of the first slot from `STARTING_FRAME_OFFSET'.
                    341:       Otherwise, it is found by adding the length of the first slot to the
                    342:      value `STARTING_FRAME_OFFSET'.
                    343: 
                    344: `PUSH_ROUNDING (NPUSHED)'
                    345:      A C expression that is the number of bytes actually pushed onto the
                    346:      stack when an instruction attempts to push NPUSHED bytes.
                    347: 
                    348:      If the target machine does not have a push instruction, do not define
                    349:      this macro.  That directs GNU CC to use an alternate strategy: to
                    350:      allocate the entire argument block and then store the arguments into it.
                    351: 
                    352:      On some machines, the definition
                    353: 
                    354:           #define PUSH_ROUNDING(BYTES) (BYTES)
                    355: 
                    356:      will suffice.  But on other machines, instructions that appear to push
                    357:      one byte actually push two bytes in an attempt to maintain alignment. 
                    358:      Then the definition should be
                    359: 
                    360:           #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
                    361: 
                    362: `FIRST_PARM_OFFSET'
                    363:      Offset from the argument pointer register to the first argument's
                    364:      address.
                    365: 
                    366: `RETURN_POPS_ARGS (FUNTYPE)'
                    367:      A C expression that should be 1 if a function pops its own arguments
                    368:      on returning, or 0 if the function pops no arguments and the caller
                    369:      must therefore pop them all after the function returns.
                    370: 
                    371:      FUNTYPE is a C variable whose value is a tree node that describes the
                    372:      function in question.  Normally it is a node of type `FUNCTION_TYPE'
                    373:      that describes the data type of the function.  From this it is
                    374:      possible to obtain the data types of the value and arguments (if known).
                    375: 
                    376:      When a call to a library function is being considered, FUNTYPE will
                    377:      contain an identifier node for the library function.  Thus, if you
                    378:      need to distinguish among various library functions, you can do so by
                    379:      their names.  Note that ``library function'' in this context means a
                    380:      function used to perform arithmetic, whose name is known specially in
                    381:      the compiler and was not mentioned in the C code being compiled.
                    382: 
                    383:      On the Vax, all functions always pop their arguments, so the
                    384:      definition of this macro is 1.  On the 68000, using the standard
                    385:      calling convention, no functions pop their arguments, so the value of
                    386:      the macro is always 0 in this case.  But an alternative calling
                    387:      convention is available in which functions that take a fixed number of
                    388:      arguments pop them but other functions (such as `printf') pop nothing
                    389:      (the caller pops all).  When this convention is in use, FUNTYPE is
                    390:      examined to determine whether a function takes a fixed number of
                    391:      arguments.
                    392: 
                    393: `FUNCTION_VALUE (VALTYPE, FUNC)'
                    394:      A C expression to create an RTX representing the place where a
                    395:      function returns a value of data type VALTYPE.  VALTYPE is a tree node
                    396:      representing a data type.  Write `TYPE_MODE (VALTYPE)' to get the
                    397:      machine mode used to represent that type.  On many machines, only the
                    398:      mode is relevant.  (Actually, on most machines, scalar values are
                    399:      returned in the same place regardless of mode).
                    400: 
                    401:      If the precise function being called is known, FUNC is a tree node
                    402:      (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.  This
                    403:      makes it possible to use a different value-returning convention for
                    404:      specific functions when all their calls are known.
                    405: 
                    406: `FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
                    407:      Define this macro if the target machine has ``register windows'' so
                    408:      that the register in which a function returns its value is not the
                    409:      same as the one in which the caller sees the value.
                    410: 
                    411:      For such machines, `FUNCTION_VALUE' computes the register in which the
                    412:      caller will see the value, and `FUNCTION_OUTGOING_VALUE' should be
                    413:      defined in a similar fashion to tell the function where to put the
                    414:      value.
                    415: 
                    416:      If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE' serves
                    417:      both purposes.
                    418: 
                    419: `LIBCALL_VALUE (MODE)'
                    420:      A C expression to create an RTX representing the place where a library
                    421:      function returns a value of mode MODE.  If the precise function being
                    422:      called is known, FUNC is a tree node (`FUNCTION_DECL') for it;
                    423:      otherwise, FUNC is a null pointer.  This makes it possible to use a
                    424:      different value-returning convention for specific functions when all
                    425:      their calls are known.
                    426: 
                    427:      Note that ``library function'' in this context means a compiler
                    428:      support routine, used to perform arithmetic, whose name is known
                    429:      specially by the compiler and was not mentioned in the C code being
                    430:      compiled.
                    431: 
                    432: `FUNCTION_VALUE_REGNO_P (REGNO)'
                    433:      A C expression that is nonzero if REGNO is the number of a hard
                    434:      register in which function values are sometimes returned.
                    435: 
                    436:      A register whose use for returning values is limited to serving as the
                    437:      second of a pair (for a value of type `double', say) need not be
                    438:      recognized by this macro.  So for most machines, this definition
                    439:      suffices:
                    440: 
                    441:           #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
                    442: 
                    443: `FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
                    444:      A C expression that controls whether a function argument is passed in
                    445:      a register, and which register.
                    446: 
                    447:      The arguments are CUM, which summarizes all the previous arguments;
                    448:      MODE, the machine mode of the argument; TYPE, the data type of the
                    449:      argument as a tree node or 0 if that is not known (which happens for C
                    450:      support library functions); and NAMED, which is 1 for an ordinary
                    451:      argument and 0 for nameless arguments that correspond to `...' in the
                    452:      called function's prototype.
                    453: 
                    454:      The value of the expression should either be a `reg' RTX for the hard
                    455:      register in which to pass the argument, or zero to pass the argument
                    456:      on the stack.
                    457: 
                    458:      For the Vax and 68000, where normally all arguments are pushed, zero
                    459:      suffices as a definition.
                    460: 
                    461: `FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
                    462:      Define this macro if the target machine has ``register windows'', so
                    463:      that the register in which a function sees an arguments is not
                    464:      necessarily the same as the one in which the caller passed the argument.
                    465: 
                    466:      For such machines, `FUNCTION_ARG' computes the register in which the
                    467:      caller passes the value, and `FUNCTION_INCOMING_ARG' should be defined
                    468:      in a similar fashion to tell the function being called where the
                    469:      arguments will arrive.
                    470: 
                    471:      If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves both
                    472:      purposes.
                    473: 
                    474: `FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
                    475:      A C expression for the number of words, at the beginning of an
                    476:      argument, must be put in registers.  The value must be zero for
                    477:      arguments that are passed entirely in registers or that are entirely
                    478:      pushed on the stack.
                    479: 
                    480:      On some machines, certain arguments must be passed partially in
                    481:      registers and partially in memory.  On these machines, typically the
                    482:      first N words of arguments are passed in registers, and the rest on
                    483:      the stack.  If a multi-word argument (a `double' or a structure)
                    484:      crosses that boundary, its first few words must be passed in registers
                    485:      and the rest must be pushed.  This macro tells the compiler when this
                    486:      occurs, and how many of the words should go in registers.
                    487: 
                    488:      `FUNCTION_ARG' for these arguments should return the first register to
                    489:      be used by the caller for this argument; likewise
                    490:      `FUNCTION_INCOMING_ARG', for the called function.
                    491: 
                    492: `CUMULATIVE_ARGS'
                    493:      A C type for declaring a variable that is used as the first argument
                    494:      of `FUNCTION_ARG' and other related values.  For some target machines,
                    495:      the type `int' suffices and can hold the number of bytes of argument
                    496:      so far.
                    497: 
                    498: `INIT_CUMULATIVE_ARGS (CUM)'
                    499:      A C statement (sans semicolon) for initializing the variable CUM for
                    500:      the state at the beginning of the argument list.  The variable has
                    501:      type `CUMULATIVE_ARGS'.
                    502: 
                    503: `FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
                    504:      Update the summarizer variable CUM to advance past an argument in the
                    505:      argument list.  The values MODE, TYPE and NAMED describe that
                    506:      argument.  Once this is done, the variable CUM is suitable for
                    507:      analyzing the *following* argument with `FUNCTION_ARG', etc.
                    508: 
                    509: `FUNCTION_ARG_REGNO_P (REGNO)'
                    510:      A C expression that is nonzero if REGNO is the number of a hard
                    511:      register in which function arguments are sometimes passed.  This does
                    512:      *not* include implicit arguments such as the static chain and the
                    513:      structure-value address.  On many machines, no registers can be used
                    514:      for this purpose since all function arguments are pushed on the stack.
                    515: 
                    516: `FUNCTION_PROLOGUE (FILE, SIZE)'
                    517:      A C compound statement that outputs the assembler code for entry to a
                    518:      function.  The prologue is responsible for setting up the stack frame,
                    519:      initializing the frame pointer register, saving registers that must be
                    520:      saved, and allocating SIZE additional bytes of storage for the local
                    521:      variables.  SIZE is an integer.  FILE is a stdio stream to which the
                    522:      assembler code should be output.
                    523: 
                    524:      The label for the beginning of the function need not be output by this
                    525:      macro.  That has already been done when the macro is run.
                    526: 
                    527:      To determine which registers to save, the macro can refer to the array
                    528:      `regs_ever_live': element R is nonzero if hard register R is used
                    529:      anywhere within the function.  This implies the function prologue
                    530:      should save register R, but not if it is one of the call-used registers.
                    531: 
                    532:      On machines where functions may or may not have frame-pointers, the
                    533:      function entry code must vary accordingly; it must set up the frame
                    534:      pointer if one is wanted, and not otherwise.  To determine whether a
                    535:      frame pointer is in wanted, the macro can refer to the variable
                    536:      `frame_pointer_needed'.  The variable's value will be 1 at run time in
                    537:      a function that needs a frame pointer.
                    538: 
                    539: `FUNCTION_PROFILER (FILE, LABELNO)'
                    540:      A C statement or compound statement to output to FILE some assembler
                    541:      code to call the profiling subroutine `mcount'.  Before calling, the
                    542:      assembler code must load the address of a counter variable into a
                    543:      register where `mcount' expects to find the address.  The name of this
                    544:      variable is `LP' followed by the number LABELNO, so you would generate
                    545:      the name using `LP%d' in a `fprintf'.
                    546: 
                    547:      The details of how the address should be passed to `mcount' are
                    548:      determined by your operating system environment, not by GNU CC.  To
                    549:      figure them out, compile a small program for profiling using the
                    550:      system's installed C compiler and look at the assembler code that
                    551:      results.
                    552: 
                    553: `EXIT_IGNORES_STACK'
                    554:      Define this macro as a C expression that is nonzero if the return
                    555:      instruction or the function epilogue ignores the value of the stack
                    556:      pointer; in other words, if it is safe to delete an instruction to
                    557:      adjust the stack pointer before a return from the function.
                    558: 
                    559:      Note that this macro's value is relevant only for for which frame
                    560:      pointers are maintained.  It is never possible to delete a final stack
                    561:      adjustment in a function that has no frame pointer, and the compiler
                    562:      knows this regardless of `EXIT_IGNORES_STACK'.
                    563: 
                    564: `FUNCTION_EPILOGUE (FILE, SIZE)'
                    565:      A C compound statement that outputs the assembler code for exit from a
                    566:      function.  The epilogue is responsible for restoring the saved
                    567:      registers and stack pointer to their values when the function was
                    568:      called, and returning control to the caller.  This macro takes the
                    569:      same arguments as the macro `FUNCTION_PROLOGUE', and the registers to
                    570:      restore are determined from `regs_ever_live' and `CALL_USED_REGISTERS'
                    571:      in the same way.
                    572: 
                    573:      On some machines, there is a single instruction that does all the work
                    574:      of returning from the function.  On these machines, give that
                    575:      instruction the name `return' and do not define the macro
                    576:      `FUNCTION_EPILOGUE' at all.
                    577: 
                    578:      On machines where functions may or may not have frame-pointers, the
                    579:      function exit code must vary accordingly.  Sometimes the code for
                    580:      these two cases is completely different.  To determine whether a frame
                    581:      pointer is in wanted, the macro can refer to the variable
                    582:      `frame_pointer_needed'.  The variable's value will be 1 at run time in
                    583:      a function that needs a frame pointer.
                    584: 
                    585:      On some machines, some functions pop their arguments on exit while
                    586:      others leave that for the caller to do.  For example, the 68020 when
                    587:      given `-mrtd' pops arguments in functions that take a fixed number of
                    588:      arguments.
                    589: 
                    590:      Your definition of the macro `RETURN_POPS_ARGS' decides which
                    591:      functions pop their own arguments.  `FUNCTION_EPILOGUE' needs to know
                    592:      what was decided.  The variable `current_function_pops_args' is
                    593:      nonzero if the function should pop its own arguments.  If so, use the
                    594:      variable `current_function_args_size' as the number of bytes to pop.
                    595: 
                    596: `FIX_FRAME_POINTER_ADDRESS (ADDR, DEPTH)'
                    597:      A C compound statement to alter a memory address that uses the frame
                    598:      pointer register so that it uses the stack pointer register instead. 
                    599:      This must be done in the instructions that load parameter values into
                    600:      registers, when the reload pass determines that a frame pointer is not
                    601:      necessary for the function.  ADDR will be a C variable name, and the
                    602:      updated address should be stored in that variable.  DEPTH will be the
                    603:      current depth of stack temporaries (number of bytes of arguments
                    604:      currently pushed).  The change in offset between a
                    605:      frame-pointer-relative address and a stack-pointer-relative address
                    606:      must include DEPTH.
                    607: 
                    608:      Even if your machine description specifies there will always be a
                    609:      frame pointer in the frame pointer register, you must still define
                    610:      `FIX_FRAME_POINTER_ADDRESS', but the definition will never be executed
                    611:      at run time, so it may be empty.
                    612: 
                    613: 
                    614: File: internals,  Node: Library Names,  Next: Addressing Modes,  Prev: Stack Layout,  Up: Machine Macros
                    615: 
                    616: Library Subroutine Names
                    617: ========================
                    618: 
                    619: `UDIVSI3_LIBCALL'
                    620:      A C string constant giving the name of the function to call for
                    621:      division of a full-word by a full-word.  If you do not define this
                    622:      macro, the default name is used, which is `_udivsi3', a function
                    623:      defined in `gnulib'.
                    624: 
                    625: `UMODSI3_LIBCALL'
                    626:      A C string constant giving the name of the function to call for the
                    627:      remainder in division of a full-word by a full-word.  If you do not
                    628:      define this macro, the default name is used, which is `_umodsi3', a
                    629:      function defined in `gnulib'.
                    630: 
                    631: `TARGET_MEM_FUNCTIONS'
                    632:      Define this macro if GNU CC should generate calls to the System V (and
                    633:      ANSI C) library functions `memcpy' and `memset' rather than the BSD
                    634:      functions `bcopy' and `bzero'.
                    635: 
                    636: 
                    637: File: internals,  Node: Addressing Modes,  Next: Misc,  Prev: Library Names,  Up: Machine Macros
                    638: 
                    639: Addressing Modes
                    640: ================
                    641: 
                    642: `HAVE_POST_INCREMENT'
                    643:      Define this macro if the machine supports post-increment addressing.
                    644: 
                    645: `HAVE_PRE_INCREMENT'
                    646: `HAVE_POST_DECREMENT'
                    647: `HAVE_PRE_DECREMENT'
                    648:      Similar for other kinds of addressing.
                    649: 
                    650: `CONSTANT_ADDRESS_P (X)'
                    651:      A C expression that is 1 if the RTX X is a constant whose value is an
                    652:      integer.  This includes integers whose values are not explicitly
                    653:      known, such as `symbol_ref' and `label_ref' expressions and `const'
                    654:      arithmetic expressions.
                    655: 
                    656:      On most machines, this can be defined as `CONSTANT_P (X)', but a few
                    657:      machines are more restrictive in which constant addresses are supported.
                    658: 
                    659: `MAX_REGS_PER_ADDRESS'
                    660:      A number, the maximum number of registers that can appear in a valid
                    661:      memory address.
                    662: 
                    663: `GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)'
                    664:      A C compound statement with a conditional `goto LABEL;' executed if X
                    665:      (an RTX) is a legitimate memory address on the target machine for a
                    666:      memory operand of mode MODE.
                    667: 
                    668:      It usually pays to define several simpler macros to serve as
                    669:      subroutines for this one.  Otherwise it may be too complicated to
                    670:      understand.
                    671: 
                    672:      This macro must exist in two variants: a strict variant and a
                    673:      non-strict one.  The strict variant is used in the reload pass.  It
                    674:      must be defined so that any pseudo-register that has not been
                    675:      allocated a hard register is considered a memory reference.  In
                    676:      contexts where some kind of register is required, a pseudo-register
                    677:      with no hard register must be rejected.
                    678: 
                    679:      The non-strict variant is used in other passes.  It must be defined to
                    680:      accept all pseudo-registers in every context where some kind of
                    681:      register is required.
                    682: 
                    683:      Compiler source files that want to use the strict variant of this
                    684:      macro define the macro `REG_OK_STRICT'.  You should use an `#ifdef
                    685:      REG_OK_STRICT' conditional to define the strict variant in that case
                    686:      and the non-strict variant otherwise.
                    687: 
                    688:      Typically among the subroutines used to define
                    689:      `GO_IF_LEGITIMATE_ADDRESS' are subroutines to check for acceptable
                    690:      registers for various purposes (one for base registers, one for index
                    691:      registers, and so on).  Then only these subroutine macros need have
                    692:      two variants; the higher levels of macros may be the same whether
                    693:      strict or not.
                    694: 
                    695: `LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)'
                    696:      A C compound statement that attempts to replace X with a valid memory
                    697:      address for an operand of mode MODE.  WIN will be a C statement label
                    698:      elsewhere in the code; the macro definition may use
                    699: 
                    700:           GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
                    701: 
                    702:      to avoid further processing if the address has become legitimate.
                    703: 
                    704:      X will always be the result of a call to `break_out_memory_refs', and
                    705:      OLDX will be the operand that was given to that function to produce X.
                    706: 
                    707:      The code generated by this macro should not alter the substructure of
                    708:      X.  If it transforms X into a more legitimate form, it should assign X
                    709:      (which will always be a C variable) a new value.
                    710: 
                    711:      It is not necessary for this macro to come up with a legitimate
                    712:      address.  The compiler has standard ways of doing so in all cases.  In
                    713:      fact, it is safe for this macro to do nothing.  But often a
                    714:      machine-dependent strategy can generate better code.
                    715: 
                    716: `GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)'
                    717:      A C statement or compound statement with a conditional `goto LABEL;'
                    718:      executed if memory address X (an RTX) can have different meanings
                    719:      depending on the machine mode of the memory reference it is used for.
                    720: 
                    721:      Autoincrement and autodecrement addresses typically have
                    722:      mode-dependent effects because the amount of the increment or
                    723:      decrement is the size of the operand being addressed.  Some machines
                    724:      have other mode-dependent addresses.  Many RISC machines have no
                    725:      mode-dependent addresses.
                    726: 
                    727:      You may assume that ADDR is a valid address for the machine.
                    728: 
                    729: `LEGITIMATE_CONSTANT_P (X)'
                    730:      A C expression that is nonzero if X is a legitimate constant for an
                    731:      immediate operand on the target machine.  You can assume that either X
                    732:      is a `const_double' or it satisfies `CONSTANT_P', so you need not
                    733:      check these things.  In fact, `1' is a suitable definition for this
                    734:      macro on machines where any `const_double' is valid and anything
                    735:      `CONSTANT_P' is valid.
                    736: 
                    737: 
                    738: File: internals,  Node: Misc,  Next: Condition Code,  Prev: Addressing Modes,  Up: Machine Macros
                    739: 
                    740: Miscellaneous Parameters
                    741: ========================
                    742: 
                    743: `CASE_VECTOR_MODE'
                    744:      An alias for a machine mode name.  This is the machine mode that
                    745:      elements of a jump-table should have.
                    746: 
                    747: `CASE_VECTOR_PC_RELATIVE'
                    748:      Define this macro if jump-tables should contain relative addresses.
                    749: 
                    750: `CASE_DROPS_THROUGH'
                    751:      Define this if control falls through a `case' insn when the index
                    752:      value is out of range.  This means the specified default-label is
                    753:      actually ignored by the `case' insn proper.
                    754: 
                    755: `IMPLICIT_FIX_EXPR'
                    756:      An alias for a tree code that should be used by default for conversion
                    757:      of floating point values to fixed point.  Normally, `FIX_ROUND_EXPR'
                    758:      is used.
                    759: 
                    760: `FIXUNS_TRUNC_LIKE_FIX_TRUNC'
                    761:      Define this macro if the same instructions that convert a floating
                    762:      point number to a signed fixed point number also convert validly to an
                    763:      unsigned one.
                    764: 
                    765: `EASY_DIV_EXPR'
                    766:      An alias for a tree code that is the easiest kind of division to
                    767:      compile code for in the general case.  It may be `TRUNC_DIV_EXPR',
                    768:      `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or `ROUND_DIV_EXPR'.  These four
                    769:      division operators differ in how they round the result to an integer. 
                    770:      `EASY_DIV_EXPR' is used when it is permissible to use any of those
                    771:      kinds of division and the choice should be made on the basis of
                    772:      efficiency.
                    773: 
                    774: `DEFAULT_SIGNED_CHAR'
                    775:      An expression whose value is 1 or 0, according to whether the type
                    776:      `char' should be signed or unsigned by default.  The user can always
                    777:      override this default with the options `-fsigned-char' and
                    778:      `-funsigned-char'.
                    779: 
                    780: `SCCS_DIRECTIVE'
                    781:      Define this if the preprocessor should ignore `#sccs' directives with
                    782:      no error message.
                    783: 
                    784: `MOVE_MAX'
                    785:      The maximum number of bytes that a single instruction can move quickly
                    786:      from memory to memory.
                    787: 
                    788: `INT_TYPE_SIZE'
                    789:      A C expression for the size in bits of the type `int' on the target
                    790:      machine.
                    791: 
                    792: `SLOW_BYTE_ACCESS'
                    793:      Define this macro as a C expression which is nonzero if accessing less
                    794:      than a word of memory (i.e. a `char' or a `short') is slow (requires
                    795:      more than one instruction).
                    796: 
                    797: `SLOW_ZERO_EXTEND'
                    798:      Define this macro if zero-extension (of a `char' or `short' to an
                    799:      `int') can be done faster if the destination is a register that is
                    800:      known to be zero.
                    801: 
                    802:      If you define this macro, you must have instruction patterns that
                    803:      recognize RTL structures like this:
                    804: 
                    805:           (set (strict-low-part (subreg:QI (reg:SI ...) 0)) ...)
                    806: 
                    807:      and likewise for `HImode'.
                    808: 
                    809: `SHIFT_COUNT_TRUNCATED'
                    810:      Define this macro if shift instructions ignore all but the lowest few
                    811:      bits of the shift count.  It implies that a sign-extend or zero-extend
                    812:      instruction for the shift count can be omitted.
                    813: 
                    814: `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'
                    815:      A C expression which is nonzero if on this machine it is safe to
                    816:      ``convert'' an integer of INPREC bits to one of OUTPREC bits (where
                    817:      OUTPREC is smaller than INPREC) by merely operating on it as if it had
                    818:      only OUTPREC bits.
                    819: 
                    820:      On many machines, this expression can be 1.
                    821: 
                    822: `NO_FUNCTION_CSE'
                    823:      Define this macro if it is as good or better to call a constant
                    824:      function address than to call an address kept in a register.
                    825: 
                    826: `STORE_FLAG_VALUE'
                    827:      A C expression for the value stored by a store-flag instruction
                    828:      (`sCOND') when the condition is true.  This is usually 1 or -1; it is
                    829:      required to be an odd number.
                    830: 
                    831:      Do not define `STORE_FLAG_VALUE' if the machine has no store-flag
                    832:      instructions.
                    833: 
                    834: `Pmode'
                    835:      An alias for the machine mode for pointers.  Normally the definition
                    836:      can be
                    837: 
                    838:           #define Pmode SImode
                    839: 
                    840: `FUNCTION_MODE'
                    841:      An alias for the machine mode used for memory references to functions
                    842:      being called, in `call' RTL expressions.  On most machines this should
                    843:      be `QImode'.
                    844: 
                    845: `CONST_COST (X, CODE)'
                    846:      A part of a C `switch' statement that describes the relative costs of
                    847:      constant RTL expressions.  It must contain `case' labels for
                    848:      expression codes `const_int', `const', `symbol_ref', `label_ref' and
                    849:      `const_double'.  Each case must ultimately reach a `return' statement
                    850:      to return the relative cost of the use of that kind of constant value
                    851:      in an expression.  The cost may depend on the precise value of the
                    852:      constant, which is available for examination in X.
                    853: 
                    854:      CODE is the expression code---redundant, since it can be obtained with
                    855:      `GET_CODE (X)'.
                    856: 
                    857: `DOLLARS_IN_IDENTIFIERS'
                    858:      Define this if the character `$' should be allowed in identifier names.
                    859: 
                    860: 
                    861: File: internals,  Node: Condition Code,  Next: Assembler Format,  Prev: Misc,  Up: Machine Macros
                    862: 
                    863: Condition Code Information
                    864: ==========================
                    865: 
                    866: The file `conditions.h' defines a variable `cc_status' to describe how the
                    867: condition code was computed (in case the interpretation of the condition
                    868: code depends on the instruction that it was set by).  This variable
                    869: contains the RTL expressions on which the condition code is currently
                    870: based, and several standard flags.
                    871: 
                    872: Sometimes additional machine-specific flags must be defined in the machine
                    873: description header file.  It can also add additional machine-specific
                    874: information by defining `CC_STATUS_MDEP'.
                    875: 
                    876: `CC_STATUS_MDEP'
                    877:      C code for a data type which is used for declaring the `mdep'
                    878:      component of `cc_status'.  It defaults to `int'.
                    879: 
                    880: `CC_STATUS_MDEP_INIT'
                    881:      A C expression for the initial value of the `mdep' field.  It defaults
                    882:      to 0.
                    883: 
                    884: `NOTICE_UPDATE_CC (EXP)'
                    885:      A C compound statement to set the components of `cc_status'
                    886:      appropriately for an insn whose body is EXP.  It is this macro's
                    887:      responsibility to recognize insns that set the condition code as a
                    888:      byproduct of other activity as well as those that explicitly set
                    889:      `(cc0)'.
                    890: 
                    891:      If there are insn that do not set the condition code but do alter
                    892:      other machine registers, this macro must check to see whether they
                    893:      invalidate the expressions that the condition code is recorded as
                    894:      reflecting.  For example, on the 68000, insns that store in address
                    895:      registers do not set the condition code, which means that usually
                    896:      `NOTICE_UPDATE_CC' can leave `cc_status' unaltered for such insns. 
                    897:      But suppose that the previous insn set the condition code based on
                    898:      location `a4@(102)' and the current insn stores a new value in `a4'. 
                    899:      Although the condition code is not changed by this, it will no longer
                    900:      be true that it reflects the contents of `a4@(102)'.  Therefore,
                    901:      `NOTICE_UPDATE_CC' must alter `cc_status' in this case to say that
                    902:      nothing is known about the condition code value.
                    903: 
                    904: 

unix.superglobalmegacorp.com

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