Add and use HOST_WIDEST_INT_C, HOST_WIDE_INT_C.
authorRichard Henderson <rth@redhat.com>
Wed, 13 Jun 2012 21:52:47 +0000 (14:52 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 13 Jun 2012 21:52:47 +0000 (14:52 -0700)
From-SVN: r188535

gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/hwint.h

index c6bf75be581fbadb15008418da5748abb59da685..f3eaad0737e330fb2eb0190412128b06f3e262a2 100644 (file)
@@ -1,3 +1,10 @@
+2012-06-13  Richard Henderson  <rth@redhat.com>
+
+       * hwint.h (HOST_WIDEST_INT_C): New.
+       (HOST_WIDE_INT_C): New.
+       (HOST_WIDE_INT_1): Use it.
+       * config/alpha/alpha.c (alpha_trampoline_init): Use it.
+
 2012-06-13  Alexandre Oliva  <aoliva@redhat.com>
 
        PR debug/49888
index 2177288470e1133ba2df97ed191135771abcd83f..36f7306bae4464d0cc47354a851d927930046904 100644 (file)
@@ -5451,8 +5451,6 @@ alpha_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
   chain_value = convert_memory_address (Pmode, chain_value);
 #endif
 
-#define HWI_HEX2(X,Y)  (((HOST_WIDE_INT)0x ## X ## u << 32) | 0x ## Y ## u)
-
   if (TARGET_ABI_OPEN_VMS)
     {
       const char *fnname;
@@ -5471,7 +5469,8 @@ alpha_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
         the VMS calling standard. This is stored in the first quadword.  */
       word1 = force_reg (DImode, gen_const_mem (DImode, fnaddr));
       word1 = expand_and (DImode, word1,
-                         GEN_INT (HWI_HEX2(ffff0fff,0000fff0)), NULL);
+                         GEN_INT (HOST_WIDE_INT_C (0xffff0fff0000fff0)),
+                         NULL);
     }
   else
     {
@@ -5482,12 +5481,10 @@ alpha_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
            nop
         We don't bother setting the HINT field of the jump; the nop
         is merely there for padding.  */
-      word1 = GEN_INT (HWI_HEX2 (a77b0010,a43b0018));
-      word2 = GEN_INT (HWI_HEX2 (47ff041f,6bfb0000));
+      word1 = GEN_INT (HOST_WIDE_INT_C (0xa77b0010a43b0018));
+      word2 = GEN_INT (HOST_WIDE_INT_C (0x47ff041f6bfb0000));
     }
 
-#undef HWI_HEX2
-
   /* Store the first two words, as computed above.  */
   mem = adjust_address (m_tramp, DImode, 0);
   emit_move_insn (mem, word1);
index 9885911a01aa9d4d1a9ed7ab6a229f867b3633b6..17346392f91bd7dc25c7180fd10b136770b8bcc2 100644 (file)
@@ -1,5 +1,5 @@
 /* HOST_WIDE_INT definitions for the GNU compiler.
-   Copyright (C) 1998, 2002, 2004, 2008, 2009, 2010
+   Copyright (C) 1998, 2002, 2004, 2008, 2009, 2010, 2012
    Free Software Foundation, Inc.
 
    This file is part of GCC.
@@ -60,20 +60,25 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
 #if HOST_BITS_PER_LONG >= 64 || !defined NEED_64BIT_HOST_WIDE_INT
 #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
 #   define HOST_WIDE_INT long
+#   define HOST_WIDE_INT_C(X) X ## L
 #else
 # if HOST_BITS_PER_LONGLONG >= 64
 #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG
 #   define HOST_WIDE_INT long long
+#   define HOST_WIDE_INT_C(X) X ## LL
 # else
 #  if HOST_BITS_PER___INT64 >= 64
 #   define HOST_BITS_PER_WIDE_INT HOST_BITS_PER___INT64
 #   define HOST_WIDE_INT __int64
+#   define HOST_WIDE_INT_C(X) X ## i64
 #  else
     #error "Unable to find a suitable type for HOST_WIDE_INT"
 #  endif
 # endif
 #endif
 
+#define HOST_WIDE_INT_1 HOST_WIDE_INT_C(1)
+
 /* This is a magic identifier which allows GCC to figure out the type
    of HOST_WIDE_INT for %wd specifier checks.  You must issue this
    typedef before using the __asm_fprintf__ format attribute.  */
@@ -84,7 +89,6 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
 #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
 # define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT
 # define HOST_WIDE_INT_PRINT_C "L"
-# define HOST_WIDE_INT_1 1L
   /* 'long' might be 32 or 64 bits, and the number of leading zeroes
      must be tweaked accordingly.  */
 # if HOST_BITS_PER_WIDE_INT == 64
@@ -97,7 +101,6 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
 #else
 # define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
 # define HOST_WIDE_INT_PRINT_C "LL"
-# define HOST_WIDE_INT_1 1LL
   /* We can assume that 'long long' is at least 64 bits.  */
 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
     "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
@@ -122,14 +125,17 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__;
 # define HOST_WIDEST_INT_PRINT_UNSIGNED              HOST_WIDE_INT_PRINT_UNSIGNED
 # define HOST_WIDEST_INT_PRINT_HEX           HOST_WIDE_INT_PRINT_HEX
 # define HOST_WIDEST_INT_PRINT_DOUBLE_HEX     HOST_WIDE_INT_PRINT_DOUBLE_HEX
+# define HOST_WIDEST_INT_C(X)                HOST_WIDE_INT(X)
 #else
 # if HOST_BITS_PER_LONGLONG >= 64
 #  define HOST_BITS_PER_WIDEST_INT           HOST_BITS_PER_LONGLONG
 #  define HOST_WIDEST_INT                    long long
+#  define HOST_WIDEST_INT_C(X)               X ## LL
 # else
 #  if HOST_BITS_PER___INT64 >= 64
 #   define HOST_BITS_PER_WIDEST_INT          HOST_BITS_PER___INT64
 #   define HOST_WIDEST_INT                   __int64
+#   define HOST_WIDEST_INT_C(X)                      X ## i64
 #  else
     #error "This line should be impossible to reach"
 #  endif