Index: lib/Frontend/CompilerInvocation.cpp
===================================================================
--- lib/Frontend/CompilerInvocation.cpp	(revision 167273)
+++ lib/Frontend/CompilerInvocation.cpp	(working copy)
@@ -1171,6 +1171,7 @@
   Opts.MicrosoftMode = Args.hasArg(OPT_fms_compatibility);
   Opts.MSCVersion = Args.getLastArgIntValue(OPT_fmsc_version, 0, Diags);
   Opts.Borland = Args.hasArg(OPT_fborland_extensions);
+  Opts.CilkPlus = Args.hasArg(OPT_fcilkplus);
   Opts.WritableStrings = Args.hasArg(OPT_fwritable_strings);
   Opts.ConstStrings = Args.hasFlag(OPT_fconst_strings, OPT_fno_const_strings,
                                    Opts.ConstStrings);
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp	(revision 167273)
+++ lib/Driver/Tools.cpp	(working copy)
@@ -2603,6 +2603,9 @@
                    options::OPT_fno_borland_extensions, false))
     CmdArgs.push_back("-fborland-extensions");
 
+  if (Args.hasFlag(options::OPT_fcilkplus, options::OPT_fno_cilkplus, false))
+    CmdArgs.push_back("-fcilkplus");
+
   // -fno-delayed-template-parsing is default, except for Windows where MSVC STL
   // needs it.
   if (Args.hasFlag(options::OPT_fdelayed_template_parsing,
Index: test/Driver/clang_f_opts.c
===================================================================
--- test/Driver/clang_f_opts.c	(revision 167273)
+++ test/Driver/clang_f_opts.c	(working copy)
@@ -38,3 +38,12 @@
 
 // RUN: %clang -fms-extensions -fenable-experimental-ms-inline-asm %s -### 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS3 %s
 // CHECK-OPTIONS3: -fenable-experimental-ms-inline-asm
+//
+// RUN: %clang %s -### 2>&1                          | FileCheck -check-prefix=CHECK-CILK1 %s
+// RUN: %clang %s -### 2>&1 -fcilkplus               | FileCheck -check-prefix=CHECK-CILK2 %s
+// RUN: %clang %s -### 2>&1 -fcilkplus -fno-cilkplus | FileCheck -check-prefix=CHECK-CILK3 %s
+// RUN: %clang %s -### 2>&1 -fno-cilkplus -fcilkplus | FileCheck -check-prefix=CHECK-CILK4 %s
+// CHECK-CILK1-NOT: -fcilkplus
+// CHECK-CILK2:     -fcilkplus
+// CHECK-CILK3-NOT: -fcilkplus
+// CHECK-CILK4:     -fcilkplus
Index: include/clang/Basic/LangOptions.def
===================================================================
--- include/clang/Basic/LangOptions.def	(revision 167273)
+++ include/clang/Basic/LangOptions.def	(working copy)
@@ -170,6 +170,8 @@
 
 BENIGN_LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST")
 
+LANGOPT(CilkPlus, 1, 0, "Intel Cilk Plus extensions to C/C++")
+
 #undef LANGOPT
 #undef VALUE_LANGOPT
 #undef BENIGN_LANGOPT
Index: include/clang/Driver/Options.td
===================================================================
--- include/clang/Driver/Options.td	(revision 167273)
+++ include/clang/Driver/Options.td	(working copy)
@@ -587,6 +587,9 @@
 def fobjc : Flag<["-"], "fobjc">, Group<f_Group>;
 def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>;
 def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>;
+def fcilkplus : Flag<["-"], "fcilkplus">, Group<f_Group>, Flags<[CC1Option]>,
+  HelpText<"Enable Cilk Plus extensions">;
+def fno_cilkplus : Flag<["-"], "fno-cilkplus">, Group<f_Group>;
 def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>;
 def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, Group<f_Group>;
 def force__cpusubtype__ALL : Flag<["-"], "force_cpusubtype_ALL">;
