Template instantiation for IndirectGotoStmt. Now my life is complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71917 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp
index b877da2..647deb1 100644
--- a/lib/Sema/SemaStmt.cpp
+++ b/lib/Sema/SemaStmt.cpp
@@ -706,13 +706,15 @@
                             ExprArg DestExp) {
   // Convert operand to void*
   Expr* E = DestExp.takeAs<Expr>();
-  QualType ETy = E->getType();
-  AssignConvertType ConvTy =
-        CheckSingleAssignmentConstraints(Context.VoidPtrTy, E);
-  if (DiagnoseAssignmentResult(ConvTy, StarLoc, Context.VoidPtrTy, ETy,
-                               E, "passing"))
-    return StmtError();
-  return Owned(new (Context) IndirectGotoStmt(GotoLoc, E));
+  if (!E->isTypeDependent()) {
+    QualType ETy = E->getType();
+    AssignConvertType ConvTy =
+      CheckSingleAssignmentConstraints(Context.VoidPtrTy, E);
+    if (DiagnoseAssignmentResult(ConvTy, StarLoc, Context.VoidPtrTy, ETy,
+                                 E, "passing"))
+      return StmtError();
+  }
+  return Owned(new (Context) IndirectGotoStmt(GotoLoc, StarLoc, E));
 }
 
 Action::OwningStmtResult