OSDN Git Service

Merge branch 'trunk' of git://gcc.gnu.org/git/gcc into rework
authorMasaki Muranaka <monaka@monami-software.com>
Tue, 7 Dec 2010 07:55:21 +0000 (16:55 +0900)
committerMasaki Muranaka <monaka@monami-software.com>
Tue, 7 Dec 2010 07:55:21 +0000 (16:55 +0900)
1  2 
gcc/config.gcc
gcc/config/i386/driver-i386.c
gcc/config/rs6000/rs6000.h

diff --combined gcc/config.gcc
@@@ -1065,6 -1065,10 +1065,10 @@@ hppa[12]*-*-hpux10*
        fi
        use_collect2=yes
        gas=yes
+       if test "x$with_dwarf2" != x; then
+               echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
+               dwarf2=no
+       fi
        ;;
  hppa*64*-*-hpux11*)
        target_cpu_default="MASK_PA_11|MASK_PA_20"
@@@ -1153,6 -1157,10 +1157,10 @@@ hppa[12]*-*-hpux11*
                tm_file="${tm_file} hpux-stdint.h"
                ;;
        esac
+       if test "x$with_dwarf2" != x; then
+               echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
+               dwarf2=no
+       fi
        ;;
  i[34567]86-*-darwin*)
        need_64bit_hwint=yes
@@@ -1226,7 -1234,7 +1234,7 @@@ i[34567]86-*-linux* | i[34567]86-*-kfre
                        need_64bit_hwint=yes
                        need_64bit_isa=yes
                        case X"${with_cpu}" in
-                       Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+                       Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
                                ;;
                        X)
                                if test x$with_cpu_64 = x; then
                                ;;
                        *)
                                echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
-                               echo "generic atom core2 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+                               echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
                                exit 1
                                ;;
                        esac
@@@ -1364,7 -1372,7 +1372,7 @@@ i[34567]86-*-solaris2*
                need_64bit_isa=yes
                use_gcc_stdint=wrap
                case X"${with_cpu}" in
-               Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+               Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
                        ;;
                X)
                        if test x$with_cpu_64 = x; then
                        ;;
                *)
                        echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
-                       echo "generic atom core2 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+                       echo "generic atom core2 corei7 corei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
                        exit 1
                        ;;
                esac
@@@ -1444,7 -1452,7 +1452,7 @@@ i[34567]86-*-mingw* | x86_64-*-mingw*
                        if test x$enable_targets = xall; then
                                tm_defines="${tm_defines} TARGET_BI_ARCH=1"
                                case X"${with_cpu}" in
-                               Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
+                               Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
                                        ;;
                                X)
                                        if test x$with_cpu_64 = x; then
                                        ;;
                                *)
                                        echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
-                                       echo "generic atom core2 nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
+                                       echo "generic atom core2 corei7 Xcorei7-avx nocona x86-64 bdver1 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
                                        exit 1
                                        ;;
                                esac
@@@ -1935,11 -1943,6 +1943,11 @@@ mips-*-elf* | mipsel-*-elf*
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
        tmake_file="mips/t-elf mips/t-libgcc-mips16"
        ;;
 +mips64-*-toppers* | mips64el-*-toppers*)
 +      tm_file="elfos.h ${tm_file} mips/elf.h mips/toppers.h"
 +      tmake_file="mips/t-elf mips/t-libgcc-mips16"
 +      tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
 +      ;;
  mips64-*-elf* | mips64el-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
        tmake_file="mips/t-elf mips/t-libgcc-mips16"
@@@ -2455,23 -2458,17 +2463,17 @@@ sh-wrs-vxworks
        tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks"
        tm_file="${tm_file} elfos.h svr4.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
        ;;
- sparc-*-netbsdelf*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
-       extra_options="${extra_options} sparc/long-double-switch.opt"
-       ;;
- sparc64-*-openbsd*)
-       tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h"
-       tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
-       extra_options="${extra_options} sparc/little-endian.opt"
-       gas=yes gnu_ld=yes
-       with_cpu=ultrasparc
-       ;;
  sparc-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h svr4.h sparc/sysv4.h sparc/sp-elf.h"
        tmake_file="sparc/t-elf sparc/t-crtfm"
        extra_parts="crti.o crtn.o crtbegin.o crtend.o"
        ;;
- sparc-*-linux*)               # SPARC's running GNU/Linux, libc6
+ sparc-*-rtems*)
+       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
+       tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
+       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
+       ;;
+ sparc-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
        tmake_file="${tmake_file} sparc/t-linux"
        fi
        tmake_file="${tmake_file} sparc/t-crtfm"
        ;;
- sparc-*-rtems*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
-       tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
-       ;;
- sparc64-*-rtems*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
-       extra_options="${extra_options} sparc/little-endian.opt"
-       tmake_file="${tmake_file} sparc/t-crtfm t-rtems"
-       extra_parts="crtbegin.o crtend.o"
+ sparc-*-netbsdelf*)
+       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
+       extra_options="${extra_options} sparc/long-double-switch.opt"
        ;;
  sparc*-*-solaris2*)
        tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h"
@@@ -2555,6 -2545,17 +2550,17 @@@ sparc64-*-elf*
        tmake_file="${tmake_file} sparc/t-crtfm"
        extra_parts="crtbegin.o crtend.o"
        ;;
+ sparc64-*-rtems*)
+       tm_file="${tm_file} dbxelf.h elfos.h svr4.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
+       extra_options="${extra_options} sparc/little-endian.opt"
+       tmake_file="${tmake_file} sparc/t-crtfm t-rtems"
+       extra_parts="crtbegin.o crtend.o"
+       ;;
+ sparc64-*-linux*)
+       tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h sparc/linux64.h"
+       extra_options="${extra_options} sparc/long-double-switch.opt"
+       tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
+       ;;
  sparc64-*-freebsd*|ultrasparc-*-freebsd*)
        tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
                *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
        esac
        ;;
- sparc64-*-linux*)             # 64-bit SPARC's running GNU/Linux
-       tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h sparc/linux64.h"
-       extra_options="${extra_options} sparc/long-double-switch.opt"
-       tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
-       ;;
  sparc64-*-netbsd*)
        tm_file="sparc/biarch64.h ${tm_file}"
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
        tmake_file="${tmake_file} sparc/t-netbsd64"
        ;;
+ sparc64-*-openbsd*)
+       tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h"
+       tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
+       extra_options="${extra_options} sparc/little-endian.opt"
+       gas=yes gnu_ld=yes
+       with_cpu=ultrasparc
+       ;;
  spu-*-elf*)
        tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h newlib-stdint.h"
        tmake_file="spu/t-spu-elf"
@@@ -2821,6 -2824,14 +2829,14 @@@ case ${target} i
        arch=core2
        cpu=core2
        ;;
+       corei7-*)
+       arch=corei7
+       cpu=corei7
+       ;;
+       corei7_avx-*)
+       arch=corei7-avx
+       cpu=corei7-avx
+       ;;
        pentium_m-*)
        arch=pentium-m
        cpu=pentium-m
        arch=core2
        cpu=core2
        ;;
+       corei7-*)
+       arch=corei7
+       cpu=corei7
+       ;;
        *)
        arch=x86-64
        cpu=generic
@@@ -3254,7 -3269,7 +3274,7 @@@ case "${target}" i
                        "" | x86-64 | generic | native \
                        | k8 | k8-sse3 | athlon64 | athlon64-sse3 | opteron \
                        | opteron-sse3 | athlon-fx | bdver1 | amdfam10 \
-                       | barcelona | nocona | core2 | atom)
+                       | barcelona | nocona | core2 | corei7 | corei7-avx | atom)
                                # OK
                                ;;
                        *)
@@@ -21,11 -21,10 +21,10 @@@ along with GCC; see the file COPYING3
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
- #include <stdlib.h>
  
  const char *host_detect_local_cpu (int argc, const char **argv);
  
 -#ifdef __GNUC__
 +#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
  #include "cpuid.h"
  
  struct cache_desc
@@@ -569,6 -568,10 +568,10 @@@ const char *host_detect_local_cpu (int 
          /* Westmere.  */
          cpu = "corei7";
          break;
+       case 0x2a:
+         /* Sandy Bridge.  */
+         cpu = "corei7-avx";
+         break;
        case 0x17:
        case 0x1d:
          /* Penryn.  */
  /* Note that some other tm.h files include this one and then override
     many of the definitions.  */
  
+ #ifndef RS6000_OPTS_H
+ #include "config/rs6000/rs6000-opts.h"
+ #endif
  /* Definitions for the object file format.  These are set at
     compile-time.  */
  
  /* -mcpu=native handling only makes sense with compiler running on
     an PowerPC chip.  If changing this condition, also change
     the condition in driver-rs6000.c.  */
 -#if defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX)
 +#if 0 /* defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX) */
  /* In driver-rs6000.c.  */
  extern const char *host_detect_local_cpu (int argc, const char **argv);
  #define EXTRA_SPEC_FUNCTIONS \
  #define TARGET_SECURE_PLT 0
  #endif
  
- /* Code model for 64-bit linux.
-    small: 16-bit toc offsets.
-    medium: 32-bit toc offsets, static data and code within 2G of TOC pointer.
-    large: 32-bit toc offsets, no limit on static data and code.  */
- enum rs6000_cmodel {
-   CMODEL_SMALL,
-   CMODEL_MEDIUM,
-   CMODEL_LARGE
- };
  #ifndef TARGET_CMODEL
  #define TARGET_CMODEL CMODEL_SMALL
  #endif
  
  #define TARGET_DEFAULT (MASK_POWER | MASK_MULTIPLE | MASK_STRING)
  
- /* Processor type.  Order must match cpu attribute in MD file.  */
- enum processor_type
-  {
-    PROCESSOR_RIOS1,
-    PROCESSOR_RIOS2,
-    PROCESSOR_RS64A,
-    PROCESSOR_MPCCORE,
-    PROCESSOR_PPC403,
-    PROCESSOR_PPC405,
-    PROCESSOR_PPC440,
-    PROCESSOR_PPC476,
-    PROCESSOR_PPC601,
-    PROCESSOR_PPC603,
-    PROCESSOR_PPC604,
-    PROCESSOR_PPC604e,
-    PROCESSOR_PPC620,
-    PROCESSOR_PPC630,
-    PROCESSOR_PPC750,
-    PROCESSOR_PPC7400,
-    PROCESSOR_PPC7450,
-    PROCESSOR_PPC8540,
-    PROCESSOR_PPCE300C2,
-    PROCESSOR_PPCE300C3,
-    PROCESSOR_PPCE500MC,
-    PROCESSOR_PPCE500MC64,
-    PROCESSOR_POWER4,
-    PROCESSOR_POWER5,
-    PROCESSOR_POWER6,
-    PROCESSOR_POWER7,
-    PROCESSOR_CELL,
-    PROCESSOR_PPCA2,
-    PROCESSOR_TITAN
- };
  /* FPU operations supported. 
     Each use of TARGET_SINGLE_FLOAT or TARGET_DOUBLE_FLOAT must 
     also test TARGET_HARD_FLOAT.  */
  #define TARGET_SIMPLE_FPU   0
  #define TARGET_XILINX_FPU   0
  
- extern enum processor_type rs6000_cpu;
  /* Recast the processor type to the cpu attribute.  */
  #define rs6000_cpu_attr ((enum attr_cpu)rs6000_cpu)
  
  #define PROCESSOR_DEFAULT   PROCESSOR_RIOS1
  #define PROCESSOR_DEFAULT64 PROCESSOR_RS64A
  
- /* FP processor type.  */
- enum fpu_type_t
- {
-       FPU_NONE,               /* No FPU */
-       FPU_SF_LITE,            /* Limited Single Precision FPU */
-       FPU_DF_LITE,            /* Limited Double Precision FPU */
-       FPU_SF_FULL,            /* Full Single Precision FPU */
-       FPU_DF_FULL             /* Full Double Single Precision FPU */
- };
  extern enum fpu_type_t fpu_type;
  
  /* Specify the dialect of assembler to use.  New mnemonics is dialect one
     and the old mnemonics are dialect zero.  */
  #define ASSEMBLER_DIALECT (TARGET_NEW_MNEMONICS ? 1 : 0)
  
- /* Types of costly dependences.  */
- enum rs6000_dependence_cost
-  {
-    max_dep_latency = 1000,
-    no_dep_costly,
-    all_deps_costly,
-    true_store_to_load_dep_costly,
-    store_to_load_dep_costly
-  };
- /* Types of nop insertion schemes in sched target hook sched_finish.  */
- enum rs6000_nop_insertion
-   {
-     sched_finish_regroup_exact = 1000,
-     sched_finish_pad_groups,
-     sched_finish_none
-   };
- /* Dispatch group termination caused by an insn.  */
- enum group_termination
-   {
-     current_group,
-     previous_group
-   };
  /* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */
  struct rs6000_cpu_select
  {
  extern struct rs6000_cpu_select rs6000_select[];
  
  /* Debug support */
- extern const char *rs6000_debug_name; /* Name for -mdebug-xxxx option */
- extern int rs6000_debug_stack;                /* debug stack applications */
- extern int rs6000_debug_arg;          /* debug argument handling */
- extern int rs6000_debug_reg;          /* debug register handling */
- extern int rs6000_debug_addr;         /* debug memory addressing */
- extern int rs6000_debug_cost;         /* debug rtx_costs */
- #define       TARGET_DEBUG_STACK      rs6000_debug_stack
- #define       TARGET_DEBUG_ARG        rs6000_debug_arg
- #define TARGET_DEBUG_REG      rs6000_debug_reg
- #define TARGET_DEBUG_ADDR     rs6000_debug_addr
- #define TARGET_DEBUG_COST     rs6000_debug_cost
- extern const char *rs6000_traceback_name; /* Type of traceback table.  */
- /* These are separate from target_flags because we've run out of bits
-    there.  */
- extern int rs6000_long_double_type_size;
- extern int rs6000_ieeequad;
- extern int rs6000_altivec_abi;
- extern int rs6000_spe_abi;
- extern int rs6000_spe;
- extern int rs6000_float_gprs;
- extern int rs6000_alignment_flags;
- extern const char *rs6000_sched_insert_nops_str;
- extern enum rs6000_nop_insertion rs6000_sched_insert_nops;
- /* Describe which vector unit to use for a given machine mode.  */
- enum rs6000_vector {
-   VECTOR_NONE,                        /* Type is not  a vector or not supported */
-   VECTOR_ALTIVEC,             /* Use altivec for vector processing */
-   VECTOR_VSX,                 /* Use VSX for vector processing */
-   VECTOR_PAIRED,              /* Use paired floating point for vectors */
-   VECTOR_SPE,                 /* Use SPE for vector processing */
-   VECTOR_OTHER                        /* Some other vector unit */
- };
+ #define MASK_DEBUG_STACK      0x01    /* debug stack applications */
+ #define       MASK_DEBUG_ARG          0x02    /* debug argument handling */
+ #define MASK_DEBUG_REG                0x04    /* debug register handling */
+ #define MASK_DEBUG_ADDR               0x08    /* debug memory addressing */
+ #define MASK_DEBUG_COST               0x10    /* debug rtx codes */
+ #define MASK_DEBUG_TARGET     0x20    /* debug target attribute/pragma */
+ #define MASK_DEBUG_ALL                (MASK_DEBUG_STACK \
+                                | MASK_DEBUG_ARG \
+                                | MASK_DEBUG_REG \
+                                | MASK_DEBUG_ADDR \
+                                | MASK_DEBUG_COST \
+                                | MASK_DEBUG_TARGET)
+ #define       TARGET_DEBUG_STACK      (rs6000_debug & MASK_DEBUG_STACK)
+ #define       TARGET_DEBUG_ARG        (rs6000_debug & MASK_DEBUG_ARG)
+ #define TARGET_DEBUG_REG      (rs6000_debug & MASK_DEBUG_REG)
+ #define TARGET_DEBUG_ADDR     (rs6000_debug & MASK_DEBUG_ADDR)
+ #define TARGET_DEBUG_COST     (rs6000_debug & MASK_DEBUG_COST)
+ #define TARGET_DEBUG_TARGET   (rs6000_debug & MASK_DEBUG_TARGET)
  
  extern enum rs6000_vector rs6000_vector_unit[];
  
@@@ -628,6 -534,7 +534,7 @@@ extern unsigned char rs6000_recip_bits[
  /* Target pragma.  */
  #define REGISTER_TARGET_PRAGMAS() do {                                \
    c_register_pragma (0, "longcall", rs6000_pragma_longcall);  \
+   targetm.target_option.pragma_parse = rs6000_pragma_target_parse; \
    targetm.resolve_overloaded_builtin = altivec_resolve_overloaded_builtin; \
  } while (0)
  
@@@ -1195,11 -1102,6 +1102,6 @@@ extern unsigned rs6000_pointer_size
  
  #define FIXED_SCRATCH 0
  
- /* Define this macro to change register usage conditional on target
-    flags.  */
- #define CONDITIONAL_REGISTER_USAGE rs6000_conditional_register_usage ()
  /* Specify the registers used for certain standard purposes.
     The values of these macros are register numbers.  */
  
@@@ -1465,16 -1367,6 +1367,6 @@@ extern enum reg_class rs6000_constraint
  
  /* Stack layout; function entry, exit and calling.  */
  
- /* Enumeration to give which calling sequence to use.  */
- enum rs6000_abi {
-   ABI_NONE,
-   ABI_AIX,                    /* IBM's AIX */
-   ABI_V4,                     /* System V.4/eabi */
-   ABI_DARWIN                  /* Apple's Darwin (OS X kernel) */
- };
- extern enum rs6000_abi rs6000_current_abi;    /* available for use by subtarget */
  /* Define this if pushing a word on the stack
     makes the stack pointer a smaller address.  */
  #define STACK_GROWS_DOWNWARD