From 54da09ee2062f41141dbfd116975ee20509a96e3 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 20 May 2014 08:01:32 +0000 Subject: config.gcc: Remove need_64bit_hwint. 2014-05-20 Richard Biener gcc/ * config.gcc: Remove need_64bit_hwint. * configure.ac: Do not define NEED_64BIT_HOST_WIDE_INT. * hwint.h: Do not check NEED_64BIT_HOST_WIDE_INT but assume it to be true. * config.in: Regenerate. * configure: Likewise. libcpp/ * configure.ac: Copy gcc logic of detecting a 64bit type. Remove HOST_WIDE_INT define. * include/cpplib.h: typedef cpp_num_part to a 64bit type, similar to how hwint.h does it. * config.in: Regenerate. * configure: Likewise. From-SVN: r210632 --- libcpp/include/cpplib.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'libcpp/include') diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index a9db7ab..594c899 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -819,7 +819,24 @@ extern int cpp_defined (cpp_reader *, const unsigned char *, int); /* A preprocessing number. Code assumes that any unused high bits of the double integer are set to zero. */ -typedef unsigned HOST_WIDE_INT cpp_num_part; + +/* Find a type with at least 64bit precision, mimicking hwint.h. + This type has to be equal to unsigned HOST_WIDE_INT, see + gcc/c-family/c-lex.c. */ +#if SIZEOF_LONG >= 8 +typedef unsigned long cpp_num_part; +#else +# if SIZEOF_LONG_LONG >= 8 +typedef unsigned long long cpp_num_part; +# else +# if SIZEOF___INT64 >= 8 +typedef unsigned __int64 cpp_num_part; +# else + #error "This line should be impossible to reach" +# endif +# endif +#endif + typedef struct cpp_num cpp_num; struct cpp_num { -- cgit v1.1