Annotation of gcc/gcc.info-15, 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: Uninitialized Data,  Next: Label Output,  Prev: Data Output,  Up: Assembler Format
                     28: 
                     29: Output of Uninitialized Variables
                     30: ---------------------------------
                     31: 
                     32:    Each of the macros in this section is used to do the whole job of
                     33: outputting a single uninitialized variable.
                     34: 
                     35: `ASM_OUTPUT_COMMON (STREAM, NAME, SIZE, ROUNDED)'
                     36:      A C statement (sans semicolon) to output to the stdio stream
                     37:      STREAM the assembler definition of a common-label named NAME
                     38:      whose size is SIZE bytes.  The variable ROUNDED is the size
                     39:      rounded up to whatever alignment the caller wants.
                     40: 
                     41:      Use the expression `assemble_name (STREAM, NAME)' to output the
                     42:      name itself; before and after that, output the additional
                     43:      assembler syntax for defining the name, and a newline.
                     44: 
                     45:      This macro controls how the assembler definitions of uninitialized
                     46:      global variables are output.
                     47: 
                     48: `ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)'
                     49:      Like `ASM_OUTPUT_COMMON' except takes the required alignment as a
                     50:      separate, explicit argument.  If you define this macro, it is
                     51:      used in place of `ASM_OUTPUT_COMMON', and gives you more
                     52:      flexibility in handling the required alignment of the variable.
                     53: 
                     54: `ASM_OUTPUT_SHARED_COMMON (STREAM, NAME, SIZE, ROUNDED)'
                     55:      If defined, it is similar to `ASM_OUTPUT_COMMON', except that it
                     56:      is used when NAME is shared.  If not defined, `ASM_OUTPUT_COMMON'
                     57:      will be used.
                     58: 
                     59: `ASM_OUTPUT_LOCAL (STREAM, NAME, SIZE, ROUNDED)'
                     60:      A C statement (sans semicolon) to output to the stdio stream
                     61:      STREAM the assembler definition of a local-common-label named
                     62:      NAME whose size is SIZE bytes.  The variable ROUNDED is the size
                     63:      rounded up to whatever alignment the caller wants.
                     64: 
                     65:      Use the expression `assemble_name (STREAM, NAME)' to output the
                     66:      name itself; before and after that, output the additional
                     67:      assembler syntax for defining the name, and a newline.
                     68: 
                     69:      This macro controls how the assembler definitions of uninitialized
                     70:      static variables are output.
                     71: 
                     72: `ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)'
                     73:      Like `ASM_OUTPUT_LOCAL' except takes the required alignment as a
                     74:      separate, explicit argument.  If you define this macro, it is
                     75:      used in place of `ASM_OUTPUT_LOCAL', and gives you more
                     76:      flexibility in handling the required alignment of the variable.
                     77: 
                     78: `ASM_OUTPUT_SHARED_LOCAL (STREAM, NAME, SIZE, ROUNDED)'
                     79:      If defined, it is similar to `ASM_OUTPUT_LOCAL', except that it
                     80:      is used when NAME is shared.  If not defined, `ASM_OUTPUT_LOCAL'
                     81:      will be used.
                     82: 
                     83: 
                     84: File: gcc.info,  Node: Label Output,  Next: Constructor Output,  Prev: Uninitialized Data,  Up: Assembler Format
                     85: 
                     86: Output and Generation of Labels
                     87: -------------------------------
                     88: 
                     89: `ASM_OUTPUT_LABEL (STREAM, NAME)'
                     90:      A C statement (sans semicolon) to output to the stdio stream
                     91:      STREAM the assembler definition of a label named NAME.  Use the
                     92:      expression `assemble_name (STREAM, NAME)' to output the name
                     93:      itself; before and after that, output the additional assembler
                     94:      syntax for defining the name, and a newline.
                     95: 
                     96: `ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)'
                     97:      A C statement (sans semicolon) to output to the stdio stream
                     98:      STREAM any text necessary for declaring the name NAME of a
                     99:      function which is being defined.  This macro is responsible for
                    100:      outputting the label definition (perhaps using
                    101:      `ASM_OUTPUT_LABEL').  The argument DECL is the `FUNCTION_DECL'
                    102:      tree node representing the function.
                    103: 
                    104:      If this macro is not defined, then the function name is defined
                    105:      in the usual manner as a label (by means of `ASM_OUTPUT_LABEL').
                    106: 
                    107: `ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)'
                    108:      A C statement (sans semicolon) to output to the stdio stream
                    109:      STREAM any text necessary for declaring the size of a function
                    110:      which is being defined.  The argument NAME is the name of the
                    111:      function.  The argument DECL is the `FUNCTION_DECL' tree node
                    112:      representing the function.
                    113: 
                    114:      If this macro is not defined, then the function size is not
                    115:      defined.
                    116: 
                    117: `ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)'
                    118:      A C statement (sans semicolon) to output to the stdio stream
                    119:      STREAM any text necessary for declaring the name NAME of an
                    120:      initialized variable which is being defined.  This macro must
                    121:      output the label definition (perhaps using `ASM_OUTPUT_LABEL'). 
                    122:      The argument DECL is the `VAR_DECL' tree node representing the
                    123:      variable.
                    124: 
                    125:      If this macro is not defined, then the variable name is defined
                    126:      in the usual manner as a label (by means of `ASM_OUTPUT_LABEL').
                    127: 
                    128: `ASM_GLOBALIZE_LABEL (STREAM, NAME)'
                    129:      A C statement (sans semicolon) to output to the stdio stream
                    130:      STREAM some commands that will make the label NAME global; that
                    131:      is, available for reference from other files.  Use the expression
                    132:      `assemble_name (STREAM, NAME)' to output the name itself; before
                    133:      and after that, output the additional assembler syntax for making
                    134:      that name global, and a newline.
                    135: 
                    136: `ASM_OUTPUT_EXTERNAL (STREAM, DECL, NAME)'
                    137:      A C statement (sans semicolon) to output to the stdio stream
                    138:      STREAM any text necessary for declaring the name of an external
                    139:      symbol named NAME which is referenced in this compilation but not
                    140:      defined.  The value of DECL is the tree node for the declaration.
                    141: 
                    142:      This macro need not be defined if it does not need to output
                    143:      anything.  The GNU assembler and most Unix assemblers don't
                    144:      require anything.
                    145: 
                    146: `ASM_OUTPUT_EXTERNAL_LIBCALL (STREAM, SYMREF)'
                    147:      A C statement (sans semicolon) to output on STREAM an assembler
                    148:      pseudo-op to declare a library function name external.  The name
                    149:      of the library function is given by SYMREF, which has type `rtx'
                    150:      and is a `symbol_ref'.
                    151: 
                    152:      This macro need not be defined if it does not need to output
                    153:      anything.  The GNU assembler and most Unix assemblers don't
                    154:      require anything.
                    155: 
                    156: `ASM_OUTPUT_LABELREF (STREAM, NAME)'
                    157:      A C statement (sans semicolon) to output to the stdio stream
                    158:      STREAM a reference in assembler syntax to a label named NAME. 
                    159:      This should add `_' to the front of the name, if that is
                    160:      customary on your operating system, as it is in most Berkeley Unix
                    161:      systems.  This macro is used in `assemble_name'.
                    162: 
                    163: `ASM_OUTPUT_LABELREF_AS_INT (FILE, LABEL)'
                    164:      Define this macro for systems that use the program `collect2'. 
                    165:      The definition should be a C statement to output a word containing
                    166:      a reference to the label LABEL.
                    167: 
                    168: `ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)'
                    169:      A C statement to store into the string STRING a label whose name
                    170:      is made from the string PREFIX and the number NUM.
                    171: 
                    172:      This string, when output subsequently by `ASM_OUTPUT_LABELREF',
                    173:      should produce the same output that `ASM_OUTPUT_INTERNAL_LABEL'
                    174:      would produce with the same PREFIX and NUM.
                    175: 
                    176: `ASM_OUTPUT_INTERNAL_LABEL (STREAM, PREFIX, NUM)'
                    177:      A C statement to output to the stdio stream STREAM a label whose
                    178:      name is made from the string PREFIX and the number NUM.  These
                    179:      labels are used for internal purposes, and there is no reason for
                    180:      them to appear in the symbol table of the object file.  On many
                    181:      systems, the letter `L' at the beginning of a label has this
                    182:      effect.  The usual definition of this macro is as follows:
                    183: 
                    184:           fprintf (STREAM, "L%s%d:\n", PREFIX, NUM)
                    185: 
                    186: `ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)'
                    187:      A C expression to assign to OUTVAR (which is a variable of type
                    188:      `char *') a newly allocated string made from the string NAME and
                    189:      the number NUMBER, with some suitable punctuation added.  Use
                    190:      `alloca' to get space for the string.
                    191: 
                    192:      This string will be used as the argument to `ASM_OUTPUT_LABELREF'
                    193:      to produce an assembler label for an internal static variable
                    194:      whose name is NAME.  Therefore, the string must be such as to
                    195:      result in valid assembler code.  The argument NUMBER is different
                    196:      each time this macro is executed; it prevents conflicts between
                    197:      similarly-named internal static variables in different scopes.
                    198: 
                    199:      Ideally this string should not be a valid C identifier, to
                    200:      prevent any conflict with the user's own symbols.  Most
                    201:      assemblers allow periods or percent signs in assembler symbols;
                    202:      putting at least one of these between the name and the number
                    203:      will suffice.
                    204: 
                    205: `OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME)'
                    206:      Define this macro to override the default assembler names used for
                    207:      Objective C methods.
                    208: 
                    209:      The default name is a unique method number followed by the name
                    210:      of the class (e.g. `_1_Foo').  For methods in categories, the
                    211:      name of the category is also included in the assembler name (e.g. 
                    212:      `_1_Foo_Bar').
                    213: 
                    214:      These names are safe on most systems, but make debugging
                    215:      difficult since the method's selector is not present in the name.
                    216:       Therefore, particular systems define other ways of computing
                    217:      names.
                    218: 
                    219:      BUF is a buffer in which to store the name (256 chars max);
                    220:      IS_INST specifies whether the method is an instance method or a
                    221:      class method; CLASS_NAME is the name of the class; CAT_NAME is
                    222:      the name of the category (or NULL if the method is not in a
                    223:      category); and SEL_NAME is the name of the selector.
                    224: 
                    225:      On systems where the assembler can handle quoted names, you can
                    226:      use this macro to provide more human-readable names.
                    227: 
                    228: 
                    229: File: gcc.info,  Node: Constructor Output,  Next: Instruction Output,  Prev: Label Output,  Up: Assembler Format
                    230: 
                    231: Output of Initialization Routines
                    232: ---------------------------------
                    233: 
                    234:    The compiled code for certain languages includes "constructors"
                    235: (also called "initialization routines")--functions to initialize data
                    236: in the program when the program is started.  These functions need to
                    237: be called before the program is "started"--that is to say, before
                    238: `main' is called.
                    239: 
                    240:    Compiling some languages generates "destructors" (also called
                    241: "termination routines") that should be called when the program
                    242: terminates.
                    243: 
                    244:    To make the initialization and termination functions work, the
                    245: compiler must output something in the assembler code to cause those
                    246: functions to be called at the appropriate time.  When you port the
                    247: compiler to a new system, you need to specify what assembler code is
                    248: needed to do this.
                    249: 
                    250:    Here are the two macros you should define if necessary:
                    251: 
                    252: `ASM_OUTPUT_CONSTRUCTOR (STREAM, NAME)'
                    253:      Define this macro as a C statement to output on the stream STREAM
                    254:      the assembler code to arrange to call the function named NAME at
                    255:      initialization time.
                    256: 
                    257:      Assume that NAME is the name of a C function generated
                    258:      automatically by the compiler.  This function takes no arguments.
                    259:       Use the function `assemble_name' to output the name NAME; this
                    260:      performs any system-specific syntactic transformations such as
                    261:      adding an underscore.
                    262: 
                    263:      If you don't define this macro, nothing special is output to
                    264:      arrange to call the function.  This is correct when the function
                    265:      will be called in some other manner--for example, by means of the
                    266:      `collect' program, which looks through the symbol table to find
                    267:      these functions by their names.  If you want to use `collect',
                    268:      then you need to arrange for it to be built and installed and
                    269:      used on your system.
                    270: 
                    271: `ASM_OUTPUT_DESTRUCTOR (STREAM, NAME)'
                    272:      This is like `ASM_OUTPUT_CONSTRUCTOR' but used for termination
                    273:      functions rather than initialization functions.
                    274: 
                    275: 
                    276: File: gcc.info,  Node: Instruction Output,  Next: Dispatch Tables,  Prev: Constructor Output,  Up: Assembler Format
                    277: 
                    278: Output of Assembler Instructions
                    279: --------------------------------
                    280: 
                    281: `REGISTER_NAMES'
                    282:      A C initializer containing the assembler's names for the machine
                    283:      registers, each one as a C string constant.  This is what
                    284:      translates register numbers in the compiler into assembler
                    285:      language.
                    286: 
                    287: `ADDITIONAL_REGISTER_NAMES'
                    288:      If defined, a C initializer for an array of structures containing
                    289:      a name and a register number.  This macro defines additional
                    290:      names for hard registers, thus allowing the `asm' option in
                    291:      declarations to refer to registers using alternate names.
                    292: 
                    293: `ASM_OUTPUT_OPCODE (STREAM, PTR)'
                    294:      Define this macro if you are using an unusual assembler that
                    295:      requires different names for the machine instructions.
                    296: 
                    297:      The definition is a C statement or statements which output an
                    298:      assembler instruction opcode to the stdio stream STREAM.  The
                    299:      macro-operand PTR is a variable of type `char *' which points to
                    300:      the opcode name in its "internal" form--the form that is written
                    301:      in the machine description.  The definition should output the
                    302:      opcode name to STREAM, performing any translation you desire, and
                    303:      increment the variable PTR to point at the end of the opcode so
                    304:      that it will not be output twice.
                    305: 
                    306:      In fact, your macro definition may process less than the entire
                    307:      opcode name, or more than the opcode name; but if you want to
                    308:      process text that includes `%'-sequences to substitute operands,
                    309:      you must take care of the substitution yourself.  Just be sure to
                    310:      increment PTR over whatever text should not be output normally.
                    311: 
                    312:      If you need to look at the operand values, they can be found as
                    313:      the elements of `recog_operand'.
                    314: 
                    315:      If the macro definition does nothing, the instruction is output
                    316:      in the usual way.
                    317: 
                    318: `FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS)'
                    319:      If defined, a C statement to be executed just prior to the output
                    320:      of assembler code for INSN, to modify the extracted operands so
                    321:      they will be output differently.
                    322: 
                    323:      Here the argument OPVEC is the vector containing the operands
                    324:      extracted from INSN, and NOPERANDS is the number of elements of
                    325:      the vector which contain meaningful data for this insn.  The
                    326:      contents of this vector are what will be used to convert the insn
                    327:      template into assembler code, so you can change the assembler
                    328:      output by changing the contents of the vector.
                    329: 
                    330:      This macro is useful when various assembler syntaxes share a
                    331:      single file of instruction patterns; by defining this macro
                    332:      differently, you can cause a large class of instructions to be
                    333:      output differently (such as with rearranged operands). 
                    334:      Naturally, variations in assembler syntax affecting individual
                    335:      insn patterns ought to be handled by writing conditional output
                    336:      routines in those patterns.
                    337: 
                    338:      If this macro is not defined, it is equivalent to a null
                    339:      statement.
                    340: 
                    341: `PRINT_OPERAND (STREAM, X, CODE)'
                    342:      A C compound statement to output to stdio stream STREAM the
                    343:      assembler syntax for an instruction operand X.  X is an RTL
                    344:      expression.
                    345: 
                    346:      CODE is a value that can be used to specify one of several ways
                    347:      of printing the operand.  It is used when identical operands must
                    348:      be printed differently depending on the context.  CODE comes from
                    349:      the `%' specification that was used to request printing of the
                    350:      operand.  If the specification was just `%DIGIT' then CODE is 0;
                    351:      if the specification was `%LTR DIGIT' then CODE is the ASCII code
                    352:      for LTR.
                    353: 
                    354:      If X is a register, this macro should print the register's name. 
                    355:      The names can be found in an array `reg_names' whose type is
                    356:      `char *[]'.  `reg_names' is initialized from `REGISTER_NAMES'.
                    357: 
                    358:      When the machine description has a specification `%PUNCT' (a `%'
                    359:      followed by a punctuation character), this macro is called with a
                    360:      null pointer for X and the punctuation character for CODE.
                    361: 
                    362: `PRINT_OPERAND_PUNCT_VALID_P (CODE)'
                    363:      A C expression which evaluates to true if CODE is a valid
                    364:      punctuation character for use in the `PRINT_OPERAND' macro.  If
                    365:      `PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no
                    366:      punctuation characters (except for the standard one, `%') are used
                    367:      in this way.
                    368: 
                    369: `PRINT_OPERAND_ADDRESS (STREAM, X)'
                    370:      A C compound statement to output to stdio stream STREAM the
                    371:      assembler syntax for an instruction operand that is a memory
                    372:      reference whose address is X.  X is an RTL expression.
                    373: 
                    374:      On some machines, the syntax for a symbolic address depends on the
                    375:      section that the address refers to.  On these machines, define
                    376:      the macro `ENCODE_SECTION_INFO' to store the information into the
                    377:      `symbol_ref', and then check for it here.  *Note Assembler
                    378:      Format::.
                    379: 
                    380: `DBR_OUTPUT_SEQEND(FILE)'
                    381:      A C statement, to be executed after all slot-filler instructions
                    382:      have been output.  If necessary, call `dbr_sequence_length' to
                    383:      determine the number of slots filled in a sequence (zero if not
                    384:      currently outputting a sequence), to decide how many no-ops to
                    385:      output, or whatever.
                    386: 
                    387:      Don't define this macro if it has nothing to do, but it is
                    388:      helpful in reading assembly output if the extent of the delay
                    389:      sequence is made explicit (e.g. with white space).
                    390: 
                    391:      Note that output routines for instructions with delay slots must
                    392:      be prepared to deal with not being output as part of a sequence
                    393:      (i.e.  when the scheduling pass is not run, or when no slot
                    394:      fillers could be found.)  The variable `final_sequence' is null
                    395:      when not processing a sequence, otherwise it contains the
                    396:      `sequence' rtx being output.
                    397: 
                    398: `REGISTER_PREFIX'
                    399: `LOCAL_LABEL_PREFIX'
                    400: `USER_LABEL_PREFIX'
                    401: `IMMEDIATE_PREFIX'
                    402:      If defined, C string expressions to be used for the `%R', `%L',
                    403:      `%U', and `%I' options of `asm_fprintf' (see `final.c').  These
                    404:      are useful when a single `md' file must support multiple
                    405:      assembler formats.  In that case, the various `tm.h' files can
                    406:      define these macros differently.
                    407: 
                    408: `ASM_OUTPUT_REG_PUSH (STREAM, REGNO)'
                    409:      A C expression to output to STREAM some assembler code which will
                    410:      push hard register number REGNO onto the stack.  The code need
                    411:      not be optimal, since this macro is used only when profiling.
                    412: 
                    413: `ASM_OUTPUT_REG_POP (STREAM, REGNO)'
                    414:      A C expression to output to STREAM some assembler code which will
                    415:      pop hard register number REGNO off of the stack.  The code need
                    416:      not be optimal, since this macro is used only when profiling.
                    417: 
                    418: 
                    419: File: gcc.info,  Node: Dispatch Tables,  Next: Alignment Output,  Prev: Instruction Output,  Up: Assembler Format
                    420: 
                    421: Output of Dispatch Tables
                    422: -------------------------
                    423: 
                    424: `ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, VALUE, REL)'
                    425:      This macro should be provided on machines where the addresses in
                    426:      a dispatch table are relative to the table's own address.
                    427: 
                    428:      The definition should be a C statement to output to the stdio
                    429:      stream STREAM an assembler pseudo-instruction to generate a
                    430:      difference between two labels.  VALUE and REL are the numbers of
                    431:      two internal labels.  The definitions of these labels are output
                    432:      using `ASM_OUTPUT_INTERNAL_LABEL', and they must be printed in
                    433:      the same way here.  For example,
                    434: 
                    435:           fprintf (STREAM, "\t.word L%d-L%d\n",
                    436:                    VALUE, REL)
                    437: 
                    438: `ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)'
                    439:      This macro should be provided on machines where the addresses in
                    440:      a dispatch table are absolute.
                    441: 
                    442:      The definition should be a C statement to output to the stdio
                    443:      stream STREAM an assembler pseudo-instruction to generate a
                    444:      reference to a label.  VALUE is the number of an internal label
                    445:      whose definition is output using `ASM_OUTPUT_INTERNAL_LABEL'. 
                    446:      For example,
                    447: 
                    448:           fprintf (STREAM, "\t.word L%d\n", VALUE)
                    449: 
                    450: `ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)'
                    451:      Define this if the label before a jump-table needs to be output
                    452:      specially.  The first three arguments are the same as for
                    453:      `ASM_OUTPUT_INTERNAL_LABEL'; the fourth argument is the
                    454:      jump-table which follows (a `jump_insn' containing an `addr_vec'
                    455:      or `addr_diff_vec').
                    456: 
                    457:      This feature is used on system V to output a `swbeg' statement
                    458:      for the table.
                    459: 
                    460:      If this macro is not defined, these labels are output with
                    461:      `ASM_OUTPUT_INTERNAL_LABEL'.
                    462: 
                    463: `ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)'
                    464:      Define this if something special must be output at the end of a
                    465:      jump-table.  The definition should be a C statement to be executed
                    466:      after the assembler code for the table is written.  It should
                    467:      write the appropriate code to stdio stream STREAM.  The argument
                    468:      TABLE is the jump-table insn, and NUM is the label-number of the
                    469:      preceding label.
                    470: 
                    471:      If this macro is not defined, nothing special is output at the
                    472:      end of the jump-table.
                    473: 
                    474: 
                    475: File: gcc.info,  Node: Alignment Output,  Prev: Dispatch Tables,  Up: Assembler Format
                    476: 
                    477: Assembler Commands for Alignment
                    478: --------------------------------
                    479: 
                    480: `ASM_OUTPUT_ALIGN_CODE (FILE)'
                    481:      A C expression to output text to align the location counter in
                    482:      the way that is desirable at a point in the code that is reached
                    483:      only by jumping.
                    484: 
                    485:      This macro need not be defined if you don't want any special
                    486:      alignment to be done at such a time.  Most machine descriptions
                    487:      do not currently define the macro.
                    488: 
                    489: `ASM_OUTPUT_LOOP_ALIGN (FILE)'
                    490:      A C expression to output text to align the location counter in
                    491:      the way that is desirable at the beginning of a loop.
                    492: 
                    493:      This macro need not be defined if you don't want any special
                    494:      alignment to be done at such a time.  Most machine descriptions
                    495:      do not currently define the macro.
                    496: 
                    497: `ASM_OUTPUT_SKIP (STREAM, NBYTES)'
                    498:      A C statement to output to the stdio stream STREAM an assembler
                    499:      instruction to advance the location counter by NBYTES bytes. 
                    500:      Those bytes should be zero when loaded.  NBYTES will be a C
                    501:      expression of type `int'.
                    502: 
                    503: `ASM_NO_SKIP_IN_TEXT'
                    504:      Define this macro if `ASM_OUTPUT_SKIP' should not be used in the
                    505:      text section because it fails put zeros in the bytes that are
                    506:      skipped.  This is true on many Unix systems, where the pseudo--op
                    507:      to skip bytes produces no-op instructions rather than zeros when
                    508:      used in the text section.
                    509: 
                    510: `ASM_OUTPUT_ALIGN (STREAM, POWER)'
                    511:      A C statement to output to the stdio stream STREAM an assembler
                    512:      command to advance the location counter to a multiple of 2 to the
                    513:      POWER bytes.  POWER will be a C expression of type `int'.
                    514: 
                    515: 
                    516: File: gcc.info,  Node: Debugging Info,  Next: Cross-compilation,  Prev: Assembler Format,  Up: Machine Macros
                    517: 
                    518: Controlling Debugging Information Format
                    519: ========================================
                    520: 
                    521: `DBX_REGISTER_NUMBER (REGNO)'
                    522:      A C expression that returns the DBX register number for the
                    523:      compiler register number REGNO.  In simple cases, the value of
                    524:      this expression may be REGNO itself.  But sometimes there are some
                    525:      registers that the compiler knows about and DBX does not, or vice
                    526:      versa.  In such cases, some register may need to have one number
                    527:      in the compiler and another for DBX.
                    528: 
                    529:      If two registers have consecutive numbers inside GNU CC, and they
                    530:      can be used as a pair to hold a multiword value, then they *must*
                    531:      have consecutive numbers after renumbering with
                    532:      `DBX_REGISTER_NUMBER'.  Otherwise, debuggers will be unable to
                    533:      access such a pair, because they expect register pairs to be
                    534:      consecutive in their own numbering scheme.
                    535: 
                    536:      If you find yourself defining `DBX_REGISTER_NUMBER' in way that
                    537:      does not preserve register pairs, then what you must do instead is
                    538:      redefine the actual register numbering scheme.
                    539: 
                    540: `DBX_DEBUGGING_INFO'
                    541:      Define this macro if GNU CC should produce debugging output for
                    542:      DBX in response to the `-g' option.
                    543: 
                    544: `SDB_DEBUGGING_INFO'
                    545:      Define this macro if GNU CC should produce COFF-style debugging
                    546:      output for SDB in response to the `-g' option.
                    547: 
                    548: `DWARF_DEBUGGING_INFO'
                    549:      Define this macro if GNU CC should produce dwarf format debugging
                    550:      output in response to the `-g' option.
                    551: 
                    552: `DEFAULT_GDB_EXTENSIONS'
                    553:      Define this macro to control whether GNU CC should by default
                    554:      generate GDB's extended version of DBX debugging information
                    555:      (assuming DBX-format debugging information is enabled at all). 
                    556:      If you don't define the macro, the default is 1: always generate
                    557:      the extended information.
                    558: 
                    559: `DEBUG_SYMS_TEXT'
                    560:      Define this macro if all `.stabs' commands should be output while
                    561:      in the text section.
                    562: 
                    563: `DEBUGGER_AUTO_OFFSET (X)'
                    564:      A C expression that returns the integer offset value for an
                    565:      automatic variable having address X (an RTL expression).  The
                    566:      default computation assumes that X is based on the frame-pointer
                    567:      and gives the offset from the frame-pointer.  This is required
                    568:      for targets that produce debugging output for DBX or COFF-style
                    569:      debugging output for SDB and allow the frame-pointer to be
                    570:      eliminated when the `-g' options is used.
                    571: 
                    572: `DEBUGGER_ARG_OFFSET (OFFSET, X)'
                    573:      A C expression that returns the integer offset value for an
                    574:      argument having address X (an RTL expression).  The nominal
                    575:      offset is OFFSET.
                    576: 
                    577: `ASM_STABS_OP'
                    578:      A C string constant naming the assembler pseudo op to use instead
                    579:      of `.stabs' to define an ordinary debugging symbol.  If you don't
                    580:      define this macro, `.stabs' is used.  This macro applies only to
                    581:      DBX debugging information format.
                    582: 
                    583: `ASM_STABD_OP'
                    584:      A C string constant naming the assembler pseudo op to use instead
                    585:      of `.stabd' to define a debugging symbol whose value is the
                    586:      current location.  If you don't define this macro, `.stabd' is
                    587:      used.  This macro applies only to DBX debugging information
                    588:      format.
                    589: 
                    590: `ASM_STABN_OP'
                    591:      A C string constant naming the assembler pseudo op to use instead
                    592:      of `.stabn' to define a debugging symbol with no name.  If you
                    593:      don't define this macro, `.stabn' is used.  This macro applies
                    594:      only to DBX debugging information format.
                    595: 
                    596: `PUT_SDB_...'
                    597:      Define these macros to override the assembler syntax for the
                    598:      special SDB assembler directives.  See `sdbout.c' for a list of
                    599:      these macros and their arguments.  If the standard syntax is
                    600:      used, you need not define them yourself.
                    601: 
                    602: `SDB_DELIM'
                    603:      Some assemblers do not support a semicolon as a delimiter, even
                    604:      between SDB assembler directives.  In that case, define this
                    605:      macro to be the delimiter to use (usually `\n').  It is not
                    606:      necessary to define a new set of `PUT_SDB_OP' macros if this is
                    607:      the only change required.
                    608: 
                    609: `SDB_GENERATE_FAKE'
                    610:      Define this macro to override the usual method of constructing a
                    611:      dummy name for anonymous structure and union types.  See
                    612:      `sdbout.c' for more information.
                    613: 
                    614: `SDB_ALLOW_UNKNOWN_REFERENCES'
                    615:      Define this macro to allow references to unknown structure,
                    616:      union, or enumeration tags to be emitted.  Standard COFF does not
                    617:      allow handling of unknown references, MIPS ECOFF has support for
                    618:      it.
                    619: 
                    620: `SDB_ALLOW_FORWARD_REFERENCES'
                    621:      Define this macro to allow references to structure, union, or
                    622:      enumeration tags that have not yet been seen to be handled.  Some
                    623:      assemblers choke if forward tags are used, while some require it.
                    624: 
                    625: `DBX_NO_XREFS'
                    626:      Define this macro if DBX on your system does not support the
                    627:      construct `xsTAGNAME'.  On some systems, this construct is used to
                    628:      describe a forward reference to a structure named TAGNAME.  On
                    629:      other systems, this construct is not supported at all.
                    630: 
                    631: `DBX_CONTIN_LENGTH'
                    632:      A symbol name in DBX-format debugging information is normally
                    633:      continued (split into two separate `.stabs' directives) when it
                    634:      exceeds a certain length (by default, 80 characters).  On some
                    635:      operating systems, DBX requires this splitting; on others,
                    636:      splitting must not be done.  You can inhibit splitting by
                    637:      defining this macro with the value zero.  You can override the
                    638:      default splitting-length by defining this macro as an expression
                    639:      for the length you desire.
                    640: 
                    641: `DBX_CONTIN_CHAR'
                    642:      Normally continuation is indicated by adding a `\' character to
                    643:      the end of a `.stabs' string when a continuation follows.  To use
                    644:      a different character instead, define this macro as a character
                    645:      constant for the character you want to use.  Do not define this
                    646:      macro if backslash is correct for your system.
                    647: 
                    648: `DBX_STATIC_STAB_DATA_SECTION'
                    649:      Define this macro if it is necessary to go to the data section
                    650:      before outputting the `.stabs' pseudo-op for a non-global static
                    651:      variable.
                    652: 
                    653: `DBX_LBRAC_FIRST'
                    654:      Define this macro if the `N_LBRAC' symbol for a block should
                    655:      precede the debugging information for variables and functions
                    656:      defined in that block.  Normally, in DBX format, the `N_LBRAC'
                    657:      symbol comes first.
                    658: 
                    659: `DBX_FUNCTION_FIRST'
                    660:      Define this macro if the DBX information for a function and its
                    661:      arguments should precede the assembler code for the function. 
                    662:      Normally, in DBX format, the debugging information entirely
                    663:      follows the assembler code.
                    664: 
                    665: `DBX_OUTPUT_FUNCTION_END (STREAM, FUNCTION)'
                    666:      Define this macro if the target machine requires special output
                    667:      at the end of the debugging information for a function.  The
                    668:      definition should be a C statement (sans semicolon) to output the
                    669:      appropriate information to STREAM.  FUNCTION is the
                    670:      `FUNCTION_DECL' node for the function.
                    671: 
                    672: `DBX_OUTPUT_STANDARD_TYPES (SYMS)'
                    673:      Define this macro if you need to control the order of output of
                    674:      the standard data types at the beginning of compilation.  The
                    675:      argument SYMS is a `tree' which is a chain of all the predefined
                    676:      global symbols, including names of data types.
                    677: 
                    678:      Normally, DBX output starts with definitions of the types for
                    679:      integers and characters, followed by all the other predefined
                    680:      types of the particular language in no particular order.
                    681: 
                    682:      On some machines, it is necessary to output different particular
                    683:      types first.  To do this, define `DBX_OUTPUT_STANDARD_TYPES' to
                    684:      output those symbols in the necessary order.  Any predefined
                    685:      types that you don't explicitly output will be output afterward
                    686:      in no particular order.
                    687: 
                    688:      Be careful not to define this macro so that it works only for C. 
                    689:      There are no global variables to access most of the built-in
                    690:      types, because another language may have another set of types. 
                    691:      The way to output a particular type is to look through SYMS to
                    692:      see if you can find it.  Here is an example:
                    693: 
                    694:           {
                    695:             tree decl;
                    696:             for (decl = syms; decl; decl = TREE_CHAIN (decl))
                    697:               if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), "long int"))
                    698:                 dbxout_symbol (decl);
                    699:             ...
                    700:           }
                    701: 
                    702:      This does nothing if the expected type does not exist.
                    703: 
                    704:      See the function `init_decl_processing' in source file `c-decl.c'
                    705:      to find the names to use for all the built-in C types.
                    706: 
                    707: `DBX_OUTPUT_MAIN_SOURCE_FILENAME (STREAM, NAME)'
                    708:      A C statement to output DBX debugging information to the stdio
                    709:      stream STREAM which indicates that file NAME is the main source
                    710:      file--the file specified as the input file for compilation.  This
                    711:      macro is called only once, at the beginning of compilation.
                    712: 
                    713:      This macro need not be defined if the standard form of output for
                    714:      DBX debugging information is appropriate.
                    715: 
                    716: `DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (STREAM, NAME)'
                    717:      A C statement to output DBX debugging information to the stdio
                    718:      stream STREAM which indicates that the current directory during
                    719:      compilation is named NAME.
                    720: 
                    721:      This macro need not be defined if the standard form of output for
                    722:      DBX debugging information is appropriate.
                    723: 
                    724: `DBX_OUTPUT_MAIN_SOURCE_FILE_END (STREAM, NAME)'
                    725:      A C statement to output DBX debugging information at the end of
                    726:      compilation of the main source file NAME.
                    727: 
                    728:      If you don't define this macro, nothing special is output at the
                    729:      end of compilation, which is correct for most machines.
                    730: 
                    731: `DBX_OUTPUT_SOURCE_FILENAME (STREAM, NAME)'
                    732:      A C statement to output DBX debugging information to the stdio
                    733:      stream STREAM which indicates that file NAME is the current source
                    734:      file.  This output is generated each time input shifts to a
                    735:      different source file as a result of `#include', the end of an
                    736:      included file, or a `#line' command.
                    737: 
                    738:      This macro need not be defined if the standard form of output for
                    739:      DBX debugging information is appropriate.
                    740: 
                    741: 
                    742: File: gcc.info,  Node: Cross-compilation,  Next: Misc,  Prev: Debugging INfo,  Up: Machine Macros
                    743: 
                    744: Cross Compilation and Floating Point Format
                    745: ===========================================
                    746: 
                    747:    While all modern machines use 2's complement representation for
                    748: integers, there are a variety of representations for floating point
                    749: numbers.  This means that in a cross-compiler the representation of
                    750: floating point numbers in the compiled program may be different from
                    751: that used in the machine doing the compilation.
                    752: 
                    753:    Because different representation systems may offer different
                    754: amounts of range and precision, the cross compiler cannot safely use
                    755: the host machine's floating point arithmetic.  Therefore, floating
                    756: point constants must be represented in the target machine's format. 
                    757: This means that the cross compiler cannot use `atof' to parse a
                    758: floating point constant; it must have its own special routine to use
                    759: instead.  Also, constant folding must emulate the target machine's
                    760: arithmetic (or must not be done at all).
                    761: 
                    762:    The macros in the following table should be defined only if you are
                    763: cross compiling between different floating point formats.
                    764: 
                    765:    Otherwise, don't define them. Then default definitions will be set
                    766: up which use `double' as the data type, `==' to test for equality, etc.
                    767: 
                    768:    You don't need to worry about how many times you use an operand of
                    769: any of these macros.  The compiler never uses operands which have side
                    770: effects.
                    771: 
                    772: `REAL_VALUE_TYPE'
                    773:      A macro for the C data type to be used to hold a floating point
                    774:      value in the target machine's format.  Typically this would be a
                    775:      `struct' containing an array of `int'.
                    776: 
                    777: `REAL_VALUES_EQUAL (X, Y)'
                    778:      A macro for a C expression which compares for equality the two
                    779:      values, X and Y, both of type `REAL_VALUE_TYPE'.
                    780: 
                    781: `REAL_VALUES_LESS (X, Y)'
                    782:      A macro for a C expression which tests whether X is less than Y,
                    783:      both values being of type `REAL_VALUE_TYPE' and interpreted as
                    784:      floating point numbers in the target machine's representation.
                    785: 
                    786: `REAL_VALUE_LDEXP (X, SCALE)'
                    787:      A macro for a C expression which performs the standard library
                    788:      function `ldexp', but using the target machine's floating point
                    789:      representation.  Both X and the value of the expression have type
                    790:      `REAL_VALUE_TYPE'.  The second argument, SCALE, is an integer.
                    791: 
                    792: `REAL_VALUE_FIX (X)'
                    793:      A macro whose definition is a C expression to convert the
                    794:      target-machine floating point value X to a signed integer.  X has
                    795:      type `REAL_VALUE_TYPE'.
                    796: 
                    797: `REAL_VALUE_UNSIGNED_FIX (X)'
                    798:      A macro whose definition is a C expression to convert the
                    799:      target-machine floating point value X to an unsigned integer.  X
                    800:      has type `REAL_VALUE_TYPE'.
                    801: 
                    802: `REAL_VALUE_FIX_TRUNCATE (X)'
                    803:      A macro whose definition is a C expression to convert the
                    804:      target-machine floating point value X to a signed integer,
                    805:      rounding toward 0.  X has type `REAL_VALUE_TYPE'.
                    806: 
                    807: `REAL_VALUE_UNSIGNED_FIX_TRUNCATE (X)'
                    808:      A macro whose definition is a C expression to convert the
                    809:      target-machine floating point value X to an unsigned integer,
                    810:      rounding toward 0.  X has type `REAL_VALUE_TYPE'.
                    811: 
                    812: `REAL_VALUE_ATOF (STRING)'
                    813:      A macro for a C expression which converts STRING, an expression
                    814:      of type `char *', into a floating point number in the target
                    815:      machine's representation.  The value has type `REAL_VALUE_TYPE'.
                    816: 
                    817: `REAL_INFINITY'
                    818:      Define this macro if infinity is a possible floating point value,
                    819:      and therefore division by 0 is legitimate.
                    820: 
                    821: `REAL_VALUE_ISINF (X)'
                    822:      A macro for a C expression which determines whether X, a floating
                    823:      point value, is infinity.  The value has type `int'.  By default,
                    824:      this is defined to call `isinf'.
                    825: 
                    826: `REAL_VALUE_ISNAN (X)'
                    827:      A macro for a C expression which determines whether X, a floating
                    828:      point value, is a "nan" (not-a-number).  The value has type
                    829:      `int'.  By default, this is defined to call `isnan'.
                    830: 
                    831:    Define the following additional macros if you want to make floating
                    832: point constant folding work while cross compiling.  If you don't
                    833: define them, cross compilation is still possible, but constant folding
                    834: will not happen for floating point values.
                    835: 
                    836: `REAL_ARITHMETIC (OUTPUT, CODE, X, Y)'
                    837:      A macro for a C statement which calculates an arithmetic
                    838:      operation of the two floating point values X and Y, both of type
                    839:      `REAL_VALUE_TYPE' in the target machine's representation, to
                    840:      produce a result of the same type and representation which is
                    841:      stored in OUTPUT (which will be a variable).
                    842: 
                    843:      The operation to be performed is specified by CODE, a tree code
                    844:      which will always be one of the following: `PLUS_EXPR',
                    845:      `MINUS_EXPR', `MULT_EXPR', `RDIV_EXPR', `MAX_EXPR', `MIN_EXPR'.
                    846: 
                    847:      The expansion of this macro is responsible for checking for
                    848:      overflow.  If overflow happens, the macro expansion should
                    849:      execute the statement `return 0;', which indicates the inability
                    850:      to perform the arithmetic operation requested.
                    851: 
                    852: `REAL_VALUE_NEGATE (X)'
                    853:      A macro for a C expression which returns the negative of the
                    854:      floating point value X.  Both X and the value of the expression
                    855:      have type `REAL_VALUE_TYPE' and are in the target machine's
                    856:      floating point representation.
                    857: 
                    858:      There is no way for this macro to report overflow, since overflow
                    859:      can't happen in the negation operation.
                    860: 
                    861: `REAL_VALUE_TRUNCATE (X)'
                    862:      A macro for a C expression which converts the double-precision
                    863:      floating point value X to single-precision.
                    864: 
                    865:      Both X and the value of the expression have type
                    866:      `REAL_VALUE_TYPE' and are in the target machine's floating point
                    867:      representation.  However, the value should have an appropriate bit
                    868:      pattern to be output properly as a single-precision floating
                    869:      constant.
                    870: 
                    871:      There is no way for this macro to report overflow.
                    872: 
                    873: `REAL_VALUE_TO_INT (LOW, HIGH, X)'
                    874:      A macro for a C expression which converts a floating point value
                    875:      X into a double-precision integer which is then stored into LOW
                    876:      and HIGH, two variables of type INT.
                    877: 
                    878: `REAL_VALUE_FROM_INT (X, LOW, HIGH)'
                    879:      A macro for a C expression which converts a double-precision
                    880:      integer found in LOW and HIGH, two variables of type INT, into a
                    881:      floating point value which is then stored into X.
                    882: 
                    883: 
                    884: File: gcc.info,  Node: Misc,  Prev: Cross-compilation,  Up: Machine Macros
                    885: 
                    886: Miscellaneous Parameters
                    887: ========================
                    888: 
                    889: `PREDICATE_CODES'
                    890:      Optionally define this if you have added predicates to
                    891:      `MACHINE.c'.  This macro is called within an initializer of an
                    892:      array of structures.  The first field in the structure is the
                    893:      name of a predicate and the second field is an arrary of rtl
                    894:      codes.  For each predicate, list all rtl codes that can be in
                    895:      expressions matched by the predicate.  The list should have a
                    896:      trailing comma.  Here is an example of two entries in the list
                    897:      for a typical RISC machine:
                    898: 
                    899:           #define PREDICATE_CODES \
                    900:             {"gen_reg_rtx_operand", {SUBREG, REG}},  \
                    901:             {"reg_or_short_cint_operand", {SUBREG, REG, CONST_INT}},
                    902: 
                    903:      Defining this macro does not affect the generated code (however,
                    904:      incorrect definitions that omit an rtl code that may be matched
                    905:      by the predicate can cause the compiler to malfunction). 
                    906:      Instead, it allows the table built by `genrecog' to be more
                    907:      compact and efficient, thus speeding up the compiler.  The most
                    908:      important predicates to include in the list specified by this
                    909:      macro are thoses used in the most insn patterns.
                    910: 
                    911: `CASE_VECTOR_MODE'
                    912:      An alias for a machine mode name.  This is the machine mode that
                    913:      elements of a jump-table should have.
                    914: 
                    915: `CASE_VECTOR_PC_RELATIVE'
                    916:      Define this macro if jump-tables should contain relative
                    917:      addresses.
                    918: 
                    919: `CASE_DROPS_THROUGH'
                    920:      Define this if control falls through a `case' insn when the index
                    921:      value is out of range.  This means the specified default-label is
                    922:      actually ignored by the `case' insn proper.
                    923: 
                    924: `BYTE_LOADS_ZERO_EXTEND'
                    925:      Define this macro if an instruction to load a value narrower than
                    926:      a word from memory into a register also zero-extends the value to
                    927:      the whole register.
                    928: 
                    929: `IMPLICIT_FIX_EXPR'
                    930:      An alias for a tree code that should be used by default for
                    931:      conversion of floating point values to fixed point.  Normally,
                    932:      `FIX_ROUND_EXPR' is used.
                    933: 
                    934: `FIXUNS_TRUNC_LIKE_FIX_TRUNC'
                    935:      Define this macro if the same instructions that convert a floating
                    936:      point number to a signed fixed point number also convert validly
                    937:      to an unsigned one.
                    938: 
                    939: `EASY_DIV_EXPR'
                    940:      An alias for a tree code that is the easiest kind of division to
                    941:      compile code for in the general case.  It may be
                    942:      `TRUNC_DIV_EXPR', `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or
                    943:      `ROUND_DIV_EXPR'.  These four division operators differ in how
                    944:      they round the result to an integer.  `EASY_DIV_EXPR' is used
                    945:      when it is permissible to use any of those kinds of division and
                    946:      the choice should be made on the basis of efficiency.
                    947: 
                    948: `MOVE_MAX'
                    949:      The maximum number of bytes that a single instruction can move
                    950:      quickly from memory to memory.
                    951: 
                    952: `SHIFT_COUNT_TRUNCATED'
                    953:      Defining this macro causes the compiler to omit a sign-extend,
                    954:      zero-extend, or bitwise `and' instruction that truncates the
                    955:      count of a shift operation to a width equal to the number of bits
                    956:      needed to represent the size of the object being shifted.  On
                    957:      machines that have instructions that act on bitfields at variable
                    958:      positions, including `bit test' instructions, defining
                    959:      `SHIFT_COUNT_TRUNCATED' also causes truncation not to be applied
                    960:      to these instructions.
                    961: 
                    962:      If both types of instructions truncate the count (for shifts) and
                    963:      position (for bitfield operations), or if no variable-position
                    964:      bitfield instructions exist, you should define this macro.
                    965: 
                    966:      However, on some machines, such as the 80386, truncation only
                    967:      applies to shift operations and not bitfield operations.  Do not
                    968:      define `SHIFT_COUNT_TRUNCATED' on such machines.  Instead, add
                    969:      patterns to the `md' file that include the implied truncation of
                    970:      the shift instructions.
                    971: 
                    972: `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'
                    973:      A C expression which is nonzero if on this machine it is safe to
                    974:      "convert" an integer of INPREC bits to one of OUTPREC bits (where
                    975:      OUTPREC is smaller than INPREC) by merely operating on it as if
                    976:      it had only OUTPREC bits.
                    977: 
                    978:      On many machines, this expression can be 1.
                    979: 
                    980:      It is reported that suboptimal code can result when
                    981:      `TRULY_NOOP_TRUNCATION' returns 1 for a pair of sizes for modes
                    982:      for which `MODES_TIEABLE_P' is 0.  If this is the case, making
                    983:      `TRULY_NOOP_TRUNCATION' return 0 in such cases may improve things.
                    984: 
                    985: `STORE_FLAG_VALUE'
                    986:      A C expression describing the value returned by a comparison
                    987:      operator and stored by a store-flag instruction (`sCOND') when the
                    988:      condition is true.  This description must apply to *all* the
                    989:      `sCOND' patterns and all the comparison operators.
                    990: 
                    991:      A value of 1 or -1 means that the instruction implementing the
                    992:      comparison operator returns exactly 1 or -1 when the comparison
                    993:      is true and 0 when the comparison is false.  Otherwise, the value
                    994:      indicates which bits of the result are guaranteed to be 1 when
                    995:      the comparison is true.  This value is interpreted in the mode of
                    996:      the comparison operation, which is given by the mode of the first
                    997:      operand in the `sCOND' pattern.  Either the low bit or the sign
                    998:      bit of `STORE_FLAG_VALUE' be on.  Presently, only those bits are
                    999:      used by the compiler.
                   1000: 
                   1001:      If `STORE_FLAG_VALUE' is neither 1 or -1, the compiler will
                   1002:      generate code that depends only on the specified bits.  It can
                   1003:      also replace comparison operators with equivalent operations if
                   1004:      they cause the required bits to be set, even if the remaining
                   1005:      bits are undefined.  For example, on a machine whose comparison
                   1006:      operators return an `SImode' value and where `STORE_FLAG_VALUE'
                   1007:      is defined as `0x80000000', saying that just the sign bit is
                   1008:      relevant, the expression
                   1009: 
                   1010:           (ne:SI (and:SI X (const_int POWER-OF-2)) (const_int 0))
                   1011: 
                   1012:      can be converted to
                   1013: 
                   1014:           (ashift:SI X (const_int N))
                   1015: 
                   1016:      where N is the appropriate shift count to move the bit being
                   1017:      tested into the sign bit.
                   1018: 
                   1019:      There is no way to describe a machine that always sets the
                   1020:      low-order bit for a true value, but does not guarantee the value
                   1021:      of any other bits, but we do not know of any machine that has
                   1022:      such an instruction.  If you are trying to port GNU CC to such a
                   1023:      machine, include an instruction to perform a logical-and of the
                   1024:      result with 1 in the pattern for the comparison operators and let
                   1025:      us know (*note Bug Reporting::.).
                   1026: 
                   1027:      Often, a machine will have multiple instructions that obtain a
                   1028:      value from a comparison (or the condition codes).  Here are rules
                   1029:      to guide the choice of value for `STORE_FLAG_VALUE', and hence
                   1030:      the instructions to be used:
                   1031: 
                   1032:         * Use the shortest sequence that yields a valid definition for
                   1033:           `STORE_FLAG_VALUE'.  It is more efficent for the compiler to
                   1034:           "normalize" the value (convert it to, e.g., 1 or 0) than for
                   1035:           the comparison operators to do so because there may be
                   1036:           opportunities to combine the normalization with other
                   1037:           operations.
                   1038: 
                   1039:         * For equal-length sequences, use a value of 1 or -1, with -1
                   1040:           being slightly preferred on machines with expensive jumps
                   1041:           and 1 preferred on other machines.
                   1042: 
                   1043:         * As a second choice, choose a value of `0x80000001' if
                   1044:           instructions exist that set both the sign and low-order bits
                   1045:           but do not define the others.
                   1046: 
                   1047:         * Otherwise, use a value of `0x80000000'.
                   1048: 
                   1049:      You need not define `STORE_FLAG_VALUE' if the machine has no
                   1050:      store-flag instructions.
                   1051: 
                   1052: `Pmode'
                   1053:      An alias for the machine mode for pointers.  Normally the
                   1054:      definition can be
                   1055: 
                   1056:           #define Pmode SImode
                   1057: 
                   1058: `FUNCTION_MODE'
                   1059:      An alias for the machine mode used for memory references to
                   1060:      functions being called, in `call' RTL expressions.  On most
                   1061:      machines this should be `QImode'.
                   1062: 
                   1063: `INTEGRATE_THRESHOLD (DECL)'
                   1064:      A C expression for the maximum number of instructions above which
                   1065:      the function DECL should not be inlined.  DECL is a
                   1066:      `FUNCTION_DECL' node.
                   1067: 
                   1068:      The default definition of this macro is 64 plus 8 times the
                   1069:      number of arguments that the function accepts.  Some people think
                   1070:      a larger threshold should be used on RISC machines.
                   1071: 
                   1072: `SCCS_DIRECTIVE'
                   1073:      Define this if the preprocessor should ignore `#sccs' directives
                   1074:      and print no error message.
                   1075: 
                   1076: `HANDLE_PRAGMA (STREAM)'
                   1077:      Define this macro if you want to implement any pragmas.  If
                   1078:      defined, it should be a C statement to be executed when `#pragma'
                   1079:      is seen.  The argument STREAM is the stdio input stream from
                   1080:      which the source text can be read.
                   1081: 
                   1082:      It is generally a bad idea to implement new uses of `#pragma'. 
                   1083:      The only reason to define this macro is for compatibility with
                   1084:      other compilers that do support `#pragma' for the sake of any user
                   1085:      programs which already use it.
                   1086: 
                   1087: `HAVE_VPRINTF'
                   1088:      Define this if the library function `vprintf' is available on your
                   1089:      system.
                   1090: 
                   1091: `DOLLARS_IN_IDENTIFIERS'
                   1092:      Define this macro to control use of the character `$' in
                   1093:      identifier names.  The value should be 0, 1, or 2.  0 means `$'
                   1094:      is not allowed by default; 1 means it is allowed by default if
                   1095:      `-traditional' is used; 2 means it is allowed by default provided
                   1096:      `-ansi' is not used.  1 is the default; there is no need to
                   1097:      define this macro in that case.
                   1098: 
                   1099: `DEFAULT_MAIN_RETURN'
                   1100:      Define this macro if the target system expects every program's
                   1101:      `main' function to return a standard "success" value by default
                   1102:      (if no other value is explicitly returned).
                   1103: 
                   1104:      The definition should be a C statement (sans semicolon) to
                   1105:      generate the appropriate rtl instructions.  It is used only when
                   1106:      compiling the end of `main'.
                   1107: 
                   1108: `HAVE_ATEXIT'
                   1109:      Define this if the target system supports the function `atexit'
                   1110:      from the ANSI C standard.  If this is not defined, and
                   1111:      `INIT_SECTION_ASM_OP' is not defined, a default `exit' function
                   1112:      will be provided to support C++.
                   1113: 
                   1114: `EXIT_BODY'
                   1115:      Define this if your `exit' function needs to do something besides
                   1116:      calling an external function `_cleanup' before terminating with
                   1117:      `_exit'.  The `EXIT_BODY' macro is only needed if netiher
                   1118:      `HAVE_ATEXIT' nor `INIT_SECTION_ASM_OP' are defined.
                   1119: 
                   1120: 

unix.superglobalmegacorp.com

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