aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-06-07 23:26:47 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-06-07 23:26:47 +0000
commit9507f9cc054da3b8148ac294ea5ced79625a897f (patch)
tree8123c0e96ac8c8359321cc2db45ee1506814111c /clang/lib/Frontend/CompilerInvocation.cpp
parentfcb2e6ddea39b8f235fa00fc0b245ce01d76956b (diff)
downloadllvm-9507f9cc054da3b8148ac294ea5ced79625a897f.zip
llvm-9507f9cc054da3b8148ac294ea5ced79625a897f.tar.gz
llvm-9507f9cc054da3b8148ac294ea5ced79625a897f.tar.bz2
Frontend: Add FrontendAction support for handling LLVM IR inputs.
- These inputs follow an abbreviated execution path, but are still worth handling by FrontendAction so they reuse all the other clang -cc1 features. llvm-svn: 105582
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index df2bb28..026a92c 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -287,6 +287,7 @@ static const char *getInputKindName(InputKind Kind) {
case IK_Asm: return "assembler-with-cpp";
case IK_C: return "c";
case IK_CXX: return "c++";
+ case IK_LLVM_IR: return "ir";
case IK_ObjC: return "objective-c";
case IK_ObjCXX: return "objective-c++";
case IK_OpenCL: return "cl";
@@ -1022,6 +1023,7 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
.Case("c++-header", IK_CXX)
.Case("objective-c++-header", IK_ObjCXX)
.Case("ast", IK_AST)
+ .Case("ir", IK_LLVM_IR)
.Default(IK_None);
if (DashX == IK_None)
Diags.Report(diag::err_drv_invalid_value)
@@ -1141,6 +1143,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
switch (IK) {
case IK_None:
case IK_AST:
+ case IK_LLVM_IR:
assert(0 && "Invalid input kind!");
case IK_OpenCL:
LangStd = LangStandard::lang_opencl;
@@ -1401,7 +1404,7 @@ void CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,
ParseDiagnosticArgs(Res.getDiagnosticOpts(), *Args, Diags);
InputKind DashX = ParseFrontendArgs(Res.getFrontendOpts(), *Args, Diags);
ParseHeaderSearchArgs(Res.getHeaderSearchOpts(), *Args);
- if (DashX != IK_AST)
+ if (DashX != IK_AST && DashX != IK_LLVM_IR)
ParseLangArgs(Res.getLangOpts(), *Args, DashX, Diags);
ParsePreprocessorArgs(Res.getPreprocessorOpts(), *Args, Diags);
ParsePreprocessorOutputArgs(Res.getPreprocessorOutputOpts(), *Args);