diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-05-15 06:01:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-05-15 06:01:05 +0000 |
commit | 6fd1b1802f5e748d2e8dfabeb03b62c0d65340ab (patch) | |
tree | a4e9b7b4cdad61d7785a9661b734f8311a9539c3 /clang/lib/Frontend/PCHWriterStmt.cpp | |
parent | 6625c7028e5e8c301fdd6e9153c403970f1b8075 (diff) | |
download | bcm5719-llvm-6fd1b1802f5e748d2e8dfabeb03b62c0d65340ab.tar.gz bcm5719-llvm-6fd1b1802f5e748d2e8dfabeb03b62c0d65340ab.zip |
Implement semantic analysis and an AST representation for the named
return value optimization. Sema marks return statements with their
NRVO candidates (which may or may not end up using the NRVO), then, at
the end of a function body, computes and marks those variables that
can be allocated into the return slot.
I've checked this locally with some debugging statements (not
committed), but there won't be any tests until CodeGen comes along.
llvm-svn: 103865
Diffstat (limited to 'clang/lib/Frontend/PCHWriterStmt.cpp')
-rw-r--r-- | clang/lib/Frontend/PCHWriterStmt.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHWriterStmt.cpp b/clang/lib/Frontend/PCHWriterStmt.cpp index a7f73a17fa6..a9ee43527ce 100644 --- a/clang/lib/Frontend/PCHWriterStmt.cpp +++ b/clang/lib/Frontend/PCHWriterStmt.cpp @@ -275,6 +275,7 @@ void PCHStmtWriter::VisitReturnStmt(ReturnStmt *S) { VisitStmt(S); Writer.WriteSubStmt(S->getRetValue()); Writer.AddSourceLocation(S->getReturnLoc(), Record); + Writer.AddDeclRef(S->getNRVOCandidate(), Record); Code = pch::STMT_RETURN; } |