Following up on <http://lists.gnu.org/archive/html/bug-tar/2007-10/msg00018.html>, "H.Merijn Brand" <[EMAIL PROTECTED]> writes:
>> #if 9223372036854775807LL == 0 > ... > cpp: "xx.c", line 1: warning 2012: Unrepresentable preprocessor number > 9223372036854775807LL Thanks for verifying this. I have started by installing the following fix to Autoconf, and will follow up on gnulib shortly. 2007-10-16 Paul Eggert <[EMAIL PROTECTED]> Check for 64-bit int errors in HP-UX 10.20 preprocessor. Problem reported by H.Merijn Brand in <http://lists.gnu.org/archive/html/bug-tar/2007-10/msg00018.html>. * lib/autoconf/types.m4 (AC_TYPE_LONG_LONG_INT): (AC_TYPE_UNSIGNED_LONG_LONG_INT): Check that preprocessor handles 64-bit ints, too. diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4 index 4d92f9b..f92b29c 100644 --- a/lib/autoconf/types.m4 +++ b/lib/autoconf/types.m4 @@ -1,7 +1,7 @@ # This file is part of Autoconf. -*- Autoconf -*- # Type related macros: existence, sizeof, and structure members. # -# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006 Free Software +# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software # Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -472,7 +472,10 @@ AC_DEFUN([AC_TYPE_LONG_LONG_INT], AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( - [[long long int ll = 9223372036854775807ll; + [[#if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) @@ -522,7 +525,10 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ac_cv_type_unsigned_long_long_int], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( - [[unsigned long long int ull = 18446744073709551615ULL; + [[#if ! (18446744073709551615ULL <= -1u) + error in preprocessor; + #endif + unsigned long long int ull = 18446744073709551615ULL; typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63;]],