[cfe-commits] r143846 - in /cfe/trunk: lib/Driver/Compilation.cpp lib/Driver/Tools.cpp lib/Driver/Tools.h test/Driver/crash-cleanup.c

Matt Beaumont-Gay matthewbg at google.com
Mon Nov 14 15:28:56 PST 2011


On Mon, Nov 14, 2011 at 14:18, Matt Beaumont-Gay <matthewbg at google.com> wrote:
> Hi Peter,
>
> On Sat, Nov 5, 2011 at 17:40, Peter Collingbourne <peter at pcc.me.uk> wrote:
>> Author: pcc
>> Date: Sat Nov  5 19:40:05 2011
>> New Revision: 143846
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=143846&view=rev
>> Log:
>> Add the depfile as a result file so that it is deleted if we crash,
>> and prevent the diagnostic preprocessor run from writing a depfile.
>
> This change also causes the depfile to be deleted if the compilation
> fails in non-crashy ways, e.g. because the code is invalid. Is that
> what you intended? FWIW, GCC does produce a .d file for invalid
> inputs.

I've committed r144590 as a partial rollback until we can get the
cleanup code behaving more like we want. Let me know if you have any
concerns.

>
>>
>> Added:
>>    cfe/trunk/test/Driver/crash-cleanup.c
>> Modified:
>>    cfe/trunk/lib/Driver/Compilation.cpp
>>    cfe/trunk/lib/Driver/Tools.cpp
>>    cfe/trunk/lib/Driver/Tools.h
>>
>> Modified: cfe/trunk/lib/Driver/Compilation.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Compilation.cpp?rev=143846&r1=143845&r2=143846&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Compilation.cpp (original)
>> +++ cfe/trunk/lib/Driver/Compilation.cpp Sat Nov  5 19:40:05 2011
>> @@ -217,8 +217,12 @@
>>
>>   // Remove any user specified output.  Claim any unclaimed arguments, so as
>>   // to avoid emitting warnings about unused args.
>> -  if (TranslatedArgs->hasArg(options::OPT_o))
>> -    TranslatedArgs->eraseArg(options::OPT_o);
>> +  OptSpecifier OutputOpts[] = { options::OPT_o, options::OPT_MD,
>> +                                options::OPT_MMD };
>> +  for (unsigned i = 0; i != sizeof(OutputOpts)/sizeof(OutputOpts[0]); ++i) {
>> +    if (TranslatedArgs->hasArg(OutputOpts[i]))
>> +      TranslatedArgs->eraseArg(OutputOpts[i]);
>> +  }
>>   TranslatedArgs->ClaimAllArgs();
>>
>>   // Redirect stdout/stderr to /dev/null.
>>
>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=143846&r1=143845&r2=143846&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>> +++ cfe/trunk/lib/Driver/Tools.cpp Sat Nov  5 19:40:05 2011
>> @@ -203,7 +203,8 @@
>>   }
>>  }
>>
>> -void Clang::AddPreprocessingOptions(const Driver &D,
>> +void Clang::AddPreprocessingOptions(Compilation &C,
>> +                                    const Driver &D,
>>                                     const ArgList &Args,
>>                                     ArgStringList &CmdArgs,
>>                                     const InputInfo &Output,
>> @@ -225,11 +226,13 @@
>>       DepFile = Output.getFilename();
>>     } else if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
>>       DepFile = MF->getValue(Args);
>> +      C.addResultFile(DepFile);
>>     } else if (A->getOption().matches(options::OPT_M) ||
>>                A->getOption().matches(options::OPT_MM)) {
>>       DepFile = "-";
>>     } else {
>>       DepFile = darwin::CC1::getDependencyFileName(Args, Inputs);
>> +      C.addResultFile(DepFile);
>>     }
>>     CmdArgs.push_back("-dependency-file");
>>     CmdArgs.push_back(DepFile);
>> @@ -1541,7 +1544,7 @@
>>   //
>>   // FIXME: Support -fpreprocessed
>>   if (types::getPreprocessedType(InputType) != types::TY_INVALID)
>> -    AddPreprocessingOptions(D, Args, CmdArgs, Output, Inputs);
>> +    AddPreprocessingOptions(C, D, Args, CmdArgs, Output, Inputs);
>>
>>   // Don't warn about "clang -c -DPIC -fPIC test.i" because libtool.m4 assumes
>>   // that "The compiler can only warn and ignore the option if not recognized".
>>
>> Modified: cfe/trunk/lib/Driver/Tools.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.h?rev=143846&r1=143845&r2=143846&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Tools.h (original)
>> +++ cfe/trunk/lib/Driver/Tools.h Sat Nov  5 19:40:05 2011
>> @@ -29,7 +29,8 @@
>>
>>   /// \brief Clang compiler tool.
>>   class LLVM_LIBRARY_VISIBILITY Clang : public Tool {
>> -    void AddPreprocessingOptions(const Driver &D,
>> +    void AddPreprocessingOptions(Compilation &C,
>> +                                 const Driver &D,
>>                                  const ArgList &Args,
>>                                  ArgStringList &CmdArgs,
>>                                  const InputInfo &Output,
>>
>> Added: cfe/trunk/test/Driver/crash-cleanup.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-cleanup.c?rev=143846&view=auto
>> ==============================================================================
>> --- cfe/trunk/test/Driver/crash-cleanup.c (added)
>> +++ cfe/trunk/test/Driver/crash-cleanup.c Sat Nov  5 19:40:05 2011
>> @@ -0,0 +1,7 @@
>> +// RUN: not %clang -o %t.o -MMD -MF %t.d %s
>> +// RUN: test ! -f %t.o
>> +// RUN: test ! -f %t.d
>> +// REQUIRES: shell
>> +// REQUIRES: crash-recovery
>> +
>> +#pragma clang __debug crash
>>
>>
>> _______________________________________________
>> 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