https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86599
--- Comment #14 from The Written Word <bugzilla-gcc at thewrittenword dot com> --- (In reply to The Written Word from comment #13) > (In reply to The Written Word from comment #10) > > (In reply to John David Anglin from comment #9) > > > It would help to see the uses of long_double in stdlib.h. > > > > /usr/include/stdlib.h has: > > > > # ifndef _LONG_DOUBLE > > # define _LONG_DOUBLE > > # if !defined(__ia64) || !defined(_PROTOTYPES) || > > defined(_LONG_DOUBLE_STRUCT) > > typedef struct { > > uint32_t word1, word2, word3, word4; > > } long_double; > > extern long_double strtold __((const char * __restrict, char ** > > __restrict)); > > # else /* !__ia64 || !_PROTOTYPES || _LONG_DOUBLE_STRUCT */ > > # ifdef _INCLUDE_HPUX_SOURCE > > typedef long double long_double; > > # endif /* _INCLUDE_HPUX_SOURCE */ > > extern long double strtold __((const char * __restrict, char ** > > __restrict)); > > # endif /* !__ia64 ||!_PROTOTYPES ||_LONG_DOUBLE_STRUCT */ > > #endif /* _LONG_DOUBLE */ > > I think the problem on 11.31 is that the strtold() definition is in the > above. We can't simply remove it all and change long_double->long double in > the remainder of the file to get the function definition changed. Hmm, maybe two new rules, the first to remove everything before "extern long double strtold" and change long_double->long double and the second to remove the two lines after "extern long double strtold". Let me try to come up with something.