Add support for taking LLVM IR as input (#430)

Add a -x option to select the input type, defaulting to OpenCL C.

Signed-off-by: Kévin Petit <kpet@free.fr>

diff --git a/lib/Compiler.cpp b/lib/Compiler.cpp
index 9963427..ad28085 100644
--- a/lib/Compiler.cpp
+++ b/lib/Compiler.cpp
@@ -120,6 +120,12 @@
     InputFilename(llvm::cl::Positional, llvm::cl::desc("<input .cl file>"),
                   llvm::cl::init("-"));
 
+static llvm::cl::opt<clang::Language> InputLanguage(
+    "x", llvm::cl::desc("Select input type"),
+    llvm::cl::init(clang::Language::OpenCL),
+    llvm::cl::values(clEnumValN(clang::Language::OpenCL, "cl", "OpenCL source"),
+                     clEnumValN(clang::Language::LLVM_IR, "ir", "LLVM IR")));
+
 static llvm::cl::opt<std::string>
     OutputFilename("o", llvm::cl::desc("Override output filename"),
                    llvm::cl::value_desc("filename"));
@@ -782,12 +788,19 @@
   // If we are reading our input file from stdin.
   if ("-" == InputFilename) {
     // We need to overwrite the file name we use.
-    overiddenInputFilename = "stdin.cl";
+    switch (InputLanguage) {
+    case clang::Language::OpenCL:
+      overiddenInputFilename = "stdin.cl";
+      break;
+    case clang::Language::LLVM_IR:
+      overiddenInputFilename = "stdin.ll";
+      break;
+    }
   }
 
   clang::CompilerInstance instance;
-  clang::FrontendInputFile kernelFile(
-      overiddenInputFilename, clang::InputKind(clang::Language::OpenCL));
+  clang::FrontendInputFile kernelFile(overiddenInputFilename,
+                                      clang::InputKind(InputLanguage));
   std::string log;
   llvm::raw_string_ostream diagnosticsStream(log);
   if (auto error = SetCompilerInstanceOptions(