r297890 - enable -save-temps with -finclude-defult-header

Guansong Zhang via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 15 17:20:50 PDT 2017


Many thanks!

Regards

Guansong

On Wed, Mar 15, 2017 at 7:55 PM, Eric Christopher <echristo at gmail.com>
wrote:

> Hi Guansong,
>
> So this wasn't quite the right way to write this testcase. You really
> wanted a CHECK/CHECK-NOT line along with the actual commands. You also
> didn't want to (as you noticed later) depend on full compilation. You can
> check for this sort of thing in the future by using the -### command line
> option to get the subcommands that clang -would- invoke if it were actually
> going to do it.
>
> I've gone ahead and fixed this thusly:
> Committing to https://llvm.org/svn/llvm-project/cfe/trunk ...
> M test/Driver/include-default-header.cl
> Committed r297917
>
> Thanks!
>
> -eric
>
> On Wed, Mar 15, 2017 at 2:09 PM Guansong Zhang via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: guansong
>> Date: Wed Mar 15 15:57:11 2017
>> New Revision: 297890
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=297890&view=rev
>> Log:
>> enable -save-temps with -finclude-defult-header
>>
>> Currently the two flags can not work together.
>>
>> To illustrate the issue, we can have an one line file a.cl contains only
>> an empty function
>>
>> cat a.cl
>>
>> void test(){}
>>
>> Then use
>>
>> clang -v -save-temps -x cl -Xclang -cl-std=CL2.0 -Xclang
>> -finclude-default-header -target amdgcn -S -c a.cl
>>
>> we will get redefinition errors for various things.
>>
>> The reason is that the -finclude-default-header flag is not meant to be
>> on cc1 command other than the preprocessor.
>>
>> The fix is modeled after the code just below the change to filter the
>> -finclude-default-header flag out when we are not in the preprocess phase.
>>
>> Differential Revision: https://reviews.llvm.org/D30743
>>
>> Added:
>>     cfe/trunk/test/Driver/include-default-header.cl
>> Modified:
>>     cfe/trunk/lib/Driver/ToolChains/Clang.cpp
>>
>> Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/
>> ToolChains/Clang.cpp?rev=297890&r1=297889&r2=297890&view=diff
>> ============================================================
>> ==================
>> --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
>> +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Wed Mar 15 15:57:11 2017
>> @@ -4268,7 +4268,19 @@ void Clang::ConstructJob(Compilation &C,
>>
>>    // Forward -Xclang arguments to -cc1, and -mllvm arguments to the LLVM
>> option
>>    // parser.
>> -  Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
>> +  // -finclude-default-header flag is for preprocessor,
>> +  // do not pass it to other cc1 commands when save-temps is enabled
>> +  if (C.getDriver().isSaveTempsEnabled() &&
>> +      !isa<PreprocessJobAction>(JA)) {
>> +    for (auto Arg : Args.filtered(options::OPT_Xclang)) {
>> +      Arg->claim();
>> +      if (StringRef(Arg->getValue()) != "-finclude-default-header")
>> +        CmdArgs.push_back(Arg->getValue());
>> +    }
>> +  }
>> +  else {
>> +    Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
>> +  }
>>    for (const Arg *A : Args.filtered(options::OPT_mllvm)) {
>>      A->claim();
>>
>>
>> Added: cfe/trunk/test/Driver/include-default-header.cl
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
>> include-default-header.cl?rev=297890&view=auto
>> ============================================================
>> ==================
>> --- cfe/trunk/test/Driver/include-default-header.cl (added)
>> +++ cfe/trunk/test/Driver/include-default-header.cl Wed Mar 15 15:57:11
>> 2017
>> @@ -0,0 +1,4 @@
>> +// RUN: %clang -v -save-temps -x cl -Xclang -cl-std=CL2.0 -Xclang
>> -finclude-default-header -target amdgcn -S -c %s
>> +
>> +void test() {}
>> +
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170315/e1d7a782/attachment-0001.html>


More information about the cfe-commits mailing list