diff --git a/include/clang/Basic/OpenMPKinds.def b/include/clang/Basic/OpenMPKinds.def
index d56210d4ae403f0d78787f5a0bc8e115f214a83a..6d869604c268918c74a9cfcd3d375c99c08deb48 100644
--- a/include/clang/Basic/OpenMPKinds.def
+++ b/include/clang/Basic/OpenMPKinds.def
@@ -343,6 +343,7 @@ OPENMP_DEFAULTMAP_MODIFIER(tofrom)
 OPENMP_AFFINITY_KIND(data)
 OPENMP_AFFINITY_KIND(node)
 OPENMP_AFFINITY_KIND(thread)
+OPENMP_AFFINITY_KIND(task)
 
 // Static attributes for 'depend' clause.
 OPENMP_DEPEND_KIND(in)
diff --git a/lib/CodeGen/CGOpenMPRuntime.cpp b/lib/CodeGen/CGOpenMPRuntime.cpp
index 88b9f30ebc503a7f9084107ed91ecbbb60060254..c6f0e85e4cb291c649f57efc50a462f97f0b51ef 100644
--- a/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -2704,7 +2704,8 @@ void CGOpenMPRuntime::emitTaskAffinityClause(CodeGenFunction &CGF,
     AffinityNone = 0,
     AffinityData,
     AffinityNode,
-    AffinityThread
+    AffinityThread,
+    AffinityTask
   } RuntimeAffinity;
   switch (AffKind) {
   case OMPC_AFFINITY_node:
@@ -2716,6 +2717,9 @@ void CGOpenMPRuntime::emitTaskAffinityClause(CodeGenFunction &CGF,
   case OMPC_AFFINITY_data:
     RuntimeAffinity = AffinityData;
     break;
+  case OMPC_AFFINITY_task:
+    RuntimeAffinity = AffinityTask;
+    break;
   case OMPC_AFFINITY_unknown:
     llvm_unreachable("Unsupported affinity value.");
   }