Annotation of gcc/internals-6, revision 1.1.1.1

1.1       root        1: Info file internals, produced by Makeinfo, -*- Text -*-
                      2: from input file internals.texinfo.
                      3: 
                      4: 
                      5: 
                      6: This file documents the internals of the GNU compiler.
                      7: 
                      8: Copyright (C) 1988 Free Software Foundation, Inc.
                      9: 
                     10: Permission is granted to make and distribute verbatim copies of
                     11: this manual provided the copyright notice and this permission notice
                     12: are preserved on all copies.
                     13: 
                     14: Permission is granted to copy and distribute modified versions of this
                     15: manual under the conditions for verbatim copying, provided also that the
                     16: section entitled ``GNU CC General Public License'' is included exactly as
                     17: in the original, and provided that the entire resulting derived work is
                     18: distributed under the terms of a permission notice identical to this one.
                     19: 
                     20: Permission is granted to copy and distribute translations of this manual
                     21: into another language, under the above conditions for modified versions,
                     22: except that the section entitled ``GNU CC General Public License'' and
                     23: this permission notice may be included in translations approved by the
                     24: Free Software Foundation instead of in the original English.
                     25: 
                     26: 
                     27: 
                     28: 
                     29: 
                     30: 
                     31: File: internals,  Node: Misc,  Next: Condition Code,  Prev: Addressing Modes,  Up: Machine Macros
                     32: 
                     33: Miscellaneous Parameters
                     34: ========================
                     35: 
                     36: `CASE_VECTOR_MODE'
                     37:      An alias for a machine mode name.  This is the machine mode that
                     38:      elements of a jump-table should have.
                     39: 
                     40: `CASE_VECTOR_PC_RELATIVE'
                     41:      Define this macro if jump-tables should contain relative addresses.
                     42: 
                     43: `CASE_DROPS_THROUGH'
                     44:      Define this if control falls through a `case' insn when the index
                     45:      value is out of range.  This means the specified default-label is
                     46:      actually ignored by the `case' insn proper.
                     47: 
                     48: `IMPLICIT_FIX_EXPR'
                     49:      An alias for a tree code that should be used by default for conversion
                     50:      of floating point values to fixed point.  Normally, `FIX_ROUND_EXPR'
                     51:      is used.
                     52: 
                     53: `FIXUNS_TRUNC_LIKE_FIX_TRUNC'
                     54:      Define this macro if the same instructions that convert a floating
                     55:      point number to a signed fixed point number also convert validly to an
                     56:      unsigned one.
                     57: 
                     58: `EASY_DIV_EXPR'
                     59:      An alias for a tree code that is the easiest kind of division to
                     60:      compile code for in the general case.  It may be `TRUNC_DIV_EXPR',
                     61:      `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or `ROUND_DIV_EXPR'.  These four
                     62:      division operators differ in how they round the result to an integer. 
                     63:      `EASY_DIV_EXPR' is used when it is permissible to use any of those
                     64:      kinds of division and the choice should be made on the basis of
                     65:      efficiency.
                     66: 
                     67: `DEFAULT_SIGNED_CHAR'
                     68:      An expression whose value is 1 or 0, according to whether the type
                     69:      `char' should be signed or unsigned by default.  The user can always
                     70:      override this default with the options `-fsigned-char' and
                     71:      `-funsigned-char'.
                     72: 
                     73: `SCCS_DIRECTIVE'
                     74:      Define this if the preprocessor should ignore `#sccs' directives with
                     75:      no error message.
                     76: 
                     77: `MOVE_MAX'
                     78:      The maximum number of bytes that a single instruction can move quickly
                     79:      from memory to memory.
                     80: 
                     81: `INT_TYPE_SIZE'
                     82:      A C expression for the size in bits of the type `int' on the target
                     83:      machine.
                     84: 
                     85: `SLOW_BYTE_ACCESS'
                     86:      Define this macro as a C expression which is nonzero if accessing less
                     87:      than a word of memory (i.e. a `char' or a `short') is slow (requires
                     88:      more than one instruction).
                     89: 
                     90: `SLOW_ZERO_EXTEND'
                     91:      Define this macro if zero-extension (of a `char' or `short' to an
                     92:      `int') can be done faster if the destination is a register that is
                     93:      known to be zero.
                     94: 
                     95:      If you define this macro, you must have instruction patterns that
                     96:      recognize RTL structures like this:
                     97: 
                     98:           (set (strict-low-part (subreg:QI (reg:SI ...) 0)) ...)
                     99: 
                    100: 
                    101:      and likewise for `HImode'.
                    102: 
                    103: `SHIFT_COUNT_TRUNCATED'
                    104:      Define this macro if shift instructions ignore all but the lowest few
                    105:      bits of the shift count.  It implies that a sign-extend or zero-extend
                    106:      instruction for the shift count can be omitted.
                    107: 
                    108: `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'
                    109:      A C expression which is nonzero if on this machine it is safe to
                    110:      ``convert'' an integer of INPREC bits to one of OUTPREC bits (where
                    111:      OUTPREC is smaller than INPREC) by merely operating on it as if it had
                    112:      only OUTPREC bits.
                    113: 
                    114:      On many machines, this expression can be 1.
                    115: 
                    116: `NO_FUNCTION_CSE'
                    117:      Define this macro if it is as good or better to call a constant
                    118:      function address than to call an address kept in a register.
                    119: 
                    120: `STORE_FLAG_VALUE'
                    121:      A C expression for the value stored by a store-flag instruction
                    122:      (`sCOND') when the condition is true.  This is usually 1 or -1; it is
                    123:      required to be an odd number.
                    124: 
                    125:      Do not define `STORE_FLAG_VALUE' if the machine has no store-flag
                    126:      instructions.
                    127: 
                    128: `Pmode'
                    129:      An alias for the machine mode for pointers.  Normally the definition
                    130:      can be
                    131: 
                    132:           #define Pmode SImode
                    133: 
                    134: 
                    135: `FUNCTION_MODE'
                    136:      An alias for the machine mode used for memory references to functions
                    137:      being called, in `call' RTL expressions.  On most machines this should
                    138:      be `QImode'.
                    139: 
                    140: `CONST_COST (X, CODE)'
                    141:      A part of a C `switch' statement that describes the relative costs of
                    142:      constant RTL expressions.  It must contain `case' labels for
                    143:      expression codes `const_int', `const', `symbol_ref', `label_ref' and
                    144:      `const_double'.  Each case must ultimately reach a `return' statement
                    145:      to return the relative cost of the use of that kind of constant value
                    146:      in an expression.  The cost may depend on the precise value of the
                    147:      constant, which is available for examination in X.
                    148: 
                    149:      CODE is the expression code---redundant, since it can be obtained with
                    150:      `GET_CODE (X)'.
                    151: 
                    152: `DOLLARS_IN_IDENTIFIERS'
                    153:      Define this if the character `$' should be allowed in identifier names.
                    154: 
                    155: 
                    156: File: internals,  Node: Condition Code,  Next: Assembler Format,  Prev: Misc,  Up: Machine Macros
                    157: 
                    158: Condition Code Information
                    159: ==========================
                    160: 
                    161: The file `conditions.h' defines a variable `cc_status' to describe how the
                    162: condition code was computed (in case the interpretation of the condition
                    163: code depends on the instruction that it was set by).  This variable
                    164: contains the RTL expressions on which the condition code is currently
                    165: based, and several standard flags.
                    166: 
                    167: Sometimes additional machine-specific flags must be defined in the machine
                    168: description header file.  It can also add additional machine-specific
                    169: information by defining `CC_STATUS_MDEP'.
                    170: 
                    171: `CC_STATUS_MDEP'
                    172:      C code for a data type which is used for declaring the `mdep'
                    173:      component of `cc_status'.  It defaults to `int'.
                    174: 
                    175: `CC_STATUS_MDEP_INIT'
                    176:      A C expression for the initial value of the `mdep' field.  It defaults
                    177:      to 0.
                    178: 
                    179: `NOTICE_UPDATE_CC (EXP)'
                    180:      A C compound statement to set the components of `cc_status'
                    181:      appropriately for an insn whose body is EXP.  It is this macro's
                    182:      responsibility to recognize insns that set the condition code as a
                    183:      byproduct of other activity as well as those that explicitly set
                    184:      `(cc0)'.
                    185: 
                    186:      If there are insn that do not set the condition code but do alter
                    187:      other machine registers, this macro must check to see whether they
                    188:      invalidate the expressions that the condition code is recorded as
                    189:      reflecting.  For example, on the 68000, insns that store in address
                    190:      registers do not set the condition code, which means that usually
                    191:      `NOTICE_UPDATE_CC' can leave `cc_status' unaltered for such insns. 
                    192:      But suppose that the previous insn set the condition code based on
                    193:      location `a4@(102)' and the current insn stores a new value in `a4'. 
                    194:      Although the condition code is not changed by this, it will no longer
                    195:      be true that it reflects the contents of `a4@(102)'.  Therefore,
                    196:      `NOTICE_UPDATE_CC' must alter `cc_status' in this case to say that
                    197:      nothing is known about the condition code value.
                    198: 
                    199: 
                    200: File: internals,  Node: Assembler Format,  Prev: Condition Code,  Up: Machine Macros
                    201: 
                    202: Output of Assembler Code
                    203: ========================
                    204: 
                    205: `ASM_SPEC'
                    206:      A C string constant that tells the GNU CC driver program options to
                    207:      pass to the assembler.  It can also specify how to translate options
                    208:      you give to GNU CC into options for GNU CC to pass to the assembler. 
                    209:      See the file `tm-sun3.h' for an example of this.
                    210: 
                    211:      Do not define this macro if it does not need to do anything.
                    212: 
                    213: `LINK_SPEC'
                    214:      A C string constant that tells the GNU CC driver program options to
                    215:      pass to the linker.  It can also specify how to translate options you
                    216:      give to GNU CC into options for GNU CC to pass to the linker.
                    217: 
                    218:      Do not define this macro if it does not need to do anything.
                    219: 
                    220: `ASM_FILE_START'
                    221:      A C string constant for text to be output at the start of each
                    222:      assembler output file.  Normally this is `"#NO_APP"', which is a
                    223:      comment that has no effect on most assemblers but tells the GNU
                    224:      assembler that it can save time by not checking for certain assembler
                    225:      constructs.
                    226: 
                    227: `ASM_APP_ON'
                    228:      A C string constant for text to be output before each `asm' statement
                    229:      or group of consecutive ones.  Normally this is `"#APP"', which is a
                    230:      comment that has no effect on most assemblers but tells the GNU
                    231:      assembler that it must check the lines that follow for all valid
                    232:      assembler constructs.
                    233: 
                    234: `ASM_APP_OFF'
                    235:      A C string constant for text to be output after each `asm' statement
                    236:      or group of consecutive ones.  Normally this is `"#NO_APP"', which
                    237:      tells the GNU assembler to resume making the time-saving assumptions
                    238:      that are valid for ordinary compiler output.
                    239: 
                    240: `TEXT_SECTION_ASM_OP'
                    241:      A C string constant for the assembler operation that should precede
                    242:      instructions and read-only data.  Normally `".text"' is right.
                    243: 
                    244: `DATA_SECTION_ASM_OP'
                    245:      A C string constant for the assembler operation to identify the
                    246:      following data as writable initialized data.  Normally `".data"' is
                    247:      right.
                    248: 
                    249: `REGISTER_NAMES'
                    250:      A C initializer containing the assembler's names for the machine
                    251:      registers, each one as a C string constant.  This is what translates
                    252:      register numbers in the compiler into assembler language.
                    253: 
                    254: `DBX_REGISTER_NUMBER (REGNO)'
                    255:      A C expression that returns the DBX register number for the compiler
                    256:      register number REGNO.  In simple cases, the value of this expression
                    257:      may be REGNO itself.  But sometimes there are some registers that the
                    258:      compiler knows about and DBX does not, or vice versa.  In such cases,
                    259:      some register may need to have one number in the compiler and another
                    260:      for DBX.
                    261: 
                    262: `DBX_NO_XREFS'
                    263:      Define this macro if DBX on your system does not support the construct
                    264:      `xsTAGNAME'.  On some systems, this construct is used to describe a
                    265:      forward reference to a structure named TAGNAME.  On other systems,
                    266:      this construct is not supported at all.
                    267: 
                    268: `DBX_CONTIN_LENGTH'
                    269:      A symbol name in DBX-format debugging information is normally
                    270:      continued (split into two separate `.stabs' directives) when it
                    271:      exceeds a certain length (by default, 80 characters).  On some
                    272:      operating systems, DBX requires this splitting; on others, splitting
                    273:      must not be done.  You can inhibit splitting by defining this macro
                    274:      with the value zero.  You can override the default splitting-length by
                    275:      defining this macro as an expression for the length you desire.
                    276: 
                    277: `DBX_CONTIN_CHAR'
                    278:      Normally continuation is indicated by adding a `\' character to the
                    279:      end of a `.stabs' string when a continuation follows.  To use a
                    280:      different character instead, define this macro as a character constant
                    281:      for the character you want to use.  Do not define this macro if
                    282:      backslash is correct for your system.
                    283: 
                    284: `ASM_OUTPUT_LABEL (FILE, NAME)'
                    285:      A C statement (sans semicolon) to output to the stdio stream FILE the
                    286:      assembler definition of a label named NAME.  Use the expression
                    287:      `assemble_name (FILE, NAME)' to output the name itself; before and
                    288:      after that, output the additional assembler syntax for defining the
                    289:      name, and a newline.
                    290: 
                    291: `ASM_DECLARE_FUNCTION_NAME (FILE, NAME)'
                    292:      A C statement (sans semicolon) to output to the stdio stream FILE any
                    293:      text necessary for declaring the name of a function which is being
                    294:      defined.  This macro is responsible for outputting the label
                    295:      definition (perhaps using `ASM_OUTPUT_LABEL').
                    296: 
                    297:      If this macro is not defined, then the function name is defined in the
                    298:      usual manner as a label (by means of `ASM_OUTPUT_LABEL').
                    299: 
                    300: `ASM_GLOBALIZE_LABEL (FILE, NAME)'
                    301:      A C statement (sans semicolon) to output to the stdio stream FILE some
                    302:      commands that will make the label NAME global; that is, available for
                    303:      reference from other files.  Use the expression `assemble_name (FILE,
                    304:      NAME)' to output the name itself; before and after that, output the
                    305:      additional assembler syntax for making that name global, and a newline.
                    306: 
                    307: `ASM_OUTPUT_EXTERNAL (FILE, NAME)'
                    308:      A C statement (sans semicolon) to output to the stdio stream FILE any
                    309:      text necessary for declaring the name of an external symbol which is
                    310:      referenced in this compilation but not defined.
                    311: 
                    312:      This macro need not be defined if it does not need to output anything.
                    313:       The GNU assembler and most Unix assemblers don't require anything.
                    314: 
                    315: `ASM_OUTPUT_LABELREF (FILE, NAME)'
                    316:      A C statement to output to the stdio stream FILE a reference in
                    317:      assembler syntax to a label named NAME.  The character `_' should be
                    318:      added to the front of the name, if that is customary on your operating
                    319:      system, as it is in most Berkeley Unix systems.  This macro is used in
                    320:      `assemble_name'.
                    321: 
                    322: `ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM)'
                    323:      A C statement to output to the stdio stream FILE a label whose name is
                    324:      made from the string PREFIX and the number NUM.  These labels are used
                    325:      for internal purposes, and there is no reason for them to appear in
                    326:      the symbol table of the object file.  On many systems, the letter `L'
                    327:      at the beginning of a label has this effect.  The usual definition of
                    328:      this macro is as follows:
                    329: 
                    330:           fprintf (FILE, "L%s%d:\n", PREFIX, NUM)
                    331: 
                    332: 
                    333: `ASM_OUTPUT_CASE_LABEL (FILE, PREFIX, NUM, TABLE)'
                    334:      Define this if the label before a jump-table needs to be output
                    335:      specially.  The first three arguments are the same as for
                    336:      `ASM_OUTPUT_INTERNAL_LABEL'; the fourth argument is the jump-table
                    337:      which follows (a `jump_insn' containing an `addr_vec' or
                    338:      `addr_diff_vec').
                    339: 
                    340:      This feature is used on system V to output a `swbeg' statement for the
                    341:      table.
                    342: 
                    343:      If this macro is not defined, these labels are output with
                    344:      `ASM_OUTPUT_INTERNAL_LABEL'.
                    345: 
                    346: `ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)'
                    347:      A C expression to assign to OUTVAR (which is a variable of type `char
                    348:      *') a newly allocated string made from the string NAME and the number
                    349:      NUMBER, with some suitable punctuation added.  Use `alloca' to get
                    350:      space for the string.
                    351: 
                    352:      This string will be used as the argument to `ASM_OUTPUT_LABELREF' to
                    353:      produce an assembler label for an internal static variable whose name
                    354:      is NAME.  Therefore, the string must be such as to result in valid
                    355:      assembler code.  The argument NUMBER is different each time this macro
                    356:      is executed; it prevents conflicts between similarly-named internal
                    357:      static variables in different scopes.
                    358: 
                    359:      Ideally this string should not be a valid C identifier, to prevent any
                    360:      conflict with the user's own symbols.  Most assemblers allow periods
                    361:      or percent signs in assembler symbols; putting at least one of these
                    362:      between the name and the number will suffice.
                    363: 
                    364: `ASM_OUTPUT_ADDR_DIFF_ELT (FILE, VALUE, REL)'
                    365:      This macro should be provided on machines where the addresses in a
                    366:      dispatch table are relative to the table's own address.
                    367: 
                    368:      The definition should be a C statement to output to the stdio stream
                    369:      FILE an assembler pseudo-instruction to generate a difference between
                    370:      two labels.  VALUE and REL are the numbers of two internal labels. 
                    371:      The definitions of these labels are output using
                    372:      `ASM_OUTPUT_INTERNAL_LABEL', and they must be printed in the same way
                    373:      here.  For example,
                    374: 
                    375:           fprintf (FILE, "\t.word L%d-L%d\n",
                    376:                    VALUE, REL)
                    377: 
                    378: 
                    379: `ASM_OUTPUT_ADDR_VEC_ELT (FILE, VALUE)'
                    380:      This macro should be provided on machines where the addresses in a
                    381:      dispatch table are absolute.
                    382: 
                    383:      The definition should be a C statement to output to the stdio stream
                    384:      FILE an assembler pseudo-instruction to generate a reference to a
                    385:      label.  VALUE is the number of an internal label whose definition is
                    386:      output using `ASM_OUTPUT_INTERNAL_LABEL'.  For example,
                    387: 
                    388:           fprintf (FILE, "\t.word L%d\n", VALUE)
                    389: 
                    390: 
                    391: `ASM_OUTPUT_DOUBLE (FILE, VALUE)'
                    392:      A C statement to output to the stdio stream FILE an assembler
                    393:      instruction to assemble a `double' constant whose value is VALUE. 
                    394:      VALUE will be a C expression of type `double'.
                    395: 
                    396: `ASM_OUTPUT_FLOAT (FILE, VALUE)'
                    397:      A C statement to output to the stdio stream FILE an assembler
                    398:      instruction to assemble a `float' constant whose value is VALUE. 
                    399:      VALUE will be a C expression of type `float'.
                    400: 
                    401: `ASM_OUTPUT_INT (FILE, EXP)'
                    402: `ASM_OUTPUT_SHORT (FILE, EXP)'
                    403: `ASM_OUTPUT_CHAR (FILE, EXP)'
                    404:      A C statement to output to the stdio stream FILE an assembler
                    405:      instruction to assemble a `int', `short' or `char' constant whose
                    406:      value is VALUE.  The argument EXP will be an RTL expression which
                    407:      represents a constant value.  Use `output_addr_const (EXP)' to output
                    408:      this value as an assembler expression.
                    409: 
                    410: `ASM_OUTPUT_BYTE (FILE, VALUE)'
                    411:      A C statement to output to the stdio stream FILE an assembler
                    412:      instruction to assemble a single byte containing the number VALUE.
                    413: 
                    414: `ASM_OUTPUT_ASCII (FILE, PTR, LEN)'
                    415:      A C statement to output to the stdio stream FILE an assembler
                    416:      instruction to assemble a string constant containing the LEN bytes at
                    417:      PTR.  PTR will be a C expression of type `char *' and LEN a C
                    418:      expression of type `int'.
                    419: 
                    420:      If the assembler has a `.ascii' pseudo-op as found in the Berkeley
                    421:      Unix assembler, do not define the macro `ASM_OUTPUT_ASCII'.
                    422: 
                    423: `ASM_OUTPUT_SKIP (FILE, NBYTES)'
                    424:      A C statement to output to the stdio stream FILE an assembler
                    425:      instruction to advance the location counter by NBYTES bytes.  NBYTES
                    426:      will be a C expression of type `int'.
                    427: 
                    428: `ASM_OUTPUT_ALIGN (FILE, POWER)'
                    429:      A C statement to output to the stdio stream FILE an assembler
                    430:      instruction to advance the location counter to a multiple of 2 to the
                    431:      POWER bytes.  POWER will be a C expression of type `int'.
                    432: 
                    433: `ASM_OUTPUT_COMMON (FILE, NAME, SIZE)'
                    434:      A C statement (sans semicolon) to output to the stdio stream FILE the
                    435:      assembler definition of a common-label named NAME whose size is SIZE
                    436:      bytes.  Use the expression `assemble_name (FILE, NAME)' to output the
                    437:      name itself; before and after that, output the additional assembler
                    438:      syntax for defining the name, and a newline.
                    439: 
                    440:      This macro controls how the assembler definitions of uninitialized
                    441:      global variables are output.
                    442: 
                    443: `ASM_OUTPUT_LOCAL (FILE, NAME, SIZE)'
                    444:      A C statement (sans semicolon) to output to the stdio stream FILE the
                    445:      assembler definition of a local-common-label named NAME whose size is
                    446:      SIZE bytes.  Use the expression `assemble_name (FILE, NAME)' to output
                    447:      the name itself; before and after that, output the additional
                    448:      assembler syntax for defining the name, and a newline.
                    449: 
                    450:      This macro controls how the assembler definitions of uninitialized
                    451:      static variables are output.
                    452: 
                    453: `TARGET_BELL'
                    454:      A C constant expression for the integer value for escape sequence `\a'.
                    455: 
                    456: `TARGET_BS'
                    457: `TARGET_TAB'
                    458: `TARGET_NEWLINE'
                    459:      C constant expressions for the integer values for escape sequences
                    460:      `\b', `\t' and `\n'.
                    461: 
                    462: `TARGET_VT'
                    463: `TARGET_FF'
                    464: `TARGET_CR'
                    465:      C constant expressions for the integer values for escape sequences
                    466:      `\v', `\f' and `\r'.
                    467: 
                    468: `ASM_OUTPUT_OPCODE (FILE, PTR)'
                    469:      Define this macro if you are using an unusual assembler that requires
                    470:      different names for the machine instructions.
                    471: 
                    472:      The definition is a C statement or statements which output an
                    473:      assembler instruction opcode to the stdio stream FILE.  The
                    474:      macro-operand PTR is a variable of type `char *' which points to the
                    475:      opcode name in its ``internal'' form---the form that is written in the
                    476:      machine description.  The definition should output the opcode name to
                    477:      FILE, performing any translation you desire, and increment the
                    478:      variABLE PTR to point at the end of the opcode so that it will not be
                    479:      output twice.
                    480: 
                    481:      In fact, your macro definition may process less than the entire opcode
                    482:      name, or more than the opcode name; but if you want to process text
                    483:      that includes `%'-sequences to substitute operands, you must take care
                    484:      of the substitution yourself.  Just be sure to increment PTR over
                    485:      whatever text should not be output normally.
                    486: 
                    487:      If the macro definition does nothing, the instruction is output in the
                    488:      usual way.
                    489: 
                    490: `PRINT_OPERAND (FILE, X, CODE)'
                    491:      A C compound statement to output to stdio stream FILE the assembler
                    492:      syntax for an instruction operand X.  X is an RTL expression.
                    493: 
                    494:      CODE is a value that can be used to specify one of several ways of
                    495:      printing the operand.  It is used when identical operands must be
                    496:      printed differently depending on the context.  CODE comes from the `%'
                    497:      specification that was used to request printing of the operand.  If
                    498:      the specification was just `%DIGIT' then CODE is 0; if the
                    499:      specification was `%LTR DIGIT' then CODE is the ASCII code for LTR.
                    500: 
                    501:      If X is a register, this macro should print the register's name.  The
                    502:      names can be found in an array `reg_names' whose type is `char *[]'. 
                    503:      `reg_names' is initialized from `REGISTER_NAMES'.
                    504: 
                    505:      When the machine description has a specification `%PUNCT' (a `%'
                    506:      followed by a punctuation character), this macro is called with a null
                    507:      pointer for X and the punctuation character for CODE.
                    508: 
                    509: `PRINT_OPERAND_ADDRESS (FILE, X)'
                    510:      A C compound statement to output to stdio stream FILE the assembler
                    511:      syntax for an instruction operand that is a memory reference whose
                    512:      address is X.  X is an RTL expression.
                    513: 
                    514: `ASM_OPEN_PAREN'
                    515: `ASM_CLOSE_PAREN'
                    516:      These macros are defined as C string constant, describing the syntax
                    517:      in the assembler for grouping arithmetic expressions.  The following
                    518:      definitions are correct for most assemblers:
                    519: 
                    520:           #define ASM_OPEN_PAREN "("
                    521:           #define ASM_CLOSE_PAREN ")"
                    522: 
                    523: 
                    524: 
                    525: File: internals,  Node: Config,  Prev: Machine Macros,  Up: Top
                    526: 
                    527: The Configuration File
                    528: **********************
                    529: 
                    530: The configuration file `config-MACHINE.h' contains macro definitions that
                    531: describe the machine and system on which the compiler is running.  Most of
                    532: the values in it are actually the same on all machines that GNU CC runs on,
                    533: so most all configuration files are identical.  But there are some macros
                    534: that vary:
                    535: 
                    536: `FAILURE_EXIT_CODE'
                    537:      A C expression for the status code to be returned when the compiler
                    538:      exits after serious errors.
                    539: 
                    540: `SUCCESS_EXIT_CODE'
                    541:      A C expression for the status code to be returned when the compiler
                    542:      exits without serious errors.
                    543: 
                    544: 

unix.superglobalmegacorp.com

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