Move functionality for handling module maps as inputs from the -emit-module
action to the general FrontendAction infrastructure.

This permits applying -E, -ast-dump, -fsyntax-only, and so on to a module map
compilation. (The -E form is not currently especially useful yet as there's no
good way to take the output and use it to actually build a module.)

In order to support this, -cc1 now accepts -x <lang>-module-map in all cases
where it accepts -x <lang> for a language we can parse (not ir/ast). And for
uniformity, we also accept -x <lang>-header for all such languages (we used
to reject for cuda and renderscript), and -x <lang>-cpp-output for all such
languages (we used to reject for c, cl, and renderscript).

(None of these new alternatives are accepted by the driver yet, so no
user-visible changes.)

llvm-svn: 301610
diff --git a/clang/lib/Frontend/FrontendOptions.cpp b/clang/lib/Frontend/FrontendOptions.cpp
index eec2410..dca4345 100644
--- a/clang/lib/Frontend/FrontendOptions.cpp
+++ b/clang/lib/Frontend/FrontendOptions.cpp
@@ -16,17 +16,17 @@
     .Cases("ast", "pcm", InputKind(InputKind::Unknown, InputKind::Precompiled))
     .Case("c", InputKind::C)
     .Cases("S", "s", InputKind::Asm)
-    .Case("i", InputKind(InputKind::C, true))
-    .Case("ii", InputKind(InputKind::CXX, true))
-    .Case("cui", InputKind(InputKind::CUDA, true))
+    .Case("i", InputKind(InputKind::C).getPreprocessed())
+    .Case("ii", InputKind(InputKind::CXX).getPreprocessed())
+    .Case("cui", InputKind(InputKind::CUDA).getPreprocessed())
     .Case("m", InputKind::ObjC)
-    .Case("mi", InputKind(InputKind::ObjC, true))
+    .Case("mi", InputKind(InputKind::ObjC).getPreprocessed())
     .Cases("mm", "M", InputKind::ObjCXX)
-    .Case("mii", InputKind(InputKind::ObjCXX, true))
+    .Case("mii", InputKind(InputKind::ObjCXX).getPreprocessed())
     .Cases("C", "cc", "cp", InputKind::CXX)
     .Cases("cpp", "CPP", "c++", "cxx", "hpp", InputKind::CXX)
     .Case("cppm", InputKind::CXX)
-    .Case("iim", InputKind(InputKind::CXX, true))
+    .Case("iim", InputKind(InputKind::CXX).getPreprocessed())
     .Case("cl", InputKind::OpenCL)
     .Case("cu", InputKind::CUDA)
     .Cases("ll", "bc", InputKind::LLVM_IR)