One more thing I found out while reviewing:<div><br></div><div><div>+++ b/clang/lib/Sema/SemaExpr.cpp</div><div>@@ -2544,6 +2544,9 @@ Sema::BuildDeclarationNameExpr(const CXXScopeSpec &SS,</div><div>     case Decl::CXXConstructor:</div>

<div>       valueKind = VK_RValue;</div>
<div>       break;</div><div>+        </div><div>+    case Decl::MSProperty:</div><div>+      valueKind = VK_LValue;</div><div>     }</div><div><br></div><div>This is missing a break.</div><div><br></div><div>I added the missing serialization and deserialization code:</div>


<div><br></div><div><div>+void ASTStmtWriter::VisitMSPropertyRefExpr(MSPropertyRefExpr *E) {</div><div>+  VisitExpr(E);</div><div>+  Writer.AddSourceRange(E->getSourceRange(), Record);</div><div>+  Writer.AddSourceLocation(E->getMemberLoc(), Record);</div>


<div>+  Writer.AddStmt(E->getBaseExpr());</div><div>+  Writer.AddDeclRef(E->getMSPropertyDecl(), Record);</div><div>+  Record.push_back(E->isArrow());</div><div>+  Code = serialization::EXPR_CXX_MS_PROPERTY_REF_EXPR;</div>


<div>+}</div><div>+</div></div><div><br></div><div><div>+void ASTStmtReader::VisitMSPropertyRefExpr(MSPropertyRefExpr *E) {</div><div>+  VisitExpr(E);</div><div>+  E->setSourceRange(ReadSourceRange(Record, Idx));</div>

<div>+  E->MemberLoc = ReadSourceLocation(Record, Idx);</div><div>+  E->BaseExpr = Reader.ReadSubExpr();</div><div>+  E->Decl = ReadDeclAs<MSPropertyDecl>(Record, Idx);</div><div>+  E->IsArrow = Record[Idx++];</div>

<div>+}</div><div>+</div></div><div><br></div><div><div>       S = new (Context) CXXUuidofExpr(Empty, true);</div><div>       break;</div><div>+    case EXPR_CXX_MS_PROPERTY_REF_EXPR:</div><div>+      S = new (Context) MSPropertyRefExpr(Empty);</div>

<div>+      break;</div></div><br><div class="gmail_quote"><div class="gmail_quote">+++ b/include/clang/AST/ExprCXX.h</div><div><br></div></div><div class="gmail_quote"><div class="gmail_quote">+class MSPropertyRefExpr : public Expr {</div>

<div class="gmail_quote">(...)</div><div class="gmail_quote">+</div><div class="gmail_quote">+  friend class ASTStmtReader;</div><div class="gmail_quote">+</div><div class="gmail_quote">+public:</div><div class="gmail_quote">

(...)</div><div class="gmail_quote">+</div><div class="gmail_quote">+  MSPropertyRefExpr(EmptyShell Empty) : Expr(MSPropertyRefExprClass, Empty) {}</div></div><div><br></div><div><br></div>-- <br>João Matos
</div>