Status of the PPH implementation
Diego Novillo
dnovillo@google.com
Fri May 25 20:26:00 GMT 2012
On 12-05-25 14:54 , Joseph S. Myers wrote:
> On Fri, 25 May 2012, Diego Novillo wrote:
>
>> On 12-05-25 12:25 , Jason Merrill wrote:
>>> On 05/25/2012 11:37 AM, Joseph S. Myers wrote:
>>>> and it should be possible to eliminate the __need_* special cases
>>>> for some system headers by having more, smaller headers set up to define
>>>> individual types.
>>>
>>> I was thinking the same thing.
>>
>> Yes. Increased modularity in system headers is a must. That is likely going
>> to be one of the hard things to fix. I'd rather have that discussion in the
>> standards forums, as I suspect some of the same will be discussed for the
>> module proposal.
>
> If feature test macros (or, similarly, assert.h depending on NDEBUG) are
> the problem then that would need to be addressed for standards - but if
> it's __need_* conditionals then those are an implementation detail for GCC
> and glibc and any changes would need sorting out in the communities for
> those toolchain components. (I don't know how good the libstdc++ headers
> are at modularity, so I'm thinking about C headers, both those provided by
> GCC and those provided by glibc.) Or is the issue with system headers
> something else entirely?
There were several problems:
- Lack of double inclusion guards.
- Lack of modularity. For instance, accepting parameters to change the
meaning of the file, stddef.h is the canonical example.
- Mutually recursive inclusion. Some files seem to work in tandem, they
include each other conditionally just in case the other has not been
included yet.
- Some files refuse to be compiled in isolation because they are always
included by a wrapper file (e.g. the bits/* files).
- Files that use #include_next (they cannot be compiled in isolation).
- Some files give syntax errors when compiled in isolation because they
are missing symbols. for example, ext/algorithm needs __gnu_cxx::is_sorted.
Those are the ones I could gather on a quick grep through my build logs.
Lawrence may remember more.
Diego.
More information about the Gcc
mailing list