Skip to content
Snippets Groups Projects
Commit a3bb0d84 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Add support for the /Fi argument to clang-cl (PR20036)

Patch by Ehsan Akhgari!

Differential Revision: http://reviews.llvm.org/D4143

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211081 91177308-0d34-0410-b5e6-96231b3b80d8
parent 9e250d5a
No related branches found
No related tags found
No related merge requests found
...@@ -154,6 +154,9 @@ def _SLASH_FI : CLJoinedOrSeparate<"FI">, ...@@ -154,6 +154,9 @@ def _SLASH_FI : CLJoinedOrSeparate<"FI">,
def _SLASH_Fe : CLJoined<"Fe">, def _SLASH_Fe : CLJoined<"Fe">,
HelpText<"Set output executable file or directory (ends in / or \\)">, HelpText<"Set output executable file or directory (ends in / or \\)">,
MetaVarName<"<file or directory>">; MetaVarName<"<file or directory>">;
def _SLASH_Fi : CLCompileJoined<"Fi">,
HelpText<"Set preprocess output file name">,
MetaVarName<"<file>">;
def _SLASH_Fo : CLCompileJoined<"Fo">, def _SLASH_Fo : CLCompileJoined<"Fo">,
HelpText<"Set output object file, or directory (ends in / or \\)">, HelpText<"Set output object file, or directory (ends in / or \\)">,
MetaVarName<"<file or directory>">; MetaVarName<"<file or directory>">;
...@@ -212,7 +215,6 @@ def _SLASH_favor : CLJoined<"favor">; ...@@ -212,7 +215,6 @@ def _SLASH_favor : CLJoined<"favor">;
def _SLASH_FC : CLFlag<"FC">; def _SLASH_FC : CLFlag<"FC">;
def _SLASH_F : CLFlag<"F">; def _SLASH_F : CLFlag<"F">;
def _SLASH_Fd : CLJoined<"Fd">; def _SLASH_Fd : CLJoined<"Fd">;
def _SLASH_Fi : CLJoined<"Fi">;
def _SLASH_Fm : CLJoined<"Fm">; def _SLASH_Fm : CLJoined<"Fm">;
def _SLASH_fp : CLJoined<"fp">; def _SLASH_fp : CLJoined<"fp">;
def _SLASH_Fp : CLJoined<"Fp">; def _SLASH_Fp : CLJoined<"Fp">;
......
...@@ -1615,7 +1615,10 @@ const char *Driver::GetNamedOutputPath(Compilation &C, ...@@ -1615,7 +1615,10 @@ const char *Driver::GetNamedOutputPath(Compilation &C,
if (C.getArgs().hasArg(options::OPT__SLASH_P)) { if (C.getArgs().hasArg(options::OPT__SLASH_P)) {
assert(AtTopLevel && isa<PreprocessJobAction>(JA)); assert(AtTopLevel && isa<PreprocessJobAction>(JA));
StringRef BaseName = llvm::sys::path::filename(BaseInput); StringRef BaseName = llvm::sys::path::filename(BaseInput);
return C.addResultFile(MakeCLOutputFilename(C.getArgs(), "", BaseName, StringRef NameArg;
if (Arg *A = C.getArgs().getLastArg(options::OPT__SLASH_Fi))
NameArg = A->getValue();
return C.addResultFile(MakeCLOutputFilename(C.getArgs(), NameArg, BaseName,
types::TY_PP_C), &JA); types::TY_PP_C), &JA);
} }
......
...@@ -109,3 +109,11 @@ ...@@ -109,3 +109,11 @@
// RUN: %clang_cl /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s // RUN: %clang_cl /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s
// P: "-E" // P: "-E"
// P: "-o" "cl-outputs.i" // P: "-o" "cl-outputs.i"
// RUN: %clang_cl /P /Fifoo -### -- %s 2>&1 | FileCheck -check-prefix=Fi1 %s
// Fi1: "-E"
// Fi1: "-o" "foo.i"
// RUN: %clang_cl /P /Fifoo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fi2 %s
// Fi2: "-E"
// Fi2: "-o" "foo.x"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment