ckandeler wrote:

> 2. A more general musing: it would be nice to have a mechanism for storing 
> additional information for a subset of symbols, without incurring the 
> overhead of increasing the representation size of **every** symbol. If we had 
> such a mechanism, we could cut down the overhead of this patch further, by 
> e.g. only storing the decl/def range for functions rather than all symbol 
> types.
>    
>    * Perhaps this could take the form of a pointer field in `Symbol` which 
> for a subset of symbols points to additional data stored in the symbol slab? 
> That would, in and of itself, not reduce the memory footprint compared to 
> (1), since the pointer would take up 8 bytes, the same as a decl/def range 
> stored inline. However, we've had use cases like this come up before. (An 
> example that comes to mind is storing all definitions for symbols with 
> multiple definitions; see [this 
> comment](https://github.com/clangd/clangd/issues/1673#issuecomment-1594211998)
>  and the next few.) So maybe it would be forward-looking to pay the cost for 
> that pointer once, and unlock the ability to store various extra data in the 
> future?
I notice that there are four fields in the Symbol struct that are only relevant 
for symbols indexed for completion. Presumably these would be candidates for 
such an extension block?



https://github.com/llvm/llvm-project/pull/118102
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to