diff options
author | Alp Toker <alp@nuanti.com> | 2014-01-22 07:29:52 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-01-22 07:29:52 +0000 |
commit | a2794f9f363361f87a3538b90b78ff13381d5ce1 (patch) | |
tree | 5cc9768890e4532cd0625ba7ffbe54d2c35d5b35 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | 217c640ee85825f734ffce2ff6305e3e29003262 (diff) | |
download | bcm5719-llvm-a2794f9f363361f87a3538b90b78ff13381d5ce1.tar.gz bcm5719-llvm-a2794f9f363361f87a3538b90b78ff13381d5ce1.zip |
Introduce and use Decl::getAsFunction() to simplify templated function checks
Lift the getFunctionDecl() utility out of the parser into a general
Decl::getAsFunction() and use it to simplify other parts of the implementation.
Reduce isFunctionOrFunctionTemplate() to a simple type check that works the
same was as the other is* functions and move unwrapping of shadowed decls to
callers so it doesn't get run twice.
Shuffle around canSkipFunctionBody() to reduce virtual dispatch on ASTConsumer.
There's no need to query when we already know the body can't be skipped.
llvm-svn: 199794
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 76b9d669d42..3fe6337d502 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -7242,13 +7242,7 @@ bool Sema::CheckUsingShadowDecl(UsingDecl *Using, NamedDecl *Orig, if (FoundEquivalentDecl) return false; - if (Target->isFunctionOrFunctionTemplate()) { - FunctionDecl *FD; - if (isa<FunctionTemplateDecl>(Target)) - FD = cast<FunctionTemplateDecl>(Target)->getTemplatedDecl(); - else - FD = cast<FunctionDecl>(Target); - + if (FunctionDecl *FD = Target->getAsFunction()) { NamedDecl *OldDecl = 0; switch (CheckOverload(0, FD, Previous, OldDecl, /*IsForUsingDecl*/ true)) { case Ovl_Overload: |