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(