Annotation of gcc/gcc.info-7, revision 1.1.1.1

1.1       root        1: Info file gcc.info, produced by Makeinfo, -*- Text -*- from input
                      2: file gcc.texinfo.
                      3: 
                      4: This file documents the use and the internals of the GNU compiler.
                      5: 
                      6: Copyright (C) 1988 Free Software Foundation, Inc.
                      7: 
                      8: Permission is granted to make and distribute verbatim copies of this
                      9: manual provided the copyright notice and this permission notice are
                     10: 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 CC General Public License'' is
                     15: included exactly as in the original, and provided that the entire
                     16: resulting derived work is distributed under the terms of a permission
                     17: notice 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 CC 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: 
                     28: File: gcc.info,  Node: Stack Layout,  Next: Library Names,  Prev: Register Classes,  Up: Machine Macros
                     29: 
                     30: Describing Stack Layout
                     31: =======================
                     32: 
                     33: `STACK_GROWS_DOWNWARD'
                     34:      Define this macro if pushing a word onto the stack moves the
                     35:      stack pointer to a smaller address.
                     36: 
                     37:      When we say, ``define this macro if ...,'' it means that the
                     38:      compiler checks this macro only with `#ifdef' so the precise
                     39:      definition used does not matter.
                     40: 
                     41: `FRAME_GROWS_DOWNWARD'
                     42:      Define this macro if the addresses of local variable slots are
                     43:      at negative offsets from the frame pointer.
                     44: 
                     45: `STARTING_FRAME_OFFSET'
                     46:      Offset from the frame pointer to the first local variable slot
                     47:      to be allocated.
                     48: 
                     49:      If `FRAME_GROWS_DOWNWARD', the next slot's offset is found by
                     50:      subtracting the length of the first slot from
                     51:      `STARTING_FRAME_OFFSET'.  Otherwise, it is found by adding the
                     52:      length of the first slot to the value `STARTING_FRAME_OFFSET'.
                     53: 
                     54: `PUSH_ROUNDING (NPUSHED)'
                     55:      A C expression that is the number of bytes actually pushed onto
                     56:      the stack when an instruction attempts to push NPUSHED bytes.
                     57: 
                     58:      If the target machine does not have a push instruction, do not
                     59:      define this macro.  That directs GNU CC to use an alternate
                     60:      strategy: to allocate the entire argument block and then store
                     61:      the arguments into it.
                     62: 
                     63:      On some machines, the definition
                     64: 
                     65:           #define PUSH_ROUNDING(BYTES) (BYTES)
                     66: 
                     67:      will suffice.  But on other machines, instructions that appear
                     68:      to push one byte actually push two bytes in an attempt to
                     69:      maintain alignment.  Then the definition should be
                     70: 
                     71:           #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
                     72: 
                     73: `FIRST_PARM_OFFSET (FUNDECL)'
                     74:      Offset from the argument pointer register to the first
                     75:      argument's address.  On some machines it may depend on the data
                     76:      type of the function.  (In the next version of GNU CC, the
                     77:      argument will be changed to the function data type rather than
                     78:      its declaration.)
                     79: 
                     80: `FIRST_PARM_CALLER_OFFSET (FUNDECL)'
                     81:      Define this macro on machines where register parameters have
                     82:      shadow locations on the stack, at addresses below the nominal
                     83:      parameter.  This matters because certain arguments cannot be
                     84:      passed on the stack.  On these machines, such arguments must be
                     85:      stored into the shadow locations.
                     86: 
                     87:      This macro should expand into a C expression whose value is the
                     88:      offset of the first parameter's shadow location from the nominal
                     89:      stack pointer value.  (That value is itself computed by adding
                     90:      the value of `STACK_POINTER_OFFSET' to the stack pointer
                     91:      register.)
                     92: 
                     93: `RETURN_POPS_ARGS (FUNTYPE)'
                     94:      A C expression that should be 1 if a function pops its own
                     95:      arguments on returning, or 0 if the function pops no arguments
                     96:      and the caller must therefore pop them all after the function
                     97:      returns.
                     98: 
                     99:      FUNTYPE is a C variable whose value is a tree node that
                    100:      describes the function in question.  Normally it is a node of
                    101:      type `FUNCTION_TYPE' that describes the data type of the function.
                    102:      From this it is possible to obtain the data types of the value
                    103:      and arguments (if known).
                    104: 
                    105:      When a call to a library function is being considered, FUNTYPE
                    106:      will contain an identifier node for the library function.  Thus,
                    107:      if you need to distinguish among various library functions, you
                    108:      can do so by their names.  Note that ``library function'' in
                    109:      this context means a function used to perform arithmetic, whose
                    110:      name is known specially in the compiler and was not mentioned in
                    111:      the C code being compiled.
                    112: 
                    113:      On the Vax, all functions always pop their arguments, so the
                    114:      definition of this macro is 1.  On the 68000, using the standard
                    115:      calling convention, no functions pop their arguments, so the
                    116:      value of the macro is always 0 in this case.  But an alternative
                    117:      calling convention is available in which functions that take a
                    118:      fixed number of arguments pop them but other functions (such as
                    119:      `printf') pop nothing (the caller pops all).  When this
                    120:      convention is in use, FUNTYPE is examined to determine whether a
                    121:      function takes a fixed number of arguments.
                    122: 
                    123: `FUNCTION_VALUE (VALTYPE, FUNC)'
                    124:      A C expression to create an RTX representing the place where a
                    125:      function returns a value of data type VALTYPE.  VALTYPE is a
                    126:      tree node representing a data type.  Write `TYPE_MODE (VALTYPE)'
                    127:      to get the machine mode used to represent that type.  On many
                    128:      machines, only the mode is relevant.  (Actually, on most
                    129:      machines, scalar values are returned in the same place
                    130:      regardless of mode).
                    131: 
                    132:      If the precise function being called is known, FUNC is a tree
                    133:      node (`FUNCTION_DECL') for it; otherwise, FUNC is a null
                    134:      pointer.  This makes it possible to use a different
                    135:      value-returning convention for specific functions when all their
                    136:      calls are known.
                    137: 
                    138: `FUNCTION_OUTGOING_VALUE (VALTYPE, FUNC)'
                    139:      Define this macro if the target machine has ``register windows''
                    140:      so that the register in which a function returns its value is
                    141:      not the same as the one in which the caller sees the value.
                    142: 
                    143:      For such machines, `FUNCTION_VALUE' computes the register in
                    144:      which the caller will see the value, and
                    145:      `FUNCTION_OUTGOING_VALUE' should be defined in a similar fashion
                    146:      to tell the function where to put the value.
                    147: 
                    148:      If `FUNCTION_OUTGOING_VALUE' is not defined, `FUNCTION_VALUE'
                    149:      serves both purposes.
                    150: 
                    151: `LIBCALL_VALUE (MODE)'
                    152:      A C expression to create an RTX representing the place where a
                    153:      library function returns a value of mode MODE.  If the precise
                    154:      function being called is known, FUNC is a tree node
                    155:      (`FUNCTION_DECL') for it; otherwise, FUNC is a null pointer. 
                    156:      This makes it possible to use a different value-returning
                    157:      convention for specific functions when all their calls are known.
                    158: 
                    159:      Note that ``library function'' in this context means a compiler
                    160:      support routine, used to perform arithmetic, whose name is known
                    161:      specially by the compiler and was not mentioned in the C code
                    162:      being compiled.
                    163: 
                    164: `FUNCTION_VALUE_REGNO_P (REGNO)'
                    165:      A C expression that is nonzero if REGNO is the number of a hard
                    166:      register in which the values of called function may come back.
                    167: 
                    168:      A register whose use for returning values is limited to serving
                    169:      as the second of a pair (for a value of type `double', say) need
                    170:      not be recognized by this macro.  So for most machines, this
                    171:      definition suffices:
                    172: 
                    173:           #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
                    174: 
                    175:      If the machine has register windows, so that the caller and the
                    176:      called function use different registers for the return value,
                    177:      this macro should recognize only the caller's register numbers.
                    178: 
                    179: `FUNCTION_ARG (CUM, MODE, TYPE, NAMED)'
                    180:      A C expression that controls whether a function argument is
                    181:      passed in a register, and which register.
                    182: 
                    183:      The arguments are CUM, which summarizes all the previous
                    184:      arguments; MODE, the machine mode of the argument; TYPE, the
                    185:      data type of the argument as a tree node or 0 if that is not
                    186:      known (which happens for C support library functions); and
                    187:      NAMED, which is 1 for an ordinary argument and 0 for nameless
                    188:      arguments that correspond to `...' in the called function's
                    189:      prototype.
                    190: 
                    191:      The value of the expression should either be a `reg' RTX for the
                    192:      hard register in which to pass the argument, or zero to pass the
                    193:      argument on the stack.
                    194: 
                    195:      For the Vax and 68000, where normally all arguments are pushed,
                    196:      zero suffices as a definition.
                    197: 
                    198: `FUNCTION_INCOMING_ARG (CUM, MODE, TYPE, NAMED)'
                    199:      Define this macro if the target machine has ``register
                    200:      windows'', so that the register in which a function sees an
                    201:      arguments is not necessarily the same as the one in which the
                    202:      caller passed the argument.
                    203: 
                    204:      For such machines, `FUNCTION_ARG' computes the register in which
                    205:      the caller passes the value, and `FUNCTION_INCOMING_ARG' should
                    206:      be defined in a similar fashion to tell the function being
                    207:      called where the arguments will arrive.
                    208: 
                    209:      If `FUNCTION_INCOMING_ARG' is not defined, `FUNCTION_ARG' serves
                    210:      both purposes.
                    211: 
                    212: `FUNCTION_ARG_PARTIAL_NREGS (CUM, MODE, TYPE, NAMED)'
                    213:      A C expression for the number of words, at the beginning of an
                    214:      argument, must be put in registers.  The value must be zero for
                    215:      arguments that are passed entirely in registers or that are
                    216:      entirely pushed on the stack.
                    217: 
                    218:      On some machines, certain arguments must be passed partially in
                    219:      registers and partially in memory.  On these machines, typically
                    220:      the first N words of arguments are passed in registers, and the
                    221:      rest on the stack.  If a multi-word argument (a `double' or a
                    222:      structure) crosses that boundary, its first few words must be
                    223:      passed in registers and the rest must be pushed.  This macro
                    224:      tells the compiler when this occurs, and how many of the words
                    225:      should go in registers.
                    226: 
                    227:      `FUNCTION_ARG' for these arguments should return the first
                    228:      register to be used by the caller for this argument; likewise
                    229:      `FUNCTION_INCOMING_ARG', for the called function.
                    230: 
                    231: `CUMULATIVE_ARGS'
                    232:      A C type for declaring a variable that is used as the first
                    233:      argument of `FUNCTION_ARG' and other related values.  For some
                    234:      target machines, the type `int' suffices and can hold the number
                    235:      of bytes of argument so far.
                    236: 
                    237: `INIT_CUMULATIVE_ARGS (CUM, FNTYPE)'
                    238:      A C statement (sans semicolon) for initializing the variable CUM
                    239:      for the state at the beginning of the argument list.  The
                    240:      variable has type `CUMULATIVE_ARGS'.  The value of FNTYPE is the
                    241:      tree node for the data type of the function which will receive
                    242:      the args, or 0 if the args are to a compiler support library
                    243:      function.
                    244: 
                    245: `FUNCTION_ARG_ADVANCE (CUM, MODE, TYPE, NAMED)'
                    246:      Update the summarizer variable CUM to advance past an argument
                    247:      in the argument list.  The values MODE, TYPE and NAMED describe
                    248:      that argument.  Once this is done, the variable CUM is suitable
                    249:      for analyzing the *following* argument with `FUNCTION_ARG', etc.
                    250: 
                    251: `FUNCTION_ARG_REGNO_P (REGNO)'
                    252:      A C expression that is nonzero if REGNO is the number of a hard
                    253:      register in which function arguments are sometimes passed.  This
                    254:      does *not* include implicit arguments such as the static chain
                    255:      and the structure-value address.  On many machines, no registers
                    256:      can be used for this purpose since all function arguments are
                    257:      pushed on the stack.
                    258: 
                    259: `FUNCTION_ARG_PADDING (MODE, SIZE)'
                    260:      If defined, a C expression which determines whether, and in
                    261:      which direction, to pad out an argument with extra space.  The
                    262:      value should be of type `enum direction': either `upward' to pad
                    263:      above the argument, `downward' to pad below, or `none' to
                    264:      inhibit padding.
                    265: 
                    266:      The argument SIZE is an RTX which describes the size of the
                    267:      argument, in bytes.  It should be used only if MODE is
                    268:      `BLKmode'.  Otherwise, SIZE is 0.
                    269: 
                    270:      This macro does not control the *amount* of padding; that is
                    271:      always just enough to reach the next multiple of `PARM_BOUNDARY'.
                    272: 
                    273:      This macro has a default definition which is right for most
                    274:      systems.  For little-endian machines, the default is to pad
                    275:      upward.  For big-endian machines, the default is to pad downward
                    276:      for an argument of constant size shorter than an `int', and
                    277:      upward otherwise.
                    278: 
                    279: `FUNCTION_PROLOGUE (FILE, SIZE)'
                    280:      A C compound statement that outputs the assembler code for entry
                    281:      to a function.  The prologue is responsible for setting up the
                    282:      stack frame, initializing the frame pointer register, saving
                    283:      registers that must be saved, and allocating SIZE additional
                    284:      bytes of storage for the local variables.  SIZE is an integer. 
                    285:      FILE is a stdio stream to which the assembler code should be
                    286:      output.
                    287: 
                    288:      The label for the beginning of the function need not be output
                    289:      by this macro.  That has already been done when the macro is run.
                    290: 
                    291:      To determine which registers to save, the macro can refer to the
                    292:      array `regs_ever_live': element R is nonzero if hard register R
                    293:      is used anywhere within the function.  This implies the function
                    294:      prologue should save register R, but not if it is one of the
                    295:      call-used registers.
                    296: 
                    297:      On machines where functions may or may not have frame-pointers,
                    298:      the function entry code must vary accordingly; it must set up
                    299:      the frame pointer if one is wanted, and not otherwise.  To
                    300:      determine whether a frame pointer is in wanted, the macro can
                    301:      refer to the variable `frame_pointer_needed'.  The variable's
                    302:      value will be 1 at run time in a function that needs a frame
                    303:      pointer.
                    304: 
                    305: `FUNCTION_PROFILER (FILE, LABELNO)'
                    306:      A C statement or compound statement to output to FILE some
                    307:      assembler code to call the profiling subroutine `mcount'. 
                    308:      Before calling, the assembler code must load the address of a
                    309:      counter variable into a register where `mcount' expects to find
                    310:      the address.  The name of this variable is `LP' followed by the
                    311:      number LABELNO, so you would generate the name using `LP%d' in a
                    312:      `fprintf'.
                    313: 
                    314:      The details of how the address should be passed to `mcount' are
                    315:      determined by your operating system environment, not by GNU CC. 
                    316:      To figure them out, compile a small program for profiling using
                    317:      the system's installed C compiler and look at the assembler code
                    318:      that results.
                    319: 
                    320: `EXIT_IGNORES_STACK'
                    321:      Define this macro as a C expression that is nonzero if the
                    322:      return instruction or the function epilogue ignores the value of
                    323:      the stack pointer; in other words, if it is safe to delete an
                    324:      instruction to adjust the stack pointer before a return from the
                    325:      function.
                    326: 
                    327:      Note that this macro's value is relevant only for for which
                    328:      frame pointers are maintained.  It is never possible to delete a
                    329:      final stack adjustment in a function that has no frame pointer,
                    330:      and the compiler knows this regardless of `EXIT_IGNORES_STACK'.
                    331: 
                    332: `FUNCTION_EPILOGUE (FILE, SIZE)'
                    333:      A C compound statement that outputs the assembler code for exit
                    334:      from a function.  The epilogue is responsible for restoring the
                    335:      saved registers and stack pointer to their values when the
                    336:      function was called, and returning control to the caller.  This
                    337:      macro takes the same arguments as the macro `FUNCTION_PROLOGUE',
                    338:      and the registers to restore are determined from
                    339:      `regs_ever_live' and `CALL_USED_REGISTERS' in the same way.
                    340: 
                    341:      On some machines, there is a single instruction that does all
                    342:      the work of returning from the function.  On these machines,
                    343:      give that instruction the name `return' and do not define the
                    344:      macro `FUNCTION_EPILOGUE' at all.
                    345: 
                    346:      Do not define a pattern named `return' if you want the
                    347:      `FUNCTION_EPILOGUE' to be used.  If you want the target switches
                    348:      to control whether return instructions or epilogues are used,
                    349:      define a `return' pattern with a validity condition that tests
                    350:      the target switches appropriately.  If the `return' pattern's
                    351:      validity condition is false, epilogues will be used.
                    352: 
                    353:      On machines where functions may or may not have frame-pointers,
                    354:      the function exit code must vary accordingly.  Sometimes the
                    355:      code for these two cases is completely different.  To determine
                    356:      whether a frame pointer is in wanted, the macro can refer to the
                    357:      variable `frame_pointer_needed'.  The variable's value will be 1
                    358:      at run time in a function that needs a frame pointer.
                    359: 
                    360:      On some machines, some functions pop their arguments on exit
                    361:      while others leave that for the caller to do.  For example, the
                    362:      68020 when given `-mrtd' pops arguments in functions that take a
                    363:      fixed number of arguments.
                    364: 
                    365:      Your definition of the macro `RETURN_POPS_ARGS' decides which
                    366:      functions pop their own arguments.  `FUNCTION_EPILOGUE' needs to
                    367:      know what was decided.  The variable
                    368:      `current_function_pops_args' is nonzero if the function should
                    369:      pop its own arguments.  If so, use the variable
                    370:      `current_function_args_size' as the number of bytes to pop.
                    371: 
                    372: `FIX_FRAME_POINTER_ADDRESS (ADDR, DEPTH)'
                    373:      A C compound statement to alter a memory address that uses the
                    374:      frame pointer register so that it uses the stack pointer
                    375:      register instead.  This must be done in the instructions that
                    376:      load parameter values into registers, when the reload pass
                    377:      determines that a frame pointer is not necessary for the
                    378:      function.  ADDR will be a C variable name, and the updated
                    379:      address should be stored in that variable.  DEPTH will be the
                    380:      current depth of stack temporaries (number of bytes of arguments
                    381:      currently pushed).  The change in offset between a
                    382:      frame-pointer-relative address and a stack-pointer-relative
                    383:      address must include DEPTH.
                    384: 
                    385:      Even if your machine description specifies there will always be
                    386:      a frame pointer in the frame pointer register, you must still
                    387:      define `FIX_FRAME_POINTER_ADDRESS', but the definition will
                    388:      never be executed at run time, so it may be empty.
                    389: 
                    390: 
                    391: 
                    392: File: gcc.info,  Node: Library Names,  Next: Addressing Modes,  Prev: Stack Layout,  Up: Machine Macros
                    393: 
                    394: Library Subroutine Names
                    395: ========================
                    396: 
                    397: `UDIVSI3_LIBCALL'
                    398:      A C string constant giving the name of the function to call for
                    399:      division of a full-word by a full-word.  If you do not define
                    400:      this macro, the default name is used, which is `_udivsi3', a
                    401:      function defined in `gnulib'.
                    402: 
                    403: `UMODSI3_LIBCALL'
                    404:      A C string constant giving the name of the function to call for
                    405:      the remainder in division of a full-word by a full-word.  If you
                    406:      do not define this macro, the default name is used, which is
                    407:      `_umodsi3', a function defined in `gnulib'.
                    408: 
                    409: `TARGET_MEM_FUNCTIONS'
                    410:      Define this macro if GNU CC should generate calls to the System
                    411:      V (and ANSI C) library functions `memcpy' and `memset' rather
                    412:      than the BSD functions `bcopy' and `bzero'.
                    413: 
                    414: 
                    415: 
                    416: File: gcc.info,  Node: Addressing Modes,  Next: Misc,  Prev: Library Names,  Up: Machine Macros
                    417: 
                    418: Addressing Modes
                    419: ================
                    420: 
                    421: `HAVE_POST_INCREMENT'
                    422:      Define this macro if the machine supports post-increment
                    423:      addressing.
                    424: 
                    425: `HAVE_PRE_INCREMENT'
                    426: `HAVE_POST_DECREMENT'
                    427: `HAVE_PRE_DECREMENT'
                    428:      Similar for other kinds of addressing.
                    429: 
                    430: `CONSTANT_ADDRESS_P (X)'
                    431:      A C expression that is 1 if the RTX X is a constant whose value
                    432:      is an integer.  This includes integers whose values are not
                    433:      explicitly known, such as `symbol_ref' and `label_ref'
                    434:      expressions and `const' arithmetic expressions.
                    435: 
                    436:      On most machines, this can be defined as `CONSTANT_P (X)', but a
                    437:      few machines are more restrictive in which constant addresses
                    438:      are supported.
                    439: 
                    440: `MAX_REGS_PER_ADDRESS'
                    441:      A number, the maximum number of registers that can appear in a
                    442:      valid memory address.
                    443: 
                    444: `GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)'
                    445:      A C compound statement with a conditional `goto LABEL;' executed
                    446:      if X (an RTX) is a legitimate memory address on the target
                    447:      machine for a memory operand of mode MODE.
                    448: 
                    449:      It usually pays to define several simpler macros to serve as
                    450:      subroutines for this one.  Otherwise it may be too complicated
                    451:      to understand.
                    452: 
                    453:      This macro must exist in two variants: a strict variant and a
                    454:      non-strict one.  The strict variant is used in the reload pass. 
                    455:      It must be defined so that any pseudo-register that has not been
                    456:      allocated a hard register is considered a memory reference.  In
                    457:      contexts where some kind of register is required, a
                    458:      pseudo-register with no hard register must be rejected.
                    459: 
                    460:      The non-strict variant is used in other passes.  It must be
                    461:      defined to accept all pseudo-registers in every context where
                    462:      some kind of register is required.
                    463: 
                    464:      Compiler source files that want to use the strict variant of
                    465:      this macro define the macro `REG_OK_STRICT'.  You should use an
                    466:      `#ifdef REG_OK_STRICT' conditional to define the strict variant
                    467:      in that case and the non-strict variant otherwise.
                    468: 
                    469:      Typically among the subroutines used to define
                    470:      `GO_IF_LEGITIMATE_ADDRESS' are subroutines to check for
                    471:      acceptable registers for various purposes (one for base
                    472:      registers, one for index registers, and so on).  Then only these
                    473:      subroutine macros need have two variants; the higher levels of
                    474:      macros may be the same whether strict or not.
                    475: 
                    476: `REG_OK_FOR_BASE_P (X)'
                    477:      A C expression that is nonzero if X (asumed to be a `reg' RTX)
                    478:      is valid for use as a base register.  For hard registers, it
                    479:      should always accept those which the hardware permits and reject
                    480:      the others.  Whether the macro accepts or rejects pseudo
                    481:      registers must be controlled by `REG_OK_STRICT' as described
                    482:      above.  This usually requires two variant definitions, of which
                    483:      `REG_OK_STRICT' controls the one actually used.
                    484: 
                    485: `REG_OK_FOR_INDEX_P (X)'
                    486:      A C expression that is nonzero if X (asumed to be a `reg' RTX)
                    487:      is valid for use as an index register.
                    488: 
                    489:      The difference between an index register and a base register is
                    490:      that the index register may be scaled.  If an address involves
                    491:      the sum of two registers, neither one of them scaled, then
                    492:      either one may be labeled the ``base'' and the other the
                    493:      ``index''; but whichever labeling is used must fit the machine's
                    494:      constraints of which registers may serve in each capacity.  The
                    495:      compiler will try both labelings, looking for one that is valid,
                    496:      and will reload one or both registers only if neither labeling
                    497:      works.
                    498: 
                    499: `LEGITIMIZE_ADDRESS (X, OLDX, MODE, WIN)'
                    500:      A C compound statement that attempts to replace X with a valid
                    501:      memory address for an operand of mode MODE.  WIN will be a C
                    502:      statement label elsewhere in the code; the macro definition may
                    503:      use
                    504: 
                    505:           GO_IF_LEGITIMATE_ADDRESS (MODE, X, WIN);
                    506: 
                    507:      to avoid further processing if the address has become legitimate.
                    508: 
                    509:      X will always be the result of a call to
                    510:      `break_out_memory_refs', and OLDX will be the operand that was
                    511:      given to that function to produce X.
                    512: 
                    513:      The code generated by this macro should not alter the
                    514:      substructure of X.  If it transforms X into a more legitimate
                    515:      form, it should assign X (which will always be a C variable) a
                    516:      new value.
                    517: 
                    518:      It is not necessary for this macro to come up with a legitimate
                    519:      address.  The compiler has standard ways of doing so in all
                    520:      cases.  In fact, it is safe for this macro to do nothing.  But
                    521:      often a machine-dependent strategy can generate better code.
                    522: 
                    523: `GO_IF_MODE_DEPENDENT_ADDRESS (ADDR, LABEL)'
                    524:      A C statement or compound statement with a conditional `goto
                    525:      LABEL;' executed if memory address X (an RTX) can have different
                    526:      meanings depending on the machine mode of the memory reference
                    527:      it is used for.
                    528: 
                    529:      Autoincrement and autodecrement addresses typically have
                    530:      mode-dependent effects because the amount of the increment or
                    531:      decrement is the size of the operand being addressed.  Some
                    532:      machines have other mode-dependent addresses.  Many RISC
                    533:      machines have no mode-dependent addresses.
                    534: 
                    535:      You may assume that ADDR is a valid address for the machine.
                    536: 
                    537: `LEGITIMATE_CONSTANT_P (X)'
                    538:      A C expression that is nonzero if X is a legitimate constant for
                    539:      an immediate operand on the target machine.  You can assume that
                    540:      either X is a `const_double' or it satisfies `CONSTANT_P', so
                    541:      you need not check these things.  In fact, `1' is a suitable
                    542:      definition for this macro on machines where any `const_double'
                    543:      is valid and anything `CONSTANT_P' is valid.
                    544: 
                    545: 
                    546: 
                    547: File: gcc.info,  Node: Misc,  Next: Condition Code,  Prev: Addressing Modes,  Up: Machine Macros
                    548: 
                    549: Miscellaneous Parameters
                    550: ========================
                    551: 
                    552: `CASE_VECTOR_MODE'
                    553:      An alias for a machine mode name.  This is the machine mode that
                    554:      elements of a jump-table should have.
                    555: 
                    556: `CASE_VECTOR_PC_RELATIVE'
                    557:      Define this macro if jump-tables should contain relative
                    558:      addresses.
                    559: 
                    560: `CASE_DROPS_THROUGH'
                    561:      Define this if control falls through a `case' insn when the
                    562:      index value is out of range.  This means the specified
                    563:      default-label is actually ignored by the `case' insn proper.
                    564: 
                    565: `IMPLICIT_FIX_EXPR'
                    566:      An alias for a tree code that should be used by default for
                    567:      conversion of floating point values to fixed point.  Normally,
                    568:      `FIX_ROUND_EXPR' is used.
                    569: 
                    570: `FIXUNS_TRUNC_LIKE_FIX_TRUNC'
                    571:      Define this macro if the same instructions that convert a
                    572:      floating point number to a signed fixed point number also
                    573:      convert validly to an unsigned one.
                    574: 
                    575: `EASY_DIV_EXPR'
                    576:      An alias for a tree code that is the easiest kind of division to
                    577:      compile code for in the general case.  It may be
                    578:      `TRUNC_DIV_EXPR', `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or
                    579:      `ROUND_DIV_EXPR'.  These four division operators differ in how
                    580:      they round the result to an integer.  `EASY_DIV_EXPR' is used
                    581:      when it is permissible to use any of those kinds of division and
                    582:      the choice should be made on the basis of efficiency.
                    583: 
                    584: `DEFAULT_SIGNED_CHAR'
                    585:      An expression whose value is 1 or 0, according to whether the
                    586:      type `char' should be signed or unsigned by default.  The user
                    587:      can always override this default with the options
                    588:      `-fsigned-char' and `-funsigned-char'.
                    589: 
                    590: `SCCS_DIRECTIVE'
                    591:      Define this if the preprocessor should ignore `#sccs' directives
                    592:      and print no error message.
                    593: 
                    594: `IDENT_DIRECTIVE'
                    595:      Define this if the preprocessor should ignore `#ident'
                    596:      directives and print no error message.
                    597: 
                    598: `MOVE_MAX'
                    599:      The maximum number of bytes that a single instruction can move
                    600:      quickly from memory to memory.
                    601: 
                    602: `INT_TYPE_SIZE'
                    603:      A C expression for the size in bits of the type `int' on the
                    604:      target machine.
                    605: 
                    606: `SLOW_BYTE_ACCESS'
                    607:      Define this macro as a C expression which is nonzero if
                    608:      accessing less than a word of memory (i.e. a `char' or a
                    609:      `short') is slow (requires more than one instruction).
                    610: 
                    611: `SLOW_ZERO_EXTEND'
                    612:      Define this macro if zero-extension (of a `char' or `short' to
                    613:      an `int') can be done faster if the destination is a register
                    614:      that is known to be zero.
                    615: 
                    616:      If you define this macro, you must have instruction patterns
                    617:      that recognize RTL structures like this:
                    618: 
                    619:           (set (strict-low-part (subreg:QI (reg:SI ...) 0)) ...)
                    620: 
                    621:      and likewise for `HImode'.
                    622: 
                    623: `SHIFT_COUNT_TRUNCATED'
                    624:      Define this macro if shift instructions ignore all but the
                    625:      lowest few bits of the shift count.  It implies that a
                    626:      sign-extend or zero-extend instruction for the shift count can
                    627:      be omitted.
                    628: 
                    629: `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'
                    630:      A C expression which is nonzero if on this machine it is safe to
                    631:      ``convert'' an integer of INPREC bits to one of OUTPREC bits
                    632:      (where OUTPREC is smaller than INPREC) by merely operating on it
                    633:      as if it had only OUTPREC bits.
                    634: 
                    635:      On many machines, this expression can be 1.
                    636: 
                    637: `NO_FUNCTION_CSE'
                    638:      Define this macro if it is as good or better to call a constant
                    639:      function address than to call an address kept in a register.
                    640: 
                    641: `PROMOTE_PROTOTYPES'
                    642:      Define this macro if an argument declared as `char' or `short'
                    643:      in a prototype should actually be passed as an `int'.  In
                    644:      addition to avoiding errors in certain cases of mismatch, it
                    645:      also makes for better code on certain machines.
                    646: 
                    647: `STORE_FLAG_VALUE'
                    648:      A C expression for the value stored by a store-flag instruction
                    649:      (`sCOND') when the condition is true.  This is usually 1 or -1;
                    650:      it is required to be an odd number.
                    651: 
                    652:      Do not define `STORE_FLAG_VALUE' if the machine has no
                    653:      store-flag instructions.
                    654: 
                    655: `Pmode'
                    656:      An alias for the machine mode for pointers.  Normally the
                    657:      definition can be
                    658: 
                    659:           #define Pmode SImode
                    660: 
                    661: `FUNCTION_MODE'
                    662:      An alias for the machine mode used for memory references to
                    663:      functions being called, in `call' RTL expressions.  On most
                    664:      machines this should be `QImode'.
                    665: 
                    666: `INSN_MACHINE_INFO'
                    667:      This macro should expand into a C structure type to use for the
                    668:      machine-dependent info field specified with the optional last
                    669:      argument in `define_insn' and `define_peephole' patterns.  For
                    670:      example, it might expand into `struct machine_info'; then it
                    671:      would be up to you to define this structure in the `tm.h' file.
                    672: 
                    673:      You do not need to define this macro if you do not write the
                    674:      optional last argument in any of the patterns in the machine
                    675:      description.
                    676: 
                    677: `CONST_COSTS (X, CODE)'
                    678:      A part of a C `switch' statement that describes the relative
                    679:      costs of constant RTL expressions.  It must contain `case'
                    680:      labels for expression codes `const_int', `const', `symbol_ref',
                    681:      `label_ref' and `const_double'.  Each case must ultimately reach
                    682:      a `return' statement to return the relative cost of the use of
                    683:      that kind of constant value in an expression.  The cost may
                    684:      depend on the precise value of the constant, which is available
                    685:      for examination in X.
                    686: 
                    687:      CODE is the expression code--redundant, since it can be obtained
                    688:      with `GET_CODE (X)'.
                    689: 
                    690: `DOLLARS_IN_IDENTIFIERS'
                    691:      Define this to be nonzero if the character `$' should be allowed
                    692:      by default in identifier names.
                    693: 
                    694: 
                    695: 
                    696: File: gcc.info,  Node: Condition Code,  Next: Assembler Format,  Prev: Misc,  Up: Machine Macros
                    697: 
                    698: Condition Code Information
                    699: ==========================
                    700: 
                    701: The file `conditions.h' defines a variable `cc_status' to describe
                    702: how the condition code was computed (in case the interpretation of
                    703: the condition code depends on the instruction that it was set by). 
                    704: This variable contains the RTL expressions on which the condition
                    705: code is currently based, and several standard flags.
                    706: 
                    707: Sometimes additional machine-specific flags must be defined in the
                    708: machine description header file.  It can also add additional
                    709: machine-specific information by defining `CC_STATUS_MDEP'.
                    710: 
                    711: `CC_STATUS_MDEP'
                    712:      C code for a data type which is used for declaring the `mdep'
                    713:      component of `cc_status'.  It defaults to `int'.
                    714: 
                    715: `CC_STATUS_MDEP_INIT'
                    716:      A C expression for the initial value of the `mdep' field.  It
                    717:      defaults to 0.
                    718: 
                    719: `NOTICE_UPDATE_CC (EXP, INSN)'
                    720:      A C compound statement to set the components of `cc_status'
                    721:      appropriately for an insn INSN whose body is EXP.  It is this
                    722:      macro's responsibility to recognize insns that set the condition
                    723:      code as a byproduct of other activity as well as those that
                    724:      explicitly set `(cc0)'.
                    725: 
                    726:      If there are insn that do not set the condition code but do
                    727:      alter other machine registers, this macro must check to see
                    728:      whether they invalidate the expressions that the condition code
                    729:      is recorded as reflecting.  For example, on the 68000, insns
                    730:      that store in address registers do not set the condition code,
                    731:      which means that usually `NOTICE_UPDATE_CC' can leave
                    732:      `cc_status' unaltered for such insns.  But suppose that the
                    733:      previous insn set the condition code based on location
                    734:      `a4@(102)' and the current insn stores a new value in `a4'. 
                    735:      Although the condition code is not changed by this, it will no
                    736:      longer be true that it reflects the contents of `a4@(102)'. 
                    737:      Therefore, `NOTICE_UPDATE_CC' must alter `cc_status' in this
                    738:      case to say that nothing is known about the condition code value.
                    739: 
                    740:      The definition of `NOTICE_UPDATE_CC' must be prepared to deal
                    741:      with the results of peephole optimization: insns whose patterns
                    742:      are `parallel' RTXs containing various `reg', `mem' or constants
                    743:      which are just the operands.  The RTL structure of these insns
                    744:      is not sufficient to indicate what the insns actually do.  What
                    745:      `NOTICE_UPDATE_CC' should do when it sees one is just to run
                    746:      `CC_STATUS_INIT'.
                    747: 
                    748: 

unix.superglobalmegacorp.com

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