Recognize when the named return value optimization applies in a
"return" statement and mark the corresponding CXXConstructExpr as
elidable. Teach CodeGen that eliding a temporary is different from
eliding an object construction.

This is just a baby step toward NRVO.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103849 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaObjCProperty.cpp b/lib/Sema/SemaObjCProperty.cpp
index a2aef20..002c39b 100644
--- a/lib/Sema/SemaObjCProperty.cpp
+++ b/lib/Sema/SemaObjCProperty.cpp
@@ -445,8 +445,9 @@
                                       SelfExpr, true, true);
       OwningExprResult Res = 
         PerformCopyInitialization(InitializedEntity::InitializeResult(
-                                  SourceLocation(),
-                                  getterMethod->getResultType()),
+                                    SourceLocation(),
+                                    getterMethod->getResultType(),
+                                    /*NRVO=*/false),
                                   SourceLocation(),
                                   Owned(IvarRefExpr));
       if (!Res.isInvalid()) {