/* Definitions of target machine for GNU compiler, for DEC Alpha on Tru64 UNIX V5.1. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ /* As of DEC OSF/1 V4.0, as can subtract adjacent labels. */ #undef TARGET_AS_CAN_SUBTRACT_LABELS #define TARGET_AS_CAN_SUBTRACT_LABELS 1 /* The GEM libraries for X_float are present, though not used by C. */ #undef TARGET_HAS_XFLOATING_LIBS #define TARGET_HAS_XFLOATING_LIBS 1 /* Tru64 UNIX V5.1 uses IEEE QUAD format. */ #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_FPREGS | MASK_LONG_DOUBLE_128) /* The linker appears to perform invalid code optimizations that result in the ldgp emitted for the exception_receiver pattern being incorrectly linked. */ #undef TARGET_LD_BUGGY_LDGP #define TARGET_LD_BUGGY_LDGP 1 /* Tru64 UNIX V5.1 has the float and long double forms of math functions. */ #undef TARGET_C99_FUNCTIONS #define TARGET_C99_FUNCTIONS 1 /* Names to predefine in the preprocessor for this target machine. */ #define TARGET_OS_CPP_BUILTINS() \ do { \ builtin_define_std ("unix"); \ builtin_define_std ("SYSTYPE_BSD"); \ builtin_define ("_SYSTYPE_BSD"); \ builtin_define ("__osf__"); \ builtin_define ("__digital__"); \ builtin_define ("__arch64__"); \ builtin_define ("_LONGLONG"); \ builtin_assert ("system=unix"); \ builtin_assert ("system=xpg4"); \ /* Tru64 UNIX V5 has a 16 byte long \ double type and requires __X_FLOAT \ to be defined for . */ \ if (LONG_DOUBLE_TYPE_SIZE == 128) \ builtin_define ("__X_FLOAT"); \ \ /* Tru64 UNIX V4/V5 provide several ISO C94 \ features protected by the corresponding \ __STDC_VERSION__ macro. libstdc++ v3 \ needs them as well. */ \ if (c_dialect_cxx ()) \ builtin_define ("__STDC_VERSION__=199409L"); \ } while (0) /* Accept DEC C flags for multithreaded programs. We use _PTHREAD_USE_D4 instead of PTHREAD_USE_D4 since both have the same effect and the former doesn't invade the users' namespace. */ #undef CPP_SPEC #define CPP_SPEC \ "%{pthread|threads:-D_REENTRANT} %{threads:-D_PTHREAD_USE_D4}" /* -mcpu=native handling only makes sense with compiler running on an Alpha chip. */ #if defined(__alpha__) || defined(__alpha) extern const char *host_detect_local_cpu (int argc, const char **argv); # define EXTRA_SPEC_FUNCTIONS \ { "local_cpu_detect", host_detect_local_cpu }, # define MCPU_MTUNE_NATIVE_SPECS \ " %{mcpu=native:%