summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorAbramo Bagnara <abramo.bagnara@gmail.com>2010-08-10 10:06:15 +0000
committerAbramo Bagnara <abramo.bagnara@gmail.com>2010-08-10 10:06:15 +0000
commit27db23948c65e8737d763c3b1ed4b4427d264665 (patch)
tree922a7a7d80d0059794a8741642bd4423b1741e22 /clang/lib/Sema/SemaExpr.cpp
parent7fbe6cb42930a880afea561e0e882e0e390f5225 (diff)
downloadbcm5719-llvm-27db23948c65e8737d763c3b1ed4b4427d264665.tar.gz
bcm5719-llvm-27db23948c65e8737d763c3b1ed4b4427d264665.zip
Added TypeLocs to VAArgExpr node.
llvm-svn: 110666
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index e5a50656874..d4b05389f49 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -7314,7 +7314,14 @@ Sema::OwningExprResult Sema::ActOnBlockStmtExpr(SourceLocation CaretLoc,
Sema::OwningExprResult Sema::ActOnVAArg(SourceLocation BuiltinLoc,
ExprArg expr, TypeTy *type,
SourceLocation RPLoc) {
- QualType T = GetTypeFromParser(type);
+ TypeSourceInfo *TInfo;
+ QualType T = GetTypeFromParser(type, &TInfo);
+ return BuildVAArgExpr(BuiltinLoc, move(expr), TInfo, RPLoc);
+}
+
+Sema::OwningExprResult Sema::BuildVAArgExpr(SourceLocation BuiltinLoc,
+ ExprArg expr, TypeSourceInfo *TInfo,
+ SourceLocation RPLoc) {
Expr *E = static_cast<Expr*>(expr.get());
Expr *OrigExpr = E;
@@ -7348,9 +7355,8 @@ Sema::OwningExprResult Sema::ActOnVAArg(SourceLocation BuiltinLoc,
// FIXME: Warn if a non-POD type is passed in.
expr.release();
- return Owned(new (Context) VAArgExpr(BuiltinLoc, E,
- T.getNonLValueExprType(Context),
- RPLoc));
+ QualType T = TInfo->getType().getNonLValueExprType(Context);
+ return Owned(new (Context) VAArgExpr(BuiltinLoc, E, TInfo, RPLoc, T));
}
Sema::OwningExprResult Sema::ActOnGNUNullExpr(SourceLocation TokenLoc) {
OpenPOWER on IntegriCloud