diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index ce08560..86a2f29 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -437,6 +437,9 @@
     if (cast<ExplicitCastExpr>(this)->getTypeAsWritten()->isReferenceType())
       return LV_Valid;
     break;
+  case CXXTypeidExprClass:
+    // C++ 5.2.8p1: The result of a typeid expression is an lvalue of ...
+    return LV_Valid;
   case CXXThisExprClass:
     return LV_InvalidExpression;
   default:
diff --git a/lib/AST/ExprCXX.cpp b/lib/AST/ExprCXX.cpp
index 0eead3c..ff97e68 100644
--- a/lib/AST/ExprCXX.cpp
+++ b/lib/AST/ExprCXX.cpp
@@ -24,6 +24,13 @@
 //  Child Iterators for iterating over subexpressions/substatements
 //===----------------------------------------------------------------------===//
 
+// CXXTypeidExpr - has child iterators if the operand is an expression
+Stmt::child_iterator CXXTypeidExpr::child_begin() {
+  return isTypeOperand() ? child_iterator() : (Stmt**)&Operand;
+}
+Stmt::child_iterator CXXTypeidExpr::child_end() {
+  return isTypeOperand() ? child_iterator() : (Stmt**)&Operand+1;
+}
 
 // CXXBoolLiteralExpr
 Stmt::child_iterator CXXBoolLiteralExpr::child_begin() { 
diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp
index 420bdbd..cc861cc 100644
--- a/lib/AST/StmtPrinter.cpp
+++ b/lib/AST/StmtPrinter.cpp
@@ -832,6 +832,16 @@
   VisitCXXNamedCastExpr(Node);
 }
 
+void StmtPrinter::VisitCXXTypeidExpr(CXXTypeidExpr *Node) {
+  OS << "typeid(";
+  if (Node->isTypeOperand()) {
+    OS << Node->getTypeOperand().getAsString();
+  } else {
+    PrintExpr(Node->getExprOperand());
+  }
+  OS << ")";
+}
+
 void StmtPrinter::VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *Node) {
   OS << (Node->getValue() ? "true" : "false");
 }
diff --git a/lib/AST/StmtSerialization.cpp b/lib/AST/StmtSerialization.cpp
index 09aacef..3982881 100644
--- a/lib/AST/StmtSerialization.cpp
+++ b/lib/AST/StmtSerialization.cpp
@@ -216,6 +216,9 @@
     case CXXConstCastExprClass:
       return CXXConstCastExpr::CreateImpl(D, C, SC);
 
+    case CXXTypeidExprClass:
+      return CXXTypeidExpr::CreateImpl(D, C);
+
     case CXXThisExprClass:
       return CXXThisExpr::CreateImpl(D, C);
 
@@ -1346,6 +1349,31 @@
   }
 }
 
+void CXXTypeidExpr::EmitImpl(llvm::Serializer& S) const {
+  S.Emit(getType());
+  S.Emit(isTypeOperand());
+  if (isTypeOperand()) {
+    S.Emit(getTypeOperand());
+  } else {
+    S.EmitOwnedPtr(getExprOperand());
+  }
+  S.Emit(Range);
+}
+
+CXXTypeidExpr*
+CXXTypeidExpr::CreateImpl(llvm::Deserializer& D, ASTContext& C) {
+  QualType Ty = QualType::ReadVal(D);
+  bool isTypeOp = D.ReadBool();
+  void *Operand;
+  if (isTypeOp) {
+    Operand = QualType::ReadVal(D).getAsOpaquePtr();
+  } else {
+    Operand = D.ReadOwnedPtr<Expr>(C);
+  }
+  SourceRange Range = SourceRange::ReadVal(D);
+  return new CXXTypeidExpr(isTypeOp, Operand, Ty, Range);
+}
+
 void CXXThisExpr::EmitImpl(llvm::Serializer& S) const {
   S.Emit(getType());
   S.Emit(Loc);
