From: Greg Bedwell Date: Tue, 9 Jun 2015 10:24:06 +0000 (+0000) Subject: clang-cl: Ignore the /o option when /P is specified. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=573ae61aff2a37ce0a2f4a7c6edfe035e538fccd;p=clang clang-cl: Ignore the /o option when /P is specified. This matches the cl.exe behavior (tested with 18.00.31101). In order to specify an output file for /P, use the /Fi option instead. Differential Revision: http://reviews.llvm.org/D10313 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239393 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 349c53dd75..8cca1de0fb 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -1692,8 +1692,7 @@ const char *Driver::GetNamedOutputPath(Compilation &C, assert(AtTopLevel && isa(JA)); StringRef BaseName = llvm::sys::path::filename(BaseInput); StringRef NameArg; - if (Arg *A = C.getArgs().getLastArg(options::OPT__SLASH_Fi, - options::OPT__SLASH_o)) + 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); diff --git a/test/Driver/cl-outputs.c b/test/Driver/cl-outputs.c index 9359968bdc..b92c82687a 100644 --- a/test/Driver/cl-outputs.c +++ b/test/Driver/cl-outputs.c @@ -249,22 +249,15 @@ // Fi2: "-E" // Fi2: "-o" "foo.x" +// To match MSVC behavior /o should be ignored for /P output. + // RUN: %clang_cl /P /ofoo -### -- %s 2>&1 | FileCheck -check-prefix=Fio1 %s // Fio1: "-E" -// Fio1: "-o" "foo.i" +// Fio1: "-o" "cl-outputs.i" -// RUN: %clang_cl /P /o foo -### -- %s 2>&1 | FileCheck -check-prefix=Fio2 %s +// RUN: %clang_cl /P /o foo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fio2 %s // Fio2: "-E" -// Fio2: "-o" "foo.i" - -// RUN: %clang_cl /P /ofoo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fio3 %s -// Fio3: "-E" -// Fio3: "-o" "foo.x" - -// RUN: %clang_cl /P /o foo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fio4 %s -// Fio4: "-E" -// Fio4: "-o" "foo.x" - +// Fio2: "-o" "cl-outputs.i" // RUN: %clang_cl /P /obar.x /Fifoo.x -### -- %s 2>&1 | FileCheck -check-prefix=FioRACE1 %s // FioRACE1: "-E" @@ -272,7 +265,7 @@ // RUN: %clang_cl /P /Fifoo.x /obar.x -### -- %s 2>&1 | FileCheck -check-prefix=FioRACE2 %s // FioRACE2: "-E" -// FioRACE2: "-o" "bar.x" +// FioRACE2: "-o" "foo.x" // RUN: %clang_cl /c /GL -### -- %s 2>&1 | FileCheck -check-prefix=LTO-DEFAULT %s // LTO-DEFAULT: "-emit-llvm-bc"{{.*}}"-o" "cl-outputs.obj"