http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46455
--- Comment #22 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-11-16 12:32:36 UTC --- ... and when using gthr-mipssde.h / gthr-posix95.h / gthr-solaris.h: static inline int __recursive_mutex_destroy(__gthread_recursive_mutex_t* __rmutex) { return ___gthread_mutex_destroy(__mutex->actual); } Adding the right preprocessor checks to the library will be messy, because configure might have made gthr-default.h a symlink to one of the headers above and we don't have a macro to test. The right place for the destroy function is in the gthr headers where __gthread_recursive_mutex_t is defined. Hmm, I wonder if we could use sfinae, there are three cases: - recursive mutex is the same type as the non-recursive mutex, or - it has an "actual" member, or - it has a "sema" member. I'll try that this evening.