]> granicus.if.org Git - clang/commit
[AST] Move visibility computations into a class; NFC
authorGeorge Burgess IV <george.burgess.iv@gmail.com>
Wed, 9 Aug 2017 04:02:49 +0000 (04:02 +0000)
committerGeorge Burgess IV <george.burgess.iv@gmail.com>
Wed, 9 Aug 2017 04:02:49 +0000 (04:02 +0000)
commite972363a0a6b3d98f622ab83f76acf69774b7130
treed79c0d91ab0be10915dafac94e465458c6b3bfe8
parentfb059232298398dca898d7ca765f74a81d5af995
[AST] Move visibility computations into a class; NFC

This is patch 1 in a 2 patch series that aims to fix PR29160. Its goal
is to cache decl visibility/linkage for the duration of each
visibility+linkage query.

The simplest way I can see to do this is to put the visibility
calculation code that needs to (transitively) access this cache into a
class, which is what this patch does. Actual caching will come in patch
2. (Another way would be to keep the cache in ASTContext + manually
invalidate it or something, but that felt way too subtle to me.)

Caching visibility results across multiple queries seems a bit tricky,
since the user can add visibility attributes ~whenever they want, and
these attributes can apparently have far-reaching effects (e.g. class
visibility extends to its members, ...). Because a cache that's dropped
at the end of each top-level query seems to work nearly as well and
doesn't require any eviction logic, I opted for that design.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@310436 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/Decl.cpp
lib/AST/Linkage.h [new file with mode: 0644]
lib/AST/Type.cpp