diff options
author | Anders Carlsson <andersca@mac.com> | 2009-03-15 18:34:13 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-03-15 18:34:13 +0000 |
commit | a39058118b6168425b5760895c53bcce2ef5a9ad (patch) | |
tree | acc84ce8d43b941abc8824d0b5f62e916c4656fa /clang/lib/Sema/SemaTemplateInstantiate.cpp | |
parent | 6d4256c3c13b99c12384ff064acbfc725f7760bc (diff) | |
download | bcm5719-llvm-a39058118b6168425b5760895c53bcce2ef5a9ad.tar.gz bcm5719-llvm-a39058118b6168425b5760895c53bcce2ef5a9ad.zip |
Add the ability to clone integer and string literals. Use it when instantiating template expressions.
llvm-svn: 67030
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiate.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiate.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index 9126d2a262e..7b2d24b5bf1 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -591,7 +591,8 @@ namespace { OwningExprResult VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E); // Base case. I'm supposed to ignore this. - Sema::OwningExprResult VisitStmt(Stmt *) { + Sema::OwningExprResult VisitStmt(Stmt *S) { + S->dump(); assert(false && "Cannot instantiate this kind of expression"); return SemaRef.ExprError(); } @@ -600,10 +601,7 @@ namespace { Sema::OwningExprResult TemplateExprInstantiator::VisitIntegerLiteral(IntegerLiteral *E) { - // FIXME: Can't we just re-use the expression node? - return SemaRef.Owned(new (SemaRef.Context) IntegerLiteral(E->getValue(), - E->getType(), - E->getLocation())); + return SemaRef.Clone(E); } Sema::OwningExprResult |