[cfe-commits] patch: make UsingDirective derive from Decl, not NamedDecl
Nick Lewycky
nicholas at mxc.ca
Mon Oct 8 03:05:22 PDT 2012
Richard Smith wrote:
> On Fri, Oct 5, 2012 at 2:21 AM, Nick Lewycky <nicholas at mxc.ca
> <mailto:nicholas at mxc.ca>> wrote:
>
> This patch changes UsingDirectives to be derived from Decl instead
> of NamedDecl, and consequently removes the CXXUsingDirective
> DeclarationName.
>
> The way using directives are stored with this patch is to have a
> single pointer on each UsingDirectiveDecl that points to the
> previous declaration, and a pointer on TranslationUnit and Namespace
> DeclContexts that point to the last one in that chain. We don't need
> such pointers on other DeclContexts because they either can't hold
> using-directives or the lookup will be handled by Scope.
>
> Please review!
>
>
> This looks good to me. Have you tested the patch with chained PCH (or
> modules)?
No, and in doing so I found all sorts of problems. This updated patch
teaches PCH to actually serialize these things. Namespaces need to
serialize LastUsingDirective, and I'm doing something a little
inefficient with the translation-unit wide ones, marking them all
"external", which is technically inefficient in the PCH format but not
harmful.
I also found a case where we would put a UsingDirectiveDecl inside a
LinkageSpecDecl instead of the NamespaceDecl or TranslationUnitDecl and
changed the code for that too. This means we build a different AST, but
I think there's no difference in behaviour. (Otherwise, we would need to
add a LastUsingDirective field to LinkageSpecDecls as well, and I don't
think we need that.)
Please review!
Nick
-------------- next part --------------
A non-text attachment was scrubbed...
Name: usingdirective-noname-2.patch
Type: text/x-patch
Size: 42095 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121008/cb24cce8/attachment.bin>
More information about the cfe-commits
mailing list