diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 24d05c1b27be1dc5b6c6e4eccf5872260a880fa3..2ad98ea632ed139f17577483ccee1cbe52df86d7 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1184,7 +1184,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
     CmdArgs.push_back("-fno-access-control");
 
   // -fexceptions=0 is default.
-  if (needsExceptions(Args, InputType, getToolChain().getTriple()))
+  if (!KernelOrKext &&
+      needsExceptions(Args, InputType, getToolChain().getTriple()))
     CmdArgs.push_back("-fexceptions");
 
   if (getToolChain().UseSjLjExceptions())