Author: dgregor
Date: Wed Jun 22 10:05:02 2011
New Revision: 133618

URL: http://llvm.org/viewvc/llvm-project?rev=133618&view=rev
Log:
Give MaterializeTemporaryExpr the exact type of the lvalue it binds
to, including cv-qualifications.

Modified:
    cfe/trunk/include/clang/AST/ExprCXX.h
    cfe/trunk/lib/Sema/SemaInit.cpp

Modified: cfe/trunk/include/clang/AST/ExprCXX.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ExprCXX.h?rev=133618&r1=133617&r2=133618&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/ExprCXX.h (original)
+++ cfe/trunk/include/clang/AST/ExprCXX.h Wed Jun 22 10:05:02 2011
@@ -3013,8 +3013,9 @@
   friend class ASTStmtWriter;
   
 public:
-  MaterializeTemporaryExpr(Expr *Temporary, bool BoundToLvalueReference)
-    : Expr(MaterializeTemporaryExprClass, Temporary->getType(),
+  MaterializeTemporaryExpr(QualType T, Expr *Temporary, 
+                           bool BoundToLvalueReference)
+    : Expr(MaterializeTemporaryExprClass, T,
            BoundToLvalueReference? VK_LValue : VK_XValue, OK_Ordinary,
            Temporary->isTypeDependent(), Temporary->isValueDependent(),
            Temporary->containsUnexpandedParameterPack()),

Modified: cfe/trunk/lib/Sema/SemaInit.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=133618&r1=133617&r2=133618&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)
+++ cfe/trunk/lib/Sema/SemaInit.cpp Wed Jun 22 10:05:02 2011
@@ -4080,7 +4080,9 @@
         return ExprError();
 
       // Materialize the temporary into memory.
-      CurInit = new (S.Context) MaterializeTemporaryExpr(CurInit.get(),
+      CurInit = new (S.Context) MaterializeTemporaryExpr(
+                                         
Entity.getType().getNonReferenceType(),
+                                                         CurInit.get(),
                                      
Entity.getType()->isLValueReferenceType());
       break;
 


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to