X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fmachmode.h;h=f1f146f2ecf73b733461afdf5506bfcffecbf165;hp=85b554389cff00678986beb05ca3e43c8988e00b;hb=f75acd678af83c0e814fc60e76ddbea4a16d3c5c;hpb=0355838f44b59d1f975c4e3c9616d86ca665705a diff --git a/gcc/machmode.h b/gcc/machmode.h index 85b554389cf..f1f146f2ecf 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -1,5 +1,5 @@ /* Machine mode definitions for GNU C-Compiler; included by rtl.h and tree.h. - Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc. + Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc. This file is part of GNU CC. @@ -18,17 +18,10 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Add prototype support. */ -#ifndef PROTO -#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__) -#define PROTO(ARGS) ARGS -#else -#define PROTO(ARGS) () -#endif -#endif - #ifndef HAVE_MACHINE_MODES +#define HAVE_MACHINE_MODES + +#include "gansidecl.h" /* Strictly speaking, this isn't the proper place to include these definitions, but this file is included by every GCC file. @@ -60,7 +53,72 @@ Boston, MA 02111-1307, USA. */ /* Provide a default way to print an address in hex via printf. */ #ifndef HOST_PTR_PRINTF -#define HOST_PTR_PRINTF sizeof (int) == sizeof (char *) ? "%x" : "%lx" +#define HOST_PTR_PRINTF \ + (sizeof (int) == sizeof (char *) ? "%x" \ + : sizeof (long) == sizeof (char *) ? "%lx" : "%llx") +#endif + +/* Provide defaults for the way to print a HOST_WIDE_INT + in various manners. */ + +#ifndef HOST_WIDE_INT_PRINT_DEC +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT +#define HOST_WIDE_INT_PRINT_DEC "%d" +#else +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG +#define HOST_WIDE_INT_PRINT_DEC "%ld" +#else +#define HOST_WIDE_INT_PRINT_DEC "%lld" +#endif +#endif +#endif + +#ifndef HOST_WIDE_INT_PRINT_UNSIGNED +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT +#define HOST_WIDE_INT_PRINT_UNSIGNED "%u" +#else +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG +#define HOST_WIDE_INT_PRINT_UNSIGNED "%lu" +#else +#define HOST_WIDE_INT_PRINT_UNSIGNED "%llu" +#endif +#endif +#endif + +#ifndef HOST_WIDE_INT_PRINT_HEX +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT +#define HOST_WIDE_INT_PRINT_HEX "0x%x" +#else +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG +#define HOST_WIDE_INT_PRINT_HEX "0x%lx" +#else +#define HOST_WIDE_INT_PRINT_HEX "0x%llx" +#endif +#endif +#endif + +#ifndef HOST_WIDE_INT_PRINT_DOUBLE_HEX +#if HOST_BITS_PER_WIDE_INT == 64 +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT +#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%x%016x" +#else +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG +#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%016lx" +#else +#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%016llx" +#endif +#endif +#else +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT +#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%x%08x" +#else +#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG +#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%08lx" +#else +#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%08llx" +#endif +#endif +#endif #endif /* Make an enum class that gives all the machine modes. */ @@ -77,8 +135,6 @@ MAX_MACHINE_MODE }; #undef DEF_MACHMODE -#define HAVE_MACHINE_MODES - #ifndef NUM_MACHINE_MODES #define NUM_MACHINE_MODES (int) MAX_MACHINE_MODE #endif @@ -86,7 +142,7 @@ MAX_MACHINE_MODE }; /* Get the name of mode MODE as a string. */ extern char *mode_name[]; -#define GET_MODE_NAME(MODE) (mode_name[(int)(MODE)]) +#define GET_MODE_NAME(MODE) (mode_name[(int) (MODE)]) enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC, MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MAX_MODE_CLASS}; @@ -95,7 +151,7 @@ enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC, (integer, floating, complex, etc.) */ extern enum mode_class mode_class[]; -#define GET_MODE_CLASS(MODE) (mode_class[(int)(MODE)]) +#define GET_MODE_CLASS(MODE) (mode_class[(int) (MODE)]) /* Nonzero if MODE is an integral mode. */ #define INTEGRAL_MODE_P(MODE) \ @@ -111,12 +167,12 @@ extern enum mode_class mode_class[]; /* Get the size in bytes of an object of mode MODE. */ extern int mode_size[]; -#define GET_MODE_SIZE(MODE) (mode_size[(int)(MODE)]) +#define GET_MODE_SIZE(MODE) (mode_size[(int) (MODE)]) /* Get the size in bytes of the basic parts of an object of mode MODE. */ extern int mode_unit_size[]; -#define GET_MODE_UNIT_SIZE(MODE) (mode_unit_size[(int)(MODE)]) +#define GET_MODE_UNIT_SIZE(MODE) (mode_unit_size[(int) (MODE)]) /* Get the number of units in the object. */ @@ -126,7 +182,7 @@ extern int mode_unit_size[]; /* Get the size in bits of an object of mode MODE. */ -#define GET_MODE_BITSIZE(MODE) (BITS_PER_UNIT * mode_size[(int)(MODE)]) +#define GET_MODE_BITSIZE(MODE) (BITS_PER_UNIT * mode_size[(int) (MODE)]) /* Get a bitmask containing 1 for all bits in a word that fit within mode MODE. */ @@ -138,7 +194,7 @@ extern int mode_unit_size[]; /* Get the next wider natural mode (eg, QI -> HI -> SI -> DI -> TI). */ extern enum machine_mode mode_wider_mode[]; -#define GET_MODE_WIDER_MODE(MODE) (mode_wider_mode[(int)(MODE)]) +#define GET_MODE_WIDER_MODE(MODE) (mode_wider_mode[(int) (MODE)]) /* Return the mode for data of a given size SIZE and mode class CLASS. If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE. @@ -159,7 +215,7 @@ extern enum machine_mode get_best_mode PROTO((int, int, int, enum machine_mode, /* For each class, get the narrowest mode in that class. */ extern enum machine_mode class_narrowest_mode[]; -#define GET_CLASS_NARROWEST_MODE(CLASS) class_narrowest_mode[(int)(CLASS)] +#define GET_CLASS_NARROWEST_MODE(CLASS) class_narrowest_mode[(int) (CLASS)] /* Define the integer modes whose sizes are BITS_PER_UNIT and BITS_PER_WORD and the mode whose class is Pmode and whose size is POINTER_SIZE. */