Implement Obj-C ivar references to aggregates.

Implement Obj-C lvalue message sends (aggregate returns).

Update several places to emit more precise ErrorUnsupported warnings
  for currently unimplemented Obj-C features (main missing chunks are
  property references, Obj-C exception handling, and the for ... in
  syntax).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55234 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp
index daad062..22370ac 100644
--- a/lib/CodeGen/CGStmt.cpp
+++ b/lib/CodeGen/CGStmt.cpp
@@ -76,6 +76,25 @@
   case Stmt::DefaultStmtClass:  EmitDefaultStmt(cast<DefaultStmt>(*S));   break;
   case Stmt::CaseStmtClass:     EmitCaseStmt(cast<CaseStmt>(*S));         break;
   case Stmt::AsmStmtClass:      EmitAsmStmt(cast<AsmStmt>(*S));           break;
+
+  case Stmt::ObjCAtTryStmtClass:
+    ErrorUnsupported(S, "@try statement");
+    break;
+  case Stmt::ObjCAtCatchStmtClass:
+    ErrorUnsupported(S, "@catch statement");
+    break;
+  case Stmt::ObjCAtFinallyStmtClass:
+    ErrorUnsupported(S, "@finally statement");
+    break;
+  case Stmt::ObjCAtThrowStmtClass:
+    ErrorUnsupported(S, "@throw statement");
+    break;
+  case Stmt::ObjCAtSynchronizedStmtClass:
+    ErrorUnsupported(S, "@synchronized statement");
+    break;
+  case Stmt::ObjCForCollectionStmtClass:
+    ErrorUnsupported(S, "for ... in statement");
+    break;
   }
 }