================
@@ -94,6 +106,9 @@ class MemIndex : public SymbolIndex {
   static_assert(sizeof(RelationKind) == sizeof(uint8_t),
                 "RelationKind should be of same size as a uint8_t");
   llvm::DenseMap<std::pair<SymbolID, uint8_t>, std::vector<SymbolID>> 
Relations;
+  // Reverse relations, currently only for OverridenBy
+  llvm::DenseMap<std::pair<SymbolID, uint8_t>, std::vector<SymbolID>>
----------------
timon-ul wrote:

I am a bit torn, I absolutely get that saving some memory here is a good idea, 
but also it makes me question a bit that all the changes have been kept 
generic. What I mean is:

- `reverseRelations` is a generic name, even though it will be very specific 
for `OverriddenBy`
- `reverseRelations` gets a RelationsRequest, but again, we only accept 
`OverriddenBy` anyway
- easily extendible

Now of course there is a difference, these things are exposed to the outside 
while the map itself is an implementation detail, but I think the idea of 
removing the RelationKind also kinda puts in question why we keep 
`reverseRelations` generic. We could instead also just create a map called 
something like `OverriddenByMap`, call the function something related too and 
be very specific what we are doing here. It kinda comes down to if we expect 
this to be expanded in the future or not.

Now let me finish this by saying I am not against this change, I just have some 
mixed feelings and am myself unsure, these are just some thoughts that popped 
into my mind.

https://github.com/llvm/llvm-project/pull/163024
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to