From: Richard Kenner Date: Fri, 15 Nov 1996 19:13:36 +0000 (-0500) Subject: (HOST_PTR_PRINTF): Handle char * wider than long. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=29cad4a46caadcd54bb746298a392adeef958571;p=gcc.git (HOST_PTR_PRINTF): Handle char * wider than long. (HOST_WIDE_INT_PRINT_{DEC,UNSIGNED,HEX,DOUBLE_HEX}): New macros. From-SVN: r13173 --- diff --git a/gcc/machmode.h b/gcc/machmode.h index 927e29d0cd9..f1f146f2ecf 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -53,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. */