* Ralf Wildenhues wrote on Thu, Jul 08, 2010 at 06:38:50AM CEST:
> * Eric Blake wrote on Wed, Jul 07, 2010 at 07:17:30AM CEST:
> > ----- "Ralf Wildenhues" wrote:
> > > Patch here.  Eric, I'm not quite sure why you added the + to the
> > > _AS_TR_SH case.  Can you explain, so I can add testsuite coverage?

> > The AS_TR_SH change was for the separate feature change in 2.66 of allowing
> > AS_ARG_WITH to allow + signs: the shell variable $as_with_c__ should
> > be allowed when you use ./configure --enable-c++ (typing from memory
> > here, so I may have some details off).  To date, we use AS_TR_SH in
> > more places than AS_TR_CPP (namely, in the creation of shell variables
> > to track configure options), explaining the asymmetry between the
> > characters accepted by the two.
> 
> Hmm, but at least the "AC_ARG_ENABLE and AC_ARG_WITH" test doesn't
> produce autoconf warnings for me when I remove the + from the patch,
> and the whole testsuite doesn't show any failures either.
[...]
> In light of this, should the `+' still be kept in _AS_TR_SH?

I've pushed the patch now but dropped the addition of `+' from _AS_TR_SH
on the grounds that we should only add what we expose in the testsuite.
Hope you don't mind.

Cheers,
Ralf

2010-07-10  Eric Blake  <ebl...@redhat.com>
        and Ralf Wildenhues  <ralf.wildenh...@gmx.de>

        Fix regression of AC_CHECK_SIZEOF on pointer types.
        * lib/autoconf/types.m4 (AC_CHECK_SIZEOF): Translate `*' to `p'
        when checking literal-ness of the type, for pointer types.
        * lib/m4sugar/m4sh.m4 (_AS_TR_SH): Also consider `*' as literal.
        (_AS_TR_CPP): Likewise.
        * tests/semantics.at (AC_CHECK_ALIGNOF struct): When checking
        for numeric answer, be sure to not allow variable references.
        (AC_CHECK_SIZEOF struct): Likewise.  Also, test the
        `AC_CHECK_SIZEOF([int *])' example from the manual.
        * doc/autoconf.texi (Generic Compiler Characteristics): Add
        example marker.
        * NEWS: Update.
        Reports by Nishio Futoshi and Roberto Bagnara.

diff --git a/NEWS b/NEWS
index 5053557..6256d40 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,9 @@ GNU Autoconf NEWS - User visible changes.
 ** AC_CONFIG_SUBDIRS with more than one subdirectory at a time works again.
    Regression introduced in 2.66.
 
+** AC_CHECK_SIZEOF of a pointer type works again.  Regression introduced in
+   2.66.
+
 * Major changes in Autoconf 2.66 (2010-07-02) [stable]
   Released by Eric Blake, based on git versions 2.65.*.
 
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 39c2ba6..76b01c9 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -6957,6 +6957,7 @@ Generic Compiler Characteristics
 For example, the call
 
 @example
+...@c If you change this example, adjust tests/semantics.at:AC_F77_DUMMY_MAIN 
usage.
 AC_CHECK_SIZEOF([int *])
 @end example
 
diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
index ee07148..9f482da 100644
--- a/lib/autoconf/types.m4
+++ b/lib/autoconf/types.m4
@@ -763,7 +763,7 @@ Remove this warning and the `AC_CACHE_CHECK' when you 
adjust the code.])
 # AC_CHECK_SIZEOF(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
 # ---------------------------------------------------------------
 AC_DEFUN([AC_CHECK_SIZEOF],
-[AS_LITERAL_IF([$1], [],
+[AS_LITERAL_IF(m4_translit([[$1]], [*], [p]), [],
               [m4_fatal([$0: requires literal arguments])])]dnl
 [# 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
diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
index e1d03d9..6fbc9e1 100644
--- a/lib/m4sugar/m4sh.m4
+++ b/lib/m4sugar/m4sh.m4
@@ -1779,7 +1779,7 @@ m4_defun_init([AS_TR_SH],
 [_$0(m4_expand([$1]))])
 
 m4_define([_AS_TR_SH],
-[_AS_LITERAL_IF([$1], [         ][
+[_AS_LITERAL_IF([$1], [*][      ][
 ])([], [$0_INDIR], [$0_LITERAL])([$1])])
 
 m4_define([_AS_TR_SH_LITERAL],
@@ -1812,7 +1812,7 @@ m4_defun_init([AS_TR_CPP],
 [_$0(m4_expand([$1]))])
 
 m4_define([_AS_TR_CPP],
-[_AS_LITERAL_IF([$1], [         ][
+[_AS_LITERAL_IF([$1], [*][      ][
 ])([], [$0_INDIR], [$0_LITERAL])([$1])])
 
 m4_define([_AS_TR_CPP_LITERAL],
diff --git a/tests/semantics.at b/tests/semantics.at
index b703fd4..48136cd 100644
--- a/tests/semantics.at
+++ b/tests/semantics.at
@@ -350,7 +350,7 @@ AT_CHECK_MACRO_CROSS([AC_CHECK_ALIGNOF struct],
 [[AC_CHECK_ALIGNOF([struct { char c; }])
 AC_CHECK_ALIGNOF([struct nosuchstruct])
 ]],
-[AT_CHECK([[grep "#define ALIGNOF_STRUCT___CHAR_C___ [^0]" config.h]],
+[AT_CHECK([[grep "#define ALIGNOF_STRUCT___CHAR_C___ [1-9]" config.h]],
         0, ignore)
 AT_CHECK([[grep "#define ALIGNOF_STRUCT_NOSUCHSTRUCT 0" config.h]],
         0, ignore)
@@ -379,13 +379,17 @@ AT_CHECK_MACRO_CROSS([AC_CHECK_SIZEOF struct],
 AC_CHECK_SIZEOF([struct x], [], [struct x { char c; int x; };])
 AC_CHECK_SIZEOF([const struct x], [], [struct x { const char *p; int x; };])
 AC_CHECK_SIZEOF([struct nosuchstruct])
+# Taken from autoconf.texi:Generic Compiler Characteristics.
+AC_CHECK_SIZEOF([int *])
 ]],
-[AT_CHECK([[grep "#define SIZEOF_STRUCT_X [^0]" config.h]],
+[AT_CHECK([[grep "#define SIZEOF_STRUCT_X [1-9]" config.h]],
         0, ignore)
-AT_CHECK([[grep "#define SIZEOF_CONST_STRUCT_X [^0]" config.h]],
+AT_CHECK([[grep "#define SIZEOF_CONST_STRUCT_X [1-9]" config.h]],
         0, ignore)
 AT_CHECK([[grep "#define SIZEOF_STRUCT_NOSUCHSTRUCT 0" config.h]],
         0, ignore)
+AT_CHECK([[grep "#define SIZEOF_INT_P [1-9]" config.h]],
+        0, ignore)
 ])
 
 

Reply via email to