[PATCH] [clang] Optimized ASTNodeKind::isBaseOf
Alexander Kornienko
alexfh at google.com
Thu Oct 2 10:37:35 PDT 2014
One important thing this patch does, it splits isBaseOf with and without distance to avoid runtime selection.
As for the caching, I believe it doesn't matter much, as on my test (lib/Sema/SemaOverload.cpp) most of the calls were asking one of a small number of table cells. Here's some data:
* total calls: ~39M
* total number of pairs asked: 1646
* 103 mostly asked cells cover 80% of all calls
* 219 mostly asked cells cover 90% of all calls
* 50 mostly asked rows (< 6kB) cover 97% of all calls
The other solutions you've proposed are also interesting (especially #4 which is the most elegant, but requires some care in arranging the primes), but this one is the most straightforward, IMO.
http://reviews.llvm.org/D5577
More information about the cfe-commits
mailing list