Annotation of gcc/gcc.info-22, revision 1.1.1.5

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

unix.superglobalmegacorp.com

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