diff options
author | James Y Knight <jyknight@google.com> | 2015-12-24 02:59:37 +0000 |
---|---|---|
committer | James Y Knight <jyknight@google.com> | 2015-12-24 02:59:37 +0000 |
commit | 04ec5bfad8ff4ce74e9a0104069971d5e27862c7 (patch) | |
tree | ddece5dda6b3dbf5be86581a383c5d540d055a21 /clang/lib/AST/ItaniumMangle.cpp | |
parent | 0a1f1fe5a21ea65b0cf08c139ce5c2c9ffc91ba1 (diff) | |
download | bcm5719-llvm-04ec5bfad8ff4ce74e9a0104069971d5e27862c7.tar.gz bcm5719-llvm-04ec5bfad8ff4ce74e9a0104069971d5e27862c7.zip |
[TrailingObjects] Convert ASTTemplateKWAndArgsInfo and ASTTemplateArgumentListInfo.
Doing so required separating them so that the former doesn't inherit
from the latter anymore. Investigating that, it became clear that the
inheritance wasn't actually providing real value in any case.
So also:
- Remove a bunch of redundant functions (getExplicitTemplateArgs,
getOptionalExplicitTemplateArgs) on various Expr subclasses which
depended on the inheritance relationship.
- Switched external callers to use pre-existing accessors that return the
data they're actually interested in (getTemplateArgs,
getNumTemplateArgs, etc).
- Switched internal callers to use pre-existing getTemplateKWAndArgsInfo.
llvm-svn: 256359
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 9da7e9ecd11..8002933b88d 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -395,7 +395,8 @@ private: void mangleCXXCtorType(CXXCtorType T); void mangleCXXDtorType(CXXDtorType T); - void mangleTemplateArgs(const ASTTemplateArgumentListInfo &TemplateArgs); + void mangleTemplateArgs(const TemplateArgumentLoc *TemplateArgs, + unsigned NumTemplateArgs); void mangleTemplateArgs(const TemplateArgument *TemplateArgs, unsigned NumTemplateArgs); void mangleTemplateArgs(const TemplateArgumentList &AL); @@ -3035,7 +3036,7 @@ recurse: ME->isArrow(), ME->getQualifier(), nullptr, ME->getMemberName(), Arity); if (ME->hasExplicitTemplateArgs()) - mangleTemplateArgs(ME->getExplicitTemplateArgs()); + mangleTemplateArgs(ME->getTemplateArgs(), ME->getNumTemplateArgs()); break; } @@ -3047,7 +3048,7 @@ recurse: ME->getFirstQualifierFoundInScope(), ME->getMember(), Arity); if (ME->hasExplicitTemplateArgs()) - mangleTemplateArgs(ME->getExplicitTemplateArgs()); + mangleTemplateArgs(ME->getTemplateArgs(), ME->getNumTemplateArgs()); break; } @@ -3059,7 +3060,7 @@ recurse: // base-unresolved-name, where <template-args> are just tacked // onto the end. if (ULE->hasExplicitTemplateArgs()) - mangleTemplateArgs(ULE->getExplicitTemplateArgs()); + mangleTemplateArgs(ULE->getTemplateArgs(), ULE->getNumTemplateArgs()); break; } @@ -3381,7 +3382,7 @@ recurse: // base-unresolved-name, where <template-args> are just tacked // onto the end. if (DRE->hasExplicitTemplateArgs()) - mangleTemplateArgs(DRE->getExplicitTemplateArgs()); + mangleTemplateArgs(DRE->getTemplateArgs(), DRE->getNumTemplateArgs()); break; } @@ -3649,12 +3650,12 @@ void CXXNameMangler::mangleCXXDtorType(CXXDtorType T) { } } -void CXXNameMangler::mangleTemplateArgs( - const ASTTemplateArgumentListInfo &TemplateArgs) { +void CXXNameMangler::mangleTemplateArgs(const TemplateArgumentLoc *TemplateArgs, + unsigned NumTemplateArgs) { // <template-args> ::= I <template-arg>+ E Out << 'I'; - for (unsigned i = 0, e = TemplateArgs.NumTemplateArgs; i != e; ++i) - mangleTemplateArg(TemplateArgs.getTemplateArgs()[i].getArgument()); + for (unsigned i = 0; i != NumTemplateArgs; ++i) + mangleTemplateArg(TemplateArgs[i].getArgument()); Out << 'E'; } |