diff --git a/include/clang/Driver/Types.def b/include/clang/Driver/Types.def
index e01a04c67ae1f8228fdd7919a9e1b439cd9e623e..d66fe9221a3013b7efe306aa9574b6a5677a0d87 100644
--- a/include/clang/Driver/Types.def
+++ b/include/clang/Driver/Types.def
@@ -41,6 +41,7 @@
 // C family source language (with and without preprocessing).
 TYPE("cpp-output",               PP_C,         INVALID,         "i",     "u")
 TYPE("c",                        C,            PP_C,            0,       "u")
+TYPE("cl",                       CL,           PP_C,            0,       "u")
 TYPE("objective-c-cpp-output",   PP_ObjC,      INVALID,         "mi",    "u")
 TYPE("objective-c",              ObjC,         PP_ObjC,         0,       "u")
 TYPE("c++-cpp-output",           PP_CXX,       INVALID,         "ii",    "u")
diff --git a/lib/Driver/Types.cpp b/lib/Driver/Types.cpp
index 433af03237cd8da52db6ec9020f2843af6816c68..60d86a62a3a0272b986e09546fc552a827854428 100644
--- a/lib/Driver/Types.cpp
+++ b/lib/Driver/Types.cpp
@@ -77,6 +77,7 @@ bool types::isAcceptedByClang(ID Id) {
 
   case TY_Asm:
   case TY_C: case TY_PP_C:
+  case TY_CL:
   case TY_ObjC: case TY_PP_ObjC:
   case TY_CXX: case TY_PP_CXX:
   case TY_ObjCXX: case TY_PP_ObjCXX:
@@ -133,6 +134,7 @@ types::ID types::lookupTypeForExtension(const char *Ext) {
            .Case("mm", TY_ObjCXX)
            .Case("cc", TY_CXX)
            .Case("CC", TY_CXX)
+           .Case("cl", TY_CL)
            .Case("cp", TY_CXX)
            .Case("hh", TY_CXXHeader)
            .Case("hpp", TY_CXXHeader)