Add and use HOST_WIDEST_INT_C, HOST_WIDE_INT_C.

From-SVN: r188535
This commit is contained in:
Richard Henderson 2012-06-13 14:52:47 -07:00 committed by Richard Henderson
parent db8c4965be
commit fd2d912115
3 changed files with 20 additions and 10 deletions

View 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

View 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);

View 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