+2010-07-10 Eric Blake <eblake@redhat.com>
+ and Ralf Wildenhues <Ralf.Wildenhues@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.
+
2010-07-08 Eric Blake <eblake@redhat.com>
and Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
** 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.*.
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
# 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
[_$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],
[_$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],
[[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)
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)
])