forked from OSchip/llvm-project
clang-cl: ignore /showIncludes when combined with /E (PR20336)
Both /showIncludes and /E write to stdout. Allowing both results in interleaved output and an error when double-closing the file descriptor, intended to catch issues like this. llvm-svn: 213589
This commit is contained in:
parent
9d20e42765
commit
8858a03e2f
|
@ -4640,8 +4640,11 @@ void Clang::AddClangCLArgs(const ArgList &Args, ArgStringList &CmdArgs) const {
|
|||
// implemented in clang.
|
||||
CmdArgs.push_back("--dependent-lib=oldnames");
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_show_includes))
|
||||
A->render(Args, CmdArgs);
|
||||
// Both /showIncludes and /E (and /EP) write to stdout. Allowing both
|
||||
// would produce interleaved output, so ignore /showIncludes in such cases.
|
||||
if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_EP))
|
||||
if (Arg *A = Args.getLastArg(options::OPT_show_includes))
|
||||
A->render(Args, CmdArgs);
|
||||
|
||||
// This controls whether or not we emit RTTI data for polymorphic types.
|
||||
if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR,
|
||||
|
|
|
@ -87,6 +87,10 @@
|
|||
// RUN: %clang_cl /showIncludes -### -- %s 2>&1 | FileCheck -check-prefix=showIncludes %s
|
||||
// showIncludes: --show-includes
|
||||
|
||||
// RUN: %clang_cl /E /showIncludes -### -- %s 2>&1 | FileCheck -check-prefix=showIncludes_E %s
|
||||
// RUN: %clang_cl /EP /showIncludes -### -- %s 2>&1 | FileCheck -check-prefix=showIncludes_E %s
|
||||
// showIncludes_E: warning: argument unused during compilation: '--show-includes'
|
||||
|
||||
// RUN: %clang_cl /Umymacro -### -- %s 2>&1 | FileCheck -check-prefix=U %s
|
||||
// RUN: %clang_cl /U mymacro -### -- %s 2>&1 | FileCheck -check-prefix=U %s
|
||||
// U: "-U" "mymacro"
|
||||
|
|
Loading…
Reference in New Issue