On 02/27/2015 06:55 PM, Jack Howarth wrote: > On gdb-7.9, we are seeing a large number of warnings from > -Wincompatible-pointer-types with clang... > > ./guile/guile.c:474:25: warning: incompatible pointer types > initializing 'scm_t_subr' (aka 'void (*)()') with an expression of > type 'SCM (SCM, SCM)' > [-Wincompatible-pointer-types] > { "execute", 1, 0, 1, gdbscm_execute_gdb_command, > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > ./guile/guile.c:487:32: warning: incompatible pointer types > initializing 'scm_t_subr' (aka 'void (*)()') with an expression of > type 'SCM (void)' > [-Wincompatible-pointer-types] > { "data-directory", 0, 0, 0, gdbscm_data_directory, > ^~~~~~~~~~~~~~~~~~~~~ > ./guile/guile.c:491:38: warning: incompatible pointer types > initializing 'scm_t_subr' (aka 'void (*)()') with an expression of > type 'SCM (void)' > [-Wincompatible-pointer-types] > { "guile-data-directory", 0, 0, 0, gdbscm_guile_data_directory, > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > > These all are associated with the guile/scm-*.c files. > Jack > Curious. I see that on C++ mode too. I've attached my current patch to address this. I think you'll just need to do something like this on top: #else /* In C, just do an implicit conversion. */ -#define as_a_scm_t_subr(func) func +#define as_a_scm_t_subr(func) (scm_t_subr) func #endif Did guile change the type of scm_t_subr again? Here it says 'void (*)()' : > initializing 'scm_t_subr' (aka 'void (*)()') with an expression of > type 'SCM (SCM, SCM)' On my copy (guile 2.0, Fedora 20), in /usr/include/guile/2.0/libguile/__scm.h, I see: #ifdef BUILDING_LIBGUILE typedef SCM (* scm_t_subr) (); #else typedef void *scm_t_subr; #endif Thanks, Pedro Alves