Hi Folks

this has more than 2 weeks without comment,
(it is darwin-local)
thanks
Iain

> On 29 Mar 2025, at 15:23, Iain Sandoe <iains....@gmail.com> wrote:
> 
> C++ modules are not really usable on latest Darwin without resolving this,
> thanks
> Iain
> 
>> On 23 Mar 2025, at 12:29, Iain Sandoe <iains....@gmail.com> wrote:
>> 
>> From: Iain Sandoe <iainsandoe@mini-05-seq.local>
>> 
>> Tested on x86_64/aarch64 Darwin and x86_64-linux,
>> OK for trunk?
>> backports to branches supporting modules?
>> thanks
>> Iain
>> 
>> --- 8< ---
>> 
>> Recent changes to the OS SDKs have altered the way in which include guards
>> are used for a number of headers when C++ modules are enabled.  Instead of
>> placing the guards in the included header, they are being placed in the
>> including header.  This breaks the assumptions in the current GCC stddef.h
>> specifically, that the presence of __PTRDIFF_T and __SIZE_T means that the
>> relevant defs are already made.  However in the case of the module-enabled
>> C++ with these SDKs, that is no longer true.
>> 
>> stddef.h has a large body of special-cases already, but it seems that the
>> only viable solution here is to add a new one specifically for __APPLE__
>> and modular code.
>> 
>> This fixes around 280 new fails in the modules test-suite; it is needed on
>> all open branches that support modules.
>> 
>>      PR target/116827
>> 
>> gcc/ChangeLog:
>> 
>>      * ginclude/stddef.h: Undefine __PTRDIFF_T and __SIZE_T for module-
>>      enabled c++ on Darwin/macOS platforms.
>> 
>> Signed-off-by: Iain Sandoe <i...@sandoe.co.uk>
>> ---
>> gcc/ginclude/stddef.h | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>> 
>> diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
>> index 0d53103ce20..bf9c6e609dc 100644
>> --- a/gcc/ginclude/stddef.h
>> +++ b/gcc/ginclude/stddef.h
>> @@ -89,6 +89,17 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  
>> If not, see
>> #undef _PTRDIFF_T_
>> #endif
>> 
>> +#if defined (__APPLE__)
>> +# if defined(__has_feature) && __has_feature(modules)
>> +#  if defined (__need_ptrdiff_t)
>> +#   undef __PTRDIFF_T
>> +#  endif
>> +#  if defined (__need_size_t)
>> +#   undef __SIZE_T
>> +#  endif
>> +# endif
>> +#endif
>> +
>> /* On VxWorks, <type/vxTypesBase.h> may have defined macros like
>>   _TYPE_size_t which will typedef size_t.  fixincludes patched the
>>   vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
>> -- 
>> 2.39.2 (Apple Git-143)
>> 
> 

Reply via email to