diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config.gcc | 27 | ||||
-rw-r--r-- | gcc/config.in | 6 | ||||
-rwxr-xr-x | gcc/configure | 10 | ||||
-rw-r--r-- | gcc/configure.ac | 5 | ||||
-rw-r--r-- | gcc/hwint.h | 2 | ||||
-rw-r--r-- | libcpp/ChangeLog | 9 | ||||
-rw-r--r-- | libcpp/config.in | 14 | ||||
-rwxr-xr-x | libcpp/configure | 121 | ||||
-rw-r--r-- | libcpp/configure.ac | 35 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 19 |
11 files changed, 138 insertions, 119 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 91369fc..16c7f51 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-05-20 Richard Biener <rguenther@suse.de> + + * 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. + 2014-05-19 David Wohlferd <dw@LimeGreenSocks.com> * doc/extend.texi: Create Label Attributes section, diff --git a/gcc/config.gcc b/gcc/config.gcc index bc1e4c5..de010da 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -164,13 +164,6 @@ # gas Set to yes or no depending on whether the target # system normally uses GNU as. # -# need_64bit_hwint Set to yes if HOST_WIDE_INT must be 64 bits wide -# for this target. This is true if this target -# supports "long" or "wchar_t" wider than 32 bits, -# or BITS_PER_WORD is wider than 32 bits. -# The setting made here must match the one made in -# other locations such as libcpp/configure.ac -# # configure_default_options # Set to an initializer for configure_default_options # in configargs.h, based on --with-cpu et cetera. @@ -233,7 +226,6 @@ gnu_ld="$gnu_ld_flag" default_use_cxa_atexit=no default_gnu_indirect_function=no target_gtfiles= -need_64bit_hwint=yes need_64bit_isa= native_system_header_dir=/usr/include target_type_format_char='@' @@ -310,14 +302,12 @@ m32c*-*-*) ;; aarch64*-*-*) cpu_type=aarch64 - need_64bit_hwint=yes extra_headers="arm_neon.h" extra_objs="aarch64-builtins.o aarch-common.o" target_has_targetm_common=yes ;; alpha*-*-*) cpu_type=alpha - need_64bit_hwint=yes extra_options="${extra_options} g.opt" ;; am33_2.0-*-linux*) @@ -333,7 +323,6 @@ arm*-*-*) target_type_format_char='%' c_target_objs="arm-c.o" cxx_target_objs="arm-c.o" - need_64bit_hwint=yes extra_options="${extra_options} arm/arm-tables.opt" ;; avr-*-*) @@ -363,7 +352,6 @@ i[34567]86-*-*) cpu_type=i386 c_target_objs="i386-c.o" cxx_target_objs="i386-c.o" - need_64bit_hwint=yes extra_options="${extra_options} fused-madd.opt" extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h @@ -395,11 +383,9 @@ x86_64-*-*) avx512cdintrin.h avx512erintrin.h avx512pfintrin.h shaintrin.h clflushoptintrin.h xsavecintrin.h xsavesintrin.h" - need_64bit_hwint=yes ;; ia64-*-*) extra_headers=ia64intrin.h - need_64bit_hwint=yes extra_options="${extra_options} g.opt fused-madd.opt" ;; hppa*-*-*) @@ -422,7 +408,6 @@ microblaze*-*-*) ;; mips*-*-*) cpu_type=mips - need_64bit_hwint=yes extra_headers="loongson.h" extra_options="${extra_options} g.opt mips/mips-tables.opt" ;; @@ -440,7 +425,6 @@ picochip-*-*) powerpc*-*-*) cpu_type=rs6000 extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h" - need_64bit_hwint=yes case x$with_cpu in xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500) cpu_is_64bit=yes @@ -449,7 +433,6 @@ powerpc*-*-*) extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt" ;; rs6000*-*-*) - need_64bit_hwint=yes extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt" ;; score*-*-*) @@ -461,22 +444,18 @@ sparc*-*-*) c_target_objs="sparc-c.o" cxx_target_objs="sparc-c.o" extra_headers="visintrin.h" - need_64bit_hwint=yes ;; spu*-*-*) cpu_type=spu - need_64bit_hwint=yes ;; s390*-*-*) cpu_type=s390 - need_64bit_hwint=yes extra_options="${extra_options} fused-madd.opt" extra_headers="s390intrin.h htmintrin.h htmxlintrin.h" ;; # Note the 'l'; we need to be able to match e.g. "shle" or "shl". sh[123456789lbe]*-*-* | sh-*-*) cpu_type=sh - need_64bit_hwint=yes extra_options="${extra_options} fused-madd.opt" extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o" ;; @@ -493,11 +472,9 @@ xtensa*-*-*) ;; tilegx*-*-*) cpu_type=tilegx - need_64bit_hwint=yes ;; tilepro*-*-*) cpu_type=tilepro - need_64bit_hwint=yes ;; esac @@ -685,7 +662,6 @@ case ${target} in *) default_use_cxa_atexit=yes;; esac - # need_64bit_hwint=yes # system compiler has this for all arch! use_gcc_stdint=wrap ;; *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) @@ -1186,7 +1162,6 @@ hppa*64*-*-linux*) glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \ pa/pa64-linux.h" gas=yes gnu_ld=yes - need_64bit_hwint=yes ;; hppa*-*-linux*) target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS" @@ -1261,7 +1236,6 @@ hppa*64*-*-hpux11*) esac extra_options="${extra_options} pa/pa-hpux.opt \ pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt" - need_64bit_hwint=yes tmake_file="t-slibgcc" case x${enable_threads} in x | xyes | xposix ) @@ -2094,7 +2068,6 @@ mipstx39-*-elf* | mipstx39el-*-elf*) ;; mmix-knuth-mmixware) tm_file="${tm_file} newlib-stdint.h" - need_64bit_hwint=yes use_gcc_stdint=wrap ;; mn10300-*-*) diff --git a/gcc/config.in b/gcc/config.in index c0ba36e..f03ed82 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -1729,12 +1729,6 @@ #endif -/* Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h). */ -#ifndef USED_FOR_TARGET -#undef NEED_64BIT_HOST_WIDE_INT -#endif - - /* Define to the address where bug reports for this package should be sent. */ #ifndef USED_FOR_TARGET #undef PACKAGE_BUGREPORT diff --git a/gcc/configure b/gcc/configure index f4db0a0..127dcee 100755 --- a/gcc/configure +++ b/gcc/configure @@ -11150,12 +11150,6 @@ else done fi -if test x$need_64bit_hwint = xyes; then - -$as_echo "#define NEED_64BIT_HOST_WIDE_INT 1" >>confdefs.h - -fi - if test x$use_long_long_for_widest_fast_int = xyes; then $as_echo "#define USE_LONG_LONG_FOR_WIDEST_FAST_INT 1" >>confdefs.h @@ -17994,7 +17988,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17997 "configure" +#line 17991 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18100,7 +18094,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18103 "configure" +#line 18097 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index 8f17dfb..a339a0f 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1372,11 +1372,6 @@ else done fi -if test x$need_64bit_hwint = xyes; then - AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1, -[Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).]) -fi - if test x$use_long_long_for_widest_fast_int = xyes; then AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1, [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still diff --git a/gcc/hwint.h b/gcc/hwint.h index ac9c9a2..4cc4614b 100644 --- a/gcc/hwint.h +++ b/gcc/hwint.h @@ -56,7 +56,7 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1]; Thus, we use that unless we have to use 'long long' or '__int64' because we're targeting a 64-bit machine from a 32-bit host. */ -#if HOST_BITS_PER_LONG >= 64 || !defined NEED_64BIT_HOST_WIDE_INT +#if HOST_BITS_PER_LONG >= 64 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG # define HOST_WIDE_INT long # define HOST_WIDE_INT_C(X) X ## L diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 619dfd8..e767aa5 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,12 @@ +2014-05-20 Richard Biener <rguenther@suse.de> + + * 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. + 2014-05-09 Joey Ye <joey.ye@arm.com> * files.c (find_file_in_dir): Always try to shorten for DOS diff --git a/libcpp/config.in b/libcpp/config.in index 1b0b255..1d69a75 100644 --- a/libcpp/config.in +++ b/libcpp/config.in @@ -180,6 +180,9 @@ /* Define to 1 if you have the <locale.h> header file. */ #undef HAVE_LOCALE_H +/* Define to 1 if the system has the type `long long'. */ +#undef HAVE_LONG_LONG + /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H @@ -228,9 +231,8 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H -/* Define to the widest efficient host integer type at least as wide as the - target's size_t type. */ -#undef HOST_WIDE_INT +/* Define to 1 if the system has the type `__int64'. */ +#undef HAVE___INT64 /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST @@ -262,6 +264,12 @@ /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG +/* The size of `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* The size of `__int64', as computed by sizeof. */ +#undef SIZEOF___INT64 + /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. diff --git a/libcpp/configure b/libcpp/configure index a9472f3..6b0f6dc 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -5566,6 +5566,92 @@ _ACEOF fi +ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default" +if test "x$ac_cv_type_long_long" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_LONG_LONG 1 +_ACEOF + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } +if test "${ac_cv_sizeof_long_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (long long) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_long_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + +fi + +ac_fn_c_check_type "$LINENO" "__int64" "ac_cv_type___int64" "$ac_includes_default" +if test "x$ac_cv_type___int64" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE___INT64 1 +_ACEOF + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __int64" >&5 +$as_echo_n "checking size of __int64... " >&6; } +if test "${ac_cv_sizeof___int64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (__int64))" "ac_cv_sizeof___int64" "$ac_includes_default"; then : + +else + if test "$ac_cv_type___int64" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (__int64) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof___int64=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___int64" >&5 +$as_echo "$ac_cv_sizeof___int64" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF___INT64 $ac_cv_sizeof___int64 +_ACEOF + + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if test "${ac_cv_struct_tm+set}" = set; then : @@ -7151,41 +7237,6 @@ $as_echo "#define ENABLE_CANONICAL_SYSTEM_HEADERS 1" >>confdefs.h fi - -case $target in - aarch64*-*-* | \ - alpha*-*-* | \ - arm*-*-* | \ - x86_64-*-* | \ - ia64-*-* | \ - hppa*64*-*-* | \ - i[34567]86-*-* | x86_64-*-solaris2.1[0-9]* | \ - mips*-*-* | \ - mmix-*-* | \ - powerpc*-*-* | \ - rs6000*-*-* | \ - s390*-*-* | \ - sparc*-*-* | \ - spu-*-* | \ - sh[123456789lbe]*-*-* | sh-*-* | \ - tilegx*-*-* | tilepro*-*-* ) - need_64bit_hwint=yes ;; - *) - need_64bit_hwint=yes ;; -esac - -case $need_64bit_hwint:$ac_cv_sizeof_long in - *:8 | no:*) host_wide_int=long ;; - *) host_wide_int='long long' ;; -esac - - - -cat >>confdefs.h <<_ACEOF -#define HOST_WIDE_INT $host_wide_int -_ACEOF - - case $target in i?86-* | x86_64-*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext diff --git a/libcpp/configure.ac b/libcpp/configure.ac index f2bca1f..93616ad 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -64,6 +64,8 @@ AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_TYPE_UINTPTR_T AC_CHECK_TYPE(ptrdiff_t, int) +AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)]) +AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)]) AC_STRUCT_TM AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) @@ -180,39 +182,6 @@ if test $enable_canonical_system_headers != no; then 1, [Define to enable system headers canonicalization.]) fi -m4_changequote(,) -case $target in - aarch64*-*-* | \ - alpha*-*-* | \ - arm*-*-* | \ - x86_64-*-* | \ - ia64-*-* | \ - hppa*64*-*-* | \ - i[34567]86-*-* | x86_64-*-solaris2.1[0-9]* | \ - mips*-*-* | \ - mmix-*-* | \ - powerpc*-*-* | \ - rs6000*-*-* | \ - s390*-*-* | \ - sparc*-*-* | \ - spu-*-* | \ - sh[123456789lbe]*-*-* | sh-*-* | \ - tilegx*-*-* | tilepro*-*-* ) - need_64bit_hwint=yes ;; - *) - need_64bit_hwint=yes ;; -esac - -case $need_64bit_hwint:$ac_cv_sizeof_long in - *:8 | no:*) host_wide_int=long ;; - *) host_wide_int='long long' ;; -esac -m4_changequote([,]) - -AC_DEFINE_UNQUOTED(HOST_WIDE_INT, $host_wide_int, -[Define to the widest efficient host integer type at least - as wide as the target's size_t type.]) - case $target in i?86-* | x86_64-*) AC_TRY_COMPILE([], [asm ("pcmpestri %0, %%xmm0, %%xmm1" : : "i"(0))], 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 { |