Annotation of gcc/gcc.info-12, revision 1.1.1.2

1.1.1.2 ! root        1: This is Info file gcc.info, produced by Makeinfo-1.44 from the input
1.1       root        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: 
1.1.1.2 ! root       27: File: gcc.info,  Node: Driver,  Next: Run-time Target,  Up: Target Macros
        !            28: 
        !            29: Controlling the Compilation Driver, `gcc'
        !            30: =========================================
        !            31: 
        !            32: `SWITCH_TAKES_ARG (CHAR)'
        !            33:      A C expression which determines whether the option `-CHAR' takes
        !            34:      arguments.  The value should be the number of arguments that
        !            35:      option takes--zero, for many options.
        !            36: 
        !            37:      By default, this macro is defined to handle the standard options
        !            38:      properly.  You need not define it unless you wish to add
        !            39:      additional options which take arguments.
        !            40: 
        !            41: `WORD_SWITCH_TAKES_ARG (NAME)'
        !            42:      A C expression which determines whether the option `-NAME' takes
        !            43:      arguments.  The value should be the number of arguments that
        !            44:      option takes--zero, for many options.  This macro rather than
        !            45:      `SWITCH_TAKES_ARG' is used for multi-character option names.
        !            46: 
        !            47:      By default, this macro is defined to handle the standard options
        !            48:      properly.  You need not define it unless you wish to add
        !            49:      additional options which take arguments.
        !            50: 
        !            51: `SWITCHES_NEED_SPACES'
        !            52:      A string-valued C expression which is nonempty if the linker
        !            53:      needs a space between the `-L' or `-o' option and its argument.
        !            54: 
        !            55:      If this macro is not defined, the default value is 0.
        !            56: 
        !            57: `CPP_SPEC'
        !            58:      A C string constant that tells the GNU CC driver program options
        !            59:      to pass to CPP.  It can also specify how to translate options you
        !            60:      give to GNU CC into options for GNU CC to pass to the CPP.
        !            61: 
        !            62:      Do not define this macro if it does not need to do anything.
        !            63: 
        !            64: `SIGNED_CHAR_SPEC'
        !            65:      A C string constant that tells the GNU CC driver program options
        !            66:      to pass to CPP.  By default, this macro is defined to pass the
        !            67:      option `-D__CHAR_UNSIGNED__' to CPP if `char' will be treated as
        !            68:      `unsigned char' by `cc1'.
        !            69: 
        !            70:      Do not define this macro unless you need to override the default
        !            71:      definition.
        !            72: 
        !            73: `CC1_SPEC'
        !            74:      A C string constant that tells the GNU CC driver program options
        !            75:      to pass to `cc1'.  It can also specify how to translate options
        !            76:      you give to GNU CC into options for GNU CC to pass to the `cc1'.
        !            77: 
        !            78:      Do not define this macro if it does not need to do anything.
        !            79: 
        !            80: `CC1PLUS_SPEC'
        !            81:      A C string constant that tells the GNU CC driver program options
        !            82:      to pass to `cc1plus'.  It can also specify how to translate
        !            83:      options you give to GNU CC into options for GNU CC to pass to the
        !            84:      `cc1plus'.
        !            85: 
        !            86:      Do not define this macro if it does not need to do anything.
        !            87: 
        !            88: `ASM_SPEC'
        !            89:      A C string constant that tells the GNU CC driver program options
        !            90:      to pass to the assembler.  It can also specify how to translate
        !            91:      options you give to GNU CC into options for GNU CC to pass to the
        !            92:      assembler.  See the file `sun3.h' for an example of this.
        !            93: 
        !            94:      Do not define this macro if it does not need to do anything.
        !            95: 
        !            96: `ASM_FINAL_SPEC'
        !            97:      A C string constant that tells the GNU CC driver program how to
        !            98:      run any programs which cleanup after the normal assembler. 
        !            99:      Normally, this is not needed.  See the file `mips.h' for an
        !           100:      example of this.
        !           101: 
        !           102:      Do not define this macro if it does not need to do anything.
        !           103: 
        !           104: `LINK_SPEC'
        !           105:      A C string constant that tells the GNU CC driver program options
        !           106:      to pass to the linker.  It can also specify how to translate
        !           107:      options you give to GNU CC into options for GNU CC to pass to the
        !           108:      linker.
        !           109: 
        !           110:      Do not define this macro if it does not need to do anything.
        !           111: 
        !           112: `LIB_SPEC'
        !           113:      Another C string constant used much like `LINK_SPEC'.  The
        !           114:      difference between the two is that `LIB_SPEC' is used at the end
        !           115:      of the command given to the linker.
        !           116: 
        !           117:      If this macro is not defined, a default is provided that loads
        !           118:      the standard C library from the usual place.  See `gcc.c'.
        !           119: 
        !           120: `STARTFILE_SPEC'
        !           121:      Another C string constant used much like `LINK_SPEC'.  The
        !           122:      difference between the two is that `STARTFILE_SPEC' is used at
        !           123:      the very beginning of the command given to the linker.
        !           124: 
        !           125:      If this macro is not defined, a default is provided that loads the
        !           126:      standard C startup file from the usual place.  See `gcc.c'.
        !           127: 
        !           128: `ENDFILE_SPEC'
        !           129:      Another C string constant used much like `LINK_SPEC'.  The
        !           130:      difference between the two is that `ENDFILE_SPEC' is used at the
        !           131:      very end of the command given to the linker.
        !           132: 
        !           133:      Do not define this macro if it does not need to do anything.
        !           134: 
        !           135: `LINK_LIBGCC_SPECIAL'
        !           136:      Define this macro meaning that `gcc' should find the library
        !           137:      `libgcc.a' by hand, rather than passing the argument `-lgcc' to
        !           138:      tell the linker to do the search.
        !           139: 
        !           140: `RELATIVE_PREFIX_NOT_LINKDIR'
        !           141:      Define this macro to tell `gcc' that it should only translate a
        !           142:      `-B' prefix into a `-L' linker option if the prefix indicates an
        !           143:      absolute file name.
        !           144: 
        !           145: `STANDARD_EXEC_PREFIX'
        !           146:      Define this macro as a C string constant if you wish to override
        !           147:      the standard choice of `/usr/local/lib/gcc-lib/' as the default
        !           148:      prefix to try when searching for the executable files of the
        !           149:      compiler.
        !           150: 
        !           151: `MD_EXEC_PREFIX'
        !           152:      If defined, this macro is an additional prefix to try after
        !           153:      `STANDARD_EXEC_PREFIX'.  `MD_EXEC_PREFIX' is not searched when
        !           154:      the `-b' option is used, or the compiler is built as a cross
        !           155:      compiler.
        !           156: 
        !           157: `STANDARD_STARTFILE_PREFIX'
        !           158:      Define this macro as a C string constant if you wish to override
        !           159:      the standard choice of `/usr/local/lib/gcc/' as the default
        !           160:      prefix to try when searching for startup files such as `crt0.o'.
        !           161: 
        !           162: `MD_STARTFILE_PREFIX'
        !           163:      If defined, this macro supplies an additional prefix to try after
        !           164:      the standard prefixes.  `MD_EXEC_PREFIX' is not searched when the
        !           165:      `-b' option is used, or the compiler is built as a cross compiler.
        !           166: 
        !           167: `LOCAL_INCLUDE_DIR'
        !           168:      Define this macro as a C string constant if you wish to override
        !           169:      the standard choice of `/usr/local/include' as the default prefix
        !           170:      to try when searching for local header files.  `LOCAL_INCLUDE_DIR'
        !           171:      comes before `SYSTEM_INCLUDE_DIR' in the search order.
        !           172: 
        !           173:      Cross compilers do not use this macro and do not search either
        !           174:      `/usr/local/include' or its replacement.
        !           175: 
        !           176: `SYSTEM_INCLUDE_DIR'
        !           177:      Define this macro as a C string constant if you wish to specify a
        !           178:      system-specific directory to search for header files before the
        !           179:      standard directory.  `SYSTEM_INCLUDE_DIR' comes before
        !           180:      `STANDARD_INCLUDE_DIR' in the search order.
        !           181: 
        !           182:      Cross compilers do not use this macro and do not search the
        !           183:      directory specified.
        !           184: 
        !           185: `STANDARD_INCLUDE_DIR'
        !           186:      Define this macro as a C string constant if you wish to override
        !           187:      the standard choice of `/usr/include' as the default prefix to
        !           188:      try when searching for header files.
        !           189: 
        !           190:      Cross compilers do not use this macro and do not search either
        !           191:      `/usr/include' or its replacement.
        !           192: 
        !           193: `INCLUDE_DEFAULTS'
        !           194:      Define this macro if you wish to override the entire default
        !           195:      search path for include files.  The default search path includes
        !           196:      `GPLUSPLUS_INCLUDE_DIR', `GCC_INCLUDE_DIR', `LOCAL_INCLUDE_DIR',
        !           197:      `SYSTEM_INCLUDE_DIR', and `STANDARD_INCLUDE_DIR'.  In addition,
        !           198:      the macros `GPLUSPLUS_INCLUDE_DIR' and `GCC_INCLUDE_DIR' are
        !           199:      defined automatically by `Makefile', and specify private search
        !           200:      areas for GCC.  The directory `GPLUSPLUS_INCLUDE_DIR' is used
        !           201:      only for C++ programs.
        !           202: 
        !           203:      The definition should be an initializer for an array of
        !           204:      structures.  Each array element should have two elements: the
        !           205:      directory name (a string constant) and a flag for C++-only
        !           206:      directories.  Mark the end of the array with a null element.  For
        !           207:      example, here is the definition used for VMS:
        !           208: 
        !           209:           #define INCLUDE_DEFAULTS \
        !           210:           {                                       \
        !           211:             { "GNU_GXX_INCLUDE:", 1},             \
        !           212:             { "GNU_CC_INCLUDE:", 0},              \
        !           213:             { "SYS$SYSROOT:[SYSLIB.]", 0},        \
        !           214:             { ".", 0},                            \
        !           215:             { 0, 0}                               \
        !           216:           }
        !           217: 
        !           218:    Here is the order of prefixes tried for exec files:
        !           219: 
        !           220:   1. Any prefixes specified by the user with `-B'.
        !           221: 
        !           222:   2. The environment variable `GCC_EXEC_PREFIX', if any.
        !           223: 
        !           224:   3. The directories specified by the environment variable
        !           225:      `COMPILER_PATH'.
        !           226: 
        !           227:   4. The macro `STANDARD_EXEC_PREFIX'.
        !           228: 
        !           229:   5. `/usr/lib/gcc/'.
        !           230: 
        !           231:   6. The macro `MD_EXEC_PREFIX', if any.
        !           232: 
        !           233:    Here is the order of prefixes tried for startfiles:
        !           234: 
        !           235:   1. Any prefixes specified by the user with `-B'.
        !           236: 
        !           237:   2. The environment variable `GCC_EXEC_PREFIX', if any.
        !           238: 
        !           239:   3. The directories specified by the environment variable
        !           240:      `LIBRARY_PATH'.
        !           241: 
        !           242:   4. The macro `STANDARD_EXEC_PREFIX'.
        !           243: 
        !           244:   5. `/usr/lib/gcc/'.
        !           245: 
        !           246:   6. The macro `MD_EXEC_PREFIX', if any.
        !           247: 
        !           248:   7. The macro `MD_STARTFILE_PREFIX', if any.
        !           249: 
        !           250:   8. The macro `STANDARD_STARTFILE_PREFIX'.
        !           251: 
        !           252:   9. `/lib/'.
        !           253: 
        !           254:  10. `/usr/lib/'.
        !           255: 
        !           256: 
        !           257: File: gcc.info,  Node: Run-time Target,  Next: Storage Layout,  Prev: Driver,  Up: Target Macros
        !           258: 
        !           259: Run-time Target Specification
        !           260: =============================
        !           261: 
        !           262: `CPP_PREDEFINES'
        !           263:      Define this to be a string constant containing `-D' options to
        !           264:      define the predefined macros that identify this machine and
        !           265:      system.  These macros will be predefined unless the `-ansi'
        !           266:      option is specified.
        !           267: 
        !           268:      In addition, a parallel set of macros are predefined, whose names
        !           269:      are made by appending `__' at the beginning and at the end.  These
        !           270:      `__' macros are permitted by the ANSI standard, so they are
        !           271:      predefined regardless of whether `-ansi' is specified.
        !           272: 
        !           273:      For example, on the Sun, one can use the following value:
        !           274: 
        !           275:           "-Dmc68000 -Dsun -Dunix"
        !           276: 
        !           277:      The result is to define the macros `__mc68000__', `__sun__' and
        !           278:      `__unix__' unconditionally, and the macros `mc68000', `sun' and
        !           279:      `unix' provided `-ansi' is not specified.
        !           280: 
        !           281: `STDC_VALUE'
        !           282:      Define the value to be assigned to the built-in macro `__STDC__'. 
        !           283:      The default is the value `1'.
        !           284: 
        !           285: `extern int target_flags;'
        !           286:      This declaration should be present.
        !           287: 
        !           288: `TARGET_...'
        !           289:      This series of macros is to allow compiler command arguments to
        !           290:      enable or disable the use of optional features of the target
        !           291:      machine.  For example, one machine description serves both the
        !           292:      68000 and the 68020; a command argument tells the compiler
        !           293:      whether it should use 68020-only instructions or not.  This
        !           294:      command argument works by means of a macro `TARGET_68020' that
        !           295:      tests a bit in `target_flags'.
        !           296: 
        !           297:      Define a macro `TARGET_FEATURENAME' for each such option.  Its
        !           298:      definition should test a bit in `target_flags'; for example:
        !           299: 
        !           300:           #define TARGET_68020 (target_flags & 1)
        !           301: 
        !           302:      One place where these macros are used is in the
        !           303:      condition-expressions of instruction patterns.  Note how
        !           304:      `TARGET_68020' appears frequently in the 68000 machine
        !           305:      description file, `m68k.md'.  Another place they are used is in
        !           306:      the definitions of the other macros in the `MACHINE.h' file.
        !           307: 
        !           308: `TARGET_SWITCHES'
        !           309:      This macro defines names of command options to set and clear bits
        !           310:      in `target_flags'.  Its definition is an initializer with a
        !           311:      subgrouping for each command option.
        !           312: 
        !           313:      Each subgrouping contains a string constant, that defines the
        !           314:      option name, and a number, which contains the bits to set in
        !           315:      `target_flags'.  A negative number says to clear bits instead;
        !           316:      the negative of the number is which bits to clear.  The actual
        !           317:      option name is made by appending `-m' to the specified name.
        !           318: 
        !           319:      One of the subgroupings should have a null string.  The number in
        !           320:      this grouping is the default value for `target_flags'.  Any
        !           321:      target options act starting with that value.
        !           322: 
        !           323:      Here is an example which defines `-m68000' and `-m68020' with
        !           324:      opposite meanings, and picks the latter as the default:
        !           325: 
        !           326:           #define TARGET_SWITCHES \
        !           327:             { { "68020", 1},      \
        !           328:               { "68000", -1},     \
        !           329:               { "", 1}}
        !           330: 
        !           331: `TARGET_OPTIONS'
        !           332:      This macro is similar to `TARGET_SWITCHES' but defines names of
        !           333:      command options that have values.  Its definition is an
        !           334:      initializer with a subgrouping for each command option.
        !           335: 
        !           336:      Each subgrouping contains a string constant, that defines the
        !           337:      fixed part of the option name, and the address of a variable. 
        !           338:      The variable, type `char *', is set to the variable part of the
        !           339:      given option if the fixed part matches.  The actual option name
        !           340:      is made by appending `-m' to the specified name.
        !           341: 
        !           342:      Here is an example which defines `-mshort-data-NUMBER'.  If the
        !           343:      given option is `-mshort-data-512', the variable `m88k_short_data'
        !           344:      will be set to the string `"512"'.
        !           345: 
        !           346:           extern char *m88k_short_data;
        !           347:           #define TARGET_OPTIONS { { "short-data-", &m88k_short_data } }
        !           348: 
        !           349: `TARGET_VERSION'
        !           350:      This macro is a C statement to print on `stderr' a string
        !           351:      describing the particular machine description choice.  Every
        !           352:      machine description should define `TARGET_VERSION'.  For example:
        !           353: 
        !           354:           #ifdef MOTOROLA
        !           355:           #define TARGET_VERSION fprintf (stderr, " (68k, Motorola syntax)");
        !           356:           #else
        !           357:           #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
        !           358:           #endif
        !           359: 
        !           360: `OVERRIDE_OPTIONS'
        !           361:      Sometimes certain combinations of command options do not make
        !           362:      sense on a particular target machine.  You can define a macro
        !           363:      `OVERRIDE_OPTIONS' to take account of this.  This macro, if
        !           364:      defined, is executed once just after all the command options have
        !           365:      been parsed.
        !           366: 
        !           367:      Don't use this macro to turn on various extra optimizations for
        !           368:      `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.
        !           369: 
        !           370: `OPTIMIZATION_OPTIONS (LEVEL)'
        !           371:      Some machines may desire to change what optimizations are
        !           372:      performed for various optimization levels.   This macro, if
        !           373:      defined, is executed once just after the optimization level is
        !           374:      determined and before the remainder of the command options have
        !           375:      been parsed.  Values set in this macro are used as the default
        !           376:      values for the other command line options.
        !           377: 
        !           378:      LEVEL is the optimization level specified; 2 if -O2 is specified,
        !           379:      1 if -O is specified, and 0 if neither is specified.
        !           380: 
        !           381:      *Do not examine `write_symbols' in this macro!* The debugging
        !           382:      options are not supposed to alter the generated code.
        !           383: 
        !           384: 
        !           385: File: gcc.info,  Node: Storage Layout,  Next: Type Layout,  Prev: Run-time Target,  Up: Target Macros
1.1       root      386: 
                    387: Storage Layout
                    388: ==============
                    389: 
                    390:    Note that the definitions of the macros in this table which are
                    391: sizes or alignments measured in bits do not need to be constant.  They
                    392: can be C expressions that refer to static variables, such as the
                    393: `target_flags'.  *Note Run-time Target::.
                    394: 
                    395: `BITS_BIG_ENDIAN'
                    396:      Define this macro to be the value 1 if the most significant bit
                    397:      in a byte has the lowest number; otherwise define it to be the
                    398:      value zero.  This means that bit-field instructions count from
                    399:      the most significant bit.  If the machine has no bit-field
                    400:      instructions, this macro is irrelevant.
                    401: 
                    402:      This macro does not affect the way structure fields are packed
                    403:      into bytes or words; that is controlled by `BYTES_BIG_ENDIAN'.
                    404: 
                    405: `BYTES_BIG_ENDIAN'
                    406:      Define this macro to be 1 if the most significant byte in a word
                    407:      has the lowest number.
                    408: 
                    409: `WORDS_BIG_ENDIAN'
                    410:      Define this macro to be 1 if, in a multiword object, the most
                    411:      significant word has the lowest number.
                    412: 
                    413: `BITS_PER_UNIT'
                    414:      Number of bits in an addressable storage unit (byte); normally 8.
                    415: 
                    416: `BITS_PER_WORD'
                    417:      Number of bits in a word; normally 32.
                    418: 
                    419: `MAX_BITS_PER_WORD'
                    420:      Maximum number of bits in a word.  If this is undefined, the
                    421:      default is `BITS_PER_WORD'.  Otherwise, it is the constant value
                    422:      that is the largest value that `BITS_PER_WORD' can have at
                    423:      run-time.
                    424: 
                    425: `UNITS_PER_WORD'
                    426:      Number of storage units in a word; normally 4.
                    427: 
                    428: `POINTER_SIZE'
                    429:      Width of a pointer, in bits.
                    430: 
                    431: `PARM_BOUNDARY'
                    432:      Normal alignment required for function parameters on the stack, in
                    433:      bits.  All stack parameters receive least this much alignment
                    434:      regardless of data type.  On most machines, this is the same as
                    435:      the size of an integer.
                    436: 
                    437: `STACK_BOUNDARY'
                    438:      Define this macro if you wish to preserve a certain alignment for
                    439:      the stack pointer.  The definition is a C expression for the
                    440:      desired alignment (measured in bits).
                    441: 
                    442:      If `PUSH_ROUNDING' is not defined, the stack will always be
                    443:      aligned to the specified boundary.  If `PUSH_ROUNDING' is defined
                    444:      and specifies a less strict alignment than `STACK_BOUNDARY', the
                    445:      stack may be momentarily unaligned while pushing arguments.
                    446: 
                    447: `FUNCTION_BOUNDARY'
                    448:      Alignment required for a function entry point, in bits.
                    449: 
                    450: `BIGGEST_ALIGNMENT'
                    451:      Biggest alignment that any data type can require on this machine,
                    452:      in bits.
                    453: 
                    454: `BIGGEST_FIELD_ALIGNMENT'
                    455:      Biggest alignment that any structure field can require on this
                    456:      machine, in bits.
                    457: 
                    458: `MAX_OFILE_ALIGNMENT'
                    459:      Biggest alignment supported by the object file format of this
                    460:      machine.  Use this macro to limit the alignment which can be
                    461:      specified using the `__attribute__ ((aligned (N)))' construct. 
                    462:      If not defined, the default value is `BIGGEST_ALIGNMENT'.
                    463: 
                    464: `DATA_ALIGNMENT (TYPE, BASIC-ALIGN)'
                    465:      If defined, a C expression to compute the alignment for a static
                    466:      variable.  TYPE is the data type, and BASIC-ALIGN is the
                    467:      alignment that the object would ordinarily have.  The value of
                    468:      this macro is used instead of that alignment to align the object.
                    469: 
                    470:      If this macro is not defined, then BASIC-ALIGN is used.
                    471: 
                    472:      One use of this macro is to increase alignment of medium-size
                    473:      data to make it all fit in fewer cache lines.  Another is to
                    474:      cause character arrays to be word-aligned so that `strcpy' calls
                    475:      that copy constants to character arrays can be done inline.
                    476: 
                    477: `CONSTANT_ALIGNMENT (CONSTANT, BASIC-ALIGN)'
                    478:      If defined, a C expression to compute the alignment given to a
                    479:      constant that is being placed in memory.  CONSTANT is the
                    480:      constant and BASIC-ALIGN is the alignment that the object would
                    481:      ordinarily have.  The value of this macro is used instead of that
                    482:      alignment to align the object.
                    483: 
                    484:      If this macro is not defined, then BASIC-ALIGN is used.
                    485: 
                    486:      The typical use of this macro is to increase alignment for string
                    487:      constants to be word aligned so that `strcpy' calls that copy
                    488:      constants can be done inline.
                    489: 
                    490: `EMPTY_FIELD_BOUNDARY'
                    491:      Alignment in bits to be given to a structure bit field that
                    492:      follows an empty field such as `int : 0;'.
                    493: 
1.1.1.2 ! root      494:      Note that `PCC_BITFIELD_TYPE_MATTERS' also affects the alignment
        !           495:      that results from an empty field.
        !           496: 
1.1       root      497: `STRUCTURE_SIZE_BOUNDARY'
                    498:      Number of bits which any structure or union's size must be a
                    499:      multiple of.  Each structure or union's size is rounded up to a
                    500:      multiple of this.
                    501: 
                    502:      If you do not define this macro, the default is the same as
                    503:      `BITS_PER_UNIT'.
                    504: 
                    505: `STRICT_ALIGNMENT'
1.1.1.2 ! root      506:      Define this macro to be the value 1 if instructions will fail to
        !           507:      work if given data not on the nominal alignment.  If instructions
        !           508:      will merely go slower in that case, define this macro as 0.
1.1       root      509: 
                    510: `PCC_BITFIELD_TYPE_MATTERS'
                    511:      Define this if you wish to imitate the way many other C compilers
                    512:      handle alignment of bitfields and the structures that contain
                    513:      them.
                    514: 
                    515:      The behavior is that the type written for a bitfield (`int',
                    516:      `short', or other integer type) imposes an alignment for the
                    517:      entire structure, as if the structure really did contain an
                    518:      ordinary field of that type.  In addition, the bitfield is placed
                    519:      within the structure so that it would fit within such a field,
                    520:      not crossing a boundary for it.
                    521: 
                    522:      Thus, on most machines, a bitfield whose type is written as `int'
                    523:      would not cross a four-byte boundary, and would force four-byte
                    524:      alignment for the whole structure.  (The alignment used may not
                    525:      be four bytes; it is controlled by the other alignment
                    526:      parameters.)
                    527: 
                    528:      If the macro is defined, its definition should be a C expression;
                    529:      a nonzero value for the expression enables this behavior.
                    530: 
                    531:      Note that if this macro is not defined, or its value is zero, some
                    532:      bitfields may cross more than one alignment boundary.  The
                    533:      compiler can support such references if there are `insv', `extv',
                    534:      and `extzv' insns that can directly reference memory.
                    535: 
                    536:      The other known way of making bitfields work is to define
                    537:      `STRUCTURE_SIZE_BOUNDARY' as large as `BIGGEST_ALIGNMENT'.  Then
                    538:      every structure can be accessed with fullwords.
                    539: 
                    540:      Unless the machine has bitfield instructions or you define
                    541:      `STRUCTURE_SIZE_BOUNDARY' that way, you must define
                    542:      `PCC_BITFIELD_TYPE_MATTERS' to have a nonzero value.
                    543: 
                    544: `BITFIELD_NBYTES_LIMITED'
                    545:      Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited
                    546:      to aligning a bitfield within the structure.
                    547: 
                    548: `ROUND_TYPE_SIZE (STRUCT, SIZE, ALIGN)'
                    549:      Define this macro as an expression for the overall size of a
                    550:      structure (given by STRUCT as a tree node) when the size computed
                    551:      from the fields is SIZE and the alignment is ALIGN.
                    552: 
                    553:      The default is to round SIZE up to a multiple of ALIGN.
                    554: 
                    555: `ROUND_TYPE_ALIGN (STRUCT, COMPUTED, SPECIFIED)'
                    556:      Define this macro as an expression for the alignment of a
                    557:      structure (given by STRUCT as a tree node) if the alignment
                    558:      computed in the usual way is COMPUTED and the alignment
                    559:      explicitly specified was SPECIFIED.
                    560: 
                    561:      The default is to use SPECIFIED if it is larger; otherwise, use
                    562:      the smaller of COMPUTED and `BIGGEST_ALIGNMENT'
                    563: 
                    564: `MAX_FIXED_MODE_SIZE'
                    565:      An integer expression for the size in bits of the largest integer
                    566:      machine mode that should actually be used.  All integer machine
                    567:      modes of this size or smaller can be used for structures and
                    568:      unions with the appropriate sizes.  If this macro is undefined,
                    569:      `GET_MODE_BITSIZE (DImode)' is assumed.
                    570: 
                    571: `CHECK_FLOAT_VALUE (MODE, VALUE)'
                    572:      A C statement to validate the value VALUE (of type `double') for
                    573:      mode MODE.  This means that you check whether VALUE fits within
                    574:      the possible range of values for mode MODE on this target
                    575:      machine.  The mode MODE is always `SFmode' or `DFmode'.
                    576: 
                    577:      If VALUE is not valid, you should call `error' to print an error
                    578:      message and then assign some valid value to VALUE.  Allowing an
                    579:      invalid value to go through the compiler can produce incorrect
                    580:      assembler code which may even cause Unix assemblers to crash.
                    581: 
                    582:      This macro need not be defined if there is no work for it to do.
                    583: 
                    584: `TARGET_FLOAT_FORMAT'
                    585:      A code distinguishing the floating point format of the target
                    586:      machine.  There are three defined values:
                    587: 
                    588:     `IEEE_FLOAT_FORMAT'
                    589:           This code indicates IEEE floating point.  It is the default;
                    590:           there is no need to define this macro when the format is
                    591:           IEEE.
                    592: 
                    593:     `VAX_FLOAT_FORMAT'
                    594:           This code indicates the peculiar format used on the Vax.
                    595: 
                    596:     `UNKNOWN_FLOAT_FORMAT'
                    597:           This code indicates any other format.
                    598: 
                    599:      The value of this macro is compared with `HOST_FLOAT_FORMAT'
                    600:      (*note Config::.) to determine whether the target machine has the
                    601:      same format as the host machine.  If any other formats are
                    602:      actually in use on supported machines, new codes should be
                    603:      defined for them.
                    604: 
                    605: 
1.1.1.2 ! root      606: File: gcc.info,  Node: Type Layout,  Next: Registers,  Prev: Storage Layout,  Up: Target Macros
1.1       root      607: 
                    608: Layout of Source Language Data Types
                    609: ====================================
                    610: 
                    611:    These macros define the sizes and other characteristics of the
                    612: standard basic data types used in programs being compiled.  Unlike the
                    613: macros in the previous section, these apply to specific features of C
                    614: and related languages, rather than to fundamental aspects of storage
                    615: layout.
                    616: 
                    617: `INT_TYPE_SIZE'
                    618:      A C expression for the size in bits of the type `int' on the
                    619:      target machine.  If you don't define this, the default is one
                    620:      word.
                    621: 
                    622: `SHORT_TYPE_SIZE'
                    623:      A C expression for the size in bits of the type `short' on the
                    624:      target machine.  If you don't define this, the default is half a
                    625:      word.  (If this would be less than one storage unit, it is
                    626:      rounded up to one unit.)
                    627: 
                    628: `LONG_TYPE_SIZE'
                    629:      A C expression for the size in bits of the type `long' on the
                    630:      target machine.  If you don't define this, the default is one
                    631:      word.
                    632: 
                    633: `LONG_LONG_TYPE_SIZE'
                    634:      A C expression for the size in bits of the type `long long' on the
                    635:      target machine.  If you don't define this, the default is two
                    636:      words.
                    637: 
                    638: `CHAR_TYPE_SIZE'
                    639:      A C expression for the size in bits of the type `char' on the
                    640:      target machine.  If you don't define this, the default is one
                    641:      quarter of a word.  (If this would be less than one storage unit,
                    642:      it is rounded up to one unit.)
                    643: 
                    644: `FLOAT_TYPE_SIZE'
                    645:      A C expression for the size in bits of the type `float' on the
                    646:      target machine.  If you don't define this, the default is one
                    647:      word.
                    648: 
                    649: `DOUBLE_TYPE_SIZE'
                    650:      A C expression for the size in bits of the type `double' on the
                    651:      target machine.  If you don't define this, the default is two
                    652:      words.
                    653: 
                    654: `LONG_DOUBLE_TYPE_SIZE'
                    655:      A C expression for the size in bits of the type `long double' on
                    656:      the target machine.  If you don't define this, the default is two
                    657:      words.
                    658: 
                    659: `DEFAULT_SIGNED_CHAR'
                    660:      An expression whose value is 1 or 0, according to whether the type
                    661:      `char' should be signed or unsigned by default.  The user can
                    662:      always override this default with the options `-fsigned-char' and
                    663:      `-funsigned-char'.
                    664: 
                    665: `DEFAULT_SHORT_ENUMS'
                    666:      A C expression to determine whether to give an `enum' type only
                    667:      as many bytes as it takes to represent the range of possible
                    668:      values of that type.  A nonzero value means to do that; a zero
                    669:      value means all `enum' types should be allocated like `int'.
                    670: 
                    671:      If you don't define the macro, the default is 0.
                    672: 
                    673: `SIZE_TYPE'
                    674:      A C expression for a string describing the name of the data type
                    675:      to use for size values.  The typedef name `size_t' is defined
                    676:      using the contents of the string.
                    677: 
                    678:      The string can contain more than one keyword.  If so, separate
                    679:      them with spaces, and write first any length keyword, then
                    680:      `unsigned' if appropriate, and finally `int'.  The string must
                    681:      exactly match one of the data type names defined in the function
                    682:      `init_decl_processing' in the file `c-decl.c'.  You may not omit
                    683:      `int' or change the order--that would cause the compiler to crash
                    684:      on startup.
                    685: 
                    686:      If you don't define this macro, the default is `"long unsigned
                    687:      int"'.
                    688: 
                    689: `PTRDIFF_TYPE'
                    690:      A C expression for a string describing the name of the data type
                    691:      to use for the result of subtracting two pointers.  The typedef
                    692:      name `ptrdiff_t' is defined using the contents of the string.  See
                    693:      `SIZE_TYPE' above for more information.
                    694: 
                    695:      If you don't define this macro, the default is `"long int"'.
                    696: 
                    697: `WCHAR_TYPE'
                    698:      A C expression for a string describing the name of the data type
                    699:      to use for wide characters.  The typedef name `wchar_t' is
                    700:      defined using the contents of the string.  See `SIZE_TYPE' above
                    701:      for more information.
                    702: 
                    703:      If you don't define this macro, the default is `"int"'.
                    704: 
                    705: `WCHAR_TYPE_SIZE'
                    706:      A C expression for the size in bits of the data type for wide
                    707:      characters.  This is used in `cpp', which cannot make use of
                    708:      `WCHAR_TYPE'.
                    709: 
                    710: `OBJC_INT_SELECTORS'
                    711:      Define this macro if the type of Objective C selectors should be
                    712:      `int'.
                    713: 
                    714:      If this macro is not defined, then selectors should have the type
                    715:      `struct objc_selector *'.
                    716: 
                    717: `OBJC_NONUNIQUE_SELECTORS'
                    718:      Define this macro if Objective C selector-references will be made
                    719:      unique by the linker (this is the default).  In this case, each
                    720:      selector-reference will be given a separate assembler label. 
                    721:      Otherwise, the selector-references will be gathered into an array
                    722:      with a single assembler label.
                    723: 
                    724: `MULTIBYTE_CHARS'
                    725:      Define this macro to enable support for multibyte characters in
                    726:      the input to GNU CC.  This requires that the host system support
                    727:      the ANSI C library functions for converting multibyte characters
                    728:      to wide characters.
                    729: 
                    730: `TARGET_BELL'
                    731:      A C constant expression for the integer value for escape sequence
                    732:      `\a'.
                    733: 
                    734: `TARGET_BS'
                    735: `TARGET_TAB'
                    736: `TARGET_NEWLINE'
                    737:      C constant expressions for the integer values for escape sequences
                    738:      `\b', `\t' and `\n'.
                    739: 
                    740: `TARGET_VT'
                    741: `TARGET_FF'
                    742: `TARGET_CR'
                    743:      C constant expressions for the integer values for escape sequences
                    744:      `\v', `\f' and `\r'.
                    745: 
                    746: 
1.1.1.2 ! root      747: File: gcc.info,  Node: Registers,  Next: Register Classes,  Prev: Type Layout,  Up: Target Macros
1.1       root      748: 
                    749: Register Usage
                    750: ==============
                    751: 
                    752:    This section explains how to describe what registers the target
                    753: machine has, and how (in general) they can be used.
                    754: 
                    755:    The description of which registers a specific instruction can use is
                    756: done with register classes; see *Note Register Classes::.  For
                    757: information on using registers to access a stack frame, see *Note
                    758: Frame Registers::.  For passing values in registers, see *Note
                    759: Register Arguments::.  For returning values in registers, see *Note
                    760: Scalar Return::.
                    761: 
                    762: * Menu:
                    763: 
                    764: * Register Basics::            Number and kinds of registers.
                    765: * Allocation Order::           Order in which registers are allocated.
                    766: * Values in Registers::                What kinds of values each reg can hold.
                    767: * Leaf Functions::             Renumbering registers for leaf functions.
                    768: * Stack Registers::            Handling a register stack such as 80387.
                    769: * Obsolete Register Macros::   Macros formerly used for the 80387.
                    770: 
                    771: 
                    772: File: gcc.info,  Node: Register Basics,  Next: Allocation Order,  Up: Registers
                    773: 
                    774: Basic Characteristics of Registers
                    775: ----------------------------------
                    776: 
                    777: `FIRST_PSEUDO_REGISTER'
                    778:      Number of hardware registers known to the compiler.  They receive
                    779:      numbers 0 through `FIRST_PSEUDO_REGISTER-1'; thus, the first
                    780:      pseudo register's number really is assigned the number
                    781:      `FIRST_PSEUDO_REGISTER'.
                    782: 
                    783: `FIXED_REGISTERS'
                    784:      An initializer that says which registers are used for fixed
                    785:      purposes all throughout the compiled code and are therefore not
                    786:      available for general allocation.  These would include the stack
                    787:      pointer, the frame pointer (except on machines where that can be
                    788:      used as a general register when no frame pointer is needed), the
                    789:      program counter on machines where that is considered one of the
                    790:      addressable registers, and any other numbered register with a
                    791:      standard use.
                    792: 
                    793:      This information is expressed as a sequence of numbers, separated
                    794:      by commas and surrounded by braces.  The Nth number is 1 if
                    795:      register N is fixed, 0 otherwise.
                    796: 
                    797:      The table initialized from this macro, and the table initialized
                    798:      by the following one, may be overridden at run time either
                    799:      automatically, by the actions of the macro
                    800:      `CONDITIONAL_REGISTER_USAGE', or by the user with the command
                    801:      options `-ffixed-REG', `-fcall-used-REG' and `-fcall-saved-REG'.
                    802: 
                    803: `CALL_USED_REGISTERS'
                    804:      Like `FIXED_REGISTERS' but has 1 for each register that is
                    805:      clobbered (in general) by function calls as well as for fixed
                    806:      registers.  This macro therefore identifies the registers that
                    807:      are not available for general allocation of values that must live
                    808:      across function calls.
                    809: 
                    810:      If a register has 0 in `CALL_USED_REGISTERS', the compiler
                    811:      automatically saves it on function entry and restores it on
                    812:      function exit, if the register is used within the function.
                    813: 
                    814: `CONDITIONAL_REGISTER_USAGE'
                    815:      Zero or more C statements that may conditionally modify two
                    816:      variables `fixed_regs' and `call_used_regs' (both of type `char
                    817:      []') after they have been initialized from the two preceding
                    818:      macros.
                    819: 
                    820:      This is necessary in case the fixed or call-clobbered registers
                    821:      depend on target flags.
                    822: 
                    823:      You need not define this macro if it has no work to do.
                    824: 
                    825:      If the usage of an entire class of registers depends on the target
                    826:      flags, you may indicate this to GCC by using this macro to modify
                    827:      `fixed_regs' and `call_used_regs' to 1 for each of the registers
                    828:      in the classes which should not be used by GCC.  Also define the
                    829:      macro `REG_CLASS_FROM_LETTER' to return `NO_REGS' if it is called
                    830:      with a letter for a class that shouldn't be used.
                    831: 
                    832:      (However, if this class is not included in `GENERAL_REGS' and all
                    833:      of the insn patterns whose constraints permit this class are
                    834:      controlled by target switches, then GCC will automatically avoid
                    835:      using these registers when the target switches are opposed to
                    836:      them.)
                    837: 
                    838: `NON_SAVING_SETJMP'
                    839:      If this macro is defined and has a nonzero value, it means that
                    840:      `setjmp' and related functions fail to save the registers, or that
                    841:      `longjmp' fails to restore them.  To compensate, the compiler
                    842:      avoids putting variables in registers in functions that use
                    843:      `setjmp'.
                    844: 
                    845: 
                    846: File: gcc.info,  Node: Allocation Order,  Next: Values in Registers,  Prev: Register Basics,  Up: Registers
                    847: 
                    848: Order of Allocation of Registers
                    849: --------------------------------
                    850: 
                    851: `REG_ALLOC_ORDER'
                    852:      If defined, an initializer for a vector of integers, containing
                    853:      the numbers of hard registers in the order in which GNU CC should
                    854:      prefer to use them (from most preferred to least).
                    855: 
                    856:      If this macro is not defined, registers are used lowest numbered
                    857:      first (all else being equal).
                    858: 
                    859:      One use of this macro is on machines where the highest numbered
                    860:      registers must always be saved and the save-multiple-registers
                    861:      instruction supports only sequences of consecutive registers.  On
                    862:      such machines, define `REG_ALLOC_ORDER' to be an initializer that
                    863:      lists the highest numbered allocatable register first.
                    864: 
                    865: `ORDER_REGS_FOR_LOCAL_ALLOC'
                    866:      A C statement (sans semicolon) to choose the order in which to
                    867:      allocate hard registers for pseudo-registers local to a basic
                    868:      block.
                    869: 
                    870:      Store the desired order of registers in the array
                    871:      `reg_alloc_order'.  Element 0 should be the register to allocate
                    872:      first; element 1, the next register; and so on.
                    873: 
                    874:      The macro body should not assume anything about the contents of
                    875:      `reg_alloc_order' before execution of the macro.
                    876: 
                    877:      On most machines, it is not necessary to define this macro.
                    878: 
                    879: 
                    880: File: gcc.info,  Node: Values in Registers,  Next: Leaf Functions,  Prev: Allocation Order,  Up: Registers
                    881: 
                    882: How Values Fit in Registers
                    883: ---------------------------
                    884: 
                    885:    This section discusses the macros that describe which kinds of
                    886: values (specifically, which machine modes) each register can hold, and
                    887: how many consecutive registers are needed for a given mode.
                    888: 
                    889: `HARD_REGNO_NREGS (REGNO, MODE)'
                    890:      A C expression for the number of consecutive hard registers,
                    891:      starting at register number REGNO, required to hold a value of
                    892:      mode MODE.
                    893: 
                    894:      On a machine where all registers are exactly one word, a suitable
                    895:      definition of this macro is
                    896: 
                    897:           #define HARD_REGNO_NREGS(REGNO, MODE)            \
                    898:              ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
                    899:               / UNITS_PER_WORD))
                    900: 
                    901: `HARD_REGNO_MODE_OK (REGNO, MODE)'
                    902:      A C expression that is nonzero if it is permissible to store a
                    903:      value of mode MODE in hard register number REGNO (or in several
                    904:      registers starting with that one).  For a machine where all
                    905:      registers are equivalent, a suitable definition is
                    906: 
                    907:           #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
                    908: 
                    909:      It is not necessary for this macro to check for the numbers of
                    910:      fixed registers, because the allocation mechanism considers them
                    911:      to be always occupied.
                    912: 
                    913:      On some machines, double-precision values must be kept in even/odd
                    914:      register pairs.  The way to implement that is to define this macro
                    915:      to reject odd register numbers for such modes.
                    916: 
                    917:      The minimum requirement for a mode to be OK in a register is that
                    918:      the `movMODE' instruction pattern support moves between the
                    919:      register and any other hard register for which the mode is OK;
                    920:      and that moving a value into the register and back out not alter
                    921:      it.
                    922: 
                    923:      Since the same instruction used to move `SImode' will work for all
                    924:      narrower integer modes, it is not necessary on any machine for
                    925:      `HARD_REGNO_MODE_OK' to distinguish between these modes, provided
                    926:      you define patterns `movhi', etc., to take advantage of this. 
                    927:      This is useful because of the interaction between
                    928:      `HARD_REGNO_MODE_OK' and `MODES_TIEABLE_P'; it is very desirable
                    929:      for all integer modes to be tieable.
                    930: 
                    931:      Many machines have special registers for floating point
                    932:      arithmetic.  Often people assume that floating point machine
                    933:      modes are allowed only in floating point registers.  This is not
                    934:      true.  Any registers that can hold integers can safely *hold* a
                    935:      floating point machine mode, whether or not floating arithmetic
                    936:      can be done on it in those registers.  Integer move instructions
                    937:      can be used to move the values.
                    938: 
                    939:      On some machines, though, the converse is true: fixed-point
                    940:      machine modes may not go in floating registers.  This is true if
                    941:      the floating registers normalize any value stored in them,
                    942:      because storing a non-floating value there would garble it.  In
                    943:      this case, `HARD_REGNO_MODE_OK' should reject fixed-point machine
                    944:      modes in floating registers.  But if the floating registers do
                    945:      not automatically normalize, if you can store any bit pattern in
                    946:      one and retrieve it unchanged without a trap, then any machine
                    947:      mode may go in a floating register and this macro should say so.
                    948: 
                    949:      The primary significance of special floating registers is rather
                    950:      that they are the registers acceptable in floating point
                    951:      arithmetic instructions.  However, this is of no concern to
                    952:      `HARD_REGNO_MODE_OK'.  You handle it by writing the proper
                    953:      constraints for those instructions.
                    954: 
                    955:      On some machines, the floating registers are especially slow to
                    956:      access, so that it is better to store a value in a stack frame
                    957:      than in such a register if floating point arithmetic is not being
                    958:      done.  As long as the floating registers are not in class
                    959:      `GENERAL_REGS', they will not be used unless some pattern's
                    960:      constraint asks for one.
                    961: 
                    962: `MODES_TIEABLE_P (MODE1, MODE2)'
                    963:      A C expression that is nonzero if it is desirable to choose
                    964:      register allocation so as to avoid move instructions between a
                    965:      value of mode MODE1 and a value of mode MODE2.
                    966: 
                    967:      If `HARD_REGNO_MODE_OK (R, MODE1)' and `HARD_REGNO_MODE_OK (R,
                    968:      MODE2)' are ever different for any R, then `MODES_TIEABLE_P
                    969:      (MODE1, MODE2)' must be zero.
                    970: 
                    971: 
                    972: File: gcc.info,  Node: Leaf Functions,  Next: Stack Registers,  Prev: Values in Registers,  Up: Registers
                    973: 
                    974: Handling Leaf Functions
                    975: -----------------------
                    976: 
                    977:    On some machines, a leaf function (i.e., one which make no calls)
                    978: can run more efficiently if it does not make its own register window. 
                    979: Often this means it is required to receive its arguments in the
                    980: registers where they are passed by the caller, instead of the
                    981: registers where they would normally arrive.  Also, the leaf function
                    982: may use only those registers for its own variables and temporaries.
                    983: 
                    984:    GNU CC assigns register numbers before it knows whether the
                    985: function is suitable for leaf function treatment.  So it needs to
                    986: renumber the registers in order to output a leaf function.  The
                    987: following macros accomplish this.
                    988: 
                    989: `LEAF_REGISTERS'
                    990:      A C initializer for a vector, indexed by hard register number,
                    991:      which contains 1 for a register that is allowable in a candidate
                    992:      for leaf function treatment.
                    993: 
                    994:      If leaf function treatment involves renumbering the registers,
                    995:      then the registers marked here should be the ones before
                    996:      renumbering--those that GNU CC would ordinarily allocate.  The
                    997:      registers which will actually be used in the assembler code,
                    998:      after renumbering, should not be marked with 1 in this vector.
                    999: 
                   1000:      Define this macro only if the target machine offers a way to
                   1001:      optimize the treatment of leaf functions.
                   1002: 
                   1003: `LEAF_REG_REMAP (REGNO)'
                   1004:      A C expression whose value is the register number to which REGNO
                   1005:      should be renumbered, when a function is treated as a leaf
                   1006:      function.
                   1007: 
                   1008:      If REGNO is a register number which should not appear in a leaf
                   1009:      function before renumbering, then the expression should yield -1,
                   1010:      which will cause the compiler to abort.
                   1011: 
                   1012:      Define this macro only if the target machine offers a way to
                   1013:      optimize the treatment of leaf functions, and registers need to
                   1014:      be renumbered to do this.
                   1015: 
                   1016: `REG_LEAF_ALLOC_ORDER'
                   1017:      If defined, an initializer for a vector of integers, containing
                   1018:      the numbers of hard registers in the order in which the GNU CC
                   1019:      should prefer to use them (from most preferred to least) in a
                   1020:      leaf function.  If this macro is not defined, REG_ALLOC_ORDER is
                   1021:      used for both non-leaf and leaf-functions.
                   1022: 
                   1023:    Normally, it is necessary for `FUNCTION_PROLOGUE' and
                   1024: `FUNCTION_EPILOGUE' to treat leaf functions specially.  The C variable
                   1025: `leaf_function' is nonzero for such a function.
                   1026: 
                   1027: 
                   1028: File: gcc.info,  Node: Stack Registers,  Next: Obsolete Register Macros,  Prev: Leaf Functions,  Up: Registers
                   1029: 
                   1030: Registers That Form a Stack
                   1031: ---------------------------
                   1032: 
                   1033:    There are special features to handle computers where some of the
                   1034: "registers" form a stack, as in the 80387 coprocessor for the 80386. 
                   1035: Stack registers are normally written by pushing onto the stack, and are
                   1036: numbered relative to the top of the stack.
                   1037: 
                   1038:    Currently, GNU CC can only handle one group of stack-like
                   1039: registers, and they must be consecutively numbered.
                   1040: 
                   1041: `STACK_REGS'
                   1042:      Define this if the machine has any stack-like registers.
                   1043: 
                   1044: `FIRST_STACK_REG'
                   1045:      The number of the first stack-like register.  This one is the top
                   1046:      of the stack.
                   1047: 
                   1048: `LAST_STACK_REG'
                   1049:      The number of the last stack-like register.  This one is the
                   1050:      bottom of the stack.
                   1051: 
                   1052: 
                   1053: File: gcc.info,  Node: Obsolete Register Macros,  Prev: Stack Registers,  Up: Registers
                   1054: 
                   1055: Obsolete Macros for Controlling Register Usage
                   1056: ----------------------------------------------
                   1057: 
                   1058:    These features do not work very well.  They exist because they used
                   1059: to be required to generate correct code for the 80387 coprocessor of
                   1060: the 80386.  They are no longer used by that machine description and
                   1061: may be removed in a later version of the compiler.  Don't use them!
                   1062: 
                   1063: `OVERLAPPING_REGNO_P (REGNO)'
                   1064:      If defined, this is a C expression whose value is nonzero if hard
                   1065:      register number REGNO is an overlapping register.  This means a
                   1066:      hard register which overlaps a hard register with a different
                   1067:      number.  (Such overlap is undesirable, but occasionally it allows
                   1068:      a machine to be supported which otherwise could not be.)  This
                   1069:      macro must return nonzero for *all* the registers which overlap
                   1070:      each other.  GNU CC can use an overlapping register only in
                   1071:      certain limited ways.  It can be used for allocation within a
                   1072:      basic block, and may be spilled for reloading; that is all.
                   1073: 
                   1074:      If this macro is not defined, it means that none of the hard
                   1075:      registers overlap each other.  This is the usual situation.
                   1076: 
                   1077: `INSN_CLOBBERS_REGNO_P (INSN, REGNO)'
                   1078:      If defined, this is a C expression whose value should be nonzero
                   1079:      if the insn INSN has the effect of mysteriously clobbering the
                   1080:      contents of hard register number REGNO.  By "mysterious" we mean
                   1081:      that the insn's RTL expression doesn't describe such an effect.
                   1082: 
                   1083:      If this macro is not defined, it means that no insn clobbers
                   1084:      registers mysteriously.  This is the usual situation; all else
                   1085:      being equal, it is best for the RTL expression to show all the
                   1086:      activity.
                   1087: 
                   1088: `PRESERVE_DEATH_INFO_REGNO_P (REGNO)'
                   1089:      If defined, this is a C expression whose value is nonzero if
                   1090:      accurate `REG_DEAD' notes are needed for hard register number
                   1091:      REGNO at the time of outputting the assembler code.  When this is
                   1092:      so, a few optimizations that take place after register allocation
                   1093:      and could invalidate the death notes are not done when this
                   1094:      register is involved.
                   1095: 
                   1096:      You would arrange to preserve death info for a register when some
                   1097:      of the code in the machine description which is executed to write
                   1098:      the assembler code looks at the death notes.  This is necessary
                   1099:      only when the actual hardware feature which GNU CC thinks of as a
                   1100:      register is not actually a register of the usual sort.  (It
                   1101:      might, for example, be a hardware stack.)
                   1102: 
                   1103:      If this macro is not defined, it means that no death notes need
                   1104:      to be preserved.  This is the usual situation.
                   1105: 
                   1106: 

unix.superglobalmegacorp.com

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