Without coordination, the C++ indexer will generate a lot of globally redundant output. (It should not generate much locally redundant output). We have two mechanisms for dealing with this:
- static claiming, a closed and reproducible method in which headers are assigned to compilation units
- hash caching, an open and non-reproducible method which works by hashing blocks of indexer output
We're looking at developing another non-reproducible dynamic method to deduplicate based on the keys we use for static claiming. We may also consider loosening the guarantees on the resulting database (such that some data that would have been there with the feature turned off would not be reproduced with it being turned on).