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

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

unix.superglobalmegacorp.com

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