r213589 - clang-cl: ignore /showIncludes when combined with /E (PR20336)

Hans Wennborg hans at chromium.org
Tue Jul 22 09:08:31 PDT 2014


That's pretty sneaky. It doesn't seem super important to duplicate
that quirk though, so I'll leave this as is for now.

On Mon, Jul 21, 2014 at 4:56 PM, Nico Weber <thakis at chromium.org> wrote:
> It seems that cl.exe lets /showIncludes write to stderr if /E is passed, but
> to stdout else (!).
>
>
> On Mon, Jul 21, 2014 at 4:42 PM, Hans Wennborg <hans at hanshq.net> wrote:
>>
>> Author: hans
>> Date: Mon Jul 21 18:42:07 2014
>> New Revision: 213589
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=213589&view=rev
>> Log:
>> 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.
>>
>> Modified:
>>     cfe/trunk/lib/Driver/Tools.cpp
>>     cfe/trunk/test/Driver/cl-options.c
>>
>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=213589&r1=213588&r2=213589&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>> +++ cfe/trunk/lib/Driver/Tools.cpp Mon Jul 21 18:42:07 2014
>> @@ -4640,8 +4640,11 @@ void Clang::AddClangCLArgs(const ArgList
>>    // 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,
>>
>> Modified: cfe/trunk/test/Driver/cl-options.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-options.c?rev=213589&r1=213588&r2=213589&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Driver/cl-options.c (original)
>> +++ cfe/trunk/test/Driver/cl-options.c Mon Jul 21 18:42:07 2014
>> @@ -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"
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>



More information about the cfe-commits mailing list