summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2013-08-16 08:29:13 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2013-08-16 08:29:13 +0000
commitf0a84f200aa656db50da5558d3b140ad3649bb5a (patch)
tree669ef71c4e731fa598bf620e69a33e414688cf65 /clang/lib
parent0803598b9bf569217dc49ce60739b9e56f9f295d (diff)
downloadbcm5719-llvm-f0a84f200aa656db50da5558d3b140ad3649bb5a.tar.gz
bcm5719-llvm-f0a84f200aa656db50da5558d3b140ad3649bb5a.zip
Parse: Do not 'HandleTopLevelDecl' on templated functions.
Summary: HandleTopLevelDecl on a templated function leads us to try and mangle it. Reviewers: rsmith Reviewed By: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1412 llvm-svn: 188536
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/MicrosoftMangle.cpp10
-rw-r--r--clang/lib/Parse/ParseTemplate.cpp6
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp2
3 files changed, 5 insertions, 13 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp
index 714f3fc5677..122816cb0c2 100644
--- a/clang/lib/AST/MicrosoftMangle.cpp
+++ b/clang/lib/AST/MicrosoftMangle.cpp
@@ -1721,13 +1721,9 @@ void MicrosoftCXXNameMangler::mangleType(const BlockPointerType *T,
mangleFunctionType(pointee->castAs<FunctionProtoType>(), NULL, false, false);
}
-void MicrosoftCXXNameMangler::mangleType(const InjectedClassNameType *T,
- SourceRange Range) {
- DiagnosticsEngine &Diags = Context.getDiags();
- unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error,
- "cannot mangle this injected class name type yet");
- Diags.Report(Range.getBegin(), DiagID)
- << Range;
+void MicrosoftCXXNameMangler::mangleType(const InjectedClassNameType *,
+ SourceRange) {
+ llvm_unreachable("Cannot mangle injected class name type.");
}
void MicrosoftCXXNameMangler::mangleType(const TemplateSpecializationType *T,
diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp
index 5ab5cec0289..b050a06092a 100644
--- a/clang/lib/Parse/ParseTemplate.cpp
+++ b/clang/lib/Parse/ParseTemplate.cpp
@@ -1249,7 +1249,7 @@ void Parser::LateTemplateParserCallback(void *P, LateParsedTemplate &LPT) {
/// \brief Late parse a C++ function template in Microsoft mode.
void Parser::ParseLateTemplatedFuncDef(LateParsedTemplate &LPT) {
- if(!LPT.D)
+ if (!LPT.D)
return;
// Get the FunctionDecl.
@@ -1352,10 +1352,6 @@ void Parser::ParseLateTemplatedFuncDef(LateParsedTemplate &LPT) {
TemplateParamScopeStack.rbegin();
for (; I != TemplateParamScopeStack.rend(); ++I)
delete *I;
-
- DeclGroupPtrTy grp = Actions.ConvertDeclToDeclGroup(LPT.D);
- if (grp)
- Actions.getASTConsumer().HandleTopLevelDecl(grp.get());
}
/// \brief Lex a delayed template function for late parsing.
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 3cb20c79af5..b53c197d526 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -3115,7 +3115,7 @@ void Sema::InstantiateFunctionDefinition(SourceLocation PointOfInstantiation,
return;
}
- // Call the LateTemplateParser callback if there a need to late parse
+ // Call the LateTemplateParser callback if there is a need to late parse
// a templated function definition.
if (!Pattern && PatternDecl->isLateTemplateParsed() &&
LateTemplateParser) {
OpenPOWER on IntegriCloud