home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / cprog / gccdoc2.zip / TM.TXT < prev   
Text File  |  1992-05-22  |  276KB  |  6,865 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.                 INTERNALS
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.           1.  Machine Description Macros
  75.  
  76.                In  addition  to  the  file  `machine.md',  a   machine
  77.           description  includes  a  C header file conventionally given
  78.           the name `machine.h'.  This  header  file  defines  numerous
  79.           macros  that convey the information about the target machine
  80.           that does not fit into the scheme of the  `.md'  file.   The
  81.           file  `tm.h'  should  be  a link to `machine.h'.  The header
  82.           file `config.h' includes `tm.h'  and  most  compiler  source
  83.           files include `config.h'.
  84.  
  85.  
  86.  
  87.           1.1.  Controlling the Compilation Driver, `gcc'
  88.  
  89.                SWITCH_TAKES_ARG (char)
  90.                     A C expression which determines whether the option
  91.                     `-char'  takes arguments.  The value should be the
  92.                     number of arguments that option  takes--zero,  for
  93.                     many options.
  94.  
  95.                     By default, this macro is defined  to  handle  the
  96.                     standard options properly.  You need not define it
  97.                     unless you wish to add  additional  options  which
  98.                     take arguments.
  99.  
  100.                WORD_SWITCH_TAKES_ARG (name)
  101.                     A C expression which determines whether the option
  102.                     `-name'  takes arguments.  The value should be the
  103.                     number of arguments that option  takes--zero,  for
  104.                     many    options.     This    macro   rather   than
  105.                     SWITCH_TAKES_ARG is used for  multi-character  op-
  106.                     tion names.
  107.  
  108.                     By default, this macro is defined  to  handle  the
  109.                     standard options properly.  You need not define it
  110.                     unless you wish to add  additional  options  which
  111.                     take arguments.
  112.  
  113.                SWITCHES_NEED_SPACES
  114.                     A string-valued C expression which is nonempty  if
  115.                     the  linker needs a space between the `-L' or `-o'
  116.                     option and its argument.
  117.  
  118.                     If this macro is not defined, the default value is
  119.                     0.
  120.  
  121.                CPP_SPEC
  122.                     A C string constant that tells the GNU  CC  driver
  123.                     program  options  to  pass  to  CPP.   It can also
  124.                     specify how to translate options you give  to  GNU
  125.                     CC into options for GNU CC to pass to the CPP.
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.                     Do not define this macro if it does not need to do
  141.                     anything.
  142.  
  143.                SIGNED_CHAR_SPEC
  144.                     A C string constant that tells the GNU  CC  driver
  145.                     program  options to pass to CPP.  By default, this
  146.                     macro  is  defined   to   pass   the   option   `-
  147.                     D__CHAR_UNSIGNED__' to CPP if char will be treated
  148.                     as unsigned char by cc1.
  149.  
  150.                     Do not define this macro unless you need to  over-
  151.                     ride the default definition.
  152.  
  153.                CC1_SPEC
  154.                     A C string constant that tells the GNU  CC  driver
  155.                     program  options  to  pass  to  cc1.   It can also
  156.                     specify how to translate options you give  to  GNU
  157.                     CC into options for GNU CC to pass to the cc1.
  158.  
  159.                     Do not define this macro if it does not need to do
  160.                     anything.
  161.  
  162.                CC1PLUS_SPEC
  163.                     A C string constant that tells the GNU  CC  driver
  164.                     program  options  to pass to cc1plus.  It can also
  165.                     specify how to translate options you give  to  GNU
  166.                     CC into options for GNU CC to pass to the cc1plus.
  167.  
  168.                     Do not define this macro if it does not need to do
  169.                     anything.
  170.  
  171.                ASM_SPEC
  172.                     A C string constant that tells the GNU  CC  driver
  173.                     program  options to pass to the assembler.  It can
  174.                     also specify how to translate options you give  to
  175.                     GNU  CC into options for GNU CC to pass to the as-
  176.                     sembler.  See the file `sun3.h' for an example  of
  177.                     this.
  178.  
  179.                     Do not define this macro if it does not need to do
  180.                     anything.
  181.  
  182.                ASM_FINAL_SPEC
  183.                     A C string constant that tells the GNU  CC  driver
  184.                     program  how  to  run  any  programs which cleanup
  185.                     after the normal assembler.  Normally, this is not
  186.                     needed.   See  the file `mips.h' for an example of
  187.                     this.
  188.  
  189.                     Do not define this macro if it does not need to do
  190.                     anything.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.                LINK_SPEC
  207.                     A C string constant that tells the GNU  CC  driver
  208.                     program  options  to  pass  to the linker.  It can
  209.                     also specify how to translate options you give  to
  210.                     GNU  CC  into  options  for  GNU CC to pass to the
  211.                     linker.
  212.  
  213.                     Do not define this macro if it does not need to do
  214.                     anything.
  215.  
  216.                LIB_SPEC
  217.                     Another  C  string   constant   used   much   like
  218.                     LINK_SPEC.  The difference between the two is that
  219.                     LIB_SPEC is used at the end of the  command  given
  220.                     to the linker.
  221.  
  222.                     If this macro is not defined, a default is provid-
  223.                     ed that loads the standard C library from the usu-
  224.                     al place.  See `gcc.c'.
  225.  
  226.                STARTFILE_SPEC
  227.                     Another  C  string   constant   used   much   like
  228.                     LINK_SPEC.  The difference between the two is that
  229.                     STARTFILE_SPEC is used at the  very  beginning  of
  230.                     the command given to the linker.
  231.  
  232.                     If this macro is not defined, a default is provid-
  233.                     ed that loads the standard C startup file from the
  234.                     usual place.  See `gcc.c'.
  235.  
  236.                ENDFILE_SPEC
  237.                     Another  C  string   constant   used   much   like
  238.                     LINK_SPEC.  The difference between the two is that
  239.                     ENDFILE_SPEC is used at the very end of  the  com-
  240.                     mand given to the linker.
  241.  
  242.                     Do not define this macro if it does not need to do
  243.                     anything.
  244.  
  245.                LINK_LIBGCC_SPECIAL
  246.                     Define this macro meaning that gcc should find the
  247.                     library  `libgcc.a'  by  hand, rather than passing
  248.                     the argument `-lgcc' to tell the linker to do  the
  249.                     search.
  250.  
  251.                RELATIVE_PREFIX_NOT_LINKDIR
  252.                     Define this macro to tell gcc that it should  only
  253.                     translate  a `-B' prefix into a `-L' linker option
  254.                     if the prefix indicates an absolute file name.
  255.  
  256.                STANDARD_EXEC_PREFIX
  257.                     Define this macro as a C string  constant  if  you
  258.                     wish   to   override   the   standard   choice  of
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.                     `/usr/local/lib/gcc/' as the default prefix to try
  273.                     when  searching  for  the  executable files of the
  274.                     compiler.
  275.  
  276.                MD_EXEC_PREFIX
  277.                     If defined, this macro is an additional prefix  to
  278.                     try after STANDARD_EXEC_PREFIX.  MD_EXEC_PREFIX is
  279.                     not searched when the `-b' option is used, or  the
  280.                     compiler is built as a cross compiler.
  281.  
  282.                STANDARD_STARTFILE_PREFIX
  283.                     Define this macro as a C string  constant  if  you
  284.                     wish   to   override   the   standard   choice  of
  285.                     `/usr/local/lib/gcc/' as the default prefix to try
  286.                     when searching for startup files such as `crt0.o'.
  287.  
  288.                MD_STARTFILE_PREFIX
  289.                     If defined, this macro supplies an additional pre-
  290.                     fix   to   try   after   the   standard  prefixes.
  291.                     MD_EXEC_PREFIX is not searched when the  `-b'  op-
  292.                     tion  is used, or the compiler is built as a cross
  293.                     compiler.
  294.  
  295.                LOCAL_INCLUDE_DIR
  296.                     Define this macro as a C string  constant  if  you
  297.                     wish   to   override   the   standard   choice  of
  298.                     `/usr/local/include' as the default prefix to  try
  299.                     when    searching    for   local   header   files.
  300.                     LOCAL_INCLUDE_DIR comes before  SYSTEM_INCLUDE_DIR
  301.                     in the search order.
  302.  
  303.                     Cross compilers do not use this macro and  do  not
  304.                     search either `/usr/local/include' or its replace-
  305.                     ment.
  306.  
  307.                SYSTEM_INCLUDE_DIR
  308.                     Define this macro as a C string  constant  if  you
  309.                     wish  to  specify  a  system-specific directory to
  310.                     search for header files before the standard direc-
  311.                     tory.      SYSTEM_INCLUDE_DIR     comes     before
  312.                     STANDARD_INCLUDE_DIR in the search order.
  313.  
  314.                     Cross compilers do not use this macro and  do  not
  315.                     search the directory specified.
  316.  
  317.                STANDARD_INCLUDE_DIR
  318.                     Define this macro as a C string  constant  if  you
  319.                     wish   to   override   the   standard   choice  of
  320.                     `/usr/include' as the default prefix to  try  when
  321.                     searching for header files.
  322.  
  323.                     Cross compilers do not use this macro and  do  not
  324.                     search either `/usr/include' or its replacement.
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.                INCLUDE_DEFAULTS
  339.                     Define this macro if you wish to override the  en-
  340.                     tire  default  search path for include files.  The
  341.                     default        search        path         includes
  342.                     GPLUSPLUS_INCLUDE_DIR,            GCC_INCLUDE_DIR,
  343.                     LOCAL_INCLUDE_DIR,     SYSTEM_INCLUDE_DIR,     and
  344.                     STANDARD_INCLUDE_DIR.   In  addition,  the  macros
  345.                     GPLUSPLUS_INCLUDE_DIR and GCC_INCLUDE_DIR are  de-
  346.                     fined  automatically  by  `Makefile',  and specify
  347.                     private  search  areas  for  GCC.   The  directory
  348.                     GPLUSPLUS_INCLUDE_DIR  is  used  only for C++ pro-
  349.                     grams.
  350.  
  351.                     The definition should be an initializer for an ar-
  352.                     ray of structures.  Each array element should have
  353.                     two elements: the directory name  (a  string  con-
  354.                     stant)  and a flag for C++-only directories.  Mark
  355.                     the end of the array with a null element.  For ex-
  356.                     ample, here is the definition used for VMS:
  357.  
  358.  
  359.                         #define INCLUDE_DEFAULTS \
  360.                         {                                       \
  361.                           { "GNU_GXX_INCLUDE:", 1},             \
  362.                           { "GNU_CC_INCLUDE:", 0},              \
  363.                           { "SYS$SYSROOT:[SYSLIB.]", 0},        \
  364.                           { ".", 0},                            \
  365.                           { 0, 0}                               \
  366.                         }
  367.  
  368.  
  369.  
  370.  
  371.                Here is the order of prefixes tried for exec files:
  372.  
  373.                1.   Any prefixes specified by the user with `-B'.
  374.  
  375.                2.   The environment variable GCC_EXEC_PREFIX, if any.
  376.  
  377.                3.   The directories specified by the environment vari-
  378.                     able COMPILER_PATH.
  379.  
  380.                4.   The macro STANDARD_EXEC_PREFIX.
  381.  
  382.                5.   `/usr/lib/gcc/'.
  383.  
  384.                6.   The macro MD_EXEC_PREFIX, if any.
  385.  
  386.  
  387.                Here is the order of prefixes tried for startfiles:
  388.  
  389.                1.   Any prefixes specified by the user with `-B'.
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.                2.   The environment variable GCC_EXEC_PREFIX, if any.
  405.  
  406.                3.   The directories specified by the environment vari-
  407.                     able LIBRARY_PATH.
  408.  
  409.                4.   The macro STANDARD_EXEC_PREFIX.
  410.  
  411.                5.   `/usr/lib/gcc/'.
  412.  
  413.                6.   The macro MD_EXEC_PREFIX, if any.
  414.  
  415.                7.   The macro MD_STARTFILE_PREFIX, if any.
  416.  
  417.                8.   The macro STANDARD_STARTFILE_PREFIX.
  418.  
  419.                9.   `/lib/'.
  420.  
  421.                10.  `/usr/lib/'.
  422.  
  423.  
  424.           1.2.  Run-time Target Specification
  425.  
  426.                CPP_PREDEFINES
  427.                     Define this to be a string constant containing  `-
  428.                     D'  options  to  define the predefined macros that
  429.                     identify this machine and  system.   These  macros
  430.                     will  be  predefined  unless the `-ansi' option is
  431.                     specified.
  432.  
  433.                     In addition, a parallel set of macros  are  prede-
  434.                     fined,  whose  names are made by appending `__' at
  435.                     the beginning and at the end.  These  `__'  macros
  436.                     are  permitted  by  the ANSI standard, so they are
  437.                     predefined regardless of whether `-ansi' is speci-
  438.                     fied.
  439.  
  440.                     For example, on the Sun, one can use the following
  441.                     value:
  442.  
  443.  
  444.                         "-Dmc68000 -Dsun -Dunix"
  445.  
  446.  
  447.  
  448.                     The   result   is   to   define   the   macros
  449.                     __mc68000__, __sun__ and __unix__ uncondition-
  450.                     ally, and the macros  mc68000,  sun  and  unix
  451.                     provided `-ansi' is not specified.
  452.  
  453.                STDC_VALUE
  454.                     Define the value to be assigned to the  built-
  455.                     in  macro  __STDC__.  The default is the value
  456.                     `1'.
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.                extern int target_flags;
  471.                     This declaration should be present.
  472.  
  473.                TARGET_...
  474.                     This series of macros  is  to  allow  compiler
  475.                     command arguments to enable or disable the use
  476.                     of optional features of  the  target  machine.
  477.                     For  example,  one  machine description serves
  478.                     both the 68000 and the 68020; a command  argu-
  479.                     ment  tells the compiler whether it should use
  480.                     68020-only instructions or not.  This  command
  481.                     argument  works  by  means  of  a  macro  TAR-
  482.                     GET_68020 that tests a bit in target_flags.
  483.  
  484.                     Define a  macro  TARGET_featurename  for  each
  485.                     such option.  Its definition should test a bit
  486.                     in target_flags; for example:
  487.  
  488.  
  489.                         #define TARGET_68020 (target_flags & 1)
  490.  
  491.  
  492.  
  493.                     One place where these macros are  used  is  in
  494.                     the  condition-expressions of instruction pat-
  495.                     terns.  Note  how  TARGET_68020  appears  fre-
  496.                     quently in the 68000 machine description file,
  497.                     `m68k.md'.  Another place they are used is  in
  498.                     the  definitions  of  the  other macros in the
  499.                     `machine.h' file.
  500.  
  501.                TARGET_SWITCHES
  502.                     This macro defines names of command options to
  503.                     set  and  clear bits in target_flags.  Its de-
  504.                     finition is an initializer with a  subgrouping
  505.                     for each command option.
  506.  
  507.                     Each subgrouping contains a  string  constant,
  508.                     that  defines  the  option name, and a number,
  509.                     which   contains   the   bits   to   set    in
  510.                     target_flags.  A negative number says to clear
  511.                     bits instead; the negative of  the  number  is
  512.                     which  bits  to clear.  The actual option name
  513.                     is made by appending  `-m'  to  the  specified
  514.                     name.
  515.  
  516.                     One of the subgroupings  should  have  a  null
  517.                     string.   The  number  in this grouping is the
  518.                     default value for  target_flags.   Any  target
  519.                     options act starting with that value.
  520.  
  521.                     Here is an example which defines `-m68000' and
  522.                     `-m68020'  with  opposite  meanings, and picks
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.                     the latter as the default:
  537.  
  538.  
  539.                         #define TARGET_SWITCHES \
  540.                           { { "68020", 1},      \
  541.                             { "68000", -1},     \
  542.                             { "", 1}}
  543.  
  544.  
  545.  
  546.                TARGET_OPTIONS
  547.                     This macro is similar to  TARGET_SWITCHES  but
  548.                     defines  names  of  command  options that have
  549.                     values.  Its definition is an initializer with
  550.                     a subgrouping for each command option.
  551.  
  552.                     Each subgrouping contains a  string  constant,
  553.                     that  defines  the  fixed  part  of the option
  554.                     name, and the  address  of  a  variable.   The
  555.                     variable,  type char *, is set to the variable
  556.                     part of the given option  if  the  fixed  part
  557.                     matches.   The  actual  option name is made by
  558.                     appending `-m' to the specified name.
  559.  
  560.                     Here is an  example  which  defines  `-mshort-
  561.                     data-number'.   If  the  given  option  is  `-
  562.                     mshort-data-512', the variable m88k_short_data
  563.                     will be set to the string "512".
  564.  
  565.  
  566.                         extern char *m88k_short_data;
  567.                         #define TARGET_OPTIONS { { "short-data-", &m88k_short_data } }
  568.  
  569.  
  570.  
  571.                TARGET_VERSION
  572.                     This macro is a C statement to print on stderr
  573.                     a  string  describing  the  particular machine
  574.                     description choice.  Every machine description
  575.                     should define TARGET_VERSION.  For example:
  576.  
  577.  
  578.                         #ifdef MOTOROLA
  579.                         #define TARGET_VERSION fprintf (stderr, " (68k, Motorola syntax)");
  580.                         #else
  581.                         #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
  582.                         #endif
  583.  
  584.  
  585.  
  586.                OVERRIDE_OPTIONS
  587.                     Sometimes certain combinations of command  op-
  588.                     tions do not make sense on a particular target
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.                     machine.    You    can    define    a    macro
  603.                     OVERRIDE_OPTIONS  to  take  account  of  this.
  604.                     This macro, if defined, is executed once  just
  605.                     after   all  the  command  options  have  been
  606.                     parsed.
  607.  
  608.                     Don't use this macro to turn on various  extra
  609.                     optimizations   for   `-O'.    That   is  what
  610.                     OPTIMIZATION_OPTIONS is for.
  611.  
  612.                OPTIMIZATION_OPTIONS (level)
  613.                     Some machines may desire to change what optim-
  614.                     izations  are  performed for various optimiza-
  615.                     tion levels.   This macro, if defined, is exe-
  616.                     cuted  once  just after the optimization level
  617.                     is determined and before the remainder of  the
  618.                     command  options have been parsed.  Values set
  619.                     in this macro are used as the  default  values
  620.                     for the other command line options.
  621.  
  622.                     level is the optimization level  specified;  2
  623.                     if -O2 is specified, 1 if -O is specified, and
  624.                     0 if neither is specified.
  625.  
  626.                     Do not examine write_symbols  in  this  macro!
  627.                     The  debugging  options  are  not  supposed to
  628.                     alter the generated code.
  629.  
  630.  
  631.           1.3.  Storage Layout
  632.  
  633.                Note that the definitions of the macros in  this  table
  634.           which  are  sizes or alignments measured in bits do not need
  635.           to be constant.  They can be C  expressions  that  refer  to
  636.           static  variables,  such  as  the target_flags.  See section
  637.           Run-time Target.
  638.  
  639.                BITS_BIG_ENDIAN
  640.                     Define this macro to be the value 1  if  the  most
  641.                     significant  bit  in a byte has the lowest number;
  642.                     otherwise define it to be the  value  zero.   This
  643.                     means  that  bit-field instructions count from the
  644.                     most significant bit.  If the machine has no  bit-
  645.                     field instructions, this macro is irrelevant.
  646.  
  647.                     This macro  does  not  affect  the  way  structure
  648.                     fields  are  packed  into  bytes or words; that is
  649.                     controlled by BYTES_BIG_ENDIAN.
  650.  
  651.                BYTES_BIG_ENDIAN
  652.                     Define this macro to be 1 if the most  significant
  653.                     byte in a word has the lowest number.
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.                WORDS_BIG_ENDIAN
  669.                     Define this macro to be 1 if, in a  multiword  ob-
  670.                     ject,  the  most  significant  word has the lowest
  671.                     number.
  672.  
  673.                BITS_PER_UNIT
  674.                     Number of bits  in  an  addressable  storage  unit
  675.                     (byte); normally 8.
  676.  
  677.                BITS_PER_WORD
  678.                     Number of bits in a word; normally 32.
  679.  
  680.                MAX_BITS_PER_WORD
  681.                     Maximum number of bits in a word.  If this is  un-
  682.                     defined, the default is BITS_PER_WORD.  Otherwise,
  683.                     it is the constant value that is the largest value
  684.                     that BITS_PER_WORD can have at run-time.
  685.  
  686.                UNITS_PER_WORD
  687.                     Number of storage units in a word; normally 4.
  688.  
  689.                POINTER_SIZE
  690.                     Width of a pointer, in bits.
  691.  
  692.                PARM_BOUNDARY
  693.                     Normal alignment required for function  parameters
  694.                     on  the  stack, in bits.  All stack parameters re-
  695.                     ceive least this much alignment regardless of data
  696.                     type.   On  most machines, this is the same as the
  697.                     size of an integer.
  698.  
  699.                STACK_BOUNDARY
  700.                     Define this macro if you wish to preserve  a  cer-
  701.                     tain alignment for the stack pointer.  The defini-
  702.                     tion is a C expression for the  desired  alignment
  703.                     (measured in bits).
  704.  
  705.                     If PUSH_ROUNDING is not defined,  the  stack  will
  706.                     always  be  aligned to the specified boundary.  If
  707.                     PUSH_ROUNDING is  defined  and  specifies  a  less
  708.                     strict  alignment  than  STACK_BOUNDARY, the stack
  709.                     may be momentarily unaligned while  pushing  argu-
  710.                     ments.
  711.  
  712.                FUNCTION_BOUNDARY
  713.                     Alignment required for a function entry point,  in
  714.                     bits.
  715.  
  716.                BIGGEST_ALIGNMENT
  717.                     Biggest alignment that any data type  can  require
  718.                     on this machine, in bits.
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.                BIGGEST_FIELD_ALIGNMENT
  735.                     Biggest alignment that any structure field can re-
  736.                     quire on this machine, in bits.
  737.  
  738.                MAX_OFILE_ALIGNMENT
  739.                     Biggest alignment supported  by  the  object  file
  740.                     format  of  this machine.  Use this macro to limit
  741.                     the alignment which can  be  specified  using  the
  742.                     __attribute__  ((aligned  (n))) construct.  If not
  743.                     defined, the default value is BIGGEST_ALIGNMENT.
  744.  
  745.                DATA_ALIGNMENT (type, basic-align)
  746.                     If defined, a C expression to compute  the  align-
  747.                     ment  for  a  static  variable.   type is the data
  748.                     type, and basic-align is the  alignment  that  the
  749.                     object  would  ordinarily have.  The value of this
  750.                     macro is used instead of that alignment  to  align
  751.                     the object.
  752.  
  753.                     If this macro is not defined, then basic-align  is
  754.                     used.
  755.  
  756.                     One use of this macro is to increase alignment  of
  757.                     medium-size data to make it all fit in fewer cache
  758.                     lines.  Another is to cause character arrays to be
  759.                     word-aligned  so  that strcpy calls that copy con-
  760.                     stants to character arrays can be done inline.
  761.  
  762.                CONSTANT_ALIGNMENT (constant, basic-align)
  763.                     If defined, a C expression to compute  the  align-
  764.                     ment  given  to a constant that is being placed in
  765.                     memory.  constant is the constant and  basic-align
  766.                     is  the alignment that the object would ordinarily
  767.                     have.  The value of this macro is used instead  of
  768.                     that alignment to align the object.
  769.  
  770.                     If this macro is not defined, then basic-align  is
  771.                     used.
  772.  
  773.                     The typical use  of  this  macro  is  to  increase
  774.                     alignment  for string constants to be word aligned
  775.                     so that strcpy calls that copy  constants  can  be
  776.                     done inline.
  777.  
  778.                EMPTY_FIELD_BOUNDARY
  779.                     Alignment in bits to be given to a  structure  bit
  780.                     field  that  follows  an empty field such as int :
  781.                     0;.
  782.  
  783.                STRUCTURE_SIZE_BOUNDARY
  784.                     Number of bits which any structure or union's size
  785.                     must  be a multiple of.  Each structure or union's
  786.                     size is rounded up to a multiple of this.
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.                     If you do not define this macro,  the  default  is
  801.                     the same as BITS_PER_UNIT.
  802.  
  803.                STRICT_ALIGNMENT
  804.                     Define this if instructions will fail to  work  if
  805.                     given  data  not on the nominal alignment.  If in-
  806.                     structions will merely go slower in that case,  do
  807.                     not define this macro.
  808.  
  809.                PCC_BITFIELD_TYPE_MATTERS
  810.                     Define this if you wish to imitate  the  way  many
  811.                     other  C  compilers  handle alignment of bitfields
  812.                     and the structures that contain them.
  813.  
  814.                     The behavior is that the type written for  a  bit-
  815.                     field  (int, short, or other integer type) imposes
  816.                     an alignment for the entire structure, as  if  the
  817.                     structure  really did contain an ordinary field of
  818.                     that type.  In addition, the  bitfield  is  placed
  819.                     within  the  structure so that it would fit within
  820.                     such a field, not crossing a boundary for it.
  821.  
  822.                     Thus, on most machines, a bitfield whose  type  is
  823.                     written  as  int would not cross a four-byte boun-
  824.                     dary, and would force four-byte alignment for  the
  825.                     whole  structure.   (The alignment used may not be
  826.                     four bytes; it is controlled by the  other  align-
  827.                     ment parameters.)
  828.  
  829.                     If the macro is defined, its definition should  be
  830.                     a C expression; a nonzero value for the expression
  831.                     enables this behavior.
  832.  
  833.                     Note that if this macro is  not  defined,  or  its
  834.                     value  is zero, some bitfields may cross more than
  835.                     one alignment boundary.  The compiler can  support
  836.                     such  references  if there are `insv', `extv', and
  837.                     `extzv' insns that can directly reference memory.
  838.  
  839.                     The other known way of making bitfields work is to
  840.                     define   STRUCTURE_SIZE_BOUNDARY   as   large   as
  841.                     BIGGEST_ALIGNMENT.  Then every  structure  can  be
  842.                     accessed with fullwords.
  843.  
  844.                     Unless the machine has  bitfield  instructions  or
  845.                     you  define  STRUCTURE_SIZE_BOUNDARY that way, you
  846.                     must define PCC_BITFIELD_TYPE_MATTERS  to  have  a
  847.                     nonzero value.
  848.  
  849.                BITFIELD_NBYTES_LIMITED
  850.                     Like PCC_BITFIELD_TYPE_MATTERS except that its ef-
  851.                     fect  is limited to aligning a bitfield within the
  852.                     structure.
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.                ROUND_TYPE_SIZE (struct, size, align)
  867.                     Define this macro as an expression for the overall
  868.                     size  of  a  structure  (given by struct as a tree
  869.                     node) when the size computed from  the  fields  is
  870.                     size and the alignment is align.
  871.  
  872.                     The default is to round size up to a  multiple  of
  873.                     align.
  874.  
  875.                ROUND_TYPE_ALIGN (struct, computed, specified)
  876.                     Define this macro as an expression for the  align-
  877.                     ment  of  a  structure  (given by struct as a tree
  878.                     node) if the alignment computed in the  usual  way
  879.                     is computed and the alignment explicitly specified
  880.                     was specified.
  881.  
  882.                     The default is to use specified if it  is  larger;
  883.                     otherwise,   use   the  smaller  of  computed  and
  884.                     BIGGEST_ALIGNMENT
  885.  
  886.                MAX_FIXED_MODE_SIZE
  887.                     An integer expression for the size in bits of  the
  888.                     largest  integer machine mode that should actually
  889.                     be used.  All integer machine modes of  this  size
  890.                     or  smaller  can be used for structures and unions
  891.                     with the appropriate sizes.  If this macro is  un-
  892.                     defined, GET_MODE_BITSIZE (DImode) is assumed.
  893.  
  894.                CHECK_FLOAT_VALUE (mode, value)
  895.                     A C statement to validate the value value (of type
  896.                     double)  for mode mode.  This means that you check
  897.                     whether value fits within the  possible  range  of
  898.                     values  for mode mode on this target machine.  The
  899.                     mode mode is always SFmode or DFmode.
  900.  
  901.                     If value is not valid, you should  call  error  to
  902.                     print  an error message and then assign some valid
  903.                     value to value.  Allowing an invalid value  to  go
  904.                     through  the compiler can produce incorrect assem-
  905.                     bler code which may even cause Unix assemblers  to
  906.                     crash.
  907.  
  908.                     This macro need not be defined if there is no work
  909.                     for it to do.
  910.  
  911.                TARGET_FLOAT_FORMAT
  912.                     A code distinguishing the floating point format of
  913.                     the  target  machine.   There  are  three  defined
  914.                     values:
  915.  
  916.                     IEEE_FLOAT_FORMAT
  917.                          This code indicates IEEE floating point.   It
  918.                          is  the  default;  there is no need to define
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.                          this macro when the format is IEEE.
  933.  
  934.                     VAX_FLOAT_FORMAT
  935.                          This code indicates the peculiar format  used
  936.                          on the Vax.
  937.  
  938.                     UNKNOWN_FLOAT_FORMAT
  939.                          This code indicates any other format.
  940.  
  941.  
  942.                     The  value  of  this  macro   is   compared   with
  943.                     HOST_FLOAT_FORMAT  (see section  Config) to deter-
  944.                     mine whether the target machine has the same  for-
  945.                     mat as the host machine.  If any other formats are
  946.                     actually in use on supported machines,  new  codes
  947.                     should be defined for them.
  948.  
  949.  
  950.           1.4.  Layout of Source Language Data Types
  951.  
  952.                These macros define the sizes and other characteristics
  953.           of the standard basic data types used in programs being com-
  954.           piled.  Unlike the macros in  the  previous  section,  these
  955.           apply  to  specific  features  of  C  and related languages,
  956.           rather than to fundamental aspects of storage layout.
  957.  
  958.                INT_TYPE_SIZE
  959.                     A C expression for the size in bits  of  the  type
  960.                     int  on  the  target machine.  If you don't define
  961.                     this, the default is one word.
  962.  
  963.                SHORT_TYPE_SIZE
  964.                     A C expression for the size in bits  of  the  type
  965.                     short  on the target machine.  If you don't define
  966.                     this, the default is half a word.  (If this  would
  967.                     be less than one storage unit, it is rounded up to
  968.                     one unit.)
  969.  
  970.                LONG_TYPE_SIZE
  971.                     A C expression for the size in bits  of  the  type
  972.                     long  on  the target machine.  If you don't define
  973.                     this, the default is one word.
  974.  
  975.                LONG_LONG_TYPE_SIZE
  976.                     A C expression for the size in bits  of  the  type
  977.                     long long on the target machine.  If you don't de-
  978.                     fine this, the default is two words.
  979.  
  980.                CHAR_TYPE_SIZE
  981.                     A C expression for the size in bits  of  the  type
  982.                     char  on  the target machine.  If you don't define
  983.                     this, the default is one quarter of a  word.   (If
  984.                     this  would  be  less than one storage unit, it is
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.                     rounded up to one unit.)
  999.  
  1000.                FLOAT_TYPE_SIZE
  1001.                     A C expression for the size in bits  of  the  type
  1002.                     float  on the target machine.  If you don't define
  1003.                     this, the default is one word.
  1004.  
  1005.                DOUBLE_TYPE_SIZE
  1006.                     A C expression for the size in bits  of  the  type
  1007.                     double on the target machine.  If you don't define
  1008.                     this, the default is two words.
  1009.  
  1010.                LONG_DOUBLE_TYPE_SIZE
  1011.                     A C expression for the size in bits  of  the  type
  1012.                     long  double  on the target machine.  If you don't
  1013.                     define this, the default is two words.
  1014.  
  1015.                DEFAULT_SIGNED_CHAR
  1016.                     An expression whose value is 1 or 0, according  to
  1017.                     whether the type char should be signed or unsigned
  1018.                     by default.  The user can always override this de-
  1019.                     fault  with  the  options  `-fsigned-char'  and `-
  1020.                     funsigned-char'.
  1021.  
  1022.                DEFAULT_SHORT_ENUMS
  1023.                     A C expression to determine  whether  to  give  an
  1024.                     enum  type  only  as  many  bytes  as  it takes to
  1025.                     represent the range of  possible  values  of  that
  1026.                     type.   A  nonzero  value means to do that; a zero
  1027.                     value means all enum  types  should  be  allocated
  1028.                     like int.
  1029.  
  1030.                     If you don't define the macro, the default is 0.
  1031.  
  1032.                SIZE_TYPE
  1033.                     A C expression for a string describing the name of
  1034.                     the data type to use for size values.  The typedef
  1035.                     name size_t is defined using the contents  of  the
  1036.                     string.
  1037.  
  1038.                     The string can contain more than one keyword.   If
  1039.                     so, separate them with spaces, and write first any
  1040.                     length keyword, then unsigned if appropriate,  and
  1041.                     finally int.  The string must exactly match one of
  1042.                     the  data  type  names  defined  in  the  function
  1043.                     init_decl_processing  in the file `c-decl.c'.  You
  1044.                     may not omit int or change the order---that  would
  1045.                     cause the compiler to crash on startup.
  1046.  
  1047.                     If you don't define this  macro,  the  default  is
  1048.                     "long unsigned int".
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                PTRDIFF_TYPE
  1065.                     A C expression for a string describing the name of
  1066.                     the data type to use for the result of subtracting
  1067.                     two pointers.  The typedef name ptrdiff_t  is  de-
  1068.                     fined  using  the  contents  of  the  string.  See
  1069.                     SIZE_TYPE above for more information.
  1070.  
  1071.                     If you don't define this  macro,  the  default  is
  1072.                     "long int".
  1073.  
  1074.                WCHAR_TYPE
  1075.                     A C expression for a string describing the name of
  1076.                     the  data  type  to  use for wide characters.  The
  1077.                     typedef name wchar_t is defined using the contents
  1078.                     of  the  string.  See SIZE_TYPE above for more in-
  1079.                     formation.
  1080.  
  1081.                     If you don't define this  macro,  the  default  is
  1082.                     "int".
  1083.  
  1084.                WCHAR_TYPE_SIZE
  1085.                     A C expression for the size in bits  of  the  data
  1086.                     type  for  wide  characters.  This is used in cpp,
  1087.                     which cannot make use of WCHAR_TYPE.
  1088.  
  1089.                OBJC_INT_SELECTORS
  1090.                     Define this macro  if  the  type  of  Objective  C
  1091.                     selectors should be int.
  1092.  
  1093.                     If this  macro  is  not  defined,  then  selectors
  1094.                     should have the type struct objc_selector *.
  1095.  
  1096.                OBJC_NONUNIQUE_SELECTORS
  1097.                     Define  this  macro  if  Objective   C   selector-
  1098.                     references will be made unique by the linker (this
  1099.                     is the default).  In  this  case,  each  selector-
  1100.                     reference  will  be given a separate assembler la-
  1101.                     bel.  Otherwise, the selector-references  will  be
  1102.                     gathered into an array with a single assembler la-
  1103.                     bel.
  1104.  
  1105.                MULTIBYTE_CHARS
  1106.                     Define this macro to enable support for  multibyte
  1107.                     characters  in the input to GNU CC.  This requires
  1108.                     that the host system support the  ANSI  C  library
  1109.                     functions  for  converting multibyte characters to
  1110.                     wide characters.
  1111.  
  1112.                TARGET_BELL
  1113.                     A C constant expression for the integer value  for
  1114.                     escape sequence `\a'.
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.                TARGET_BS
  1131.  
  1132.                TARGET_TAB
  1133.  
  1134.                TARGET_NEWLINE
  1135.                     C constant expressions for the integer values  for
  1136.                     escape sequences `\b', `\t' and `\n'.
  1137.  
  1138.                TARGET_VT
  1139.  
  1140.                TARGET_FF
  1141.  
  1142.                TARGET_CR
  1143.                     C constant expressions for the integer values  for
  1144.                     escape sequences `\v', `\f' and `\r'.
  1145.  
  1146.  
  1147.           1.5.  Register Usage
  1148.  
  1149.                This section explains how to  describe  what  registers
  1150.           the  target  machine  has,  and how (in general) they can be
  1151.           used.
  1152.  
  1153.                The description of which registers a specific  instruc-
  1154.           tion  can  use  is done with register classes; see `Register
  1155.           Classes'.  For information on using registers  to  access  a
  1156.           stack  frame,  see `Frame Registers'.  For passing values in
  1157.           registers, see `Register Arguments'.  For  returning  values
  1158.           in registers, see `Scalar Return'.
  1159.  
  1160.           1.5.1.  Basic Characteristics of Registers
  1161.  
  1162.                FIRST_PSEUDO_REGISTER
  1163.                     Number of hardware registers  known  to  the  com-
  1164.                     piler.     They    receive   numbers   0   through
  1165.                     FIRST_PSEUDO_REGISTER-1; thus,  the  first  pseudo
  1166.                     register's  number  really  is assigned the number
  1167.                     FIRST_PSEUDO_REGISTER.
  1168.  
  1169.                FIXED_REGISTERS
  1170.                     An initializer that says which registers are  used
  1171.                     for  fixed  purposes  all  throughout the compiled
  1172.                     code and are therefore not available  for  general
  1173.                     allocation.    These   would   include  the  stack
  1174.                     pointer, the frame  pointer  (except  on  machines
  1175.                     where  that can be used as a general register when
  1176.                     no frame pointer is needed), the  program  counter
  1177.                     on  machines  where  that is considered one of the
  1178.                     addressable registers, and any other numbered  re-
  1179.                     gister with a standard use.
  1180.  
  1181.                     This information is expressed  as  a  sequence  of
  1182.                     numbers,  separated  by  commas  and surrounded by
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.                     braces.  The nth number is  1  if  register  n  is
  1197.                     fixed, 0 otherwise.
  1198.  
  1199.                     The table initialized from  this  macro,  and  the
  1200.                     table  initialized  by  the  following one, may be
  1201.                     overridden at run time  either  automatically,  by
  1202.                     the        actions        of       the       macro
  1203.                     CONDITIONAL_REGISTER_USAGE, or by  the  user  with
  1204.                     the  command  options `-ffixed-reg', `-fcall-used-
  1205.                     reg' and `-fcall-saved-reg'.
  1206.  
  1207.                CALL_USED_REGISTERS
  1208.                     Like FIXED_REGISTERS but has 1 for  each  register
  1209.                     that  is  clobbered (in general) by function calls
  1210.                     as well as for fixed registers.  This macro there-
  1211.                     fore  identifies the registers that are not avail-
  1212.                     able for general allocation of  values  that  must
  1213.                     live across function calls.
  1214.  
  1215.                     If a register has 0  in  CALL_USED_REGISTERS,  the
  1216.                     compiler  automatically saves it on function entry
  1217.                     and restores it on function exit, if the  register
  1218.                     is used within the function.
  1219.  
  1220.                CONDITIONAL_REGISTER_USAGE
  1221.                     Zero or more C statements that  may  conditionally
  1222.                     modify two variables fixed_regs and call_used_regs
  1223.                     (both of type char []) after they have  been  ini-
  1224.                     tialized from the two preceding macros.
  1225.  
  1226.                     This is necessary  in  case  the  fixed  or  call-
  1227.                     clobbered registers depend on target flags.
  1228.  
  1229.                     You need not define this macro if it has  no  work
  1230.                     to do.
  1231.  
  1232.                     If the usage  of  an  entire  class  of  registers
  1233.                     depends on the target flags, you may indicate this
  1234.                     to GCC by using this macro  to  modify  fixed_regs
  1235.                     and  call_used_regs to 1 for each of the registers
  1236.                     in the classes which should not be  used  by  GCC.
  1237.                     Also define the macro REG_CLASS_FROM_LETTER to re-
  1238.                     turn NO_REGS if it is called with a letter  for  a
  1239.                     class that shouldn't be used.
  1240.  
  1241.                     (However,  if  this  class  is  not  included   in
  1242.                     GENERAL_REGS  and  all  of the insn patterns whose
  1243.                     constraints permit this class  are  controlled  by
  1244.                     target switches, then GCC will automatically avoid
  1245.                     using these registers when the target switches are
  1246.                     opposed to them.)
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.                NON_SAVING_SETJMP
  1263.                     If this macro is defined and has a nonzero  value,
  1264.                     it means that setjmp and related functions fail to
  1265.                     save the registers, or that longjmp fails  to  re-
  1266.                     store  them.   To  compensate, the compiler avoids
  1267.                     putting variables in registers in  functions  that
  1268.                     use setjmp.
  1269.  
  1270.           1.5.2.  Order of Allocation of Registers
  1271.  
  1272.                REG_ALLOC_ORDER
  1273.                     If defined, an initializer for  a  vector  of  in-
  1274.                     tegers,  containing  the numbers of hard registers
  1275.                     in the order in which GNU CC should prefer to  use
  1276.                     them (from most preferred to least).
  1277.  
  1278.                     If this macro is not defined, registers  are  used
  1279.                     lowest numbered first (all else being equal).
  1280.  
  1281.                     One use of this macro is  on  machines  where  the
  1282.                     highest  numbered  registers  must always be saved
  1283.                     and the save-multiple-registers  instruction  sup-
  1284.                     ports only sequences of consecutive registers.  On
  1285.                     such machines, define REG_ALLOC_ORDER to be an in-
  1286.                     itializer that lists the highest numbered allocat-
  1287.                     able register first.
  1288.  
  1289.                ORDER_REGS_FOR_LOCAL_ALLOC
  1290.                     A C statement (sans semicolon) to choose the order
  1291.                     in  which  to  allocate hard registers for pseudo-
  1292.                     registers local to a basic block.
  1293.  
  1294.                     Store the desired order of registers in the  array
  1295.                     reg_alloc_order.  Element 0 should be the register
  1296.                     to allocate first; element 1, the  next  register;
  1297.                     and so on.
  1298.  
  1299.                     The macro body should not  assume  anything  about
  1300.                     the  contents  of reg_alloc_order before execution
  1301.                     of the macro.
  1302.  
  1303.                     On most machines, it is not  necessary  to  define
  1304.                     this macro.
  1305.  
  1306.  
  1307.           1.5.3.  How Values Fit in Registers
  1308.  
  1309.                This section discusses the macros that  describe  which
  1310.           kinds  of  values  (specifically,  which machine modes) each
  1311.           register can hold, and how many  consecutive  registers  are
  1312.           needed for a given mode.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.                HARD_REGNO_NREGS (regno, mode)
  1329.                     A C expression for the number of consecutive  hard
  1330.                     registers,  starting at register number regno, re-
  1331.                     quired to hold a value of mode mode.
  1332.  
  1333.                     On a machine where all registers are  exactly  one
  1334.                     word, a suitable definition of this macro is
  1335.  
  1336.  
  1337.                         #define HARD_REGNO_NREGS(REGNO, MODE)            \
  1338.                            ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
  1339.                             / UNITS_PER_WORD))
  1340.  
  1341.  
  1342.  
  1343.                HARD_REGNO_MODE_OK (regno, mode)
  1344.                     A C expression that is nonzero if it  is  per-
  1345.                     missible to store a value of mode mode in hard
  1346.                     register number regno (or in several registers
  1347.                     starting  with that one).  For a machine where
  1348.                     all registers are equivalent, a  suitable  de-
  1349.                     finition is
  1350.  
  1351.  
  1352.                         #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
  1353.  
  1354.  
  1355.  
  1356.                     It is not necessary for this  macro  to  check
  1357.                     for  the  numbers  of fixed registers, because
  1358.                     the allocation mechanism considers them to  be
  1359.                     always occupied.
  1360.  
  1361.                     On some machines, double-precision values must
  1362.                     be  kept  in even/odd register pairs.  The way
  1363.                     to implement that is to define this  macro  to
  1364.                     reject odd register numbers for such modes.
  1365.  
  1366.  
  1367.  
  1368.                     The minimum requirement for a mode to be OK in
  1369.                     a  register  is that the `movmode' instruction
  1370.                     pattern support moves between the register and
  1371.                     any  other hard register for which the mode is
  1372.                     OK; and that moving a value into the  register
  1373.                     and back out not alter it.
  1374.  
  1375.                     Since the same instruction used to move SImode
  1376.                     will  work  for all narrower integer modes, it
  1377.                     is  not   necessary   on   any   machine   for
  1378.                     HARD_REGNO_MODE_OK   to   distinguish  between
  1379.                     these  modes,  provided  you  define  patterns
  1380.                     `movhi',  etc.,  to  take  advantage  of this.
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.                     This is  useful  because  of  the  interaction
  1395.                     between         HARD_REGNO_MODE_OK         and
  1396.                     MODES_TIEABLE_P; it is very desirable for  all
  1397.                     integer modes to be tieable.
  1398.  
  1399.                     Many  machines  have  special  registers   for
  1400.                     floating  point  arithmetic.  Often people as-
  1401.                     sume that floating point machine modes are al-
  1402.                     lowed  only in floating point registers.  This
  1403.                     is not true.  Any registers that can hold  in-
  1404.                     tegers   can  safely  hold  a  floating  point
  1405.                     machine mode, whether or not  floating  arith-
  1406.                     metic  can  be  done on it in those registers.
  1407.                     Integer move instructions can be used to  move
  1408.                     the values.
  1409.  
  1410.                     On some  machines,  though,  the  converse  is
  1411.                     true:  fixed-point machine modes may not go in
  1412.                     floating  registers.   This  is  true  if  the
  1413.                     floating  registers normalize any value stored
  1414.                     in them, because storing a non-floating  value
  1415.                     there   would   garble   it.   In  this  case,
  1416.                     HARD_REGNO_MODE_OK should  reject  fixed-point
  1417.                     machine  modes  in floating registers.  But if
  1418.                     the floating registers  do  not  automatically
  1419.                     normalize, if you can store any bit pattern in
  1420.                     one and retrieve it unchanged without a  trap,
  1421.                     then any machine mode may go in a floating re-
  1422.                     gister and this macro should say so.
  1423.  
  1424.                     The primary significance of  special  floating
  1425.                     registers  is  rather that they are the regis-
  1426.                     ters acceptable in floating  point  arithmetic
  1427.                     instructions.   However, this is of no concern
  1428.                     to HARD_REGNO_MODE_OK.  You handle it by writ-
  1429.                     ing  the proper constraints for those instruc-
  1430.                     tions.
  1431.  
  1432.                     On some machines, the floating  registers  are
  1433.                     especially  slow  to  access,  so  that  it is
  1434.                     better to store a value in a stack frame  than
  1435.                     in such a register if floating point arithmet-
  1436.                     ic is not being done.  As long as the floating
  1437.                     registers  are not in class GENERAL_REGS, they
  1438.                     will not be used unless  some  pattern's  con-
  1439.                     straint asks for one.
  1440.  
  1441.                MODES_TIEABLE_P (mode1, mode2)
  1442.                     A C expression that is nonzero if it is desir-
  1443.                     able  to  choose  register allocation so as to
  1444.                     avoid move instructions  between  a  value  of
  1445.                     mode mode1 and a value of mode mode2.
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.                     If   HARD_REGNO_MODE_OK   (r,    mode1)    and
  1461.                     HARD_REGNO_MODE_OK  (r,  mode2)  are ever dif-
  1462.                     ferent for any r, then MODES_TIEABLE_P (mode1,
  1463.                     mode2) must be zero.
  1464.  
  1465.  
  1466.           1.5.4.  Handling Leaf Functions
  1467.  
  1468.                On some machines, a leaf function (i.e., one which make
  1469.           no  calls)  can run more efficiently if it does not make its
  1470.           own register window.  Often this means  it  is  required  to
  1471.           receive its arguments in the registers where they are passed
  1472.           by the caller, instead of the  registers  where  they  would
  1473.           normally arrive.  Also, the leaf function may use only those
  1474.           registers for its own variables and temporaries.
  1475.  
  1476.                GNU CC assigns register numbers before it knows whether
  1477.           the function is suitable for leaf function treatment.  So it
  1478.           needs to renumber the registers in order to  output  a  leaf
  1479.           function.  The following macros accomplish this.
  1480.  
  1481.                LEAF_REGISTERS
  1482.                     A C initializer for a vector, indexed by hard  re-
  1483.                     gister  number,  which  contains  1 for a register
  1484.                     that is allowable in a candidate for leaf function
  1485.                     treatment.
  1486.  
  1487.                     If leaf function  treatment  involves  renumbering
  1488.                     the  registers,  then  the  registers  marked here
  1489.                     should be the ones before renumbering---those that
  1490.                     GNU  CC  would ordinarily allocate.  The registers
  1491.                     which will actually be used in the assembler code,
  1492.                     after  renumbering, should not be marked with 1 in
  1493.                     this vector.
  1494.  
  1495.                     Define this  macro  only  if  the  target  machine
  1496.                     offers  a  way  to  optimize the treatment of leaf
  1497.                     functions.
  1498.  
  1499.                LEAF_REG_REMAP (regno)
  1500.                     A C expression whose value is the register  number
  1501.                     to  which regno should be renumbered, when a func-
  1502.                     tion is treated as a leaf function.
  1503.  
  1504.                     If regno is a register number which should not ap-
  1505.                     pear  in  a leaf function before renumbering, then
  1506.                     the expression should yield -1, which  will  cause
  1507.                     the compiler to abort.
  1508.  
  1509.                     Define this  macro  only  if  the  target  machine
  1510.                     offers  a  way  to  optimize the treatment of leaf
  1511.                     functions, and registers need to be renumbered  to
  1512.                     do this.
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.                REG_LEAF_ALLOC_ORDER
  1527.                     If defined, an initializer for  a  vector  of  in-
  1528.                     tegers,  containing  the numbers of hard registers
  1529.                     in the order in which the GNU CC should prefer  to
  1530.                     use  them (from most preferred to least) in a leaf
  1531.                     function.   If  this   macro   is   not   defined,
  1532.                     REG_ALLOC_ORDER  is  used  for  both  non-leaf and
  1533.                     leaf-functions.
  1534.  
  1535.  
  1536.                Normally, it is  necessary  for  FUNCTION_PROLOGUE  and
  1537.           FUNCTION_EPILOGUE  to treat leaf functions specially.  The C
  1538.           variable leaf_function is nonzero for such a function.
  1539.  
  1540.           1.5.5.  Registers That Form a Stack
  1541.  
  1542.                There are special features to  handle  computers  where
  1543.           some  of  the  ``registers''  form  a stack, as in the 80387
  1544.           coprocessor for the 80386.   Stack  registers  are  normally
  1545.           written by pushing onto the stack, and are numbered relative
  1546.           to the top of the stack.
  1547.  
  1548.                Currently, GNU CC can only handle one group  of  stack-
  1549.           like registers, and they must be consecutively numbered.
  1550.  
  1551.                STACK_REGS
  1552.                     Define this if the machine has any stack-like  re-
  1553.                     gisters.
  1554.  
  1555.                FIRST_STACK_REG
  1556.                     The number of the first stack-like register.  This
  1557.                     one is the top of the stack.
  1558.  
  1559.                LAST_STACK_REG
  1560.                     The number of the last stack-like register.   This
  1561.                     one is the bottom of the stack.
  1562.  
  1563.  
  1564.           1.5.6.  Obsolete Macros for Controlling Register Usage
  1565.  
  1566.                These features do  not  work  very  well.   They  exist
  1567.           because  they  used  to be required to generate correct code
  1568.           for the 80387 coprocessor of the 80386.  They are no  longer
  1569.           used  by  that  machine  description and may be removed in a
  1570.           later version of the compiler.  Don't use them!
  1571.  
  1572.                OVERLAPPING_REGNO_P (regno)
  1573.                     If defined, this is a C expression whose value  is
  1574.                     nonzero  if hard register number regno is an over-
  1575.                     lapping register.   This  means  a  hard  register
  1576.                     which  overlaps  a  hard register with a different
  1577.                     number.  (Such overlap is undesirable,  but  occa-
  1578.                     sionally it allows a machine to be supported which
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.                     otherwise could not be.)  This macro  must  return
  1593.                     nonzero  for  all the registers which overlap each
  1594.                     other.  GNU CC can  use  an  overlapping  register
  1595.                     only  in certain limited ways.  It can be used for
  1596.                     allocation  within  a  basic  block,  and  may  be
  1597.                     spilled for reloading; that is all.
  1598.  
  1599.                     If this macro is not defined, it means  that  none
  1600.                     of the hard registers overlap each other.  This is
  1601.                     the usual situation.
  1602.  
  1603.                INSN_CLOBBERS_REGNO_P (insn, regno)
  1604.                     If defined, this is a  C  expression  whose  value
  1605.                     should  be nonzero if the insn insn has the effect
  1606.                     of mysteriously clobbering the  contents  of  hard
  1607.                     register  number regno.  By ``mysterious'' we mean
  1608.                     that the insn's RTL  expression  doesn't  describe
  1609.                     such an effect.
  1610.  
  1611.                     If this macro is not defined,  it  means  that  no
  1612.                     insn clobbers registers mysteriously.  This is the
  1613.                     usual situation; all else being equal, it is  best
  1614.                     for the RTL expression to show all the activity.
  1615.  
  1616.                PRESERVE_DEATH_INFO_REGNO_P (regno)
  1617.                     If defined, this is a C expression whose value  is
  1618.                     nonzero  if accurate REG_DEAD notes are needed for
  1619.                     hard register number regno at the time of  output-
  1620.                     ting  the  assembler code.  When this is so, a few
  1621.                     optimizations that take place after register allo-
  1622.                     cation  and  could  invalidate the death notes are
  1623.                     not done when this register is involved.
  1624.  
  1625.                     You would arrange to preserve death info for a re-
  1626.                     gister  when  some  of  the  code  in  the machine
  1627.                     description which is executed to write the  assem-
  1628.                     bler  code  looks  at  the  death  notes.  This is
  1629.                     necessary only when the  actual  hardware  feature
  1630.                     which  GNU CC thinks of as a register is not actu-
  1631.                     ally a register of the usual sort.  (It might, for
  1632.                     example, be a hardware stack.)
  1633.  
  1634.                     If this macro is not defined,  it  means  that  no
  1635.                     death  notes  need  to  be preserved.  This is the
  1636.                     usual situation.
  1637.  
  1638.  
  1639.           1.6.  Register Classes
  1640.  
  1641.                On many machines, the numbered registers  are  not  all
  1642.           equivalent.   For  example,  certain  registers  may  not be
  1643.           allowed for indexed addressing; certain registers may not be
  1644.           allowed  in  some  instructions.  These machine restrictions
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.           are described to the compiler using register classes.
  1659.  
  1660.                You define a number of register  classes,  giving  each
  1661.           one  a  name and saying which of the registers belong to it.
  1662.           Then you can specify register classes that  are  allowed  as
  1663.           operands to particular instruction patterns.
  1664.  
  1665.                In  general,  each  register  will  belong  to  several
  1666.           classes.  In fact, one class must be named ALL_REGS and con-
  1667.           tain all the registers.  Another class must be named NO_REGS
  1668.           and  contain  no  registers.  Often the union of two classes
  1669.           will be another class; however, this is not required.
  1670.  
  1671.                One of the classes must be named  GENERAL_REGS.   There
  1672.           is  nothing terribly special about the name, but the operand
  1673.           constraint letters `r'  and  `g'  specify  this  class.   If
  1674.           GENERAL_REGS  is  the  same as ALL_REGS, just define it as a
  1675.           macro which expands to ALL_REGS.
  1676.  
  1677.                Order the classes so that if class x  is  contained  in
  1678.           class y then x has a lower class number than y.
  1679.  
  1680.                The way classes other than GENERAL_REGS  are  specified
  1681.           in  operand constraints is through machine-dependent operand
  1682.           constraint  letters.   You  can  define  such   letters   to
  1683.           correspond to various classes, then use them in operand con-
  1684.           straints.
  1685.  
  1686.                You should define a class for the union of two  classes
  1687.           whenever some instruction allows both classes.  For example,
  1688.           if an instruction allows either a floating point  (coproces-
  1689.           sor)  register  or a general register for a certain operand,
  1690.           you  should  define  a  class  FLOAT_OR_GENERAL_REGS   which
  1691.           includes  both  of  them.  Otherwise you will get suboptimal
  1692.           code.
  1693.  
  1694.                You must also  specify  certain  redundant  information
  1695.           about  the  register  classes: for each class, which classes
  1696.           contain it and which ones are contained in it; for each pair
  1697.           of classes, the largest class contained in their union.
  1698.  
  1699.                When a value occupying several consecutive registers is
  1700.           expected  in  a  certain  class, all the registers used must
  1701.           belong to that class.  Therefore, register classes cannot be
  1702.           used  to  enforce a requirement for a register pair to start
  1703.           with an even-numbered register.  The  way  to  specify  this
  1704.           requirement is with HARD_REGNO_MODE_OK.
  1705.  
  1706.                Register classes used for input-operands of bitwise-and
  1707.           or  shift instructions have a special requirement: each such
  1708.           class must have, for each fixed-point machine mode,  a  sub-
  1709.           class  whose  registers  can  transfer  that mode to or from
  1710.           memory.  For example, on some machines, the  operations  for
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.           single-byte  values  (QImode)  are limited to certain regis-
  1725.           ters.  When this is so, each register class that is used  in
  1726.           a bitwise-and or shift instruction must have a subclass con-
  1727.           sisting of registers from which single-byte  values  can  be
  1728.           loaded  or  stored.   This is so that PREFERRED_RELOAD_CLASS
  1729.           can always have a possible value to return.
  1730.  
  1731.                enum reg_class
  1732.                     An enumeral type that must be defined with all the
  1733.                     register  class names as enumeral values.  NO_REGS
  1734.                     must be first.  ALL_REGS must be the last register
  1735.                     class,   followed  by  one  more  enumeral  value,
  1736.                     LIM_REG_CLASSES, which is not a register class but
  1737.                     rather tells how many classes there are.
  1738.  
  1739.                     Each register class has a  number,  which  is  the
  1740.                     value  of casting the class name to type int.  The
  1741.                     number serves as an index in many  of  the  tables
  1742.                     described below.
  1743.  
  1744.                N_REG_CLASSES
  1745.                     The number of distinct register  classes,  defined
  1746.                     as follows:
  1747.  
  1748.  
  1749.                         #define N_REG_CLASSES (int) LIM_REG_CLASSES
  1750.  
  1751.  
  1752.  
  1753.                REG_CLASS_NAMES
  1754.                     An initializer containing the names of the re-
  1755.                     gister  classes  as C string constants.  These
  1756.                     names are used in writing some of  the  debug-
  1757.                     ging dumps.
  1758.  
  1759.                REG_CLASS_CONTENTS
  1760.                     An initializer containing the contents of  the
  1761.                     register  classes,  as  integers which are bit
  1762.                     masks.  The nth integer specifies the contents
  1763.                     of  class  n.  The way the integer mask is in-
  1764.                     terpreted is that register r is in  the  class
  1765.                     if mask & (1 << r) is 1.
  1766.  
  1767.                     When the machine has more than  32  registers,
  1768.                     an  integer  does  not  suffice.  Then the in-
  1769.                     tegers  are  replaced   by   sub-initializers,
  1770.                     braced  groupings containing several integers.
  1771.                     Each sub-initializer must be  suitable  as  an
  1772.                     initializer for the type HARD_REG_SET which is
  1773.                     defined in `hard-reg-set.h'.
  1774.  
  1775.                REGNO_REG_CLASS (regno)
  1776.                     A C expression whose value is a register class
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.                     containing  hard  register  regno.  In general
  1791.                     there is more that one such  class;  choose  a
  1792.                     class which is minimal, meaning that no small-
  1793.                     er class also contains the register.
  1794.  
  1795.                BASE_REG_CLASS
  1796.                     A macro whose definition is the  name  of  the
  1797.                     class  to which a valid base register must be-
  1798.                     long.  A base register is one used in  an  ad-
  1799.                     dress  which is the register value plus a dis-
  1800.                     placement.
  1801.  
  1802.                INDEX_REG_CLASS
  1803.                     A macro whose definition is the  name  of  the
  1804.                     class to which a valid index register must be-
  1805.                     long.  An index register is one used in an ad-
  1806.                     dress  where its value is either multiplied by
  1807.                     a scale factor or added  to  another  register
  1808.                     (as well as added to a displacement).
  1809.  
  1810.                REG_CLASS_FROM_LETTER (char)
  1811.                     A C  expression  which  defines  the  machine-
  1812.                     dependent  operand  constraint letters for re-
  1813.                     gister classes.  If char is such a letter, the
  1814.                     value should be the register class correspond-
  1815.                     ing to it.  Otherwise,  the  value  should  be
  1816.                     NO_REGS.
  1817.  
  1818.                REGNO_OK_FOR_BASE_P (num)
  1819.                     A C expression which is  nonzero  if  register
  1820.                     number  num  is suitable for use as a base re-
  1821.                     gister in operand addresses.  It may be either
  1822.                     a  suitable hard register or a pseudo register
  1823.                     that has been allocated such a hard register.
  1824.  
  1825.                REGNO_OK_FOR_INDEX_P (num)
  1826.                     A C expression which is  nonzero  if  register
  1827.                     number num is suitable for use as an index re-
  1828.                     gister in operand addresses.  It may be either
  1829.                     a  suitable hard register or a pseudo register
  1830.                     that has been allocated such a hard register.
  1831.  
  1832.                     The difference between an index register and a
  1833.                     base  register  is that the index register may
  1834.                     be scaled.  If an address involves the sum  of
  1835.                     two  registers,  neither  one  of them scaled,
  1836.                     then either one may be  labeled  the  ``base''
  1837.                     and the other the ``index''; but whichever la-
  1838.                     beling is used must  fit  the  machine's  con-
  1839.                     straints  of which registers may serve in each
  1840.                     capacity.  The compiler will try  both  label-
  1841.                     ings,  looking for one that is valid, and will
  1842.                     reload one or both registers only  if  neither
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.                     labeling works.
  1857.  
  1858.                PREFERRED_RELOAD_CLASS (x, class)
  1859.                     A C expression that places additional restric-
  1860.                     tions  on the register class to use when it is
  1861.                     necessary to copy value x into a  register  in
  1862.                     class  class.   The value is a register class;
  1863.                     perhaps class,  or  perhaps  another,  smaller
  1864.                     class.  On many machines, the definition
  1865.  
  1866.  
  1867.                         #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
  1868.  
  1869.  
  1870.  
  1871.                is safe.
  1872.  
  1873.                     Sometimes returning a more  restrictive  class
  1874.                     makes better code.  For example, on the 68000,
  1875.                     when x is an integer constant that is in range
  1876.                     for  a  `moveq' instruction, the value of this
  1877.                     macro is always DATA_REGS as long as class in-
  1878.                     cludes  the  data registers.  Requiring a data
  1879.                     register guarantees that  a  `moveq'  will  be
  1880.                     used.
  1881.  
  1882.                     If x is a const_double, by  returning  NO_REGS
  1883.                     you  can force x into a memory constant.  This
  1884.                     is useful on certain machines where  immediate
  1885.                     floating  values cannot be loaded into certain
  1886.                     kinds of registers.
  1887.  
  1888.                LIMIT_RELOAD_CLASS (mode, class)
  1889.                     A C expression that places additional restric-
  1890.                     tions  on the register class to use when it is
  1891.                     necessary to be able to hold a value  of  mode
  1892.                     mode  in  a  reload  register  for which class
  1893.                     class would ordinarily be used.
  1894.  
  1895.                     Unlike  PREFERRED_RELOAD_CLASS,   this   macro
  1896.                     should  be  used  when there are certain modes
  1897.                     that  simply  can't  go  in   certain   reload
  1898.                     classes.
  1899.  
  1900.                     The value is a register class; perhaps  class,
  1901.                     or perhaps another, smaller class.
  1902.  
  1903.                     Don't define  this  macro  unless  the  target
  1904.                     machine has limitations which require the mac-
  1905.                     ro to do something nontrivial.
  1906.  
  1907.                SECONDARY_RELOAD_CLASS (class, mode, x)
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.                SECONDARY_INPUT_RELOAD_CLASS (class, mode, x)
  1923.  
  1924.                SECONDARY_OUTPUT_RELOAD_CLASS (class, mode, x)
  1925.                     Many machines have some registers that  cannot
  1926.                     be  copied  directly to or from memory or even
  1927.                     from other types of registers.  An example  is
  1928.                     the `MQ' register, which on most machines, can
  1929.                     only be copied to or from  general  registers,
  1930.                     but  not  memory.  Some machines allow copying
  1931.                     all registers to and from memory, but  require
  1932.                     a  scratch  register for stores to some memory
  1933.                     locations (e.g., those with  symbolic  address
  1934.                     on the RT, and those with certain symbolic ad-
  1935.                     dress on the Sparc when  compiling  PIC).   In
  1936.                     some cases, both an intermediate and a scratch
  1937.                     register are required.
  1938.  
  1939.                     You should define these macros to indicate  to
  1940.                     the  reload phase that it may need to allocate
  1941.                     at least one register for a reload in addition
  1942.                     to the register to contain the data.  Specifi-
  1943.                     cally, if copying x to  a  register  class  in
  1944.                     mode  requires  an  intermediate register, you
  1945.                     should define SECONDARY_INPUT_RELOAD_CLASS  to
  1946.                     return the largest register class all of whose
  1947.                     registers can be used as  intermediate  regis-
  1948.                     ters or scratch registers.
  1949.  
  1950.                     If copying a register class in mode to  x  re-
  1951.                     quires  an  intermediate  or scratch register,
  1952.                     you               should                define
  1953.                     SECONDARY_OUTPUT_RELOAD_CLASS  to  return  the
  1954.                     largest register class required.  If  the  re-
  1955.                     quirements  for  input  and output reloads are
  1956.                     the  same,  the  macro  SECONDARY_RELOAD_CLASS
  1957.                     should be used instead of defining both macros
  1958.                     identically.
  1959.  
  1960.                     The values returned by these macros are  often
  1961.                     GENERAL_REGS.   Return NO_REGS if no spare re-
  1962.                     gister is needed; i.e., if x can  be  directly
  1963.                     copied  to or from a register of class in mode
  1964.                     without requiring a scratch register.  Do  not
  1965.                     define  this  macro  if it would always return
  1966.                     NO_REGS.
  1967.  
  1968.                     If a scratch register is required (either with
  1969.                     or  without  an  intermediate  register),  you
  1970.                     should define  patterns  for  `reload_inm'  or
  1971.                     `reload_outm', as required (see section  Stan-
  1972.                     dard Names.  These patterns, which  will  nor-
  1973.                     mally  be  implemented  with  a define_expand,
  1974.                     should be similar to the `movm' patterns,  ex-
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.                     cept that operand 2 is the scratch register.
  1989.  
  1990.                     Define constraints for the reload register and
  1991.                     scratch  register that contain a single regis-
  1992.                     ter class.  If the  original  reload  register
  1993.                     (whose class is class) can meet the constraint
  1994.                     given in the pattern, the  value  returned  by
  1995.                     these  macros  is  used  for  the class of the
  1996.                     scratch register.  Otherwise,  two  additional
  1997.                     reload  registers are required.  Their classes
  1998.                     are obtained from the constraints in the  insn
  1999.                     pattern.
  2000.  
  2001.                     x might be a pseudo-register or a subreg of  a
  2002.                     pseudo-register,  which  could  either be in a
  2003.                     hard register or in memory.   Use  true_regnum
  2004.                     to  find  out; it will return -1 if the pseudo
  2005.                     is in memory and the hard register  number  if
  2006.                     it is in a register.
  2007.  
  2008.                     These macros should not be used  in  the  case
  2009.                     where a particular class of registers can only
  2010.                     be copied to memory and not to  another  class
  2011.                     of  registers.  In that case, secondary reload
  2012.                     registers are not  needed  and  would  not  be
  2013.                     helpful.   Instead,  a  stack location must be
  2014.                     used to perform the copy and the movm  pattern
  2015.                     should  use  memory as a intermediate storage.
  2016.                     This case often occurs between  floating-point
  2017.                     and general registers.
  2018.  
  2019.                SMALL_REGISTER_CLASSES
  2020.                     Normally  the  compiler  will  avoid  choosing
  2021.                     spill  registers from registers that have been
  2022.                     explicitly mentioned in the rtl (these  regis-
  2023.                     ters  are  normally those used to pass parame-
  2024.                     ters  and  return  values).    However,   some
  2025.                     machines  have  so  few  registers  of certain
  2026.                     classes that there would not be enough  regis-
  2027.                     ters  to  use  as spill registers if this were
  2028.                     done.
  2029.  
  2030.                     On   those   machines,   you   should   define
  2031.                     SMALL_REGISTER_CLASSES.   When  it is defined,
  2032.                     the compiler allows registers explicitly  used
  2033.                     in  the  rtl to be used as spill registers but
  2034.                     prevents the compiler from extending the life-
  2035.                     time of these registers.
  2036.  
  2037.                     Defining this macro is always  safe,  but  un-
  2038.                     necessarily  defining  this  macro will reduce
  2039.                     the amount of optimizations that can  be  per-
  2040.                     formed  in  some  cases.  If this macro is not
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.                     defined but needs to be, the compiler will run
  2055.                     out  of reload registers and print a fatal er-
  2056.                     ror message.
  2057.  
  2058.                     For most machines, this macro  should  not  be
  2059.                     defined.
  2060.  
  2061.                CLASS_MAX_NREGS (class, mode)
  2062.                     A C expression for the maximum number of  con-
  2063.                     secutive  registers  of  class class needed to
  2064.                     hold a value of mode mode.
  2065.  
  2066.                     This  is  closely   related   to   the   macro
  2067.                     HARD_REGNO_NREGS.   In  fact, the value of the
  2068.                     macro CLASS_MAX_NREGS (class, mode) should  be
  2069.                     the  maximum value of HARD_REGNO_NREGS (regno,
  2070.                     mode) for all regno values in the class class.
  2071.  
  2072.                     This  macro  helps  control  the  handling  of
  2073.                     multiple-word values in the reload pass.
  2074.  
  2075.  
  2076.                Three other special macros describe which operands  fit
  2077.           which constraint letters.
  2078.  
  2079.                CONST_OK_FOR_LETTER_P (value, c)
  2080.                     A C expression that defines the  machine-dependent
  2081.                     operand constraint letters that specify particular
  2082.                     ranges of integer values.  If c is  one  of  those
  2083.                     letters,  the  expression should check that value,
  2084.                     an integer, is in the appropriate range and return
  2085.                     1  if  so,  0 otherwise.  If c is not one of those
  2086.                     letters, the  value  should  be  0  regardless  of
  2087.                     value.
  2088.  
  2089.                CONST_DOUBLE_OK_FOR_LETTER_P (value, c)
  2090.                     A C expression that defines the  machine-dependent
  2091.                     operand constraint letters that specify particular
  2092.                     ranges of const_double values.
  2093.  
  2094.                     If c is  one  of  those  letters,  the  expression
  2095.                     should   check   that   value,   an  RTX  of  code
  2096.                     const_double, is in the appropriate range and  re-
  2097.                     turn  1  if  so,  0 otherwise.  If c is not one of
  2098.                     those letters, the value should be 0 regardless of
  2099.                     value.
  2100.  
  2101.                     const_double is used for all  floating-point  con-
  2102.                     stants  and  for  DImode fixed-point constants.  A
  2103.                     given letter can accept either or  both  kinds  of
  2104.                     values.    It  can  use  GET_MODE  to  distinguish
  2105.                     between these kinds.
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.                EXTRA_CONSTRAINT (value, c)
  2121.                     A C expression that defines the optional  machine-
  2122.                     dependent  constraint  letters that can be used to
  2123.                     segregate  specific  types  of  operands,  usually
  2124.                     memory  references,  for the target machine.  Nor-
  2125.                     mally this macro will not be defined.   If  it  is
  2126.                     required  for  a  particular  target  machine,  it
  2127.                     should  return  1  if  value  corresponds  to  the
  2128.                     operand  type represented by the constraint letter
  2129.                     c.  If c is not defined as  an  extra  constraint,
  2130.                     the  value  returned  should  be  0  regardless of
  2131.                     value.
  2132.  
  2133.                     For example, on the ROMP, load instructions cannot
  2134.                     have  their  output  in r0 if the memory reference
  2135.                     contains a symbolic  address.   Constraint  letter
  2136.                     `Q'  is  defined  as representing a memory address
  2137.                     that does not contain a symbolic address.  An  al-
  2138.                     ternative  is  specified  with a `Q' constraint on
  2139.                     the input and `r' on the output.  The next  alter-
  2140.                     native  specifies  `m' on the input and a register
  2141.                     class that does not include r0 on the output.
  2142.  
  2143.  
  2144.           1.7.  Describing Stack Layout and Calling Conventions
  2145.  
  2146.           1.7.1.  Basic Stack Layout
  2147.  
  2148.                STACK_GROWS_DOWNWARD
  2149.                     Define this macro if pushing a word onto the stack
  2150.                     moves the stack pointer to a smaller address.
  2151.  
  2152.                     When we say, ``define  this  macro  if  ...,''  it
  2153.                     means  that  the  compiler  checks this macro only
  2154.                     with #ifdef so the precise  definition  used  does
  2155.                     not matter.
  2156.  
  2157.                FRAME_GROWS_DOWNWARD
  2158.                     Define this macro if the addresses of local  vari-
  2159.                     able  slots are at negative offsets from the frame
  2160.                     pointer.
  2161.  
  2162.                ARGS_GROW_DOWNWARD
  2163.                     Define this macro if  successive  arguments  to  a
  2164.                     function occupy decreasing addresses on the stack.
  2165.  
  2166.                STARTING_FRAME_OFFSET
  2167.                     Offset from the frame pointer to the  first  local
  2168.                     variable slot to be allocated.
  2169.  
  2170.                     If FRAME_GROWS_DOWNWARD, the next slot's offset is
  2171.                     found  by subtracting the length of the first slot
  2172.                     from  STARTING_FRAME_OFFSET.   Otherwise,  it   is
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.                     found  by  adding  the length of the first slot to
  2187.                     the value STARTING_FRAME_OFFSET.
  2188.  
  2189.                STACK_POINTER_OFFSET
  2190.                     Offset from the  stack  pointer  register  to  the
  2191.                     first  location  at  which  outgoing arguments are
  2192.                     placed.  If not specified, the  default  value  of
  2193.                     zero  is  used.  This is the proper value for most
  2194.                     machines.
  2195.  
  2196.                     If ARGS_GROW_DOWNWARD, this is the offset  to  the
  2197.                     location  above the first location at which outgo-
  2198.                     ing arguments are placed.
  2199.  
  2200.                FIRST_PARM_OFFSET (fundecl)
  2201.                     Offset from the argument pointer register  to  the
  2202.                     first argument's address.  On some machines it may
  2203.                     depend on the data type of the function.
  2204.  
  2205.                     If ARGS_GROW_DOWNWARD, this is the offset  to  the
  2206.                     location above the first argument's address.
  2207.  
  2208.                STACK_DYNAMIC_OFFSET (fundecl)
  2209.                     Offset from the stack pointer register to an  item
  2210.                     dynamically allocated on the stack, e.g., by allo-
  2211.                     ca.
  2212.  
  2213.                     The   default   value   for    this    macro    is
  2214.                     STACK_POINTER_OFFSET plus the length of the outgo-
  2215.                     ing arguments.  The default is  correct  for  most
  2216.                     machines.  See `function.c' for details.
  2217.  
  2218.                DYNAMIC_CHAIN_ADDRESS (frameaddr)
  2219.                     A C expression whose value is RTL representing the
  2220.                     address  in a stack frame where the pointer to the
  2221.                     caller's frame is stored.  Assume  that  frameaddr
  2222.                     is  an RTL expression for the address of the stack
  2223.                     frame itself.
  2224.  
  2225.                     If you don't define this macro, the default is  to
  2226.                     return the value of frameaddr---that is, the stack
  2227.                     frame address is also the  address  of  the  stack
  2228.                     word that points to the previous frame.
  2229.  
  2230.  
  2231.           1.7.2.  Registers That Address the Stack Frame
  2232.  
  2233.                STACK_POINTER_REGNUM
  2234.                     The register number of the stack pointer register,
  2235.                     which  must  also be a fixed register according to
  2236.                     FIXED_REGISTERS.  On most machines,  the  hardware
  2237.                     determines which register this is.
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.                FRAME_POINTER_REGNUM
  2253.                     The register number of the frame pointer register,
  2254.                     which is used to access automatic variables in the
  2255.                     stack  frame.   On  some  machines,  the  hardware
  2256.                     determines  which  register  this  is.   On  other
  2257.                     machines, you can choose any register you wish for
  2258.                     this purpose.
  2259.  
  2260.                ARG_POINTER_REGNUM
  2261.                     The register number of the arg  pointer  register,
  2262.                     which  is  used  to access the function's argument
  2263.                     list.  On some machines, this is the same  as  the
  2264.                     frame  pointer  register.   On  some machines, the
  2265.                     hardware determines which register  this  is.   On
  2266.                     other  machines,  you  can choose any register you
  2267.                     wish for this purpose.  If this is  not  the  same
  2268.                     register  as  the frame pointer register, then you
  2269.                     must mark it as  a  fixed  register  according  to
  2270.                     FIXED_REGISTERS,  or  arrange  to be able to elim-
  2271.                     inate it (see section  Elimination).
  2272.  
  2273.                STATIC_CHAIN_REGNUM
  2274.  
  2275.                STATIC_CHAIN_INCOMING_REGNUM
  2276.                     Register numbers used  for  passing  a  function's
  2277.                     static  chain  pointer.   If  register windows are
  2278.                     used, STATIC_CHAIN_INCOMING_REGNUM is the register
  2279.                     number  as  seen  by  the  called  function, while
  2280.                     STATIC_CHAIN_REGNUM is the register number as seen
  2281.                     by  the  calling function.  If these registers are
  2282.                     the same, STATIC_CHAIN_INCOMING_REGNUM need not be
  2283.                     defined.
  2284.  
  2285.                     The static chain register need not be a fixed  re-
  2286.                     gister.
  2287.  
  2288.                     If the static chain is  passed  in  memory,  these
  2289.                     macros  should  not  be defined; instead, the next
  2290.                     two macros should be defined.
  2291.  
  2292.                STATIC_CHAIN
  2293.  
  2294.                STATIC_CHAIN_INCOMING
  2295.                     If the static chain is  passed  in  memory,  these
  2296.                     macros  provide  rtx  giving  mem expressions that
  2297.                     denote where they are  stored.   STATIC_CHAIN  and
  2298.                     STATIC_CHAIN_INCOMING  give  the locations as seen
  2299.                     by the calling and called functions, respectively.
  2300.                     Often  the  former  will  be at an offset from the
  2301.                     stack pointer and the latter at an offset from the
  2302.                     frame pointer.
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.                     The          variables          stack_pointer_rtx,
  2319.                     frame_pointer_rtx,  and  arg_pointer_rtx will have
  2320.                     been initialized prior to the use of these  macros
  2321.                     and should be used to refer to those items.
  2322.  
  2323.                     If the static chain is passed in a  register,  the
  2324.                     two previous macros should be defined instead.
  2325.  
  2326.  
  2327.           1.7.3.  Eliminating Frame Pointer and Arg Pointer
  2328.  
  2329.                FRAME_POINTER_REQUIRED
  2330.                     A C expression which is nonzero if a function must
  2331.                     have  and use a frame pointer.  This expression is
  2332.                     evaluated  in the reload pass.  If  its  value  is
  2333.                     nonzero the function will have a frame pointer.
  2334.  
  2335.                     The  expression  can  in  principle  examine   the
  2336.                     current  function  and  decide  according  to  the
  2337.                     facts, but on most machines the constant 0 or  the
  2338.                     constant  1  suffices.  Use 0 when the machine al-
  2339.                     lows code to be generated with no  frame  pointer,
  2340.                     and doing so saves some time or space.  Use 1 when
  2341.                     there is no possible advantage to avoiding a frame
  2342.                     pointer.
  2343.  
  2344.                     In certain cases, the compiler does not  know  how
  2345.                     to  produce  valid  code  without a frame pointer.
  2346.                     The compiler recognizes those cases and  automati-
  2347.                     cally  gives  the function a frame pointer regard-
  2348.                     less of  what  FRAME_POINTER_REQUIRED  says.   You
  2349.                     don't need to worry about them.
  2350.  
  2351.                     In a  function  that  does  not  require  a  frame
  2352.                     pointer,  the  frame pointer register can be allo-
  2353.                     cated for ordinary usage, unless you mark it as  a
  2354.                     fixed  register.  See FIXED_REGISTERS for more in-
  2355.                     formation.
  2356.  
  2357.                     This macro is ignored and need not be  defined  if
  2358.                     ELIMINABLE_REGS is defined.
  2359.  
  2360.                INITIAL_FRAME_POINTER_OFFSET (depth-var)
  2361.                     A C statement to store in the  variable  depth-var
  2362.                     the  difference  between the frame pointer and the
  2363.                     stack pointer values immediately after  the  func-
  2364.                     tion  prologue.   The value would be computed from
  2365.                     information such as the result  of  get_frame_size
  2366.                     ()  and the tables of registers regs_ever_live and
  2367.                     call_used_regs.
  2368.  
  2369.                     If ELIMINABLE_REGS is defined, this macro will  be
  2370.                     not  be  used and need not be defined.  Otherwise,
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.                     it must be defined even if  FRAME_POINTER_REQUIRED
  2385.                     is  defined  to  always be true; in that case, you
  2386.                     may set depth-var to anything.
  2387.  
  2388.                ELIMINABLE_REGS
  2389.                     If defined, this macro specifies a table of regis-
  2390.                     ter  pairs  used  to  eliminate unneeded registers
  2391.                     that point into the stack frame.  If it is not de-
  2392.                     fined,  the only elimination attempted by the com-
  2393.                     piler  is  to  replace  references  to  the  frame
  2394.                     pointer with references to the stack pointer.
  2395.  
  2396.                     The definition of this macro is a list  of  struc-
  2397.                     ture  initializations,  each of which specifies an
  2398.                     original and replacement register.
  2399.  
  2400.                     On some machines, the  position  of  the  argument
  2401.                     pointer is not known until the compilation is com-
  2402.                     pleted.  In such a case, a separate hard  register
  2403.                     must  be  used for the argument pointer.  This re-
  2404.                     gister can be eliminated by replacing it with  ei-
  2405.                     ther  the  frame  pointer or the argument pointer,
  2406.                     depending on whether or not the frame pointer  has
  2407.                     been eliminated.
  2408.  
  2409.                     In this case, you might specify:
  2410.  
  2411.  
  2412.                         #define ELIMINABLE_REGS  \
  2413.                         {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
  2414.                          {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
  2415.                          {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
  2416.  
  2417.  
  2418.  
  2419.                     Note that  the  elimination  of  the  argument
  2420.                     pointer  with  the  stack pointer is specified
  2421.                     first since that is the preferred elimination.
  2422.  
  2423.                CAN_ELIMINATE (from-reg, to-reg)
  2424.                     A C expression that returns  non-zero  if  the
  2425.                     compiler is allowed to try to replace register
  2426.                     number from-reg with register  number  to-reg.
  2427.                     This   macro   need   only   be   defined   if
  2428.                     ELIMINABLE_REGS is defined, and  will  usually
  2429.                     be  the  constant  1,  since most of the cases
  2430.                     preventing  register  elimination  are  things
  2431.                     that the compiler already knows about.
  2432.  
  2433.                INITIAL_ELIMINATION_OFFSET (from-reg, to-
  2434.                     reg, offset-var)
  2435.                     This      macro      is       similar       to
  2436.                     INITIAL_FRAME_POINTER_OFFSET.    It  specifies
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.                     the initial difference between  the  specified
  2451.                     pair of registers.  This macro must be defined
  2452.                     if ELIMINABLE_REGS is defined.
  2453.  
  2454.                LONGJMP_RESTORE_FROM_STACK
  2455.                     Define this macro if the longjmp function  re-
  2456.                     stores registers from the stack frames, rather
  2457.                     than from those saved specifically by  setjmp.
  2458.                     Certain  quantities must not be kept in regis-
  2459.                     ters across a call to setjmp on such machines.
  2460.  
  2461.  
  2462.           1.7.4.  Passing Function Arguments on the Stack
  2463.  
  2464.                The macros in this section control  how  arguments  are
  2465.           passed  on  the  stack.  See the following section for other
  2466.           macros that control passing certain arguments in registers.
  2467.  
  2468.                PROMOTE_PROTOTYPES
  2469.                     Define this macro if an argument declared as  char
  2470.                     or  short in a prototype should actually be passed
  2471.                     as an int.  In addition to avoiding errors in cer-
  2472.                     tain  cases  of mismatch, it also makes for better
  2473.                     code on certain machines.
  2474.  
  2475.                PUSH_ROUNDING (npushed)
  2476.                     A C expression that is the number of bytes actual-
  2477.                     ly  pushed  onto the stack when an instruction at-
  2478.                     tempts to push npushed bytes.
  2479.  
  2480.                     If the target machine does not  have  a  push  in-
  2481.                     struction, do not define this macro.  That directs
  2482.                     GNU CC to use an alternate strategy:  to  allocate
  2483.                     the entire argument block and then store the argu-
  2484.                     ments into it.
  2485.  
  2486.                     On some machines, the definition
  2487.  
  2488.  
  2489.                         #define PUSH_ROUNDING(BYTES) (BYTES)
  2490.  
  2491.  
  2492.  
  2493.                will suffice.  But on other machines,  instructions
  2494.                that  appear  to  push  one  byte actually push two
  2495.                bytes in an attempt to  maintain  alignment.   Then
  2496.                the definition should be
  2497.  
  2498.  
  2499.                         #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.                ACCUMULATE_OUTGOING_ARGS
  2517.                     If defined, the maximum amount  of  space  re-
  2518.                     quired for outgoing arguments will be computed
  2519.                     and     placed     into      the      variable
  2520.                     current_function_outgoing_args_size.  No space
  2521.                     will be pushed onto the stack for  each  call;
  2522.                     instead, the function prologue should increase
  2523.                     the stack frame size by this amount.
  2524.  
  2525.                     It is not proper to define both  PUSH_ROUNDING
  2526.                     and ACCUMULATE_OUTGOING_ARGS.
  2527.  
  2528.                REG_PARM_STACK_SPACE
  2529.                     Define this macro if functions  should  assume
  2530.                     that  stack space has been allocated for argu-
  2531.                     ments even when their values are passed in re-
  2532.                     gisters.
  2533.  
  2534.                     The value of this macro is the size, in bytes,
  2535.                     of  the  area reserved for arguments passed in
  2536.                     registers.
  2537.  
  2538.                     This space can  either  be  allocated  by  the
  2539.                     caller  or  be a part of the machine-dependent
  2540.                     stack   frame:   OUTGOING_REG_PARM_STACK_SPACE
  2541.                     says which.
  2542.  
  2543.                OUTGOING_REG_PARM_STACK_SPACE
  2544.                     Define this if it is the responsibility of the
  2545.                     caller to allocate the area reserved for argu-
  2546.                     ments passed in registers.
  2547.  
  2548.                     If ACCUMULATE_OUTGOING_ARGS is  defined,  this
  2549.                     macro controls whether the space for these ar-
  2550.                     guments    counts    in    the    value     of
  2551.                     current_function_outgoing_args_size.
  2552.  
  2553.                STACK_PARMS_IN_REG_PARM_AREA
  2554.                     Define this macro if  REG_PARM_STACK_SPACE  is
  2555.                     defined  but  stack  parameters don't skip the
  2556.                     area specified by REG_PARM_STACK_SPACE.
  2557.  
  2558.                     Normally, when a parameter is  not  passed  in
  2559.                     registers,  it  is  placed on the stack beyond
  2560.                     the REG_PARM_STACK_SPACE area.  Defining  this
  2561.                     macro  suppresses this behavior and causes the
  2562.                     parameter to be passed on the stack in its na-
  2563.                     tural location.
  2564.  
  2565.                RETURN_POPS_ARGS (funtype, stack-size)
  2566.                     A C expression that should indicate the number
  2567.                     of  bytes of its own arguments that a function
  2568.                     pops on returning, or 0 if the  function  pops
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.                     no arguments and the caller must therefore pop
  2583.                     them all after the function returns.
  2584.  
  2585.                     funtype is a C variable whose value is a  tree
  2586.                     node  that describes the function in question.
  2587.                     Normally it is a node  of  type  FUNCTION_TYPE
  2588.                     that  describes the data type of the function.
  2589.                     From this it is possible to  obtain  the  data
  2590.                     types of the value and arguments (if known).
  2591.  
  2592.                     When a call to a  library  function  is  being
  2593.                     considered, funtype will contain an identifier
  2594.                     node for the library function.  Thus,  if  you
  2595.                     need  to  distinguish  among  various  library
  2596.                     functions, you can do so by their names.  Note
  2597.                     that  ``library  function''  in  this  context
  2598.                     means a function used to  perform  arithmetic,
  2599.                     whose  name is known specially in the compiler
  2600.                     and was not mentioned in the C code being com-
  2601.                     piled.
  2602.  
  2603.                     stack-size is the number of bytes of arguments
  2604.                     passed  on the stack.  If a variable number of
  2605.                     bytes is passed, it is zero, and argument pop-
  2606.                     ping  will always be the responsibility of the
  2607.                     calling function.
  2608.  
  2609.                     On the Vax, all functions always pop their ar-
  2610.                     guments,  so  the  definition of this macro is
  2611.                     stack-size.  On the 68000, using the  standard
  2612.                     calling convention, no functions pop their ar-
  2613.                     guments, so the value of the macro is always 0
  2614.                     in this case.  But an alternative calling con-
  2615.                     vention is available in which  functions  that
  2616.                     take  a fixed number of arguments pop them but
  2617.                     other functions (such as printf)  pop  nothing
  2618.                     (the  caller  pops all).  When this convention
  2619.                     is in use, funtype is  examined  to  determine
  2620.                     whether a function takes a fixed number of ar-
  2621.                     guments.
  2622.  
  2623.  
  2624.           1.7.5.  Passing Arguments in Registers
  2625.  
  2626.                This section describes the macros which let you control
  2627.           how  various  types  of arguments are passed in registers or
  2628.           how they are arranged in the stack.
  2629.  
  2630.                FUNCTION_ARG (cum, mode, type, named)
  2631.                     A C expression that controls  whether  a  function
  2632.                     argument is passed in a register, and which regis-
  2633.                     ter.
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.                     The arguments are cum, which  summarizes  all  the
  2649.                     previous  arguments; mode, the machine mode of the
  2650.                     argument; type, the data type of the argument as a
  2651.                     tree node or 0 if that is not known (which happens
  2652.                     for C support library functions); and named, which
  2653.                     is  1  for an ordinary argument and 0 for nameless
  2654.                     arguments that correspond to `...' in  the  called
  2655.                     function's prototype.
  2656.  
  2657.                     The value of the expression should either be a reg
  2658.                     RTX for the hard register in which to pass the ar-
  2659.                     gument, or zero to pass the argument on the stack.
  2660.  
  2661.                     For machines like the Vax and 68000, where normal-
  2662.                     ly  all  arguments  are pushed, zero suffices as a
  2663.                     definition.
  2664.  
  2665.                     The usual way to make the ANSI library  `stdarg.h'
  2666.                     work on a machine where some arguments are usually
  2667.                     passed in registers, is to  cause  nameless  argu-
  2668.                     ments  to be passed on the stack instead.  This is
  2669.                     done by  making  FUNCTION_ARG  return  0  whenever
  2670.                     named is 0.
  2671.  
  2672.                     You may use the  macro  MUST_PASS_IN_STACK  (mode,
  2673.                     type) in the definition of this macro to determine
  2674.                     if this argument is of a type that must be  passed
  2675.                     in  the stack.  If REG_PARM_STACK_SPACE is not de-
  2676.                     fined and FUNCTION_ARG returns non-zero  for  such
  2677.                     an   argument,   the   compiler  will  abort.   If
  2678.                     REG_PARM_STACK_SPACE is defined, the argument will
  2679.                     be  computed  in  the stack and then loaded into a
  2680.                     register.
  2681.  
  2682.                FUNCTION_INCOMING_ARG (cum, mode, type, named)
  2683.                     Define this macro if the target machine has  ``re-
  2684.                     gister  windows'', so that the register in which a
  2685.                     function sees an arguments is not necessarily  the
  2686.                     same as the one in which the caller passed the ar-
  2687.                     gument.
  2688.  
  2689.                     For such machines, FUNCTION_ARG computes  the  re-
  2690.                     gister  in  which the caller passes the value, and
  2691.                     FUNCTION_INCOMING_ARG should be defined in a simi-
  2692.                     lar  fashion  to  tell  the  function being called
  2693.                     where the arguments will arrive.
  2694.  
  2695.                     If   FUNCTION_INCOMING_ARG   is    not    defined,
  2696.                     FUNCTION_ARG serves both purposes.
  2697.  
  2698.                FUNCTION_ARG_PARTIAL_NREGS (cum, mode, type, named)
  2699.                     A C expression for the number of words, at the be-
  2700.                     ginning  of an argument, must be put in registers.
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.                     The value must be  zero  for  arguments  that  are
  2715.                     passed  entirely in registers or that are entirely
  2716.                     pushed on the stack.
  2717.  
  2718.                     On some machines, certain arguments must be passed
  2719.                     partially  in  registers  and partially in memory.
  2720.                     On these machines, typically the first n words  of
  2721.                     arguments are passed in registers, and the rest on
  2722.                     the stack.  If a multi-word argument (a double  or
  2723.                     a  structure) crosses that boundary, its first few
  2724.                     words must be passed in  registers  and  the  rest
  2725.                     must  be  pushed.   This  macro tells the compiler
  2726.                     when this occurs, and how many of the words should
  2727.                     go in registers.
  2728.  
  2729.                     FUNCTION_ARG for these arguments should return the
  2730.                     first  register  to be used by the caller for this
  2731.                     argument; likewise FUNCTION_INCOMING_ARG, for  the
  2732.                     called function.
  2733.  
  2734.                FUNCTION_ARG_PASS_BY_REFERENCE (cum, mode, type, named)
  2735.                     A  C  expression  that  indicates when an argument
  2736.                     must be passed by reference.  If  nonzero  for  an
  2737.                     argument,  a  copy  of  that  argument  is made in
  2738.                     memory and a pointer to the argument is passed in-
  2739.                     stead  of  the  argument  itself.   The pointer is
  2740.                     passed in whatever way is appropriate for  passing
  2741.                     a pointer to that type.
  2742.  
  2743.                     On machines where REG_PARM_STACK_SPACE is not  de-
  2744.                     fined,  a  suitable definition of this macro might
  2745.                     be
  2746.  
  2747.  
  2748.                         #define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED)  \
  2749.                           MUST_PASS_IN_STACK (MODE, TYPE)
  2750.  
  2751.  
  2752.  
  2753.                CUMULATIVE_ARGS
  2754.                     A C type for declaring a variable that is used
  2755.                     as the first argument of FUNCTION_ARG and oth-
  2756.                     er related values.  For some target  machines,
  2757.                     the  type int suffices and can hold the number
  2758.                     of bytes of argument so far.
  2759.  
  2760.                     There is no need to record in  CUMULATIVE_ARGS
  2761.                     anything  about  the  arguments that have been
  2762.                     passed on the stack.  The compiler  has  other
  2763.                     variables  to  keep track of that.  For target
  2764.                     machines on which all arguments are passed  on
  2765.                     the  stack, there is no need to store anything
  2766.                     in CUMULATIVE_ARGS; however, the  data  struc-
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.                     ture  must  exist  and should not be empty, so
  2781.                     use int.
  2782.  
  2783.                INIT_CUMULATIVE_ARGS (cum, fntype, libname)
  2784.                     A C statement (sans semicolon) for  initializ-
  2785.                     ing  the variable cum for the state at the be-
  2786.                     ginning of the argument  list.   The  variable
  2787.                     has type CUMULATIVE_ARGS.  The value of fntype
  2788.                     is the tree node for  the  data  type  of  the
  2789.                     function  which will receive the args, or 0 if
  2790.                     the args are to  a  compiler  support  library
  2791.                     function.
  2792.  
  2793.                     When processing a call to a  compiler  support
  2794.                     library  function,  libname  identifies  which
  2795.                     one.  It is a symbol_ref  rtx  which  contains
  2796.                     the  name  of the function, as a string.  lib-
  2797.                     name is 0 when an ordinary C function call  is
  2798.                     being  processed.   Thus, each time this macro
  2799.                     is  called,  either  libname  or   fntype   is
  2800.                     nonzero, but never both of them at once.
  2801.  
  2802.                INIT_CUMULATIVE_INCOMING_ARGS (cum, fntype, libname)
  2803.                     Like INIT_CUMULATIVE_ARGS but overrides it for
  2804.                     the purposes of finding the arguments for  the
  2805.                     function being compiled.  If this macro is un-
  2806.                     defined, INIT_CUMULATIVE_ARGS is used instead.
  2807.  
  2808.                     The argument libname exists for symmetry  with
  2809.                     INIT_CUMULATIVE_ARGS.   The  value  passed for
  2810.                     libname is always 0,  since  library  routines
  2811.                     with  special  calling  conventions  are never
  2812.                     compiled with GNU CC.
  2813.  
  2814.                FUNCTION_ARG_ADVANCE (cum, mode, type, named)
  2815.                     A C statement (sans semicolon) to  update  the
  2816.                     summarizer variable cum to advance past an ar-
  2817.                     gument in the argument list.  The values mode,
  2818.                     type  and  named describe that argument.  Once
  2819.                     this is done, the variable cum is suitable for
  2820.                     analyzing    the   following   argument   with
  2821.                     FUNCTION_ARG, etc.
  2822.  
  2823.                     This macro need not do anything if  the  argu-
  2824.                     ment in question was passed on the stack.  The
  2825.                     compiler knows how  to  track  the  amount  of
  2826.                     stack  space  used  for  arguments without any
  2827.                     special help.
  2828.  
  2829.                FUNCTION_ARG_PADDING (mode, type)
  2830.                     If defined, a C  expression  which  determines
  2831.                     whether, and in which direction, to pad out an
  2832.                     argument with extra space.  The  value  should
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.                     be  of  type  enum direction: either upward to
  2847.                     pad above the argument, downward to pad below,
  2848.                     or none to inhibit padding.
  2849.  
  2850.                     This macro does not control the amount of pad-
  2851.                     ding;  that is always just enough to reach the
  2852.                     next multiple of FUNCTION_ARG_BOUNDARY.
  2853.  
  2854.                     This macro has a default definition  which  is
  2855.                     right  for  most  systems.   For little-endian
  2856.                     machines, the default is to pad  upward.   For
  2857.                     big-endian  machines,  the  default  is to pad
  2858.                     downward for  an  argument  of  constant  size
  2859.                     shorter than an int, and upward otherwise.
  2860.  
  2861.                FUNCTION_ARG_BOUNDARY (mode, type)
  2862.                     If defined, a  C  expression  that  gives  the
  2863.                     alignment  boundary,  in  bits, of an argument
  2864.                     with the specified mode and type.   If  it  is
  2865.                     not defined, PARM_BOUNDARY is used for all ar-
  2866.                     guments.
  2867.  
  2868.                FUNCTION_ARG_REGNO_P (regno)
  2869.                     A C expression that is nonzero if regno is the
  2870.                     number  of  a  hard register in which function
  2871.                     arguments are sometimes passed.  This does not
  2872.                     include  implicit arguments such as the static
  2873.                     chain and  the  structure-value  address.   On
  2874.                     many  machines,  no  registers can be used for
  2875.                     this purpose since all function arguments  are
  2876.                     pushed on the stack.
  2877.  
  2878.  
  2879.           1.7.6.  How Scalar Function Values Are Returned
  2880.  
  2881.                This section discusses the macros that control  return-
  2882.           ing scalars as values---values that can fit in registers.
  2883.  
  2884.                TRADITIONAL_RETURN_FLOAT
  2885.                     Define this macro  if  `-traditional'  should  not
  2886.                     cause  functions  declared to return float to con-
  2887.                     vert the value to double.
  2888.  
  2889.                FUNCTION_VALUE (valtype, func)
  2890.                     A C expression to create an RTX  representing  the
  2891.                     place  where  a  function  returns a value of data
  2892.                     type valtype.  valtype is a tree node representing
  2893.                     a data type.  Write TYPE_MODE (valtype) to get the
  2894.                     machine mode used to represent that type.  On many
  2895.                     machines,  only  the mode is relevant.  (Actually,
  2896.                     on most machines, scalar values  are  returned  in
  2897.                     the same place regardless of mode).
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.                     If the precise function  being  called  is  known,
  2913.                     func is a tree node (FUNCTION_DECL) for it; other-
  2914.                     wise, func is a null pointer.  This makes it  pos-
  2915.                     sible  to  use a different value-returning conven-
  2916.                     tion for specific functions when all  their  calls
  2917.                     are known.
  2918.  
  2919.                     FUNCTION_VALUE is not used for return  vales  with
  2920.                     aggregate  data  types, because these are returned
  2921.                     in another way.  See STRUCT_VALUE_REGNUM  and  re-
  2922.                     lated macros, below.
  2923.  
  2924.                FUNCTION_OUTGOING_VALUE (valtype, func)
  2925.                     Define this macro if the target machine has  ``re-
  2926.                     gister  windows''  so that the register in which a
  2927.                     function returns its value is not the same as  the
  2928.                     one in which the caller sees the value.
  2929.  
  2930.                     For such machines, FUNCTION_VALUE computes the re-
  2931.                     gister in which the caller will see the value, and
  2932.                     FUNCTION_OUTGOING_VALUE should  be  defined  in  a
  2933.                     similar  fashion to tell the function where to put
  2934.                     the value.
  2935.  
  2936.                     If   FUNCTION_OUTGOING_VALUE   is   not   defined,
  2937.                     FUNCTION_VALUE serves both purposes.
  2938.  
  2939.                     FUNCTION_OUTGOING_VALUE is  not  used  for  return
  2940.                     vales with aggregate data types, because these are
  2941.                     returned in another way.  See  STRUCT_VALUE_REGNUM
  2942.                     and related macros, below.
  2943.  
  2944.                LIBCALL_VALUE (mode)
  2945.                     A C expression to create an RTX  representing  the
  2946.                     place  where a library function returns a value of
  2947.                     mode mode.  If the precise function  being  called
  2948.                     is  known, func is a tree node (FUNCTION_DECL) for
  2949.                     it; otherwise, func is a null pointer.  This makes
  2950.                     it  possible  to  use  a different value-returning
  2951.                     convention for specific functions when  all  their
  2952.                     calls are known.
  2953.  
  2954.                     Note that ``library  function''  in  this  context
  2955.                     means  a compiler support routine, used to perform
  2956.                     arithmetic, whose name is known specially  by  the
  2957.                     compiler and was not mentioned in the C code being
  2958.                     compiled.
  2959.  
  2960.                     The definition of LIBRARY_VALUE need not  be  con-
  2961.                     cerned  aggregate  data types, because none of the
  2962.                     library functions returns such types.
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.                FUNCTION_VALUE_REGNO_P (regno)
  2979.                     A C expression that is nonzero  if  regno  is  the
  2980.                     number  of  a hard register in which the values of
  2981.                     called function may come back.
  2982.  
  2983.                     A register whose use for returning values is  lim-
  2984.                     ited  to  serving  as  the second of a pair (for a
  2985.                     value of type double, say) need not be  recognized
  2986.                     by this macro.  So for most machines, this defini-
  2987.                     tion suffices:
  2988.  
  2989.  
  2990.                         #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
  2991.  
  2992.  
  2993.  
  2994.                     If the machine has register windows,  so  that
  2995.                     the  caller  and  the called function use dif-
  2996.                     ferent registers for the  return  value,  this
  2997.                     macro  should  recognize only the caller's re-
  2998.                     gister numbers.
  2999.  
  3000.  
  3001.           1.7.7.  How Large Values Are Returnd
  3002.  
  3003.                When a function value's mode is BLKmode  (and  in  some
  3004.           other  cases),  the  value  is  not  returned  according  to
  3005.           FUNCTION_VALUE (see section  Scalar Return).   Instead,  the
  3006.           caller  passes the address of a block of memory in which the
  3007.           value should be stored.  This address is called  the  struc-
  3008.           ture value address.
  3009.  
  3010.                This section describes how to control returning  struc-
  3011.           ture values in memory.
  3012.  
  3013.                RETURN_IN_MEMORY (type)
  3014.                     A C expression which can inhibit the returning  of
  3015.                     certain function values in registers, based on the
  3016.                     type of value.  A nonzero value says to return the
  3017.                     function value in memory, just as large structures
  3018.                     are always returned.  Here type will be  a  C  ex-
  3019.                     pression  of type tree, representing the data type
  3020.                     of the value.
  3021.  
  3022.                     Note that values of mode BLKmode are  returned  in
  3023.                     memory regardless of this macro.  Also, the option
  3024.                     `-fpcc-struct-return' takes effect  regardless  of
  3025.                     this  macro.   On  most systems, it is possible to
  3026.                     leave the macro undefined; this causes  a  default
  3027.                     definition to be used, whose value is the constant
  3028.                     0.
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.                STRUCT_VALUE_REGNUM
  3045.                     If the structure value address is passed in a  re-
  3046.                     gister,  then  STRUCT_VALUE_REGNUM  should  be the
  3047.                     number of that register.
  3048.  
  3049.                STRUCT_VALUE
  3050.                     If the structure value address is not passed in  a
  3051.                     register, define STRUCT_VALUE as an expression re-
  3052.                     turning an RTX for the place where the address  is
  3053.                     passed.  If it returns 0, the address is passed as
  3054.                     an ``invisible'' first argument.
  3055.  
  3056.                STRUCT_VALUE_INCOMING_REGNUM
  3057.                     On some architectures the place where  the  struc-
  3058.                     ture value address is found by the called function
  3059.                     is not the same place  that  the  caller  put  it.
  3060.                     This  can  be due to register windows, or it could
  3061.                     be because the function prologue  moves  it  to  a
  3062.                     different place.
  3063.  
  3064.                     If the incoming location of  the  structure  value
  3065.                     address is in a register, define this macro as the
  3066.                     register number.
  3067.  
  3068.                STRUCT_VALUE_INCOMING
  3069.                     If the incoming location is not a register, define
  3070.                     STRUCT_VALUE_INCOMING  as an expression for an RTX
  3071.                     for where the  called  function  should  find  the
  3072.                     value.   If it should find the value on the stack,
  3073.                     define this to create a mem which  refers  to  the
  3074.                     frame  pointer.   A definition of 0 means that the
  3075.                     address is passed as an ``invisible'' first  argu-
  3076.                     ment.
  3077.  
  3078.                PCC_STATIC_STRUCT_RETURN
  3079.                     Define this macro if the usual  system  convention
  3080.                     on the target machine for returning structures and
  3081.                     unions is for the called function  to  return  the
  3082.                     address of a static variable containing the value.
  3083.                     GNU CC does not normally use this convention, even
  3084.                     if  it  is  the  usual  one, but does use it if `-
  3085.                     fpcc-struct-value' is specified.
  3086.  
  3087.                     Do not define this if the usual system  convention
  3088.                     is  for  the caller to pass an address to the sub-
  3089.                     routine.
  3090.  
  3091.  
  3092.           1.7.8.  Caller-Saves Register Allocation
  3093.  
  3094.                If you enable it, GNU  CC  can  save  registers  around
  3095.           function  calls.   This  makes  it  possible  to  use  call-
  3096.           clobbered registers to hold variables that must live  across
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.           calls.
  3111.  
  3112.                DEFAULT_CALLER_SAVES
  3113.                     Define this macro if function calls on the  target
  3114.                     machine  do  not  preserve any registers; in other
  3115.                     words, if CALL_USED_REGISTERS has 1 for all regis-
  3116.                     ters.   This macro enables `-fcaller-saves' by de-
  3117.                     fault.  Eventually that option will be enabled  by
  3118.                     default  on  all  machines and both the option and
  3119.                     this macro will be eliminated.
  3120.  
  3121.                CALLER_SAVE_PROFITABLE (refs, calls)
  3122.                     A  C  expression  to  determine  whether   it   is
  3123.                     worthwhile  to  consider placing a pseudo-register
  3124.                     in a call-clobbered hard register and  saving  and
  3125.                     restoring  it  around each function call.  The ex-
  3126.                     pression should be 1 when this is worth doing, and
  3127.                     0 otherwise.
  3128.  
  3129.                     If you don't define this macro, a default is  used
  3130.                     which is good on most machines: 4 * calls < refs.
  3131.  
  3132.  
  3133.           1.7.9.  Function Entry and Exit
  3134.  
  3135.                This section describes the macros that output  function
  3136.           entry (prologue) and exit (epilogue) code.
  3137.  
  3138.                FUNCTION_PROLOGUE (file, size)
  3139.                     A C compound statement that outputs the  assembler
  3140.                     code  for  entry  to  a function.  The prologue is
  3141.                     responsible for setting up the stack  frame,  ini-
  3142.                     tializing  the  frame pointer register, saving re-
  3143.                     gisters that must be saved,  and  allocating  size
  3144.                     additional  bytes  of  storage for the local vari-
  3145.                     ables.  size is  an  integer.   file  is  a  stdio
  3146.                     stream  to which the assembler code should be out-
  3147.                     put.
  3148.  
  3149.                     The label for the beginning of the  function  need
  3150.                     not  be  output  by  this macro.  That has already
  3151.                     been done when the macro is run.
  3152.  
  3153.                     To determine which registers to  save,  the  macro
  3154.                     can  refer  to the array regs_ever_live: element r
  3155.                     is nonzero if hard register  r  is  used  anywhere
  3156.                     within  the  function.   This implies the function
  3157.                     prologue should save register r,  provided  it  is
  3158.                     not    one    of    the    call-used    registers.
  3159.                     (FUNCTION_EPILOGUE     must      likewise      use
  3160.                     regs_ever_live.)
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.                     On machines that have  ``register  windows'',  the
  3177.                     function entry code does not save on the stack the
  3178.                     registers that are in the windows,  even  if  they
  3179.                     are  supposed  to  be preserved by function calls;
  3180.                     instead it takes appropriate steps to ``push'' the
  3181.                     register stack, if any non-call-used registers are
  3182.                     used in the function.
  3183.  
  3184.                     On machines where functions may or  may  not  have
  3185.                     frame-pointers,  the function entry code must vary
  3186.                     accordingly; it must set up the frame  pointer  if
  3187.                     one  is  wanted,  and not otherwise.  To determine
  3188.                     whether a frame pointer is in  wanted,  the  macro
  3189.                     can  refer  to  the variable frame_pointer_needed.
  3190.                     The variable's value will be 1 at run  time  in  a
  3191.                     function  that needs a frame pointer.  See section
  3192.                     Elimination.
  3193.  
  3194.                     The function entry code is responsible  for  allo-
  3195.                     cating  any stack space required for the function.
  3196.                     This stack space consists of  the  regions  listed
  3197.                     below.  In most cases, these regions are allocated
  3198.                     in the order listed, with the last  listed  region
  3199.                     closest  to  the  top of the stack (the lowest ad-
  3200.                     dress if STACK_GROWS_DOWNWARD is defined, and  the
  3201.                     highest  address  if  it is not defined).  You can
  3202.                     use a different order for a machine if doing so is
  3203.                     more convenient or required for compatibility rea-
  3204.                     sons.  Except in cases where required by  standard
  3205.                     or by a debugger, there is no reason why the stack
  3206.                     layout used by GCC need agree with  that  used  by
  3207.                     other compilers for a machine.
  3208.  
  3209.                     o+    A                  region                  of
  3210.                          current_function_pretend_args_size  bytes  of
  3211.                          uninitialized space just underneath the first
  3212.                          argument  arriving  on  the stack.  (This may
  3213.                          not be at the very  start  of  the  allocated
  3214.                          stack  region  if  the  calling  sequence has
  3215.                          pushed anything else since pushing the  stack
  3216.                          arguments.   But  usually,  on such machines,
  3217.                          nothing else has been pushed yet, because the
  3218.                          function  prologue  itself does all the push-
  3219.                          ing.)  This region is used on machines  where
  3220.                          an argument may be passed partly in registers
  3221.                          and partly in memory, and, in some  cases  to
  3222.                          support   the  features  in  `varargs.h'  and
  3223.                          `stdargs.h'.
  3224.  
  3225.                     o+    An area of memory used to save certain regis-
  3226.                          ters  used by the function.  The size of this
  3227.                          area, which may also include space  for  such
  3228.                          things  as the return address and pointers to
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.                          previous stack  frames,  is  machine-specific
  3243.                          and  usually  depends on which registers have
  3244.                          been used in the function.  Machines with re-
  3245.                          gister  windows  often  do not require a save
  3246.                          area.
  3247.  
  3248.                     o+    A region of at  least  size  bytes,  possibly
  3249.                          rounded up to an allocation boundary, to con-
  3250.                          tain the local variables of the function.  On
  3251.                          some  machines, this region and the save area
  3252.                          may occur in the  opposite  order,  with  the
  3253.                          save area closer to the top of the stack.
  3254.  
  3255.                     o+    Optionally,     in     the     case      that
  3256.                          ACCUMULATE_OUTGOING_ARGS is defined, a region
  3257.                          of current_function_outgoing_args_size  bytes
  3258.                          to be used for outgoing argument lists of the
  3259.                          function.  See section Stack Arguments.
  3260.  
  3261.  
  3262.                     Normally, it is  necessary  for  FUNCTION_PROLOGUE
  3263.                     and FUNCTION_EPILOGUE to treat leaf functions spe-
  3264.                     cially.  The C variable leaf_function  is  nonzero
  3265.                     for such a function.
  3266.  
  3267.                EXIT_IGNORE_STACK
  3268.                     Define this  macro  as  a  C  expression  that  is
  3269.                     nonzero  if the return instruction or the function
  3270.                     epilogue ignores the value of the  stack  pointer;
  3271.                     in  other  words,  if  it is safe to delete an in-
  3272.                     struction to adjust the stack pointer before a re-
  3273.                     turn from the function.
  3274.  
  3275.                     Note that this macro's value is relevant only  for
  3276.                     functions for which frame pointers are maintained.
  3277.                     It is never safe to delete a final  stack  adjust-
  3278.                     ment  in a function that has no frame pointer, and
  3279.                     the   compiler   knows    this    regardless    of
  3280.                     EXIT_IGNORE_STACK.
  3281.  
  3282.                FUNCTION_EPILOGUE (file, size)
  3283.                     A C compound statement that outputs the  assembler
  3284.                     code  for  exit  from a function.  The epilogue is
  3285.                     responsible for restoring the saved registers  and
  3286.                     stack  pointer  to  their values when the function
  3287.                     was called, and returning control to  the  caller.
  3288.                     This  macro  takes the same arguments as the macro
  3289.                     FUNCTION_PROLOGUE, and the  registers  to  restore
  3290.                     are    determined    from    regs_ever_live    and
  3291.                     CALL_USED_REGISTERS in the same way.
  3292.  
  3293.                     On some machines, there is  a  single  instruction
  3294.                     that does all the work of returning from the func-
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.                     tion.  On these machines,  give  that  instruction
  3309.                     the  name  `return'  and  do  not define the macro
  3310.                     FUNCTION_EPILOGUE at all.
  3311.  
  3312.                     Do not define a pattern named `return' if you want
  3313.                     the FUNCTION_EPILOGUE to be used.  If you want the
  3314.                     target switches to control whether return instruc-
  3315.                     tions  or  epilogues  are  used, define a `return'
  3316.                     pattern with a validity condition that  tests  the
  3317.                     target  switches  appropriately.   If the `return'
  3318.                     pattern's validity condition is  false,  epilogues
  3319.                     will be used.
  3320.  
  3321.                     On machines where functions may or  may  not  have
  3322.                     frame-pointers,  the  function exit code must vary
  3323.                     accordingly.  Sometimes the  code  for  these  two
  3324.                     cases   is  completely  different.   To  determine
  3325.                     whether a frame pointer is in  wanted,  the  macro
  3326.                     can  refer  to  the variable frame_pointer_needed.
  3327.                     The variable's value will be 1 at run  time  in  a
  3328.                     function that needs a frame pointer.
  3329.  
  3330.                     Normally, it is  necessary  for  FUNCTION_PROLOGUE
  3331.                     and FUNCTION_EPILOGUE to treat leaf functions spe-
  3332.                     cially.  The C variable leaf_function  is  nonzero
  3333.                     for such a function.  See section Leaf Functions.
  3334.  
  3335.                     On some machines, some functions pop  their  argu-
  3336.                     ments  on  exit  while  others  leave that for the
  3337.                     caller to do.  For example, the 68020  when  given
  3338.                     `-mrtd'  pops  arguments  in functions that take a
  3339.                     fixed number of arguments.
  3340.  
  3341.                     Your definition of the macro RETURN_POPS_ARGS  de-
  3342.                     cides  which  functions  pop  their own arguments.
  3343.                     FUNCTION_EPILOGUE needs to know what was  decided.
  3344.                     The  variable  current_function_pops_args  is  the
  3345.                     number of bytes of its arguments that  a  function
  3346.                     should pop.  See section Scalar Return.
  3347.  
  3348.                DELAY_SLOTS_FOR_EPILOGUE
  3349.                     Define this macro if the  function  epilogue  con-
  3350.                     tains  delay  slots to which instructions from the
  3351.                     rest of the function can be ``moved''.  The defin-
  3352.                     ition  should  be a C expression whose value is an
  3353.                     integer representing the  number  of  delay  slots
  3354.                     there.
  3355.  
  3356.                ELIGIBLE_FOR_EPILOGUE_DELAY (insn, n)
  3357.                     A C expression that  returns  1  if  insn  can  be
  3358.                     placed in delay slot number n of the epilogue.
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.                     The argument n is an integer which identifies  the
  3375.                     delay  slot  now being considered (since different
  3376.                     slots may have different  rules  of  eligibility).
  3377.                     It  is  never negative and is always less than the
  3378.                     number   of    epilogue    delay    slots    (what
  3379.                     DELAY_SLOTS_FOR_EPILOGUE  returns).  If you reject
  3380.                     a particular insn for a given delay slot, in prin-
  3381.                     ciple, it may be reconsidered for a subsequent de-
  3382.                     lay slot.  Also, other  insns  may  (at  least  in
  3383.                     principle)  be  considered for the so far unfilled
  3384.                     delay slot.
  3385.  
  3386.                     The insns accepted  to  fill  the  epilogue  delay
  3387.                     slots  are  put in an RTL list made with insn_list
  3388.                     objects,     stored      in      the      variable
  3389.                     current_function_epilogue_delay_list.    The  insn
  3390.                     for the first delay slot comes first in the  list.
  3391.                     Your  definition  of  the  macro FUNCTION_EPILOGUE
  3392.                     should fill the  delay  slots  by  outputting  the
  3393.                     insns   in   this   list,   usually   by   calling
  3394.                     final_scan_insn.
  3395.  
  3396.                     You need not define this macro if you did not  de-
  3397.                     fine DELAY_SLOTS_FOR_EPILOGUE.
  3398.  
  3399.  
  3400.           1.7.10.  Generating Code for Profiling
  3401.  
  3402.                FUNCTION_PROFILER (file, labelno)
  3403.                     A C statement or compound statement to  output  to
  3404.                     file  some  assembler  code  to call the profiling
  3405.                     subroutine mcount.  Before calling, the  assembler
  3406.                     code  must  load the address of a counter variable
  3407.                     into a register where mcount expects to  find  the
  3408.                     address.   The  name of this variable is `LP' fol-
  3409.                     lowed by the number labelno, so you would generate
  3410.                     the name using `LP%d' in a fprintf.
  3411.  
  3412.                     The details of how the address should be passed to
  3413.                     mcount are determined by your operating system en-
  3414.                     vironment, not by GNU CC.   To  figure  them  out,
  3415.                     compile  a  small  program for profiling using the
  3416.                     system's installed C compiler and look at the  as-
  3417.                     sembler code that results.
  3418.  
  3419.                PROFILE_BEFORE_PROLOGUE
  3420.                     Define this macro if the code for function profil-
  3421.                     ing  should  come  before  the  function prologue.
  3422.                     Normally, the profiling code comes after.
  3423.  
  3424.                FUNCTION_BLOCK_PROFILER (file, labelno)
  3425.                     A C statement or compound statement to  output  to
  3426.                     file some assembler code to initialize basic-block
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.  
  3440.                     profiling for the  current  object  module.   This
  3441.                     code  should  call  the  subroutine __bb_init_func
  3442.                     once per object module, passing it as its sole ar-
  3443.                     gument the address of a block allocated in the ob-
  3444.                     ject module.
  3445.  
  3446.                     The name of the block is a local symbol made  with
  3447.                     this statement:
  3448.  
  3449.  
  3450.                         ASM_GENERATE_INTERNAL_LABEL (buffer, "LPBX", 0);
  3451.  
  3452.  
  3453.  
  3454.                     Of course, since you are writing  the  defini-
  3455.                     tion of ASM_GENERATE_INTERNAL_LABEL as well as
  3456.                     that of this macro, you can take a  short  cut
  3457.                     in  the  definition  of this macro and use the
  3458.                     name that you know will result.
  3459.  
  3460.                     The first word of this block is a  flag  which
  3461.                     will  be  nonzero if the object module has al-
  3462.                     ready been initialized.   So  test  this  word
  3463.                     first,  and  do not call __bb_init_func if the
  3464.                     flag is nonzero.
  3465.  
  3466.                BLOCK_PROFILER (file, blockno)
  3467.                     A C statement or compound statement to  incre-
  3468.                     ment the count associated with the basic block
  3469.                     number blockno.   Basic  blocks  are  numbered
  3470.                     separately  from zero within each compilation.
  3471.                     The count associated with block number blockno
  3472.                     is  at index blockno in a vector of words; the
  3473.                     name of this array is a local symbol made with
  3474.                     this statement:
  3475.  
  3476.  
  3477.                         ASM_GENERATE_INTERNAL_LABEL (buffer, "LPBX", 2);
  3478.  
  3479.  
  3480.  
  3481.                     Of course, since you are writing  the  defini-
  3482.                     tion of ASM_GENERATE_INTERNAL_LABEL as well as
  3483.                     that of this macro, you can take a  short  cut
  3484.                     in  the  definition  of this macro and use the
  3485.                     name that you know will result.
  3486.  
  3487.  
  3488.           1.8.  Implementing the Varargs Macros
  3489.  
  3490.                GNU CC comes with an implementation of `varargs.h'  and
  3491.           `stdarg.h'  that  work  without change on machines that pass
  3492.           arguments on the stack.  Other machines  require  their  own
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.           implementations  of varargs, and the two machine independent
  3507.           header files must have conditionals to include it.
  3508.  
  3509.                ANSI `stdarg.h' differs  from  traditional  `varargs.h'
  3510.           mainly  in  the calling convention for va_start.  The tradi-
  3511.           tional implementation takes just one argument, which is  the
  3512.           variable  in  which to store the argument pointer.  The ANSI
  3513.           implementation takes an additional first argument, which  is
  3514.           the last named argument of the function.  However, it should
  3515.           not use this argument.  The way to find the end of the named
  3516.           arguments is with the built-in functions described below.
  3517.  
  3518.                __builtin_saveregs ()
  3519.                     Use this built-in function to  save  the  argument
  3520.                     registers  in memory so that the varargs mechanism
  3521.                     can access them.  Both ANSI and  traditional  ver-
  3522.                     sions of va_start must use __builtin_saveregs, un-
  3523.                     less you use  SETUP_INCOMING_VARARGS  (see  below)
  3524.                     instead.
  3525.  
  3526.                     On some machines, __builtin_saveregs is open-coded
  3527.                     under     the     control     of     the     macro
  3528.                     EXPAND_BUILTIN_SAVEREGS.  On  other  machines,  it
  3529.                     calls  a  routine  written  in assembler language,
  3530.                     found in `libgcc2.c'.
  3531.  
  3532.                     Regardless of what code is generated for the  call
  3533.                     to __builtin_saveregs, it appears at the beginning
  3534.                     of  the  function,   not   where   the   call   to
  3535.                     __builtin_saveregs  is  written.   This is because
  3536.                     the registers must be saved  before  the  function
  3537.                     starts to use them for its own purposes.
  3538.  
  3539.                __builtin_args_info (category)
  3540.                     Use this  built-in  function  to  find  the  first
  3541.                     anonymous arguments in registers.
  3542.  
  3543.                     In general, a machine may have several  categories
  3544.                     of  registers  used for arguments, each for a par-
  3545.                     ticular category of data types.  (For example,  on
  3546.                     some  machines,  floating-point registers are used
  3547.                     for floating-point arguments while other arguments
  3548.                     are  passed  in  the  general  registers.) To make
  3549.                     non-varargs functions use the proper calling  con-
  3550.                     vention, you have defined the CUMULATIVE_ARGS data
  3551.                     type to record how many registers in each category
  3552.                     have been used so far
  3553.  
  3554.                     __builtin_args_info accesses the same data  struc-
  3555.                     ture  of  type  CUMULATIVE_ARGS after the ordinary
  3556.                     argument layout is finished with it, with category
  3557.                     specifying  which word to access.  Thus, the value
  3558.                     indicates the first unused  register  in  a  given
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.                     category.
  3573.  
  3574.                     Normally, you would use __builtin_args_info in the
  3575.                     implementation   of   va_start,   accessing   each
  3576.                     category just once and storing the  value  in  the
  3577.                     va_list object.  This is because va_list will have
  3578.                     to update the values, and there is no way to alter
  3579.                     the values accessed by __builtin_args_info.
  3580.  
  3581.                __builtin_next_arg ()
  3582.                     This is the equivalent of __builtin_args_info, for
  3583.                     stack  arguments.   It  returns the address of the
  3584.                     first anonymous stack argument, as type void *. If
  3585.                     ARGS_GROW_DOWNWARD,  it returns the address of the
  3586.                     location above the first anonymous stack argument.
  3587.                     Use  it  in va_start to initialize the pointer for
  3588.                     fetching arguments from the stack.
  3589.  
  3590.                __builtin_classify_type (object)
  3591.                     Since each machine has  its  own  conventions  for
  3592.                     which  data  types are passed in which kind of re-
  3593.                     gister, your implementation of va_arg has  to  em-
  3594.                     body   these  conventions.   The  easiest  way  to
  3595.                     categorize the  specified  data  type  is  to  use
  3596.                     __builtin_classify_type  together  with sizeof and
  3597.                     __alignof__.
  3598.  
  3599.                     __builtin_classify_type ignores the value  of  ob-
  3600.                     ject,  considering only its data type.  It returns
  3601.                     an integer describing what kind of type that  is--
  3602.                     -integer, floating, pointer, structure, and so on.
  3603.  
  3604.                     The file `typeclass.h' defines an enumeration that
  3605.                     you   can   use   to   interpret   the  values  of
  3606.                     __builtin_classify_type.
  3607.  
  3608.  
  3609.                These  machine  description   macros   help   implement
  3610.           varargs:
  3611.  
  3612.                EXPAND_BUILTIN_SAVEREGS (args)
  3613.                     If defined, is a C expression  that  produces  the
  3614.                     machine-specific    code    for    a    call    to
  3615.                     __builtin_saveregs.  This code will  be  moved  to
  3616.                     the  very  beginning  of  the function, before any
  3617.                     parameter access are made.  The  return  value  of
  3618.                     this  function  should be an RTX that contains the
  3619.                     value to use as the return of __builtin_saveregs.
  3620.  
  3621.                     The argument args is a  tree_list  containing  the
  3622.                     arguments that were passed to __builtin_saveregs.
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.                     If this macro is not defined,  the  compiler  will
  3639.                     output  an  ordinary  call to the library function
  3640.                     `__builtin_saveregs'.
  3641.  
  3642.                SETUP_INCOMING_VARARGS (args_so_far, mode, type, pretend_args_size, second_time)
  3643.                     This   macro   offers   an  alternative  to  using
  3644.                     __builtin_saveregs   and   defining   the    macro
  3645.                     EXPAND_BUILTIN_SAVEREGS.   Use  it  to  store  the
  3646.                     anonymous register arguments  into  the  stack  so
  3647.                     that  all the arguments appear to have been passed
  3648.                     consecutively on the stack.  Once  this  is  done,
  3649.                     you can use the standard implementation of varargs
  3650.                     that works for machines that pass all their  argu-
  3651.                     ments on the stack.
  3652.  
  3653.                     The argument args_so_far  is  the  CUMULATIVE_ARGS
  3654.                     data  structure, containing the values that obtain
  3655.                     after processing of the named arguments.  The  ar-
  3656.                     guments  mode  and  type  describe  the last named
  3657.                     argument---its machine mode and its data type as a
  3658.                     tree node.
  3659.  
  3660.                     The macro implementation  should  do  two  things:
  3661.                     first, push onto the stack all the argument regis-
  3662.                     ters not used for the named arguments, and second,
  3663.                     store  the  size  of the data thus pushed into the
  3664.                     int-valued variable whose name is supplied as  the
  3665.                     argument  pretend_args_size.   The  value that you
  3666.                     store here will serve  as  additional  offset  for
  3667.                     setting up the stack frame.
  3668.  
  3669.                     Because  you  must  generate  code  to  push   the
  3670.                     anonymous  arguments at compile time without know-
  3671.                     ing their data  types,  SETUP_INCOMING_VARARGS  is
  3672.                     only  useful  on  machines that have just a single
  3673.                     category of argument register and use it uniformly
  3674.                     for all data types.
  3675.  
  3676.                     If the argument second_time is nonzero,  it  means
  3677.                     that  the  arguments  of  the  function  are being
  3678.                     analyzed for the second time.  This happens for an
  3679.                     inline  function,  which  is not actually compiled
  3680.                     until the end  of  the  source  file.   The  macro
  3681.                     SETUP_INCOMING_VARARGS should not generate any in-
  3682.                     structions in this case.
  3683.  
  3684.  
  3685.           1.9.  Trampolines for Nested Functions
  3686.  
  3687.                A trampoline is a small piece of code that  is  created
  3688.           at  run time when the address of a nested function is taken.
  3689.           It normally resides on the stack, in the stack frame of  the
  3690.           containing  function.   These  macros  tell  GNU  CC  how to
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.           generate code to allocate and initialize a trampoline.
  3705.  
  3706.                The instructions in the trampoline must do two  things:
  3707.           load  a constant address into the static chain register, and
  3708.           jump to the real address of the nested  function.   On  CISC
  3709.           machines such as the m68k, this requires two instructions, a
  3710.           move immediate and a jump.  Then the two addresses exist  in
  3711.           the  trampoline  as  word-long  immediate operands.  On RISC
  3712.           machines, it is often necessary to load each address into  a
  3713.           register  in  two  parts.   Then pieces of each address form
  3714.           separate immediate operands.
  3715.  
  3716.                The code generated to initialize  the  trampoline  must
  3717.           store  the  variable  parts---the static chain value and the
  3718.           function  address---into  the  immediate  operands  of   the
  3719.           instructions.  On a CISC machine, this is simply a matter of
  3720.           copying each address to a memory  reference  at  the  proper
  3721.           offset from the start of the trampoline.  On a RISC machine,
  3722.           it may be necessary to take out pieces of  the  address  and
  3723.           store them separately.
  3724.  
  3725.                TRAMPOLINE_TEMPLATE (file)
  3726.                     A C statement to output, on the stream  file,  as-
  3727.                     sembler code for a block of data that contains the
  3728.                     constant parts of a trampoline.  This code  should
  3729.                     not  include  a label---the label is taken care of
  3730.                     automatically.
  3731.  
  3732.                TRAMPOLINE_SIZE
  3733.                     A C expression for the size in bytes of the  tram-
  3734.                     poline, as an integer.
  3735.  
  3736.                TRAMPOLINE_ALIGNMENT
  3737.                     Alignment required for trampolines, in bits.
  3738.  
  3739.                     If you don't  define  this  macro,  the  value  of
  3740.                     BIGGEST_ALIGNMENT  is  used  for  aligning trampo-
  3741.                     lines.
  3742.  
  3743.                INITIALIZE_TRAMPOLINE (addr, fnaddr, static_chain)
  3744.                     A C statement to initialize the variable parts  of
  3745.                     a  trampoline.   addr is an RTX for the address of
  3746.                     the trampoline; fnaddr is an RTX for  the  address
  3747.                     of the nested function; static_chain is an RTX for
  3748.                     the static chain value that should  be  passed  to
  3749.                     the function when it is called.
  3750.  
  3751.                ALLOCATE_TRAMPOLINE (fp)
  3752.                     A C expression to allocate run-time  space  for  a
  3753.                     trampoline.  The expression value should be an RTX
  3754.                     representing a memory reference to the  space  for
  3755.                     the trampoline.
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.                     If this macro is not defined, by default the tram-
  3771.                     poline is allocated as a stack slot.  This default
  3772.                     is right for most machines.   The  exceptions  are
  3773.                     machines  where  it  is  impossible to execute in-
  3774.                     structions in the stack area.  On  such  machines,
  3775.                     you  may have to implement a separate stack, using
  3776.                     this macro in conjunction  with  FUNCTION_PROLOGUE
  3777.                     and FUNCTION_EPILOGUE.
  3778.  
  3779.                     fp points to a data structure, a struct  function,
  3780.                     which  describes the compilation status of the im-
  3781.                     mediate containing function of the function  which
  3782.                     the    trampoline    is   for.    Normally   (when
  3783.                     ALLOCATE_TRAMPOLINE is  not  defined),  the  stack
  3784.                     slot  for  the trampoline is in the stack frame of
  3785.                     this containing function.  Other allocation  stra-
  3786.                     tegies  probably  must do something analogous with
  3787.                     this information.
  3788.  
  3789.  
  3790.                Implementing trampolines is difficult on many  machines
  3791.           because  they  have  separate  instruction  and data caches.
  3792.           Writing into a stack location fails to clear the  memory  in
  3793.           the  instruction  cache,  so  when the program jumps to that
  3794.           location, it executes the old contents.
  3795.  
  3796.                Here are two possible solutions.  One is to  clear  the
  3797.           relevant  parts  of the instruction cache whenever a trampo-
  3798.           line is set up.  The other is to make all trampolines ident-
  3799.           ical,  by  having  them  jump to a standard subroutine.  The
  3800.           former technique  makes  trampoline  execution  faster;  the
  3801.           latter makes initialization faster.
  3802.  
  3803.                To clear the instruction cache  when  a  trampoline  is
  3804.           initialized,  define the following macros which describe the
  3805.           shape of the cache.
  3806.  
  3807.                INSN_CACHE_SIZE
  3808.                     The total size in bytes of the cache.
  3809.  
  3810.                INSN_CACHE_LINE_WIDTH
  3811.                     The length in bytes of each cache line.  The cache
  3812.                     is  divided  into  cache  lines which are disjoint
  3813.                     slots, each holding a  contiguous  chunk  of  data
  3814.                     fetched  from  memory.   Each time data is brought
  3815.                     into the cache, an entire line is  read  at  once.
  3816.                     The  data  loaded  into  a  cache  line  is always
  3817.                     aligned on a boundary equal to the line size.
  3818.  
  3819.                INSN_CACHE_DEPTH
  3820.                     The number of alternative  cache  lines  that  can
  3821.                     hold any particular memory location.
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.                To use a  standard  subroutine,  define  the  following
  3837.           macro.   In  addition,  you must make sure that the instruc-
  3838.           tions in a trampoline fill an entire cache line with identi-
  3839.           cal  instructions,  or else ensure that the beginning of the
  3840.           trampoline code is always aligned at the same point  in  its
  3841.           cache line.  Look in `m68k.h' as a guide.
  3842.  
  3843.                TRANSFER_FROM_TRAMPOLINE
  3844.                     Define this macro if trampolines  need  a  special
  3845.                     subroutine to do their work.  The macro should ex-
  3846.                     pand to a series of asm statements which  will  be
  3847.                     compiled  with GNU CC.  They go in a library func-
  3848.                     tion named __transfer_from_trampoline.
  3849.  
  3850.                     If you need to avoid executing the ordinary prolo-
  3851.                     gue code of a compiled C function when you jump to
  3852.                     the subroutine, you can do so by placing a special
  3853.                     label  of your own in the assembler code.  Use one
  3854.                     asm statement to generate an assembler label,  and
  3855.                     another  to  make  the label global.  Then trampo-
  3856.                     lines can use that label to jump directly to  your
  3857.                     special assembler code.
  3858.  
  3859.  
  3860.           1.10.  Implicit Calls to Library Routines
  3861.  
  3862.                MULSI3_LIBCALL
  3863.                     A C string constant giving the name of  the  func-
  3864.                     tion  to  call  for  multiplication  of one signed
  3865.                     full-word by another.  If you do not  define  this
  3866.                     macro,  the  default name is used, which is __mul-
  3867.                     si3, a function defined in `libgcc.a'.
  3868.  
  3869.                DIVSI3_LIBCALL
  3870.                     A C string constant giving the name of  the  func-
  3871.                     tion  to call for division of one signed full-word
  3872.                     by another.  If you do not define this macro,  the
  3873.                     default  name  is used, which is __divsi3, a func-
  3874.                     tion defined in `libgcc.a'.
  3875.  
  3876.                UDIVSI3_LIBCALL
  3877.                     A C string constant giving the name of  the  func-
  3878.                     tion  to  call  for division of one unsigned full-
  3879.                     word by another.  If you do not define this macro,
  3880.                     the  default  name  is used, which is __udivsi3, a
  3881.                     function defined in `libgcc.a'.
  3882.  
  3883.                MODSI3_LIBCALL
  3884.                     A C string constant giving the name of  the  func-
  3885.                     tion  to call for the remainder in division of one
  3886.                     signed full-word by another.  If you do not define
  3887.                     this  macro,  the  default  name is used, which is
  3888.                     __modsi3, a function defined in `libgcc.a'.
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.                UMODSI3_LIBCALL
  3903.                     A C string constant giving the name of  the  func-
  3904.                     tion  to call for the remainder in division of one
  3905.                     unsigned full-word by another.  If you do not  de-
  3906.                     fine  this  macro, the default name is used, which
  3907.                     is __umodsi3, a function defined in `libgcc.a'.
  3908.  
  3909.                MULDI3_LIBCALL
  3910.                     A C string constant giving the name of  the  func-
  3911.                     tion  to  call  for  multiplication  of one signed
  3912.                     double-word by another.  If you do not define this
  3913.                     macro,  the  default name is used, which is __mul-
  3914.                     di3, a function defined in `libgcc.a'.
  3915.  
  3916.                DIVDI3_LIBCALL
  3917.                     A C string constant giving the name of  the  func-
  3918.                     tion  to  call  for division of one signed double-
  3919.                     word by another.  If you do not define this macro,
  3920.                     the  default  name  is  used, which is __divdi3, a
  3921.                     function defined in `libgcc.a'.
  3922.  
  3923.                UDIVDI3_LIBCALL
  3924.                     A C string constant giving the name of  the  func-
  3925.                     tion  to  call  for division of one unsigned full-
  3926.                     word by another.  If you do not define this macro,
  3927.                     the  default  name  is used, which is __udivdi3, a
  3928.                     function defined in `libgcc.a'.
  3929.  
  3930.                MODDI3_LIBCALL
  3931.                     A C string constant giving the name of  the  func-
  3932.                     tion  to call for the remainder in division of one
  3933.                     signed double-word by another.  If you do not  de-
  3934.                     fine  this  macro, the default name is used, which
  3935.                     is __moddi3, a function defined in `libgcc.a'.
  3936.  
  3937.                UMODDI3_LIBCALL
  3938.                     A C string constant giving the name of  the  func-
  3939.                     tion  to call for the remainder in division of one
  3940.                     unsigned full-word by another.  If you do not  de-
  3941.                     fine  this  macro, the default name is used, which
  3942.                     is __umoddi3, a function defined in `libgcc.a'.
  3943.  
  3944.                TARGET_MEM_FUNCTIONS
  3945.                     Define this macro if GNU CC should generate  calls
  3946.                     to  the  System  V  (and ANSI C) library functions
  3947.                     memcpy and memset rather than  the  BSD  functions
  3948.                     bcopy and bzero.
  3949.  
  3950.                LIBGCC_NEEDS_DOUBLE
  3951.                     Define this macro if only float  arguments  cannot
  3952.                     be  passed  to  library  routines (so they must be
  3953.                     converted to double).  This macro affects both how
  3954.                     library  calls  are  generated and how the library
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.                     routines in `libgcc1.c'  accept  their  arguments.
  3969.                     It  is useful on machines where floating and fixed
  3970.                     point arguments are passed  differently,  such  as
  3971.                     the i860.
  3972.  
  3973.                FLOAT_ARG_TYPE
  3974.                     Define this macro to override the type used by the
  3975.                     library  routines  to  pick  up  arguments of type
  3976.                     float.  (By default, they use a union of float and
  3977.                     int.)
  3978.  
  3979.                     The obvious choice would be float---but that won't
  3980.                     work  with traditional C compilers that expect all
  3981.                     arguments declared as float to arrive  as  double.
  3982.                     To avoid this conversion, the library routines ask
  3983.                     for the value as some other type and then treat it
  3984.                     as a float.
  3985.  
  3986.                     On some systems, no other type will work for this.
  3987.                     For     these     systems,     you     must    use
  3988.                     LIBGCC_NEEDS_DOUBLE instead, to  force  conversion
  3989.                     of the values double before they are passed.
  3990.  
  3991.                FLOATIFY (passed-value)
  3992.                     Define this macro to override the way library rou-
  3993.                     tines  redesignate a float argument as a float in-
  3994.                     stead of the type it was passed as.   The  default
  3995.                     is  an  expression  which takes the float field of
  3996.                     the union.
  3997.  
  3998.                FLOAT_VALUE_TYPE
  3999.                     Define this macro to override the type used by the
  4000.                     library  routines  to  return values that ought to
  4001.                     have type float.  (By default, they use int.)
  4002.  
  4003.                     The obvious choice would be float---but that won't
  4004.                     work  with  traditional  C  compilers gratuitously
  4005.                     convert values declared as float into double.
  4006.  
  4007.                INTIFY (float-value)
  4008.                     Define this macro to override the way the value of
  4009.                     a  float-returning library routine should be pack-
  4010.                     aged in order to return it.  These  functions  are
  4011.                     actually  declared to return type FLOAT_VALUE_TYPE
  4012.                     (normally int).
  4013.  
  4014.                     These values can't be returned as type  float  be-
  4015.                     cause  traditional  C compilers would gratuitously
  4016.                     convert the value to a double.
  4017.  
  4018.                     A local variable named intify is always  available
  4019.                     when the macro INTIFY is used.  It is a union of a
  4020.                     float field named f and a field named i whose type
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.                     is FLOAT_VALUE_TYPE or int.
  4035.  
  4036.                     If you don't define this macro, the default defin-
  4037.                     ition  works by copying the value through that un-
  4038.                     ion.
  4039.  
  4040.                SItype
  4041.                     Define this macro as the name  of  the  data  type
  4042.                     corresponding to SImode in the system's own C com-
  4043.                     piler.
  4044.  
  4045.                     You need not define this macro  if  that  type  is
  4046.                     int, as it usually is.
  4047.  
  4048.                perform_...
  4049.                     Define these macros to supply  explicit  C  state-
  4050.                     ments  to  carry out various arithmetic operations
  4051.                     on types float and double in the library  routines
  4052.                     in  `libgcc1.c'.  See that file for a full list of
  4053.                     these macros and their arguments.
  4054.  
  4055.                     On most machines, you don't need to define any  of
  4056.                     these  macros,  because  the C compiler that comes
  4057.                     with the system takes care of doing them.
  4058.  
  4059.                NEXT_OBJC_RUNTIME
  4060.                     Define this macro to generate code for Objective C
  4061.                     message  sending  using  the calling convention of
  4062.                     the NeXT system.  This calling convention involves
  4063.                     passing  the  object,  the selector and the method
  4064.                     arguments all at once to the method-lookup library
  4065.                     function.
  4066.  
  4067.                     The default calling convention passes just the ob-
  4068.                     ject  and  the  selector  to  the lookup function,
  4069.                     which returns a pointer to the method.
  4070.  
  4071.  
  4072.           1.11.  Addressing Modes
  4073.  
  4074.                HAVE_POST_INCREMENT
  4075.                     Define this macro if the  machine  supports  post-
  4076.                     increment addressing.
  4077.  
  4078.                HAVE_PRE_INCREMENT
  4079.  
  4080.                HAVE_POST_DECREMENT
  4081.  
  4082.                HAVE_PRE_DECREMENT
  4083.                     Similar for other kinds of addressing.
  4084.  
  4085.                CONSTANT_ADDRESS_P (x)
  4086.                     A C expression that is 1 if the RTX x  is  a  con-
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.                     stant which is a valid address.  On most machines,
  4101.                     this can be defined as CONSTANT_P (x), but  a  few
  4102.                     machines  are  more  restrictive in which constant
  4103.                     addresses are supported.
  4104.  
  4105.                     CONSTANT_P  accepts   integer-values   expressions
  4106.                     whose  values  are  not  explicitly known, such as
  4107.                     symbol_ref, label_ref, and  high  expressions  and
  4108.                     const   arithmetic  expressions,  in  addition  to
  4109.                     const_int and const_double expressions.
  4110.  
  4111.                MAX_REGS_PER_ADDRESS
  4112.                     A number, the maximum number of registers that can
  4113.                     appear in a valid memory address.  Note that it is
  4114.                     up to you to specify a value equal to the  maximum
  4115.                     number  that  GO_IF_LEGITIMATE_ADDRESS  would ever
  4116.                     accept.
  4117.  
  4118.                GO_IF_LEGITIMATE_ADDRESS (mode, x, label)
  4119.                     A C compound statement with a conditional goto la-
  4120.                     bel; executed if x (an RTX) is a legitimate memory
  4121.                     address on the target machine for a memory operand
  4122.                     of mode mode.
  4123.  
  4124.                     It usually pays to define several  simpler  macros
  4125.                     to  serve  as subroutines for this one.  Otherwise
  4126.                     it may be too complicated to understand.
  4127.  
  4128.                     This macro must exist in two  variants:  a  strict
  4129.                     variant  and a non-strict one.  The strict variant
  4130.                     is used in the reload pass.  It must be defined so
  4131.                     that  any  pseudo-register that has not been allo-
  4132.                     cated a  hard  register  is  considered  a  memory
  4133.                     reference.   In contexts where some kind of regis-
  4134.                     ter is required, a pseudo-register  with  no  hard
  4135.                     register must be rejected.
  4136.  
  4137.                     The non-strict variant is used  in  other  passes.
  4138.                     It  must be defined to accept all pseudo-registers
  4139.                     in every context where some kind  of  register  is
  4140.                     required.
  4141.  
  4142.                     Compiler source files that want to use the  strict
  4143.                     variant   of   this   macro   define   the   macro
  4144.                     REG_OK_STRICT.    You   should   use   an   #ifdef
  4145.                     REG_OK_STRICT  conditional  to  define  the strict
  4146.                     variant in that case and  the  non-strict  variant
  4147.                     otherwise.
  4148.  
  4149.                     Typically among the  subroutines  used  to  define
  4150.                     GO_IF_LEGITIMATE_ADDRESS  are subroutines to check
  4151.                     for acceptable registers for various purposes (one
  4152.                     for  base  registers, one for index registers, and
  4153.  
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.  
  4166.                     so on).  Then only these  subroutine  macros  need
  4167.                     have two variants; the higher levels of macros may
  4168.                     be the same whether strict or not.
  4169.  
  4170.                     Normally, constant addresses which are the sum  of
  4171.                     a  symbol_ref  and  an integer are stored inside a
  4172.                     const RTX to mark them  as  constant.   Therefore,
  4173.                     there  is  no need to recognize such sums specifi-
  4174.                     cally as legitimate addresses.  Normally you would
  4175.                     simply recognize any const as legitimate.
  4176.  
  4177.                     Usually PRINT_OPERAND_ADDRESS is not  prepared  to
  4178.                     handle  constant  sums  that  are  not marked with
  4179.                     const.  It assumes that a naked plus indicates in-
  4180.                     dexing.   If  so,  then you must reject such naked
  4181.                     constant sums as illegitimate addresses,  so  that
  4182.                     none     of     them     will    be    given    to
  4183.                     PRINT_OPERAND_ADDRESS.
  4184.  
  4185.                     On some machines, whether a  symbolic  address  is
  4186.                     legitimate depends on the section that the address
  4187.                     refers to.  On these machines,  define  the  macro
  4188.                     ENCODE_SECTION_INFO  to store the information into
  4189.                     the symbol_ref, and then check for it here.   When
  4190.                     you  see  a const, you will have to look inside it
  4191.                     to find the symbol_ref in order to  determine  the
  4192.                     section.  See section Assembler Format.
  4193.  
  4194.                     The best way to modify the name string is  by  ad-
  4195.                     ding text to the beginning, with suitable punctua-
  4196.                     tion to prevent any ambiguity.  Allocate  the  new
  4197.                     name in saveable_obstack.  You will have to modify
  4198.                     ASM_OUTPUT_LABELREF to remove and decode the added
  4199.                     text and output the name accordingly.
  4200.  
  4201.                     You can check the information stored here into the
  4202.                     symbol_ref      in      the     definitions     of
  4203.                     GO_IF_LEGITIMATE_ADDRESS                       and
  4204.                     PRINT_OPERAND_ADDRESS.
  4205.  
  4206.                REG_OK_FOR_BASE_P (x)
  4207.                     A C expression that is nonzero if x (assumed to be
  4208.                     a  reg  RTX)  is valid for use as a base register.
  4209.                     For hard registers, it should always accept  those
  4210.                     which  the hardware permits and reject the others.
  4211.                     Whether the macro accepts or rejects pseudo regis-
  4212.                     ters   must  be  controlled  by  REG_OK_STRICT  as
  4213.                     described above.  This usually requires two  vari-
  4214.                     ant  definitions,  of which REG_OK_STRICT controls
  4215.                     the one actually used.
  4216.  
  4217.                REG_OK_FOR_INDEX_P (x)
  4218.                     A C expression that is nonzero if x (assumed to be
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232.                     a reg RTX) is valid for use as an index register.
  4233.  
  4234.                     The difference between an  index  register  and  a
  4235.                     base  register  is  that the index register may be
  4236.                     scaled.  If an address involves the sum of two re-
  4237.                     gisters,  neither  one of them scaled, then either
  4238.                     one may be labeled the ``base'' and the other  the
  4239.                     ``index''; but whichever labeling is used must fit
  4240.                     the machine's constraints of which  registers  may
  4241.                     serve  in  each  capacity.   The compiler will try
  4242.                     both labelings, looking for one that is valid, and
  4243.                     will  reload one or both registers only if neither
  4244.                     labeling works.
  4245.  
  4246.                LEGITIMIZE_ADDRESS (x, oldx, mode, win)
  4247.                     A C compound statement that attempts to replace  x
  4248.                     with a valid memory address for an operand of mode
  4249.                     mode.  win will be a C statement  label  elsewhere
  4250.                     in the code; the macro definition may use
  4251.  
  4252.  
  4253.                         GO_IF_LEGITIMATE_ADDRESS (mode, x, win);
  4254.  
  4255.  
  4256.  
  4257.                to avoid further processing if the address has  be-
  4258.                come legitimate.
  4259.  
  4260.                     x will always be  the  result  of  a  call  to
  4261.                     break_out_memory_refs,  and  oldx  will be the
  4262.                     operand that was given  to  that  function  to
  4263.                     produce x.
  4264.  
  4265.                     The code generated by this  macro  should  not
  4266.                     alter the substructure of x.  If it transforms
  4267.                     x into a more legitimate form, it  should  as-
  4268.                     sign  x  (which will always be a C variable) a
  4269.                     new value.
  4270.  
  4271.                     It is not necessary for this macro to come  up
  4272.                     with  a  legitimate address.  The compiler has
  4273.                     standard ways of doing so in  all  cases.   In
  4274.                     fact, it is safe for this macro to do nothing.
  4275.                     But often  a  machine-dependent  strategy  can
  4276.                     generate better code.
  4277.  
  4278.                GO_IF_MODE_DEPENDENT_ADDRESS (addr, label)
  4279.                     A C statement or  compound  statement  with  a
  4280.                     conditional goto label; executed if memory ad-
  4281.                     dress x (an RTX) can have  different  meanings
  4282.                     depending  on  the  machine mode of the memory
  4283.                     reference it is used for.
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.                     Autoincrement and autodecrement addresses typ-
  4299.                     ically have mode-dependent effects because the
  4300.                     amount of the increment or  decrement  is  the
  4301.                     size  of  the  operand  being addressed.  Some
  4302.                     machines have other mode-dependent  addresses.
  4303.                     Many  RISC machines have no mode-dependent ad-
  4304.                     dresses.
  4305.  
  4306.                     You may assume that addr is  a  valid  address
  4307.                     for the machine.
  4308.  
  4309.                LEGITIMATE_CONSTANT_P (x)
  4310.                     A C expression that is nonzero if x is a legi-
  4311.                     timate  constant  for  an immediate operand on
  4312.                     the target machine.  You can assume that x sa-
  4313.                     tisfies  CONSTANT_P,  so  you  need  not check
  4314.                     this.  In fact, `1' is a  suitable  definition
  4315.                     for  this  macro  on  machines  where anything
  4316.                     CONSTANT_P is valid.
  4317.  
  4318.                LEGITIMATE_PIC_OPERAND_P (x)
  4319.                     A C expression that is nonzero if x is a legi-
  4320.                     timate immediate operand on the target machine
  4321.                     when  generating  position  independent  code.
  4322.                     You can assume that x satisfies CONSTANT_P, so
  4323.                     you need not check this.  You can also  assume
  4324.                     flag_pic is true, so you need not check it ei-
  4325.                     ther.  You need not define this macro  if  all
  4326.                     constants  (including  SYMBOL_REF)  can be im-
  4327.                     mediate operands when generating position  in-
  4328.                     dependent code.
  4329.  
  4330.  
  4331.           1.12.  Condition Code Status
  4332.  
  4333.                The file `conditions.h' defines a variable cc_status to
  4334.           describe  how  the  condition code was computed (in case the
  4335.           interpretation of the condition code depends on the instruc-
  4336.           tion  that  it  was set by).  This variable contains the RTL
  4337.           expressions on which the condition code is currently  based,
  4338.           and several standard flags.
  4339.  
  4340.                Sometimes additional  machine-specific  flags  must  be
  4341.           defined in the machine description header file.  It can also
  4342.           add  additional  machine-specific  information  by  defining
  4343.           CC_STATUS_MDEP.
  4344.  
  4345.                CC_STATUS_MDEP
  4346.                     C code for a data type which is used for declaring
  4347.                     the  mdep  component of cc_status.  It defaults to
  4348.                     int.
  4349.  
  4350.  
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.  
  4364.                     This macro is not used on machines that do not use
  4365.                     cc0.
  4366.  
  4367.                CC_STATUS_MDEP_INIT
  4368.                     A C expression to initialize  the  mdep  field  to
  4369.                     ``empty''.   The  default definition does nothing,
  4370.                     since most machines don't use  the  field  anyway.
  4371.                     If  you want to use the field, you should probably
  4372.                     define this macro to initialize it.
  4373.  
  4374.                     This macro is not used on machines that do not use
  4375.                     cc0.
  4376.  
  4377.                NOTICE_UPDATE_CC (exp, insn)
  4378.                     A C compound statement to set  the  components  of
  4379.                     cc_status  appropriately  for  an  insn insn whose
  4380.                     body is exp.  It is this macro's responsibility to
  4381.                     recognize  insns  that set the condition code as a
  4382.                     byproduct of other activity as well as those  that
  4383.                     explicitly set (cc0).
  4384.  
  4385.                     This macro is not used on machines that do not use
  4386.                     cc0.
  4387.  
  4388.                     If there are insns that do not set  the  condition
  4389.                     code  but  do  alter other machine registers, this
  4390.                     macro must check to see  whether  they  invalidate
  4391.                     the expressions that the condition code is record-
  4392.                     ed as reflecting.   For  example,  on  the  68000,
  4393.                     insns  that  store in address registers do not set
  4394.                     the  condition  code,  which  means  that  usually
  4395.                     NOTICE_UPDATE_CC can leave cc_status unaltered for
  4396.                     such insns.  But suppose that  the  previous  insn
  4397.                     set   the   condition   code   based  on  location
  4398.                     `a4@(102)' and the current insn stores a new value
  4399.                     in  `a4'.   Although  the  condition  code  is not
  4400.                     changed by this, it will no longer be true that it
  4401.                     reflects  the  contents of `a4@(102)'.  Therefore,
  4402.                     NOTICE_UPDATE_CC must alter cc_status in this case
  4403.                     to  say  that nothing is known about the condition
  4404.                     code value.
  4405.  
  4406.                     The  definition  of   NOTICE_UPDATE_CC   must   be
  4407.                     prepared  to deal with the results of peephole op-
  4408.                     timization: insns whose patterns are parallel RTXs
  4409.                     containing various reg, mem or constants which are
  4410.                     just the operands.  The  RTL  structure  of  these
  4411.                     insns is not sufficient to indicate what the insns
  4412.                     actually do.  What NOTICE_UPDATE_CC should do when
  4413.                     it sees one is just to run CC_STATUS_INIT.
  4414.  
  4415.                     A possible definition of  NOTICE_UPDATE_CC  is  to
  4416.                     call  a  function  that looks at an attribute (see
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.  
  4430.                     section   Insn  Attributes)  named,  for  example,
  4431.                     `cc'.   This  avoids  having  detailed information
  4432.                     about patterns in two places, the `md' file and in
  4433.                     NOTICE_UPDATE_CC.
  4434.  
  4435.                EXTRA_CC_MODES
  4436.                     A list of names to be used  for  additional  modes
  4437.                     for  condition  code values in registers (see sec-
  4438.                     tion  Jump Patterns).  These names  are  added  to
  4439.                     enum  machine_mode and all have class MODE_CC.  By
  4440.                     convention, they should start with  `CC'  and  end
  4441.                     with `mode'.
  4442.  
  4443.                     You should only define this macro if your  machine
  4444.                     does  not use cc0 and only if additional modes are
  4445.                     required.
  4446.  
  4447.                EXTRA_CC_NAMES
  4448.                     A list of C strings giving the names for the modes
  4449.                     listed  in EXTRA_CC_MODES.  For example, the Sparc
  4450.                     defines this macro and EXTRA_CC_MODES as
  4451.  
  4452.  
  4453.                         #define EXTRA_CC_MODES CC_NOOVmode, CCFPmode
  4454.                         #define EXTRA_CC_NAMES "CC_NOOV", "CCFP"
  4455.  
  4456.  
  4457.  
  4458.                     This macro is not required  if  EXTRA_CC_MODES
  4459.                     is not defined.
  4460.  
  4461.                SELECT_CC_MODE (op, x)
  4462.                     Returns a mode from class MODE_CC to  be  used
  4463.                     when  comparison  operation code op is applied
  4464.                     to  rtx  x.   For  example,  on   the   Sparc,
  4465.                     SELECT_CC_MODE  is defined as (see see section
  4466.                     Jump Patterns for a description of the  reason
  4467.                     for this definition)
  4468.  
  4469.  
  4470.                         #define SELECT_CC_MODE(OP,X) \
  4471.                           (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT ? CCFPmode    \
  4472.                            : (GET_CODE (X) == PLUS || GET_CODE (X) == MINUS          \
  4473.                               || GET_CODE (X) == NEG)                                \
  4474.                            ? CC_NOOVmode : CCmode)
  4475.  
  4476.  
  4477.  
  4478.                     This macro is not required  if  EXTRA_CC_MODES
  4479.                     is not defined.
  4480.  
  4481.  
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.           1.13.  Describing Relative Costs of Operations
  4497.  
  4498.                These macros let you describe  the  relative  speed  of
  4499.           various operations on the target machine.
  4500.  
  4501.                CONST_COSTS (x, code)
  4502.                     A part of a C switch statement that describes  the
  4503.                     relative  costs  of  constant RTL expressions.  It
  4504.                     must contain  case  labels  for  expression  codes
  4505.                     const_int,   const,   symbol_ref,   label_ref  and
  4506.                     const_double.  Each case must ultimately  reach  a
  4507.                     return  statement  to  return the relative cost of
  4508.                     the use of that kind of constant value in  an  ex-
  4509.                     pression.   The  cost  may  depend  on the precise
  4510.                     value of the constant, which is available for  ex-
  4511.                     amination in x.
  4512.  
  4513.                     code is the expression code---redundant, since  it
  4514.                     can be obtained with GET_CODE (x).
  4515.  
  4516.                RTX_COSTS (x, code)
  4517.                     Like CONST_COSTS but applies  to  nonconstant  RTL
  4518.                     expressions.   This  can  be used, for example, to
  4519.                     indicate how costly a multiply instruction is.  In
  4520.                     writing  this  macro,  you  can  use the construct
  4521.                     COSTS_N_INSNS (n) to specify a  cost  equal  to  n
  4522.                     fast instructions.
  4523.  
  4524.                     This macro is optional; do not define  it  if  the
  4525.                     default cost assumptions are adequate for the tar-
  4526.                     get machine.
  4527.  
  4528.                ADDRESS_COST (address)
  4529.                     An expression giving the  cost  of  an  addressing
  4530.                     mode  that  contains address.  If not defined, the
  4531.                     cost is computed from the address  expression  and
  4532.                     the CONST_COSTS values.
  4533.  
  4534.                     For most CISC machines, the default cost is a good
  4535.                     approximation  of  the true cost of the addressing
  4536.                     mode.  However, on RISC machines, all instructions
  4537.                     normally  have the same length and execution time.
  4538.                     Hence all addresses will have equal costs.
  4539.  
  4540.                     In cases where more than one form of an address is
  4541.                     known, the form with the lowest cost will be used.
  4542.                     If multiple forms have the same, lowest, cost, the
  4543.                     one that is the most complex will be used.
  4544.  
  4545.                     For example, suppose an address that is  equal  to
  4546.                     the sum of a register and a constant is used twice
  4547.                     in the same basic block.  When this macro  is  not
  4548.                     defined,  the address will be computed in a regis-
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.                     ter and memory references will be indirect through
  4563.                     that  register.  On machines where the cost of the
  4564.                     addressing mode containing the sum  is  no  higher
  4565.                     than  that  of  a  simple indirect reference, this
  4566.                     will produce an additional instruction and  possi-
  4567.                     bly   require   an  additional  register.   Proper
  4568.                     specification of this macro eliminates this  over-
  4569.                     head for such machines.
  4570.  
  4571.                     Similar use of this  macro  is  made  in  strength
  4572.                     reduction of loops.
  4573.  
  4574.                     address need not be valid as an address.  In  such
  4575.                     a  case,  the  cost is not relevant and can be any
  4576.                     value; invalid addresses need not  be  assigned  a
  4577.                     different cost.
  4578.  
  4579.                     On machines where an address involving  more  than
  4580.                     one register is as cheap as an address computation
  4581.                     involving only one register, defining ADDRESS_COST
  4582.                     to reflect this can cause two registers to be live
  4583.                     over a region of code where only  one  would  have
  4584.                     been  if  ADDRESS_COST  were  not  defined in that
  4585.                     manner.  This effect should be considered  in  the
  4586.                     definition of this macro.  Equivalent costs should
  4587.                     probably only be given to addresses with different
  4588.                     numbers  of registers on machines with lots of re-
  4589.                     gisters.
  4590.  
  4591.                     This macro will normally either not be defined  or
  4592.                     be defined as a constant.
  4593.  
  4594.                REGISTER_MOVE_COST (from, to)
  4595.                     A C expression for the cost of moving data from  a
  4596.                     register  in  class  from to one in class to.  The
  4597.                     classes are expressed using the enumeration values
  4598.                     such  as  GENERAL_REGS.   A  value of 2 is the de-
  4599.                     fault; other values are  interpreted  relative  to
  4600.                     that.
  4601.  
  4602.                     It is not required that the cost  always  equal  2
  4603.                     when  from  is the same as to; on some machines it
  4604.                     is expensive to move between registers if they are
  4605.                     not general registers.
  4606.  
  4607.                     If reload sees an insn consisting of a single  set
  4608.                     between     two    hard    registers,    and    if
  4609.                     REGISTER_MOVE_COST applied to  their  classes  re-
  4610.                     turns  a  value of 2, reload does not check to en-
  4611.                     sure that the constraints of  the  insn  are  met.
  4612.                     Setting  a  cost of other than 2 will allow reload
  4613.                     to verify  that  the  constraints  are  met.   You
  4614.                     should do this if the `movm' pattern's constraints
  4615.  
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.  
  4628.                     do not allow such copying.
  4629.  
  4630.                MEMORY_MOVE_COST (m)
  4631.                     A C expression for the cost of moving data of mode
  4632.                     m  between a register and memory.  A value of 2 is
  4633.                     the default; this cost is  relative  to  those  in
  4634.                     REGISTER_MOVE_COST.
  4635.  
  4636.                     If moving between registers and memory is more ex-
  4637.                     pensive than between two registers, you should de-
  4638.                     fine this macro to express the relative cost.
  4639.  
  4640.                BRANCH_COST
  4641.                     A C expression for the cost of a  branch  instruc-
  4642.                     tion.   A  value of 1 is the default; other values
  4643.                     are interpreted relative to that.
  4644.  
  4645.  
  4646.                Here are additional macros which do not specify precise
  4647.           relative  costs,  but  only  that  certain  actions are more
  4648.           expensive than GNU CC would ordinarily expect.
  4649.  
  4650.                SLOW_BYTE_ACCESS
  4651.                     Define this macro  as  a  C  expression  which  is
  4652.                     nonzero  if  accessing  less than a word of memory
  4653.                     (i.e. a char or a short) is no faster than access-
  4654.                     ing a word of memory, i.e., if such access require
  4655.                     more than  one  instruction  or  if  there  is  no
  4656.                     difference in cost between byte and (aligned) word
  4657.                     loads.
  4658.  
  4659.                     When this macro is not defined, the compiler  will
  4660.                     access  a field by finding the smallest containing
  4661.                     object; when it is defined, a fullword  load  will
  4662.                     be   used  if  alignment  permits.   Unless  bytes
  4663.                     accesses are faster than word accesses, using word
  4664.                     accesses is preferable since it may eliminate sub-
  4665.                     sequent memory access if subsequent accesses occur
  4666.                     to other fields in the same word of the structure,
  4667.                     but to different bytes.
  4668.  
  4669.                SLOW_ZERO_EXTEND
  4670.                     Define this macro if zero-extension (of a char  or
  4671.                     short  to an int) can be done faster if the desti-
  4672.                     nation is a register that is known to be zero.
  4673.  
  4674.                     If you define this macro, you must  have  instruc-
  4675.                     tion  patterns  that recognize RTL structures like
  4676.                     this:
  4677.  
  4678.  
  4679.                         (set (strict_low_part (subreg:QI (reg:SI ...) 0)) ...)
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.  
  4694.  
  4695.  
  4696.                and likewise for HImode.
  4697.  
  4698.                SLOW_UNALIGNED_ACCESS
  4699.                     Define this macro if unaligned accesses have a
  4700.                     cost many times greater than aligned accesses,
  4701.                     for example if they are  emulated  in  a  trap
  4702.                     handler.
  4703.  
  4704.                     When this macro is defined, the compiler  will
  4705.                     act  as  if STRICT_ALIGNMENT were defined when
  4706.                     generating code for  block  moves.   This  can
  4707.                     cause  significantly  more  instructions to be
  4708.                     produced.  Therefore, do not define this macro
  4709.                     if  unaligned accesses only add a cycle or two
  4710.                     to the time for a memory access.
  4711.  
  4712.                DONT_REDUCE_ADDR
  4713.                     Define this macro to inhibit  strength  reduc-
  4714.                     tion  of memory addresses.  (On some machines,
  4715.                     such strength reduction seems to do harm rath-
  4716.                     er than good.)
  4717.  
  4718.                MOVE_RATIO
  4719.                     The number of scalar move insns  which  should
  4720.                     be  generated instead of a string move insn or
  4721.                     a library call.  Increasing the value will al-
  4722.                     ways  make  code faster, but eventually incurs
  4723.                     high cost in increased code size.
  4724.  
  4725.                     If you don't define this, a reasonable default
  4726.                     is used.
  4727.  
  4728.                NO_FUNCTION_CSE
  4729.                     Define this macro if it is as good  or  better
  4730.                     to  call  a  constant function address than to
  4731.                     call an address kept in a register.
  4732.  
  4733.                NO_RECURSIVE_FUNCTION_CSE
  4734.                     Define this macro if it is as good  or  better
  4735.                     for a function to call itself with an explicit
  4736.                     address than to call an address kept in a  re-
  4737.                     gister.
  4738.  
  4739.  
  4740.           1.14.
  4741.           Dividing the Output into Sections (Texts, Data, ...)
  4742.  
  4743.                An object file is divided into sections containing dif-
  4744.           ferent  types  of  data.  In the most common case, there are
  4745.           three sections: the text section, which  holds  instructions
  4746.           and   read-only   data;   the   data  section,  which  holds
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.           initialized writable data; and the bss section, which  holds
  4761.           uninitialized  data.   Some systems have other kinds of sec-
  4762.           tions.
  4763.  
  4764.                The compiler must tell the  assembler  when  to  switch
  4765.           sections.   These  macros control what commands to output to
  4766.           tell the assembler this.  You  can  also  define  additional
  4767.           sections.
  4768.  
  4769.                TEXT_SECTION_ASM_OP
  4770.                     A C string constant for  the  assembler  operation
  4771.                     that  should  precede  instructions  and read-only
  4772.                     data.  Normally ".text" is right.
  4773.  
  4774.                DATA_SECTION_ASM_OP
  4775.                     A C string constant for the assembler operation to
  4776.                     identify  the  following data as writable initial-
  4777.                     ized data.  Normally ".data" is right.
  4778.  
  4779.                SHARED_SECTION_ASM_OP
  4780.                     If defined, a C string constant for the  assembler
  4781.                     operation to identify the following data as shared
  4782.                     data.  If not defined, DATA_SECTION_ASM_OP will be
  4783.                     used.
  4784.  
  4785.                INIT_SECTION_ASM_OP
  4786.                     If defined, a C string constant for the  assembler
  4787.                     operation  to  identify the following data as ini-
  4788.                     tialization code.  If not defined, GNU CC will as-
  4789.                     sume such a section does not exist.
  4790.  
  4791.                EXTRA_SECTIONS
  4792.                     A list of names for sections other than the  stan-
  4793.                     dard two, which are in_text and in_data.  You need
  4794.                     not define this macro on a system  with  no  other
  4795.                     sections (that GCC needs to use).
  4796.  
  4797.                EXTRA_SECTION_FUNCTIONS
  4798.                     One or more functions to be defined in `varasm.c'.
  4799.                     These  functions should do jobs analogous to those
  4800.                     of text_section and data_section, for  your  addi-
  4801.                     tional  sections.  Do not define this macro if you
  4802.                     do not define EXTRA_SECTIONS.
  4803.  
  4804.                READONLY_DATA_SECTION
  4805.                     On most machines, read-only variables,  constants,
  4806.                     and  jump  tables  are placed in the text section.
  4807.                     If this is not the case on your machine, this mac-
  4808.                     ro  should be defined to be the name of a function
  4809.                     (either data_section  or  a  function  defined  in
  4810.                     EXTRA_SECTIONS) that switches to the section to be
  4811.                     used for read-only items.
  4812.  
  4813.  
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.  
  4824.  
  4825.  
  4826.                     If these items should be placed in the  text  sec-
  4827.                     tion, this macro should not be defined.
  4828.  
  4829.                SELECT_SECTION (exp, reloc)
  4830.                     A C statement or statements to switch to  the  ap-
  4831.                     propriate  section for output of exp.  You can as-
  4832.                     sume that exp is either a VAR_DECL node or a  con-
  4833.                     stant  of  some sort.  reloc indicates whether the
  4834.                     initial value of exp  requires  link-time  reloca-
  4835.                     tions.  Select the section by calling text_section
  4836.                     or one of the alternatives for other sections.
  4837.  
  4838.                     Do not define this macro if you put all  read-only
  4839.                     variables and constants in the read-only data sec-
  4840.                     tion (usually the text section).
  4841.  
  4842.                SELECT_RTX_SECTION (mode, rtx)
  4843.                     A C statement or statements to switch to  the  ap-
  4844.                     propriate  section for output of rtx in mode mode.
  4845.                     You can assume that rtx is some kind  of  constant
  4846.                     in  RTL.  The argument mode is redundant except in
  4847.                     the case of a const_int rtx.  Select  the  section
  4848.                     by calling text_section or one of the alternatives
  4849.                     for other sections.
  4850.  
  4851.                     Do not define this macro if you put all  constants
  4852.                     in the read-only data section.
  4853.  
  4854.                JUMP_TABLES_IN_TEXT_SECTION
  4855.                     Define this macro if jump  tables  (for  tablejump
  4856.                     insns) should be output in the text section, along
  4857.                     with the assembler instructions.   Otherwise,  the
  4858.                     readonly data section is used.
  4859.  
  4860.                     This macro is irrelevant if there is  no  separate
  4861.                     readonly data section.
  4862.  
  4863.                ENCODE_SECTION_INFO (decl)
  4864.                     Define this macro if references to a  symbol  must
  4865.                     be  treated  differently  depending  on  something
  4866.                     about the variable or function named by the symbol
  4867.                     (such as what section it is in).
  4868.  
  4869.                     The macro definition, if any, is executed  immedi-
  4870.                     ately  after the rtl for decl has been created and
  4871.                     stored in DECL_RTL (decl).  The value of  the  rtl
  4872.                     will be a mem whose address is a symbol_ref.
  4873.  
  4874.                     The usual thing for this macro to do is to  record
  4875.                     a flag in the symbol_ref (such as SYMBOL_REF_FLAG)
  4876.                     or  to  store  a  modified  name  string  in   the
  4877.                     symbol_ref (if one bit is not enough information).
  4878.  
  4879.  
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.  
  4892.           1.15.  Position Independent Code
  4893.  
  4894.                This section describes macros that help implement  gen-
  4895.           eration of position independent code.  Simply defining these
  4896.           macros is not enough to generate valid PIC;  you  must  also
  4897.           add  support  to  the  macros  GO_IF_LEGITIMATE_ADDRESS  and
  4898.           LEGITIMIZE_ADDRESS, and PRINT_OPERAND_ADDRESS as well.   You
  4899.           must  modify  the  definition  of  `movsi'  to  do something
  4900.           appropriate when the  source  operand  contains  a  symbolic
  4901.           address.   You may also need to alter the handling of switch
  4902.           statements so that they use relative addresses.
  4903.  
  4904.                PIC_OFFSET_TABLE_REGNUM
  4905.                     The register number of the register  used  to  ad-
  4906.                     dress  a table of static data addresses in memory.
  4907.                     In some  cases  this  register  is  defined  by  a
  4908.                     processor's   ``application   binary   interface''
  4909.                     (ABI).  When this macro is defined,  RTL  is  gen-
  4910.                     erated  for  this register once, as with the stack
  4911.                     pointer and frame pointer registers.  If this mac-
  4912.                     ro  is  not  defined,  it  is  up  to the machine-
  4913.                     dependent files to allocate such  a  register  (if
  4914.                     necessary).
  4915.  
  4916.                FINALIZE_PIC
  4917.                     By generating position-independent code, when  two
  4918.                     different  programs  (A  and B) share a common li-
  4919.                     brary (libC.a), the text of  the  library  can  be
  4920.                     shared whether or not the library is linked at the
  4921.                     same address for both programs.  In some of  these
  4922.                     environments,  position-independent  code requires
  4923.                     not only the use of  different  addressing  modes,
  4924.                     but  also  special code to enable the use of these
  4925.                     addressing modes.
  4926.  
  4927.                     The FINALIZE_PIC macro serves as a  hook  to  emit
  4928.                     these  special  codes  once  the function is being
  4929.                     compiled into assembly code, but not before.   (It
  4930.                     is not done before, because in the case of compil-
  4931.                     ing an inline function, it would lead to  multiple
  4932.                     PIC  prologues  being  included in functions which
  4933.                     used inline functions and were compiled to  assem-
  4934.                     bly language.)
  4935.  
  4936.           1.16.  Defining the Output Assembler Language
  4937.  
  4938.                This section describes macros whose  principal  purpose
  4939.           is  to  describe  how  to  write  instructions  in assembler
  4940.           language--rather than what the instructions do.
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.  
  4958.           1.16.1.  The Overall Framework of an Assembler File
  4959.  
  4960.                ASM_FILE_START (stream)
  4961.                     A C expression which outputs to the  stdio  stream
  4962.                     stream some appropriate text to go at the start of
  4963.                     an assembler file.
  4964.  
  4965.                     Normally this macro is defined to  output  a  line
  4966.                     containing  `#NO_APP', which is a comment that has
  4967.                     no effect on most assemblers but tells the GNU as-
  4968.                     sembler  that it can save time by not checking for
  4969.                     certain assembler constructs.
  4970.  
  4971.                     On systems that use SDB, it is necessary to output
  4972.                     certain commands; see `attasm.h'.
  4973.  
  4974.                ASM_FILE_END (stream)
  4975.                     A C expression which outputs to the  stdio  stream
  4976.                     stream  some  appropriate text to go at the end of
  4977.                     an assembler file.
  4978.  
  4979.                     If this macro is not defined, the  default  is  to
  4980.                     output  nothing  special  at  the end of the file.
  4981.                     Most systems don't require any definition.
  4982.  
  4983.                     On systems that use SDB, it is necessary to output
  4984.                     certain commands; see `attasm.h'.
  4985.  
  4986.                ASM_IDENTIFY_GCC (file)
  4987.                     A C statement to output assembler  commands  which
  4988.                     will  identify the object file as having been com-
  4989.                     piled with GNU CC (or another GNU compiler).
  4990.  
  4991.                     If  you  don't  define  this  macro,  the   string
  4992.                     `gcc_compiled.:' is output.  This string is calcu-
  4993.                     lated to define a symbol which,  on  BSD  systems,
  4994.                     will  never  be defined for any other reason.  GDB
  4995.                     checks for the presence of this symbol when  read-
  4996.                     ing the symbol table of an executable.
  4997.  
  4998.                     On non-BSD systems, you must arrange communication
  4999.                     with  GDB  in  some  other fashion.  If GDB is not
  5000.                     used on your system, you  can  define  this  macro
  5001.                     with an empty body.
  5002.  
  5003.                ASM_COMMENT_START
  5004.                     A C string constant describing how to begin a com-
  5005.                     ment  in  the target assembler language.  The com-
  5006.                     piler assumes that the comment will end at the end
  5007.                     of the line.
  5008.  
  5009.                ASM_APP_ON
  5010.                     A C string constant for text to be  output  before
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.                     each  asm  statement or group of consecutive ones.
  5025.                     Normally this is "#APP", which is a  comment  that
  5026.                     has no effect on most assemblers but tells the GNU
  5027.                     assembler that it must check the lines that follow
  5028.                     for all valid assembler constructs.
  5029.  
  5030.                ASM_APP_OFF
  5031.                     A C string constant for text to  be  output  after
  5032.                     each  asm  statement or group of consecutive ones.
  5033.                     Normally this is "#NO_APP", which  tells  the  GNU
  5034.                     assembler to resume making the time-saving assump-
  5035.                     tions that are valid for ordinary compiler output.
  5036.  
  5037.                ASM_OUTPUT_SOURCE_FILENAME (stream, name)
  5038.                     A C statement to output COFF information or  DWARF
  5039.                     debugging   information   which   indicates   that
  5040.                     filename name is the current source  file  to  the
  5041.                     stdio stream stream.
  5042.  
  5043.                     This macro need not be  defined  if  the  standard
  5044.                     form  of  output for the file format in use is ap-
  5045.                     propriate.
  5046.  
  5047.                ASM_OUTPUT_SOURCE_LINE (stream, line)
  5048.                     A C statement to output DBX or SDB  debugging  in-
  5049.                     formation  before code for line number line of the
  5050.                     current source file to the stdio stream stream.
  5051.  
  5052.                     This macro need not be  defined  if  the  standard
  5053.                     form  of debugging information for the debugger in
  5054.                     use is appropriate.
  5055.  
  5056.                ASM_OUTPUT_IDENT (stream, string)
  5057.                     A C statement to output something to the assembler
  5058.                     file to handle a `#ident' directive containing the
  5059.                     text string.  If this macro is not defined,  noth-
  5060.                     ing is output for a `#ident' directive.
  5061.  
  5062.                OBJC_PROLOGUE
  5063.                     A C statement to output any  assembler  statements
  5064.                     which  are required to precede any Objective C ob-
  5065.                     ject definitions or message sending.   The  state-
  5066.                     ment  is executed only when compiling an Objective
  5067.                     C program.
  5068.  
  5069.  
  5070.           1.16.2.  Output of Data
  5071.  
  5072.                ASM_OUTPUT_LONG_DOUBLE (stream, value)
  5073.  
  5074.                ASM_OUTPUT_DOUBLE (stream, value)
  5075.  
  5076.  
  5077.  
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.                ASM_OUTPUT_FLOAT (stream, value)
  5091.                     A C statement to output to the stdio stream stream
  5092.                     an  assembler  instruction to assemble a floating-
  5093.                     point  constant  of  TFmode,  DFmode  or   SFmode,
  5094.                     respectively, whose value is value.  value will be
  5095.                     a C expression of type  REAL_VALUE__TYPE,  usually
  5096.                     double.
  5097.  
  5098.                ASM_OUTPUT_QUADRUPLE_INT (stream, exp)
  5099.  
  5100.                ASM_OUTPUT_DOUBLE_INT (stream, exp)
  5101.  
  5102.                ASM_OUTPUT_INT (stream, exp)
  5103.  
  5104.                ASM_OUTPUT_SHORT (stream, exp)
  5105.  
  5106.                ASM_OUTPUT_CHAR (stream, exp)
  5107.                     A C statement to output to the stdio stream stream
  5108.                     an assembler instruction to assemble an integer of
  5109.                     16, 8, 4, 2 or 1 bytes, respectively, whose  value
  5110.                     is value.  The argument exp will be an RTL expres-
  5111.                     sion  which  represents  a  constant  value.   Use
  5112.                     `output_addr_const  (stream,  exp)' to output this
  5113.                     value as an assembler expression.
  5114.  
  5115.                     For sizes larger than UNITS_PER_WORD, if  the  ac-
  5116.                     tion  of  a macro would be identical to repeatedly
  5117.                     calling the  macro  corresponding  to  a  size  of
  5118.                     UNITS_PER_WORD,  once  for each word, you need not
  5119.                     define the macro.
  5120.  
  5121.                ASM_OUTPUT_BYTE (stream, value)
  5122.                     A C statement to output to the stdio stream stream
  5123.                     an assembler instruction to assemble a single byte
  5124.                     containing the number value.
  5125.  
  5126.                ASM_BYTE_OP
  5127.                     A C string constant giving the  pseudo-op  to  use
  5128.                     for  a sequence of single-byte constants.  If this
  5129.                     macro is not defined, the default is "byte".
  5130.  
  5131.                ASM_OUTPUT_ASCII (stream, ptr, len)
  5132.                     A C statement to output to the stdio stream stream
  5133.                     an assembler instruction to assemble a string con-
  5134.                     stant containing the len bytes at ptr.   ptr  will
  5135.                     be  a  C expression of type char * and len a C ex-
  5136.                     pression of type int.
  5137.  
  5138.                     If the assembler has a .ascii pseudo-op  as  found
  5139.                     in  the Berkeley Unix assembler, do not define the
  5140.                     macro ASM_OUTPUT_ASCII.
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.  
  5156.                ASM_OUTPUT_POOL_PROLOGUE (file funname fundecl size)
  5157.                     A C statement to output assembler commands to  de-
  5158.                     fine  the  start  of the constant pool for a func-
  5159.                     tion.  funname is a string giving the name of  the
  5160.                     function.   Should the return type of the function
  5161.                     be required, it can be obtained via fundecl.  size
  5162.                     is  the  size, in bytes, of the constant pool that
  5163.                     will be written immediately after this call.
  5164.  
  5165.                     If no constant-pool prefix is required, the  usual
  5166.                     case, this macro need not be defined.
  5167.  
  5168.                ASM_OUTPUT_SPECIAL_POOL_ENTRY (file, x, mode, align, labelno, jumpto)
  5169.                     A  C statement (with or without semicolon) to out-
  5170.                     put a constant in the constant pool, if  it  needs
  5171.                     special  treatment.   (This macro need not do any-
  5172.                     thing for RTL expressions that can be output  nor-
  5173.                     mally.)
  5174.  
  5175.                     The argument file is the standard  I/O  stream  to
  5176.                     output  the  assembler  code on.  x is the RTL ex-
  5177.                     pression for the constant to output, and  mode  is
  5178.                     the  machine  mode  (in  case x is a `const_int').
  5179.                     align is the required alignment for the  value  x;
  5180.                     you  should output an assembler directive to force
  5181.                     this much alignment.
  5182.  
  5183.                     The argument labelno is a  number  to  use  in  an
  5184.                     internal label for the address of this pool entry.
  5185.                     The definition of this macro  is  responsible  for
  5186.                     outputting  the  label  definition  at  the proper
  5187.                     place.  Here is how to do this:
  5188.  
  5189.  
  5190.                         ASM_OUTPUT_INTERNAL_LABEL (file, "LC", labelno);
  5191.  
  5192.  
  5193.  
  5194.                     When you output a pool  entry  specially,  you
  5195.                     should  end  with  a goto to the label jumpto.
  5196.                     This will prevent the same pool entry from be-
  5197.                     ing output a second time in the usual manner.
  5198.  
  5199.                     You need not define this macro if it would  do
  5200.                     nothing.
  5201.  
  5202.                ASM_OPEN_PAREN
  5203.  
  5204.                ASM_CLOSE_PAREN
  5205.                     These macros are defined as C string constant,
  5206.                     describing  the  syntax  in  the assembler for
  5207.                     grouping arithmetic expressions.  The  follow-
  5208.                     ing  definitions  are  correct for most assem-
  5209.  
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.  
  5220.  
  5221.  
  5222.                     blers:
  5223.  
  5224.  
  5225.                         #define ASM_OPEN_PAREN "("
  5226.                         #define ASM_CLOSE_PAREN ")"
  5227.  
  5228.  
  5229.  
  5230.  
  5231.           1.16.3.  Output of Uninitialized Variables
  5232.  
  5233.                Each of the macros in this section is used  to  do  the
  5234.           whole job of outputting a single uninitialized variable.
  5235.  
  5236.                ASM_OUTPUT_COMMON (stream, name, size, rounded)
  5237.                     A C statement (sans semicolon) to  output  to  the
  5238.                     stdio  stream stream the assembler definition of a
  5239.                     common-label named name whose size is size  bytes.
  5240.                     The  variable  rounded  is  the size rounded up to
  5241.                     whatever alignment the caller wants.
  5242.  
  5243.                     Use the expression assemble_name (stream, name) to
  5244.                     output  the  name  itself;  before and after that,
  5245.                     output the additional assembler syntax for  defin-
  5246.                     ing the name, and a newline.
  5247.  
  5248.                     This macro controls how the assembler  definitions
  5249.                     of uninitialized global variables are output.
  5250.  
  5251.                ASM_OUTPUT_ALIGNED_COMMON (stream, name, size, alignment)
  5252.                     Like  ASM_OUTPUT_COMMON  except takes the required
  5253.                     alignment as a separate,  explicit  argument.   If
  5254.                     you  define  this  macro,  it  is used in place of
  5255.                     ASM_OUTPUT_COMMON, and gives you more  flexibility
  5256.                     in  handling  the  required alignment of the vari-
  5257.                     able.
  5258.  
  5259.                ASM_OUTPUT_SHARED_COMMON (stream, name, size, rounded)
  5260.                     If defined, it is  similar  to  ASM_OUTPUT_COMMON,
  5261.                     except  that  it  is used when name is shared.  If
  5262.                     not defined, ASM_OUTPUT_COMMON will be used.
  5263.  
  5264.                ASM_OUTPUT_LOCAL (stream, name, size, rounded)
  5265.                     A C statement (sans semicolon) to  output  to  the
  5266.                     stdio  stream stream the assembler definition of a
  5267.                     local-common-label named name whose size  is  size
  5268.                     bytes.   The  variable rounded is the size rounded
  5269.                     up to whatever alignment the caller wants.
  5270.  
  5271.                     Use the expression assemble_name (stream, name) to
  5272.                     output  the  name  itself;  before and after that,
  5273.                     output the additional assembler syntax for  defin-
  5274.                     ing the name, and a newline.
  5275.  
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.                     This macro controls how the assembler  definitions
  5289.                     of uninitialized static variables are output.
  5290.  
  5291.                ASM_OUTPUT_ALIGNED_LOCAL (stream, name, size, alignment)
  5292.                     Like  ASM_OUTPUT_LOCAL  except  takes the required
  5293.                     alignment as a separate,  explicit  argument.   If
  5294.                     you  define  this  macro,  it  is used in place of
  5295.                     ASM_OUTPUT_LOCAL, and gives you  more  flexibility
  5296.                     in  handling  the  required alignment of the vari-
  5297.                     able.
  5298.  
  5299.                ASM_OUTPUT_SHARED_LOCAL (stream, name, size, rounded)
  5300.                     If defined, it is similar to ASM_OUTPUT_LOCAL, ex-
  5301.                     cept  that it is used when name is shared.  If not
  5302.                     defined, ASM_OUTPUT_LOCAL will be used.
  5303.  
  5304.  
  5305.           1.16.4.  Output and Generation of Labels
  5306.  
  5307.                ASM_OUTPUT_LABEL (stream, name)
  5308.                     A C statement (sans semicolon) to  output  to  the
  5309.                     stdio  stream stream the assembler definition of a
  5310.                     label   named   name.     Use    the    expression
  5311.                     assemble_name  (stream,  name)  to output the name
  5312.                     itself; before and after that,  output  the  addi-
  5313.                     tional assembler syntax for defining the name, and
  5314.                     a newline.
  5315.  
  5316.                ASM_DECLARE_FUNCTION_NAME (stream, name, decl)
  5317.                     A C statement (sans semicolon) to  output  to  the
  5318.                     stdio stream stream any text necessary for declar-
  5319.                     ing the name name of a function which is being de-
  5320.                     fined.   This  macro is responsible for outputting
  5321.                     the    label     definition     (perhaps     using
  5322.                     ASM_OUTPUT_LABEL).    The  argument  decl  is  the
  5323.                     FUNCTION_DECL tree node representing the function.
  5324.  
  5325.                     If this macro is not defined,  then  the  function
  5326.                     name is defined in the usual manner as a label (by
  5327.                     means of ASM_OUTPUT_LABEL).
  5328.  
  5329.                ASM_DECLARE_FUNCTION_SIZE (stream, name, decl)
  5330.                     A C statement (sans semicolon) to  output  to  the
  5331.                     stdio stream stream any text necessary for declar-
  5332.                     ing the size of a function which is being defined.
  5333.                     The  argument  name  is  the name of the function.
  5334.                     The argument decl is the FUNCTION_DECL  tree  node
  5335.                     representing the function.
  5336.  
  5337.                     If this macro is not defined,  then  the  function
  5338.                     size is not defined.
  5339.  
  5340.  
  5341.  
  5342.  
  5343.  
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.  
  5354.                ASM_DECLARE_OBJECT_NAME (stream, name, decl)
  5355.                     A C statement (sans semicolon) to  output  to  the
  5356.                     stdio stream stream any text necessary for declar-
  5357.                     ing the name name of an initialized variable which
  5358.                     is  being defined.  This macro must output the la-
  5359.                     bel definition (perhaps  using  ASM_OUTPUT_LABEL).
  5360.                     The  argument  decl  is  the  VAR_DECL  tree  node
  5361.                     representing the variable.
  5362.  
  5363.                     If this macro is not defined,  then  the  variable
  5364.                     name is defined in the usual manner as a label (by
  5365.                     means of ASM_OUTPUT_LABEL).
  5366.  
  5367.                ASM_GLOBALIZE_LABEL (stream, name)
  5368.                     A C statement (sans semicolon) to  output  to  the
  5369.                     stdio  stream  stream some commands that will make
  5370.                     the label name  global;  that  is,  available  for
  5371.                     reference  from  other  files.  Use the expression
  5372.                     assemble_name (stream, name) to  output  the  name
  5373.                     itself;  before  and  after that, output the addi-
  5374.                     tional assembler syntax for making that name  glo-
  5375.                     bal, and a newline.
  5376.  
  5377.                ASM_OUTPUT_EXTERNAL (stream, decl, name)
  5378.                     A C statement (sans semicolon) to  output  to  the
  5379.                     stdio stream stream any text necessary for declar-
  5380.                     ing the name of  an  external  symbol  named  name
  5381.                     which  is  referenced  in this compilation but not
  5382.                     defined.  The value of decl is the tree  node  for
  5383.                     the declaration.
  5384.  
  5385.                     This macro need not be defined if it does not need
  5386.                     to  output  anything.   The GNU assembler and most
  5387.                     Unix assemblers don't require anything.
  5388.  
  5389.                ASM_OUTPUT_EXTERNAL_LIBCALL (stream, symref)
  5390.                     A C statement (sans semicolon) to output on stream
  5391.                     an  assembler pseudo-op to declare a library func-
  5392.                     tion name external.  The name of the library func-
  5393.                     tion is given by symref, which has type rtx and is
  5394.                     a symbol_ref.
  5395.  
  5396.                     This macro need not be defined if it does not need
  5397.                     to  output  anything.   The GNU assembler and most
  5398.                     Unix assemblers don't require anything.
  5399.  
  5400.                ASM_OUTPUT_LABELREF (stream, name)
  5401.                     A C statement (sans semicolon) to  output  to  the
  5402.                     stdio  stream stream a reference in assembler syn-
  5403.                     tax to a label named name.  This should add `_' to
  5404.                     the  front  of  the  name, if that is customary on
  5405.                     your operating system, as it is in  most  Berkeley
  5406.                     Unix    systems.     This   macro   is   used   in
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.  
  5420.                     assemble_name.
  5421.  
  5422.                ASM_OUTPUT_LABELREF_AS_INT (file, label)
  5423.                     Define this macro for systems that use the program
  5424.                     collect2.   The definition should be a C statement
  5425.                     to output a word containing a reference to the la-
  5426.                     bel label.
  5427.  
  5428.                ASM_GENERATE_INTERNAL_LABEL (string, prefix, num)
  5429.                     A C statement to store into the  string  string  a
  5430.                     label  whose  name  is made from the string prefix
  5431.                     and the number num.
  5432.  
  5433.                     This   string,   when   output   subsequently   by
  5434.                     ASM_OUTPUT_LABELREF,  should produce the same out-
  5435.                     put that ASM_OUTPUT_INTERNAL_LABEL  would  produce
  5436.                     with the same prefix and num.
  5437.  
  5438.                ASM_OUTPUT_INTERNAL_LABEL (stream, prefix, num)
  5439.                     A C statement to output to the stdio stream stream
  5440.                     a  label whose name is made from the string prefix
  5441.                     and the number num.  These  labels  are  used  for
  5442.                     internal purposes, and there is no reason for them
  5443.                     to appear in the symbol table of the object  file.
  5444.                     On  many  systems, the letter `L' at the beginning
  5445.                     of a label has this effect.  The usual  definition
  5446.                     of this macro is as follows:
  5447.  
  5448.  
  5449.                         fprintf (stream, "L%s%d:\n", prefix, num)
  5450.  
  5451.  
  5452.  
  5453.                ASM_FORMAT_PRIVATE_NAME (outvar, name, number)
  5454.                     A C expression to assign to outvar (which is a
  5455.                     variable  of  type  char  *) a newly allocated
  5456.                     string made  from  the  string  name  and  the
  5457.                     number  number, with some suitable punctuation
  5458.                     added.   Use  alloca  to  get  space  for  the
  5459.                     string.
  5460.  
  5461.                     This string will be used as  the  argument  to
  5462.                     ASM_OUTPUT_LABELREF  to  produce  an assembler
  5463.                     label for an internal  static  variable  whose
  5464.                     name  is  name.  Therefore, the string must be
  5465.                     such as to result  in  valid  assembler  code.
  5466.                     The  argument  number  is  different each time
  5467.                     this macro is executed; it prevents  conflicts
  5468.                     between  similarly-named internal static vari-
  5469.                     ables in different scopes.
  5470.  
  5471.                     Ideally this string should not be  a  valid  C
  5472.                     identifier,  to  prevent any conflict with the
  5473.  
  5474.  
  5475.  
  5476.  
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.  
  5486.                     user's own  symbols.   Most  assemblers  allow
  5487.                     periods or percent signs in assembler symbols;
  5488.                     putting at least one of these between the name
  5489.                     and the number will suffice.
  5490.  
  5491.                OBJC_GEN_METHOD_LABEL (buf, is_inst, class_name, cat_name, sel_name)
  5492.                     Define  this macro to override the default as-
  5493.                     sembler names used for Objective C methods.
  5494.  
  5495.                     The default name is  a  unique  method  number
  5496.                     followed  by  the  name  of  the  class  (e.g.
  5497.                     `_1_Foo').  For  methods  in  categories,  the
  5498.                     name  of  the category is also included in the
  5499.                     assembler name (e.g.  `_1_Foo_Bar').
  5500.  
  5501.                     These names are safe on most systems, but make
  5502.                     debugging  difficult since the method's selec-
  5503.                     tor is not present in  the  name.   Therefore,
  5504.                     particular  systems  define other ways of com-
  5505.                     puting names.
  5506.  
  5507.                     buf is a buffer in which  to  store  the  name
  5508.                     (256 chars max); is_inst specifies whether the
  5509.                     method  is  an  instance  method  or  a  class
  5510.                     method;  class_name  is the name of the class;
  5511.                     cat_name is the name of the category (or  NULL
  5512.                     if  the  method  is  not  in  a category); and
  5513.                     sel_name is the name of the selector.
  5514.  
  5515.                     On systems  where  the  assembler  can  handle
  5516.                     quoted  names,  you can use this macro to pro-
  5517.                     vide more human-readable names.
  5518.  
  5519.  
  5520.           1.16.5.  Output of Initialization Routines
  5521.  
  5522.                The compiled code for certain languages  includes  con-
  5523.           structors  (also called initialization routines)---functions
  5524.           to initialize data  in  the  program  when  the  program  is
  5525.           started.   These functions need to be called before the pro-
  5526.           gram is ``started''---that is to say, before main is called.
  5527.  
  5528.                Compiling some languages  generates  destructors  (also
  5529.           called  termination routines) that should be called when the
  5530.           program terminates.
  5531.  
  5532.                To make the initialization  and  termination  functions
  5533.           work,  the  compiler  must output something in the assembler
  5534.           code to cause those functions to be called at the  appropri-
  5535.           ate  time.   When you port the compiler to a new system, you
  5536.           need to specify what assembler code is needed to do this.
  5537.  
  5538.  
  5539.  
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.  
  5552.                Here are the two macros you should define if necessary:
  5553.  
  5554.                ASM_OUTPUT_CONSTRUCTOR (stream, name)
  5555.                     Define this macro as a C statement  to  output  on
  5556.                     the stream stream the assembler code to arrange to
  5557.                     call the function  named  name  at  initialization
  5558.                     time.
  5559.  
  5560.                     Assume that name is the name of a C function  gen-
  5561.                     erated  automatically by the compiler.  This func-
  5562.                     tion  takes  no  arguments.   Use   the   function
  5563.                     assemble_name  to  output the name name; this per-
  5564.                     forms any  system-specific  syntactic  transforma-
  5565.                     tions such as adding an underscore.
  5566.  
  5567.                     If you don't define this macro, nothing special is
  5568.                     output  to  arrange to call the function.  This is
  5569.                     correct when the function will be called  in  some
  5570.                     other  manner---for  example, by means of the col-
  5571.                     lect program, which looks through the symbol table
  5572.                     to  find  these  functions by their names.  If you
  5573.                     want to use collect, then you need to arrange  for
  5574.                     it to be built and installed and used on your sys-
  5575.                     tem.
  5576.  
  5577.                ASM_OUTPUT_DESTRUCTOR (stream, name)
  5578.                     This is like ASM_OUTPUT_CONSTRUCTOR but  used  for
  5579.                     termination  functions  rather than initialization
  5580.                     functions.
  5581.  
  5582.  
  5583.           1.16.6.  Output of Assembler Instructions
  5584.  
  5585.                REGISTER_NAMES
  5586.                     A C initializer containing the  assembler's  names
  5587.                     for  the machine registers, each one as a C string
  5588.                     constant.   This  is  what   translates   register
  5589.                     numbers in the compiler into assembler language.
  5590.  
  5591.                ADDITIONAL_REGISTER_NAMES
  5592.                     If defined, a C initializer for an array of struc-
  5593.                     tures  containing  a  name  and a register number.
  5594.                     This macro defines additional names for  hard  re-
  5595.                     gisters,  thus allowing the asm option in declara-
  5596.                     tions to refer to registers using alternate names.
  5597.  
  5598.                ASM_OUTPUT_OPCODE (stream, ptr)
  5599.                     Define this macro if you are using an unusual  as-
  5600.                     sembler  that  requires  different  names  for the
  5601.                     machine instructions.
  5602.  
  5603.                     The definition is  a  C  statement  or  statements
  5604.                     which  output  an  assembler instruction opcode to
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.  
  5618.                     the stdio stream stream.  The macro-operand ptr is
  5619.                     a  variable of type char * which points to the op-
  5620.                     code name in its ``internal'' form---the form that
  5621.                     is written in the machine description.  The defin-
  5622.                     ition should output the  opcode  name  to  stream,
  5623.                     performing  any translation you desire, and incre-
  5624.                     ment the variable ptr to point at the end  of  the
  5625.                     opcode so that it will not be output twice.
  5626.  
  5627.                     In fact, your macro definition  may  process  less
  5628.                     than  the entire opcode name, or more than the op-
  5629.                     code name; but if you want to  process  text  that
  5630.                     includes `%'-sequences to substitute operands, you
  5631.                     must take care of the substitution yourself.  Just
  5632.                     be sure to increment ptr over whatever text should
  5633.                     not be output normally.
  5634.  
  5635.                     If you need to look at the  operand  values,  they
  5636.                     can be found as the elements of recog_operand.
  5637.  
  5638.                     If the macro definition does nothing, the instruc-
  5639.                     tion is output in the usual way.
  5640.  
  5641.                FINAL_PRESCAN_INSN (insn, opvec, noperands)
  5642.                     If defined, a C statement to be executed just pri-
  5643.                     or  to  the  output of assembler code for insn, to
  5644.                     modify the extracted operands so they will be out-
  5645.                     put differently.
  5646.  
  5647.                     Here the argument opvec is the  vector  containing
  5648.                     the operands extracted from insn, and noperands is
  5649.                     the number of elements of the vector which contain
  5650.                     meaningful  data  for  this insn.  The contents of
  5651.                     this vector are what will be used to  convert  the
  5652.                     insn  template  into  assembler  code,  so you can
  5653.                     change the assembler output by changing  the  con-
  5654.                     tents of the vector.
  5655.  
  5656.                     This macro is useful when various  assembler  syn-
  5657.                     taxes share a single file of instruction patterns;
  5658.                     by defining this macro differently, you can  cause
  5659.                     a  large  class  of instructions to be output dif-
  5660.                     ferently (such as with rearranged operands).   Na-
  5661.                     turally,  variations in assembler syntax affecting
  5662.                     individual insn patterns ought to  be  handled  by
  5663.                     writing  conditional output routines in those pat-
  5664.                     terns.
  5665.  
  5666.                     If this macro is not defined, it is equivalent  to
  5667.                     a null statement.
  5668.  
  5669.                PRINT_OPERAND (stream, x, code)
  5670.                     A C compound statement to output to  stdio  stream
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.                     stream  the  assembler  syntax  for an instruction
  5685.                     operand x.  x is an RTL expression.
  5686.  
  5687.                     code is a value that can be used to specify one of
  5688.                     several  ways of printing the operand.  It is used
  5689.                     when identical operands must be printed different-
  5690.                     ly  depending on the context.  code comes from the
  5691.                     `%' specification that was used to request  print-
  5692.                     ing of the operand.  If the specification was just
  5693.                     `%digit' then code is 0; if the specification  was
  5694.                     `%ltr digit' then code is the ASCII code for ltr.
  5695.  
  5696.                     If x is a register, this macro  should  print  the
  5697.                     register's name.  The names can be found in an ar-
  5698.                     ray reg_names whose type is char  *[].   reg_names
  5699.                     is initialized from REGISTER_NAMES.
  5700.  
  5701.                     When the machine description has  a  specification
  5702.                     `%punct'  (a `%' followed by a punctuation charac-
  5703.                     ter), this macro is called with a null pointer for
  5704.                     x and the punctuation character for code.
  5705.  
  5706.                PRINT_OPERAND_PUNCT_VALID_P (code)
  5707.                     A C expression which evaluates to true if code  is
  5708.                     a  valid  punctuation  character  for  use  in the
  5709.                     PRINT_OPERAND              macro.               If
  5710.                     PRINT_OPERAND_PUNCT_VALID_P  is  not  defined,  it
  5711.                     means that no punctuation characters  (except  for
  5712.                     the standard one, `%') are used in this way.
  5713.  
  5714.                PRINT_OPERAND_ADDRESS (stream, x)
  5715.                     A C compound statement to output to  stdio  stream
  5716.                     stream  the  assembler  syntax  for an instruction
  5717.                     operand that is a memory reference  whose  address
  5718.                     is x.  x is an RTL expression.
  5719.  
  5720.                     On some machines, the syntax for  a  symbolic  ad-
  5721.                     dress  depends  on  the  section  that the address
  5722.                     refers to.  On these machines,  define  the  macro
  5723.                     ENCODE_SECTION_INFO  to store the information into
  5724.                     the symbol_ref, and then check for it  here.   See
  5725.                     section Assembler Format.
  5726.  
  5727.                DBR_OUTPUT_SEQEND(file)
  5728.                     A C statement, to  be  executed  after  all  slot-
  5729.                     filler  instructions  have been output.  If neces-
  5730.                     sary, call dbr_sequence_length  to  determine  the
  5731.                     number  of slots filled in a sequence (zero if not
  5732.                     currently outputting a sequence),  to  decide  how
  5733.                     many no-ops to output, or whatever.
  5734.  
  5735.                     Don't define this macro if it has nothing  to  do,
  5736.                     but  it  is  helpful in reading assembly output if
  5737.  
  5738.  
  5739.  
  5740.  
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747.  
  5748.  
  5749.  
  5750.                     the extent of the delay sequence is made  explicit
  5751.                     (e.g. with white space).
  5752.  
  5753.                     Note that output routines  for  instructions  with
  5754.                     delay  slots must be prepared to deal with not be-
  5755.                     ing output as part of a sequence (i.e.   when  the
  5756.                     scheduling  pass is not run, or when no slot fill-
  5757.                     ers could be found.)  The variable  final_sequence
  5758.                     is  null when not processing a sequence, otherwise
  5759.                     it contains the sequence rtx being output.
  5760.  
  5761.                REGISTER_PREFIX
  5762.  
  5763.                LOCAL_LABEL_PREFIX
  5764.  
  5765.                USER_LABEL_PREFIX
  5766.  
  5767.                IMMEDIATE_PREFIX
  5768.                     If defined, C string expressions to  be  used  for
  5769.                     the   `%R',   `%L',  `%U',  and  `%I'  options  of
  5770.                     asm_fprintf (see  `final.c').   These  are  useful
  5771.                     when  a single `md' file must support multiple as-
  5772.                     sembler formats.  In that case, the various `tm.h'
  5773.                     files can define these macros differently.
  5774.  
  5775.                ASM_OUTPUT_REG_PUSH (stream, regno)
  5776.                     A C expression to output to stream some  assembler
  5777.                     code  which  will  push hard register number regno
  5778.                     onto the stack.  The code  need  not  be  optimal,
  5779.                     since this macro is used only when profiling.
  5780.  
  5781.                ASM_OUTPUT_REG_POP (stream, regno)
  5782.                     A C expression to output to stream some  assembler
  5783.                     code which will pop hard register number regno off
  5784.                     of the stack.  The code need not be optimal, since
  5785.                     this macro is used only when profiling.
  5786.  
  5787.  
  5788.           1.16.7.  Output of Dispatch Tables
  5789.  
  5790.                ASM_OUTPUT_ADDR_DIFF_ELT (stream, value, rel)
  5791.                     This macro should be provided  on  machines  where
  5792.                     the  addresses in a dispatch table are relative to
  5793.                     the table's own address.
  5794.  
  5795.                     The definition should be a C statement  to  output
  5796.                     to  the  stdio  stream stream an assembler pseudo-
  5797.                     instruction to generate a difference  between  two
  5798.                     labels.   value  and  rel  are  the numbers of two
  5799.                     internal labels.  The definitions of these  labels
  5800.                     are  output  using  ASM_OUTPUT_INTERNAL_LABEL, and
  5801.                     they must be printed in the same  way  here.   For
  5802.                     example,
  5803.  
  5804.  
  5805.  
  5806.  
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.  
  5816.  
  5817.                         fprintf (stream, "\t.word L%d-L%d\n",
  5818.                                  value, rel)
  5819.  
  5820.  
  5821.  
  5822.                ASM_OUTPUT_ADDR_VEC_ELT (stream, value)
  5823.                     This macro  should  be  provided  on  machines
  5824.                     where  the  addresses  in a dispatch table are
  5825.                     absolute.
  5826.  
  5827.                     The definition should be a C statement to out-
  5828.                     put  to  the  stdio stream stream an assembler
  5829.                     pseudo-instruction to generate a reference  to
  5830.                     a  label.   value is the number of an internal
  5831.                     label  whose  definition   is   output   using
  5832.                     ASM_OUTPUT_INTERNAL_LABEL.  For example,
  5833.  
  5834.  
  5835.                         fprintf (stream, "\t.word L%d\n", value)
  5836.  
  5837.  
  5838.  
  5839.                ASM_OUTPUT_CASE_LABEL (stream, prefix, num, table)
  5840.                     Define this if the label before  a  jump-table
  5841.                     needs to be output specially.  The first three
  5842.                     arguments    are    the    same     as     for
  5843.                     ASM_OUTPUT_INTERNAL_LABEL; the fourth argument
  5844.                     is the jump-table which follows  (a  jump_insn
  5845.                     containing an addr_vec or addr_diff_vec).
  5846.  
  5847.                     This feature is used on system V to  output  a
  5848.                     swbeg statement for the table.
  5849.  
  5850.                     If this macro is not defined, these labels are
  5851.                     output with ASM_OUTPUT_INTERNAL_LABEL.
  5852.  
  5853.                ASM_OUTPUT_CASE_END (stream, num, table)
  5854.                     Define this if something special must be  out-
  5855.                     put  at  the end of a jump-table.  The defini-
  5856.                     tion should be a C statement  to  be  executed
  5857.                     after  the  assembler  code  for  the table is
  5858.                     written.  It should write the appropriate code
  5859.                     to stdio stream stream.  The argument table is
  5860.                     the jump-table insn, and  num  is  the  label-
  5861.                     number of the preceding label.
  5862.  
  5863.                     If this macro is not defined, nothing  special
  5864.                     is output at the end of the jump-table.
  5865.  
  5866.  
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872.  
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.  
  5880.  
  5881.  
  5882.           1.16.8.  Assembler Commands for Alignment
  5883.  
  5884.                ASM_OUTPUT_ALIGN_CODE (file)
  5885.                     A C expression to output text to align  the  loca-
  5886.                     tion  counter  in  the  way that is desirable at a
  5887.                     point in the code that is reached only by jumping.
  5888.  
  5889.                     This macro need not be defined if you  don't  want
  5890.                     any  special  alignment to be done at such a time.
  5891.                     Most machine descriptions do not currently  define
  5892.                     the macro.
  5893.  
  5894.                ASM_OUTPUT_LOOP_ALIGN (file)
  5895.                     A C expression to output text to align  the  loca-
  5896.                     tion  counter  in the way that is desirable at the
  5897.                     beginning of a loop.
  5898.  
  5899.                     This macro need not be defined if you  don't  want
  5900.                     any  special  alignment to be done at such a time.
  5901.                     Most machine descriptions do not currently  define
  5902.                     the macro.
  5903.  
  5904.                ASM_OUTPUT_SKIP (stream, nbytes)
  5905.                     A C statement to output to the stdio stream stream
  5906.                     an  assembler  instruction to advance the location
  5907.                     counter by nbytes bytes.  Those  bytes  should  be
  5908.                     zero  when  loaded.  nbytes will be a C expression
  5909.                     of type int.
  5910.  
  5911.                ASM_NO_SKIP_IN_TEXT
  5912.                     Define this macro if ASM_OUTPUT_SKIP should not be
  5913.                     used  in  the  text  section  because it fails put
  5914.                     zeros in the bytes that are skipped.  This is true
  5915.                     on many Unix systems, where the pseudo--op to skip
  5916.                     bytes  produces  no-op  instructions  rather  than
  5917.                     zeros when used in the text section.
  5918.  
  5919.                ASM_OUTPUT_ALIGN (stream, power)
  5920.                     A C statement to output to the stdio stream stream
  5921.                     an  assembler  command  to  advance  the  location
  5922.                     counter to a multiple of 2  to  the  power  bytes.
  5923.                     power will be a C expression of type int.
  5924.  
  5925.  
  5926.           1.17.  Controlling Debugging Information Format
  5927.  
  5928.                DBX_REGISTER_NUMBER (regno)
  5929.                     A C  expression  that  returns  the  DBX  register
  5930.                     number for the compiler register number regno.  In
  5931.                     simple cases, the value of this expression may  be
  5932.                     regno itself.  But sometimes there are some regis-
  5933.                     ters that the compiler knows about  and  DBX  does
  5934.                     not,  or vice versa.  In such cases, some register
  5935.  
  5936.  
  5937.  
  5938.  
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  
  5945.  
  5946.  
  5947.  
  5948.                     may need to have one number in  the  compiler  and
  5949.                     another for DBX.
  5950.  
  5951.                     If two registers have consecutive  numbers  inside
  5952.                     GNU  CC,  and they can be used as a pair to hold a
  5953.                     multiword value, then they must  have  consecutive
  5954.                     numbers        after        renumbering       with
  5955.                     DBX_REGISTER_NUMBER.  Otherwise, debuggers will be
  5956.                     unable  to access such a pair, because they expect
  5957.                     register pairs to  be  consecutive  in  their  own
  5958.                     numbering scheme.
  5959.  
  5960.                     If you find yourself defining  DBX_REGISTER_NUMBER
  5961.                     in way that does not preserve register pairs, then
  5962.                     what you must do instead is  redefine  the  actual
  5963.                     register numbering scheme.
  5964.  
  5965.                DBX_DEBUGGING_INFO
  5966.                     Define this macro if GNU CC should produce  debug-
  5967.                     ging  output  for  DBX in response to the `-g' op-
  5968.                     tion.
  5969.  
  5970.                SDB_DEBUGGING_INFO
  5971.                     Define this macro if GNU CC should  produce  COFF-
  5972.                     style  debugging output for SDB in response to the
  5973.                     `-g' option.
  5974.  
  5975.                DWARF_DEBUGGING_INFO
  5976.                     Define this macro if GNU CC should  produce  dwarf
  5977.                     format  debugging  output  in response to the `-g'
  5978.                     option.
  5979.  
  5980.                DEFAULT_GDB_EXTENSIONS
  5981.                     Define this macro to control whether GNU CC should
  5982.                     by  default generate GDB's extended version of DBX
  5983.                     debugging information (assuming DBX-format  debug-
  5984.                     ging information is enabled at all).  If you don't
  5985.                     define the macro, the default is  1:  always  gen-
  5986.                     erate the extended information.
  5987.  
  5988.                DEBUG_SYMS_TEXT
  5989.                     Define this macro if all .stabs commands should be
  5990.                     output while in the text section.
  5991.  
  5992.                DEBUGGER_AUTO_OFFSET (x)
  5993.                     A C expression that  returns  the  integer  offset
  5994.                     value  for  an automatic variable having address x
  5995.                     (an RTL expression).  The default computation  as-
  5996.                     sumes  that  x  is  based on the frame-pointer and
  5997.                     gives the offset from the frame-pointer.  This  is
  5998.                     required for targets that produce debugging output
  5999.                     for DBX or COFF-style debugging output for SDB and
  6000.                     allow  the frame-pointer to be eliminated when the
  6001.  
  6002.  
  6003.  
  6004.  
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.  
  6014.                     `-g' options is used.
  6015.  
  6016.                DEBUGGER_ARG_OFFSET (offset, x)
  6017.                     A C expression that  returns  the  integer  offset
  6018.                     value for an argument having address x (an RTL ex-
  6019.                     pression).  The nominal offset is offset.
  6020.  
  6021.                ASM_STABS_OP
  6022.                     A C string constant naming the assembler pseudo op
  6023.                     to use instead of .stabs to define an ordinary de-
  6024.                     bugging symbol.  If you don't define  this  macro,
  6025.                     .stabs  is  used.   This macro applies only to DBX
  6026.                     debugging information format.
  6027.  
  6028.                ASM_STABD_OP
  6029.                     A C string constant naming the assembler pseudo op
  6030.                     to  use  instead  of  .stabd to define a debugging
  6031.                     symbol whose value is the  current  location.   If
  6032.                     you don't define this macro, .stabd is used.  This
  6033.                     macro applies only to  DBX  debugging  information
  6034.                     format.
  6035.  
  6036.                ASM_STABN_OP
  6037.                     A C string constant naming the assembler pseudo op
  6038.                     to  use  instead  of  .stabn to define a debugging
  6039.                     symbol with no name.  If  you  don't  define  this
  6040.                     macro, .stabn is used.  This macro applies only to
  6041.                     DBX debugging information format.
  6042.  
  6043.                PUT_SDB_...
  6044.                     Define these macros to override the assembler syn-
  6045.                     tax for the special SDB assembler directives.  See
  6046.                     `sdbout.c' for a list of these  macros  and  their
  6047.                     arguments.   If  the  standard syntax is used, you
  6048.                     need not define them yourself.
  6049.  
  6050.                SDB_DELIM
  6051.                     Some assemblers do not support a  semicolon  as  a
  6052.                     delimiter,  even between SDB assembler directives.
  6053.                     In that case, define this macro to be  the  delim-
  6054.                     iter  to  use (usually `\n').  It is not necessary
  6055.                     to define a new set of PUT_SDB_op macros  if  this
  6056.                     is the only change required.
  6057.  
  6058.                SDB_GENERATE_FAKE
  6059.                     Define this macro to override the usual method  of
  6060.                     constructing  a dummy name for anonymous structure
  6061.                     and union types.  See `sdbout.c' for more informa-
  6062.                     tion.
  6063.  
  6064.                SDB_ALLOW_UNKNOWN_REFERENCES
  6065.                     Define this macro to allow references  to  unknown
  6066.                     structure,  union, or enumeration tags to be emit-
  6067.  
  6068.  
  6069.  
  6070.  
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.  
  6080.                     ted.  Standard COFF does  not  allow  handling  of
  6081.                     unknown references, MIPS ECOFF has support for it.
  6082.  
  6083.                SDB_ALLOW_FORWARD_REFERENCES
  6084.                     Define this macro to allow  references  to  struc-
  6085.                     ture, union, or enumeration tags that have not yet
  6086.                     been seen to be handled.  Some assemblers choke if
  6087.                     forward tags are used, while some require it.
  6088.  
  6089.                DBX_NO_XREFS
  6090.                     Define this macro if DBX on your system  does  not
  6091.                     support  the  construct `xstagname'.  On some sys-
  6092.                     tems, this construct is used to describe a forward
  6093.                     reference  to a structure named tagname.  On other
  6094.                     systems, this construct is not supported at all.
  6095.  
  6096.                DBX_CONTIN_LENGTH
  6097.                     A symbol name in DBX-format debugging  information
  6098.                     is  normally  continued  (split  into two separate
  6099.                     .stabs  directives)  when  it  exceeds  a  certain
  6100.                     length  (by  default,  80  characters).   On  some
  6101.                     operating systems, DBX requires this splitting; on
  6102.                     others, splitting must not be done.  You can inhi-
  6103.                     bit splitting by  defining  this  macro  with  the
  6104.                     value   zero.    You   can  override  the  default
  6105.                     splitting-length by defining this macro as an  ex-
  6106.                     pression for the length you desire.
  6107.  
  6108.                DBX_CONTIN_CHAR
  6109.                     Normally continuation is indicated by adding a `\'
  6110.                     character  to  the  end  of a .stabs string when a
  6111.                     continuation follows.  To use a different  charac-
  6112.                     ter instead, define this macro as a character con-
  6113.                     stant for the character you want to use.   Do  not
  6114.                     define this macro if backslash is correct for your
  6115.                     system.
  6116.  
  6117.                DBX_STATIC_STAB_DATA_SECTION
  6118.                     Define this macro if it is necessary to go to  the
  6119.                     data   section   before  outputting  the  `.stabs'
  6120.                     pseudo-op for a non-global static variable.
  6121.  
  6122.                DBX_LBRAC_FIRST
  6123.                     Define this macro if  the  N_LBRAC  symbol  for  a
  6124.                     block should precede the debugging information for
  6125.                     variables and functions  defined  in  that  block.
  6126.                     Normally,  in DBX format, the N_LBRAC symbol comes
  6127.                     first.
  6128.  
  6129.                DBX_FUNCTION_FIRST
  6130.                     Define this macro if the  DBX  information  for  a
  6131.                     function  and its arguments should precede the as-
  6132.                     sembler code for the function.  Normally,  in  DBX
  6133.  
  6134.  
  6135.  
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.  
  6146.                     format, the debugging information entirely follows
  6147.                     the assembler code.
  6148.  
  6149.                DBX_OUTPUT_FUNCTION_END (stream, function)
  6150.                     Define this macro if the target  machine  requires
  6151.                     special  output at the end of the debugging infor-
  6152.                     mation for a function.  The definition should be a
  6153.                     C  statement  (sans  semicolon)  to output the ap-
  6154.                     propriate information to stream.  function is  the
  6155.                     FUNCTION_DECL node for the function.
  6156.  
  6157.                DBX_OUTPUT_STANDARD_TYPES (syms)
  6158.                     Define this macro if you need to control the order
  6159.                     of output of the standard data types at the begin-
  6160.                     ning of compilation.  The argument syms is a  tree
  6161.                     which is a chain of all the predefined global sym-
  6162.                     bols, including names of data types.
  6163.  
  6164.                     Normally, DBX output starts  with  definitions  of
  6165.                     the types for integers and characters, followed by
  6166.                     all the other predefined types of  the  particular
  6167.                     language in no particular order.
  6168.  
  6169.                     On some machines, it is necessary to  output  dif-
  6170.                     ferent particular types first.  To do this, define
  6171.                     DBX_OUTPUT_STANDARD_TYPES to output those  symbols
  6172.                     in the necessary order.  Any predefined types that
  6173.                     you don't explicitly output will be output  after-
  6174.                     ward in no particular order.
  6175.  
  6176.                     Be careful not to define this  macro  so  that  it
  6177.                     works  only  for C.  There are no global variables
  6178.                     to access most  of  the  built-in  types,  because
  6179.                     another  language  may  have another set of types.
  6180.                     The way to output a particular  type  is  to  look
  6181.                     through  syms  to see if you can find it.  Here is
  6182.                     an example:
  6183.  
  6184.  
  6185.                         {
  6186.                           tree decl;
  6187.                           for (decl = syms; decl; decl = TREE_CHAIN (decl))
  6188.                             if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), "long int"))
  6189.                               dbxout_symbol (decl);
  6190.                           ...
  6191.                         }
  6192.  
  6193.  
  6194.  
  6195.                This does nothing if the expected type does not ex-
  6196.                ist.
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.  
  6212.                     See  the  function   init_decl_processing   in
  6213.                     source  file  `c-decl.c'  to find the names to
  6214.                     use for all the built-in C types.
  6215.  
  6216.                DBX_OUTPUT_MAIN_SOURCE_FILENAME (stream, name)
  6217.                     A C statement to output DBX debugging informa-
  6218.                     tion  to  the  stdio stream stream which indi-
  6219.                     cates that file name is the main source  file-
  6220.                     --the  file  specified  as  the input file for
  6221.                     compilation.  This macro is called only  once,
  6222.                     at the beginning of compilation.
  6223.  
  6224.                     This macro need not be defined if the standard
  6225.                     form  of  output for DBX debugging information
  6226.                     is appropriate.
  6227.  
  6228.                DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (stream, name)
  6229.                     A C statement to output DBX debugging informa-
  6230.                     tion  to  the  stdio stream stream which indi-
  6231.                     cates that the current directory during compi-
  6232.                     lation is named name.
  6233.  
  6234.                     This macro need not be defined if the standard
  6235.                     form  of  output for DBX debugging information
  6236.                     is appropriate.
  6237.  
  6238.                DBX_OUTPUT_MAIN_SOURCE_FILE_END (stream, name)
  6239.                     A C statement to output DBX debugging informa-
  6240.                     tion  at  the  end  of compilation of the main
  6241.                     source file name.
  6242.  
  6243.                     If you don't define this macro,  nothing  spe-
  6244.                     cial  is  output  at  the  end of compilation,
  6245.                     which is correct for most machines.
  6246.  
  6247.                DBX_OUTPUT_SOURCE_FILENAME (stream, name)
  6248.                     A C statement to output DBX debugging informa-
  6249.                     tion  to  the  stdio stream stream which indi-
  6250.                     cates that file name  is  the  current  source
  6251.                     file.   This output is generated each time in-
  6252.                     put shifts to a different  source  file  as  a
  6253.                     result  of  `#include', the end of an included
  6254.                     file, or a `#line' command.
  6255.  
  6256.                     This macro need not be defined if the standard
  6257.                     form  of  output for DBX debugging information
  6258.                     is appropriate.
  6259.  
  6260.  
  6261.           1.18.  Cross Compilation and Floating Point Format
  6262.  
  6263.                While all modern machines use 2's complement  represen-
  6264.           tation  for integers, there are a variety of representations
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.  
  6278.           for floating point numbers.  This means  that  in  a  cross-
  6279.           compiler the representation of floating point numbers in the
  6280.           compiled program may be different  from  that  used  in  the
  6281.           machine doing the compilation.
  6282.  
  6283.                Because different representation systems may offer dif-
  6284.           ferent  amounts  of  range and precision, the cross compiler
  6285.           cannot safely use the host machine's floating  point  arith-
  6286.           metic.    Therefore,   floating   point  constants  must  be
  6287.           represented in the target machine's format.  This means that
  6288.           the cross compiler cannot use atof to parse a floating point
  6289.           constant; it must  have  its  own  special  routine  to  use
  6290.           instead.   Also,  constant  folding  must emulate the target
  6291.           machine's arithmetic (or must not be done at all).
  6292.  
  6293.                The macros in the following  table  should  be  defined
  6294.           only  if  you are cross compiling between different floating
  6295.           point formats.
  6296.  
  6297.                Otherwise, don't define them. Then default  definitions
  6298.           will be set up which use double as the data type, == to test
  6299.           for equality, etc.
  6300.  
  6301.                You don't need to worry about how many times you use an
  6302.           operand  of  any  of  these macros.  The compiler never uses
  6303.           operands which have side effects.
  6304.  
  6305.                REAL_VALUE_TYPE
  6306.                     A macro for the C data type to be used to  hold  a
  6307.                     floating  point value in the target machine's for-
  6308.                     mat.  Typically this would be a struct  containing
  6309.                     an array of int.
  6310.  
  6311.                REAL_VALUES_EQUAL (x, y)
  6312.                     A macro for a  C  expression  which  compares  for
  6313.                     equality  the  two  values,  x and y, both of type
  6314.                     REAL_VALUE_TYPE.
  6315.  
  6316.                REAL_VALUES_LESS (x, y)
  6317.                     A macro for a C expression which tests  whether  x
  6318.                     is   less  than  y,  both  values  being  of  type
  6319.                     REAL_VALUE_TYPE and interpreted as floating  point
  6320.                     numbers in the target machine's representation.
  6321.  
  6322.                REAL_VALUE_LDEXP (x, scale)
  6323.                     A macro for a  C  expression  which  performs  the
  6324.                     standard  library  function  ldexp,  but using the
  6325.                     target machine's  floating  point  representation.
  6326.                     Both  x  and the value of the expression have type
  6327.                     REAL_VALUE_TYPE.  The second argument,  scale,  is
  6328.                     an integer.
  6329.  
  6330.  
  6331.  
  6332.  
  6333.  
  6334.  
  6335.  
  6336.  
  6337.  
  6338.  
  6339.  
  6340.  
  6341.  
  6342.  
  6343.  
  6344.                REAL_VALUE_FIX (x)
  6345.                     A macro whose definition is a C expression to con-
  6346.                     vert  the target-machine floating point value x to
  6347.                     a signed integer.  x has type REAL_VALUE_TYPE.
  6348.  
  6349.                REAL_VALUE_UNSIGNED_FIX (x)
  6350.                     A macro whose definition is a C expression to con-
  6351.                     vert  the target-machine floating point value x to
  6352.                     an unsigned integer.  x has type REAL_VALUE_TYPE.
  6353.  
  6354.                REAL_VALUE_FIX_TRUNCATE (x)
  6355.                     A macro whose definition is a C expression to con-
  6356.                     vert  the target-machine floating point value x to
  6357.                     a signed integer, rounding toward 0.  x  has  type
  6358.                     REAL_VALUE_TYPE.
  6359.  
  6360.                REAL_VALUE_UNSIGNED_FIX_TRUNCATE (x)
  6361.                     A macro whose definition is a C expression to con-
  6362.                     vert  the target-machine floating point value x to
  6363.                     an unsigned integer, rounding  toward  0.   x  has
  6364.                     type REAL_VALUE_TYPE.
  6365.  
  6366.                REAL_VALUE_ATOF (string)
  6367.                     A macro for a C expression which converts  string,
  6368.                     an  expression  of  type  char  *, into a floating
  6369.                     point number in the target  machine's  representa-
  6370.                     tion.  The value has type REAL_VALUE_TYPE.
  6371.  
  6372.                REAL_INFINITY
  6373.                     Define this macro if infinity is a possible float-
  6374.                     ing  point  value,  and therefore division by 0 is
  6375.                     legitimate.
  6376.  
  6377.                REAL_VALUE_ISINF (x)
  6378.                     A macro for a C expression which determines wheth-
  6379.                     er  x,  a  floating point value, is infinity.  The
  6380.                     value has type int.  By default, this  is  defined
  6381.                     to call isinf.
  6382.  
  6383.                REAL_VALUE_ISNAN (x)
  6384.                     A macro for a C expression which determines wheth-
  6385.                     er  x,  a floating point value, is a ``nan'' (not-
  6386.                     a-number).  The value has type int.   By  default,
  6387.                     this is defined to call isnan.
  6388.  
  6389.  
  6390.                Define the following additional macros if you  want  to
  6391.           make  floating  point constant folding work while cross com-
  6392.           piling.  If you don't  define  them,  cross  compilation  is
  6393.           still  possible,  but  constant  folding will not happen for
  6394.           floating point values.
  6395.  
  6396.  
  6397.  
  6398.  
  6399.  
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.  
  6408.  
  6409.  
  6410.                REAL_ARITHMETIC (output, code, x, y)
  6411.                     A macro for a C statement which calculates an  ar-
  6412.                     ithmetic  operation  of  the  two  floating  point
  6413.                     values x and y, both of  type  REAL_VALUE_TYPE  in
  6414.                     the  target machine's representation, to produce a
  6415.                     result of the same type and  representation  which
  6416.                     is stored in output (which will be a variable).
  6417.  
  6418.                     The operation to  be  performed  is  specified  by
  6419.                     code,  a tree code which will always be one of the
  6420.                     following:   PLUS_EXPR,   MINUS_EXPR,   MULT_EXPR,
  6421.                     RDIV_EXPR, MAX_EXPR, MIN_EXPR.
  6422.  
  6423.                     The expansion of this  macro  is  responsible  for
  6424.                     checking  for  overflow.  If overflow happens, the
  6425.                     macro expansion should execute the  statement  re-
  6426.                     turn  0;, which indicates the inability to perform
  6427.                     the arithmetic operation requested.
  6428.  
  6429.                REAL_VALUE_NEGATE (x)
  6430.                     A macro for a C expression which returns the nega-
  6431.                     tive  of  the  floating point value x.  Both x and
  6432.                     the   value   of   the   expression   have    type
  6433.                     REAL_VALUE_TYPE  and  are  in the target machine's
  6434.                     floating point representation.
  6435.  
  6436.                     There is no way for this macro to report overflow,
  6437.                     since overflow can't happen in the negation opera-
  6438.                     tion.
  6439.  
  6440.                REAL_VALUE_TRUNCATE (x)
  6441.                     A macro for a  C  expression  which  converts  the
  6442.                     double-precision   floating   point   value  x  to
  6443.                     single-precision.
  6444.  
  6445.                     Both x and the value of the expression  have  type
  6446.                     REAL_VALUE_TYPE  and  are  in the target machine's
  6447.                     floating point representation.  However, the value
  6448.                     should  have an appropriate bit pattern to be out-
  6449.                     put properly as a single-precision  floating  con-
  6450.                     stant.
  6451.  
  6452.                     There is no way for this macro to report overflow.
  6453.  
  6454.                REAL_VALUE_TO_INT (low, high, x)
  6455.                     A macro for a C expression which converts a float-
  6456.                     ing  point value x into a double-precision integer
  6457.                     which is then stored into low and high, two  vari-
  6458.                     ables of type int.
  6459.  
  6460.                REAL_VALUE_FROM_INT (x, low, high)
  6461.                     A macro  for  a  C  expression  which  converts  a
  6462.                     double-precision  integer  found  in low and high,
  6463.  
  6464.  
  6465.  
  6466.  
  6467.  
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473.  
  6474.  
  6475.  
  6476.                     two variables of type int, into a  floating  point
  6477.                     value which is then stored into x.
  6478.  
  6479.  
  6480.           1.19.  Miscellaneous Parameters
  6481.  
  6482.                PREDICATE_CODES
  6483.                     Optionally define this if you  have  added  predi-
  6484.                     cates to `machine.c'.  This macro is called within
  6485.                     an initializer of an  array  of  structures.   The
  6486.                     first  field  in  the  structure  is the name of a
  6487.                     predicate and the second field is an arrary of rtl
  6488.                     codes.   For  each  predicate,  list all rtl codes
  6489.                     that can be in expressions matched by  the  predi-
  6490.                     cate.   The  list  should  have  a trailing comma.
  6491.                     Here is an example of two entries in the list  for
  6492.                     a typical RISC machine:
  6493.  
  6494.  
  6495.                         #define PREDICATE_CODES \
  6496.                           {"gen_reg_rtx_operand", {SUBREG, REG}},  \
  6497.                           {"reg_or_short_cint_operand", {SUBREG, REG, CONST_INT}},
  6498.  
  6499.  
  6500.  
  6501.                     Defining this macro does not affect  the  gen-
  6502.                     erated  code  (however,  incorrect definitions
  6503.                     that omit an rtl code that may be  matched  by
  6504.                     the  predicate  can cause the compiler to mal-
  6505.                     function).  Instead, it allows the table built
  6506.                     by  `genrecog'  to  be  more compact and effi-
  6507.                     cient, thus speeding  up  the  compiler.   The
  6508.                     most  important  predicates  to include in the
  6509.                     list specified by this macro are  thoses  used
  6510.                     in the most insn patterns.
  6511.  
  6512.                CASE_VECTOR_MODE
  6513.                     An alias for a machine mode name.  This is the
  6514.                     machine  mode  that  elements  of a jump-table
  6515.                     should have.
  6516.  
  6517.                CASE_VECTOR_PC_RELATIVE
  6518.                     Define this macro if jump-tables  should  con-
  6519.                     tain relative addresses.
  6520.  
  6521.                CASE_DROPS_THROUGH
  6522.                     Define this if control falls  through  a  case
  6523.                     insn  when  the  index  value is out of range.
  6524.                     This means the specified default-label is  ac-
  6525.                     tually ignored by the case insn proper.
  6526.  
  6527.                BYTE_LOADS_ZERO_EXTEND
  6528.                     Define this macro if an instruction to load  a
  6529.  
  6530.  
  6531.  
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.                     value  narrower than a word from memory into a
  6543.                     register also zero-extends the  value  to  the
  6544.                     whole register.
  6545.  
  6546.                IMPLICIT_FIX_EXPR
  6547.                     An alias for a tree code that should  be  used
  6548.                     by  default  for  conversion of floating point
  6549.                     values    to    fixed    point.      Normally,
  6550.                     FIX_ROUND_EXPR is used.
  6551.  
  6552.                FIXUNS_TRUNC_LIKE_FIX_TRUNC
  6553.                     Define this macro  if  the  same  instructions
  6554.                     that  convert  a  floating  point  number to a
  6555.                     signed fixed point number also convert validly
  6556.                     to an unsigned one.
  6557.  
  6558.                EASY_DIV_EXPR
  6559.                     An alias for a tree code that is  the  easiest
  6560.                     kind  of  division  to compile code for in the
  6561.                     general  case.   It  may  be   TRUNC_DIV_EXPR,
  6562.                     FLOOR_DIV_EXPR,        CEIL_DIV_EXPR        or
  6563.                     ROUND_DIV_EXPR.  These four division operators
  6564.                     differ  in how they round the result to an in-
  6565.                     teger.  EASY_DIV_EXPR is used when it is  per-
  6566.                     missible to use any of those kinds of division
  6567.                     and the choice should be made on the basis  of
  6568.                     efficiency.
  6569.  
  6570.                MOVE_MAX
  6571.                     The maximum number of bytes that a single  in-
  6572.                     struction  can  move  quickly  from  memory to
  6573.                     memory.
  6574.  
  6575.                SHIFT_COUNT_TRUNCATED
  6576.                     Defining this macro  causes  the  compiler  to
  6577.                     omit  a  sign-extend,  zero-extend, or bitwise
  6578.                     `and' instruction that truncates the count  of
  6579.                     a  shift  operation  to  a  width equal to the
  6580.                     number of bits needed to represent the size of
  6581.                     the  object  being  shifted.  On machines that
  6582.                     have instructions that  act  on  bitfields  at
  6583.                     variable  positions,  including `bit test' in-
  6584.                     structions,   defining   SHIFT_COUNT_TRUNCATED
  6585.                     also  causes  truncation  not to be applied to
  6586.                     these instructions.
  6587.  
  6588.                     If both types  of  instructions  truncate  the
  6589.                     count  (for shifts) and position (for bitfield
  6590.                     operations), or if no  variable-position  bit-
  6591.                     field  instructions  exist,  you should define
  6592.                     this macro.
  6593.  
  6594.  
  6595.  
  6596.  
  6597.  
  6598.  
  6599.  
  6600.  
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606.  
  6607.  
  6608.                     However, on some machines, such as the  80386,
  6609.                     truncation  only  applies  to shift operations
  6610.                     and not bitfield operations.   Do  not  define
  6611.                     SHIFT_COUNT_TRUNCATED  on  such machines.  In-
  6612.                     stead, add patterns to the `md' file that  in-
  6613.                     clude  the implied truncation of the shift in-
  6614.                     structions.
  6615.  
  6616.                TRULY_NOOP_TRUNCATION (outprec, inprec)
  6617.                     A C expression which is  nonzero  if  on  this
  6618.                     machine  it  is safe to ``convert'' an integer
  6619.                     of inprec bits to one of outprec  bits  (where
  6620.                     outprec  is  smaller  than  inprec)  by merely
  6621.                     operating on it as  if  it  had  only  outprec
  6622.                     bits.
  6623.  
  6624.                     On many machines, this expression can be 1.
  6625.  
  6626.                     It is reported that suboptimal code can result
  6627.                     when  TRULY_NOOP_TRUNCATION  returns  1  for a
  6628.                     pair   of   sizes   for   modes   for    which
  6629.                     MODES_TIEABLE_P  is  0.   If this is the case,
  6630.                     making TRULY_NOOP_TRUNCATION return 0 in  such
  6631.                     cases may improve things.
  6632.  
  6633.                STORE_FLAG_VALUE
  6634.                     A C expression describing the  value  returned
  6635.                     by  a  comparison  operator  and  stored  by a
  6636.                     store-flag instruction (`scond') when the con-
  6637.                     dition  is  true.  This description must apply
  6638.                     to all the `scond' patterns and all  the  com-
  6639.                     parison operators.
  6640.  
  6641.                     A value of 1 or -1 means that the  instruction
  6642.                     implementing  the  comparison operator returns
  6643.                     exactly 1 or -1 when the  comparison  is  true
  6644.                     and  0  when  the comparison is false.  Other-
  6645.                     wise, the value indicates which  bits  of  the
  6646.                     result  are  guaranteed  to be 1 when the com-
  6647.                     parison is true.  This value is interpreted in
  6648.                     the mode of the comparison operation, which is
  6649.                     given by the mode of the first operand in  the
  6650.                     `scond'  pattern.   Either  the low bit or the
  6651.                     sign bit of STORE_FLAG_VALUE be on.   Present-
  6652.                     ly, only those bits are used by the compiler.
  6653.  
  6654.                     If STORE_FLAG_VALUE is neither 1  or  -1,  the
  6655.                     compiler  will generate code that depends only
  6656.                     on the specified bits.  It  can  also  replace
  6657.                     comparison  operators  with  equivalent opera-
  6658.                     tions if they cause the required  bits  to  be
  6659.                     set, even if the remaining bits are undefined.
  6660.                     For example, on  a  machine  whose  comparison
  6661.  
  6662.  
  6663.  
  6664.  
  6665.  
  6666.  
  6667.  
  6668.  
  6669.  
  6670.  
  6671.  
  6672.  
  6673.  
  6674.                     operators  return  an  SImode  value and where
  6675.                     STORE_FLAG_VALUE is defined  as  `0x80000000',
  6676.                     saying that just the sign bit is relevant, the
  6677.                     expression
  6678.  
  6679.  
  6680.                         (ne:SI (and:SI x (const_int power-of-2)) (const_int 0))
  6681.  
  6682.  
  6683.  
  6684.                can be converted to
  6685.  
  6686.  
  6687.                         (ashift:SI x (const_int n))
  6688.  
  6689.  
  6690.  
  6691.                where n is the appropriate shift count to move  the
  6692.                bit being tested into the sign bit.
  6693.  
  6694.                     There is no way to describe a machine that al-
  6695.                     ways  sets the low-order bit for a true value,
  6696.                     but does not guarantee the value of any  other
  6697.                     bits,  but  we do not know of any machine that
  6698.                     has such an instruction.  If you are trying to
  6699.                     port  GNU CC to such a machine, include an in-
  6700.                     struction to  perform  a  logical-and  of  the
  6701.                     result with 1 in the pattern for the comparis-
  6702.                     on operators and let us know (see section  Bug
  6703.                     Reporting).
  6704.  
  6705.                     Often, a machine will have  multiple  instruc-
  6706.                     tions  that  obtain  a value from a comparison
  6707.                     (or the condition codes).  Here are  rules  to
  6708.                     guide     the     choice    of    value    for
  6709.                     STORE_FLAG_VALUE, and hence  the  instructions
  6710.                     to be used:
  6711.  
  6712.                     o+    Use the shortest sequence that yields a valid
  6713.                          definition  for STORE_FLAG_VALUE.  It is more
  6714.                          efficent for the  compiler  to  ``normalize''
  6715.                          the  value (convert it to, e.g., 1 or 0) than
  6716.                          for the comparison operators to do so because
  6717.                          there  may  be  opportunities  to combine the
  6718.                          normalization with other operations.
  6719.  
  6720.                     o+    For equal-length sequences, use a value of  1
  6721.                          or  -1,  with  -1 being slightly preferred on
  6722.                          machines with expensive jumps and 1 preferred
  6723.                          on other machines.
  6724.  
  6725.                     o+    As  a  second  choice,  choose  a  value   of
  6726.                          `0x80000001'  if  instructions exist that set
  6727.  
  6728.  
  6729.  
  6730.  
  6731.  
  6732.  
  6733.  
  6734.  
  6735.  
  6736.  
  6737.  
  6738.  
  6739.  
  6740.                          both the sign and low-order bits but  do  not
  6741.                          define the others.
  6742.  
  6743.                     o+    Otherwise, use a value of `0x80000000'.
  6744.  
  6745.  
  6746.                     You  need  not  define  STORE_FLAG_VALUE  if   the
  6747.                     machine has no store-flag instructions.
  6748.  
  6749.                Pmode
  6750.                     An alias for the machine mode for pointers.   Nor-
  6751.                     mally the definition can be
  6752.  
  6753.  
  6754.                         #define Pmode SImode
  6755.  
  6756.  
  6757.  
  6758.                FUNCTION_MODE
  6759.                     An alias for the machine mode used for  memory
  6760.                     references  to functions being called, in call
  6761.                     RTL expressions.  On most machines this should
  6762.                     be QImode.
  6763.  
  6764.                INTEGRATE_THRESHOLD (decl)
  6765.                     A C expression for the maximum number  of  in-
  6766.                     structions   above  which  the  function  decl
  6767.                     should   not   be   inlined.    decl   is    a
  6768.                     FUNCTION_DECL node.
  6769.  
  6770.                     The default definition of  this  macro  is  64
  6771.                     plus  8 times the number of arguments that the
  6772.                     function accepts.  Some people think a  larger
  6773.                     threshold should be used on RISC machines.
  6774.  
  6775.                SCCS_DIRECTIVE
  6776.                     Define this if the preprocessor should  ignore
  6777.                     #sccs directives and print no error message.
  6778.  
  6779.                HANDLE_PRAGMA (stream)
  6780.                     Define this macro if you want to implement any
  6781.                     pragmas.   If defined, it should be a C state-
  6782.                     ment to be executed when #pragma is seen.  The
  6783.                     argument stream is the stdio input stream from
  6784.                     which the source text can be read.
  6785.  
  6786.                     It is generally a bad idea  to  implement  new
  6787.                     uses  of  #pragma.   The only reason to define
  6788.                     this macro is  for  compatibility  with  other
  6789.                     compilers that do support #pragma for the sake
  6790.                     of any user programs which already use it.
  6791.  
  6792.  
  6793.  
  6794.  
  6795.  
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  
  6803.  
  6804.  
  6805.  
  6806.                HAVE_VPRINTF
  6807.                     Define this if the library function vprintf is
  6808.                     available on your system.
  6809.  
  6810.                DOLLARS_IN_IDENTIFIERS
  6811.                     Define this macro to control use of the  char-
  6812.                     acter  `$'  in  identifier  names.   The value
  6813.                     should be 0, 1, or 2.  0 means `$' is not  al-
  6814.                     lowed by default; 1 means it is allowed by de-
  6815.                     fault if `-traditional' is used; 2 means it is
  6816.                     allowed  by  default  provided  `-ansi' is not
  6817.                     used.  1 is the default; there is no  need  to
  6818.                     define this macro in that case.
  6819.  
  6820.                DEFAULT_MAIN_RETURN
  6821.                     Define this macro if the target system expects
  6822.                     every  program's  main  function  to  return a
  6823.                     standard ``success'' value by default  (if  no
  6824.                     other value is explicitly returned).
  6825.  
  6826.                     The definition should be a C  statement  (sans
  6827.                     semicolon) to generate the appropriate rtl in-
  6828.                     structions.  It is used  only  when  compiling
  6829.                     the end of main.
  6830.  
  6831.                HAVE_ATEXIT
  6832.                     Define this if the target system supports  the
  6833.                     function  atexit from the ANSI C standard.  If
  6834.                     this is not defined,  and  INIT_SECTION_ASM_OP
  6835.                     is  not  defined, a default exit function will
  6836.                     be provided to support C++.
  6837.  
  6838.                EXIT_BODY
  6839.                     Define this if your exit function needs to  do
  6840.                     something besides calling an external function
  6841.                     _cleanup before terminating with  _exit.   The
  6842.                     EXIT_BODY  macro  is  only  needed  if netiher
  6843.                     HAVE_ATEXIT nor  INIT_SECTION_ASM_OP  are  de-
  6844.                     fined.
  6845.  
  6846.  
  6847.  
  6848.  
  6849.  
  6850.  
  6851.  
  6852.  
  6853.  
  6854.  
  6855.  
  6856.  
  6857.  
  6858.  
  6859.  
  6860.  
  6861.  
  6862.  
  6863.  
  6864.  
  6865.