hwint.h (HOST_LONG_LONG_FORMAT): New macro.
authorMark Mitchell <mark@codesourcery.com>
Wed, 24 Nov 2004 04:31:58 +0000 (04:31 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 24 Nov 2004 04:31:58 +0000 (04:31 +0000)
* hwint.h (HOST_LONG_LONG_FORMAT): New macro.  Use it throughout.
* config/i386/xm-mingw32.h (HOST_LONG_LONG_FORMAT): Define.
* doc/hostconfig.texi (HOST_LONG_LONG_FORMAT): Document.

From-SVN: r91136

gcc/ChangeLog
gcc/config/i386/xm-mingw32.h
gcc/doc/hostconfig.texi
gcc/hwint.h

index bc1b49f..8c29f0f 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * hwint.h (HOST_LONG_LONG_FORMAT): New macro.  Use it throughout.
+       * config/i386/xm-mingw32.h (HOST_LONG_LONG_FORMAT): Define.
+       * doc/hostconfig.texi (HOST_LONG_LONG_FORMAT): Document.
+
 2004-11-24  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * config/i386/i386.c (override_options): Move
index f22347c..d4de258 100644 (file)
@@ -30,3 +30,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 /*  The st_ino field of struct stat is always 0.  */
 #define HOST_LACKS_INODE_NUMBERS
+
+/* MSVCRT does not support the "ll" format specifier for printing
+   "long long" values.  Instead, we use "I64".  */
+#define HOST_LONG_LONG_FORMAT "I64"
index 7f6dc24..98dadaf 100644 (file)
@@ -212,6 +212,11 @@ initialization when a compilation driver is being initialized.
 Define this macro if the host system has a small limit on the total
 size of an argument vector.  This causes the driver to take more care
 not to pass unnecessary arguments to subprocesses.
+
+@item HOST_LONG_LONG_FORMAT
+If defined, the string used to indicate an argument of type @code{long
+long} to functions like @code{printf}.  The default value is
+@code{"ll"}. 
 @end ftable
 
 In addition, if @command{configure} generates an incorrect definition of
index 8eb9851..84ca842 100644 (file)
 #define HOST_BITS_PER_INT   (CHAR_BIT * SIZEOF_INT)
 #define HOST_BITS_PER_LONG  (CHAR_BIT * SIZEOF_LONG)
 
+/* The string that should be inserted into a printf style format to
+   indicate a "long long" operand.  */
+#ifndef HOST_LONG_LONG_FORMAT 
+#define HOST_LONG_LONG_FORMAT "ll"
+#endif
+
 /* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined, but
    GCC_VERSION >= 3000, assume this is the second or later stage of a
    bootstrap, we do have long long, and it's 64 bits.  (This is
@@ -77,7 +83,8 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
 # define HOST_WIDE_INT_PRINT "ll"
 # define HOST_WIDE_INT_PRINT_C "LL"
   /* We can assume that 'long long' is at least 64 bits.  */
-# define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%016llx"
+# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
+    "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
 #endif /* HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG */
 
 #define HOST_WIDE_INT_PRINT_DEC "%" HOST_WIDE_INT_PRINT "d"
@@ -109,11 +116,12 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
     #error "This line should be impossible to reach"
 #  endif
 # endif
-# define HOST_WIDEST_INT_PRINT_DEC           "%lld"
-# define HOST_WIDEST_INT_PRINT_DEC_C         "%lldLL"
-# define HOST_WIDEST_INT_PRINT_UNSIGNED              "%llu"
-# define HOST_WIDEST_INT_PRINT_HEX           "0x%llx"
-# define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     "0x%llx%016llx"
+# define HOST_WIDEST_INT_PRINT_DEC           "%" HOST_LONG_LONG_FORMAT "d"
+# define HOST_WIDEST_INT_PRINT_DEC_C         "%" HOST_LONG_LONG_FORMAT "dLL"
+# define HOST_WIDEST_INT_PRINT_UNSIGNED              "%" HOST_LONG_LONG_FORMAT "u"
+# define HOST_WIDEST_INT_PRINT_HEX           "0x%" HOST_LONG_LONG_FORMAT "x"
+# define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     \
+    "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
 #endif
 
 /* Define HOST_WIDEST_FAST_INT to the widest integer type supported