Peter,
    I'm seeing a crash in one of the tests and suspect this commit:

******************** TEST 'Clang :: Driver/output-file-cleanup.c' FAILED 
********************Script:
--
touch 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
not  
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/Release+Asserts/bin/clang
  -DCRASH -o 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
 -MMD -MF 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang.src/test/Driver/output-file-cleanup.c
test ! -f 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
test ! -f 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
touch 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
not  
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/Release+Asserts/bin/clang
  -DMISSING -o 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
 -MMD -MF 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang.src/test/Driver/output-file-cleanup.c
test ! -f 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
test ! -f 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
touch 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
not  
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/Release+Asserts/bin/clang
  -o 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
 -MMD -MF 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang.src/test/Driver/output-file-cleanup.c
test ! -f 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
test -f 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
--
Exit Code: 0
Command Output (stderr):
--
0  clang             0x0000000101bc8ca2 PrintStackTrace(void*) + 34
1  clang             0x0000000101bc9c23 SignalHandler(int) + 707
2  libSystem.B.dylib 0x00007fff804de67a _sigtramp + 26
3  libSystem.B.dylib 0x000000005fbfbb4f _sigtramp + 3748779247
4  clang             0x0000000100d22f7d 
clang::PragmaNamespace::HandlePragma(clang::Preprocessor&, 
clang::PragmaIntroducerKind, clang::Token&) + 653
5  clang             0x0000000100d22f7d 
clang::PragmaNamespace::HandlePragma(clang::Preprocessor&, 
clang::PragmaIntroducerKind, clang::Token&) + 653
6  clang             0x0000000100d1c51f 
clang::Preprocessor::HandlePragmaDirective(unsigned int) + 47
7  clang             0x0000000100d09814 
clang::Preprocessor::HandleDirective(clang::Token&) + 2276
8  clang             0x0000000100ce8907 
clang::Lexer::LexTokenInternal(clang::Token&) + 3287
9  clang             0x0000000100ce8f85 
clang::Lexer::LexTokenInternal(clang::Token&) + 4949
10 clang             0x00000001003d4d98 clang::Parser::ConsumeAnyToken() + 344
11 clang             0x00000001003cc44e 
clang::Parser::ExpectAndConsume(clang::tok::TokenKind, unsigned int, char 
const*, clang::tok::TokenKind) + 78
12 clang             0x000000010036b186 
clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, 
bool, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 2198
13 clang             0x000000010036c07c 
clang::Parser::ParseSimpleDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, bool, 
clang::Parser::ForRangeInit*) + 892
14 clang             0x000000010036c1a6 
clang::Parser::ParseDeclaration(clang::ASTOwningVector<clang::Stmt*, 32u>&, 
unsigned int, clang::SourceLocation&, 
clang::Parser::ParsedAttributesWithRange&) + 198
15 clang             0x00000001003cf1ad 
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
 clang::Parser::ParsingDeclSpec*) + 1437
16 clang             0x00000001003d0406 
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 566
17 clang             0x000000010034df1b clang::ParseAST(clang::Sema&, bool) + 
315
18 clang             0x0000000100302a3c clang::CodeGenAction::ExecuteAction() + 
60
19 clang             0x0000000100032cc3 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 435
20 clang             0x000000010000cd99 
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1737
21 clang             0x0000000100002cad cc1_main(char const**, char const**, 
char const*, void*) + 749
22 clang             0x000000010000baae main + 4670
23 clang             0x0000000100001534 start + 52
Stack dump:
0.      Program arguments: 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/Release+Asserts/bin/clang
 -cc1 -triple x86_64-apple-macosx10.6.6 -emit-obj -mrelax-all -disable-free 
-main-file-name output-file-cleanup.c -pic-level 1 -mdisable-fp-elim 
-masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 123.4 
-resource-dir 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/Release+Asserts/bin/../lib/clang/3.1
 -dependency-file 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.d
 -MT 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver/Output/output-file-cleanup.c.tmp.o
 -D CRASH -fmodule-cache-path /var/tmp/clang-module-cache 
-fdebug-compilation-dir /Users/buildslave/zorg/buildbot/smooshlab/sla!
 
ve-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang-build/tools/clang/test/Driver 
-ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fblocks 
-fobjc-dispatch-method=mixed -fdiagnostics-show-option -o 
/tmp/output-file-cleanup-cYjySt.o -x c 
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang.src/test/Driver/output-file-cleanup.c
 
1.      
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang.src/test/Driver/output-file-cleanup.c:22:2:
 current parser token 'pragma'
clang: error: unable to execute command: Segmentation fault


On 20 Nov 2011, at 4:01 PM, Peter Collingbourne wrote:

> Author: pcc
> Date: Sun Nov 20 18:01:05 2011
> New Revision: 145018
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=145018&view=rev
> Log:
> Teach the driver about failure result files, which are compilation
> output files that are valid regardless of whether the compilation
> succeeded or failed (but not if we crash).  Add depfiles to the
> failure result file list.
> 
> Added:
>    cfe/trunk/test/Driver/output-file-cleanup.c
> Removed:
>    cfe/trunk/test/Driver/crash-cleanup.c
> Modified:
>    cfe/trunk/include/clang/Driver/Compilation.h
>    cfe/trunk/lib/Driver/Driver.cpp
>    cfe/trunk/lib/Driver/Tools.cpp
> 
> Modified: cfe/trunk/include/clang/Driver/Compilation.h
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Compilation.h?rev=145018&r1=145017&r2=145018&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/Compilation.h (original)
> +++ cfe/trunk/include/clang/Driver/Compilation.h Sun Nov 20 18:01:05 2011
> @@ -56,6 +56,10 @@
>   /// Result files which should be removed on failure.
>   ArgStringList ResultFiles;
> 
> +  /// Result files which are generated correctly on failure, and which should
> +  /// only be removed if we crash.
> +  ArgStringList FailureResultFiles;
> +
>   /// Redirection for stdout, stderr, etc.
>   const llvm::sys::Path **Redirects;
> 
> @@ -84,6 +88,10 @@
> 
>   const ArgStringList &getResultFiles() const { return ResultFiles; }
> 
> +  const ArgStringList &getFailureResultFiles() const {
> +    return FailureResultFiles;
> +  }
> +
>   /// getArgsForToolChain - Return the derived argument list for the
>   /// tool chain \arg TC (or the default tool chain, if TC is not
>   /// specified).
> @@ -106,6 +114,13 @@
>     return Name;
>   }
> 
> +  /// addFailureResultFile - Add a file to remove if we crash, and returns 
> its
> +  /// argument.
> +  const char *addFailureResultFile(const char *Name) {
> +    FailureResultFiles.push_back(Name);
> +    return Name;
> +  }
> +
>   /// CleanupFileList - Remove the files in the given list.
>   ///
>   /// \param IssueErrors - Report failures as errors.
> 
> Modified: cfe/trunk/lib/Driver/Driver.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=145018&r1=145017&r2=145018&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Driver.cpp (original)
> +++ cfe/trunk/lib/Driver/Driver.cpp Sun Nov 20 18:01:05 2011
> @@ -507,9 +507,14 @@
>     return Res;
> 
>   // Otherwise, remove result files as well.
> -  if (!C.getArgs().hasArg(options::OPT_save_temps))
> +  if (!C.getArgs().hasArg(options::OPT_save_temps)) {
>     C.CleanupFileList(C.getResultFiles(), true);
> 
> +    // Failure result files are valid unless we crashed.
> +    if (Res < 0)
> +      C.CleanupFileList(C.getFailureResultFiles(), true);
> +  }
> +
>   // Print extra information about abnormal failures, if possible.
>   //
>   // This is ad-hoc, but we don't want to be excessively noisy. If the result
> 
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=145018&r1=145017&r2=145018&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Sun Nov 20 18:01:05 2011
> @@ -218,11 +218,13 @@
>       DepFile = Output.getFilename();
>     } else if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
>       DepFile = MF->getValue(Args);
> +      C.addFailureResultFile(DepFile);
>     } else if (A->getOption().matches(options::OPT_M) ||
>                A->getOption().matches(options::OPT_MM)) {
>       DepFile = "-";
>     } else {
>       DepFile = darwin::CC1::getDependencyFileName(Args, Inputs);
> +      C.addFailureResultFile(DepFile);
>     }
>     CmdArgs.push_back("-dependency-file");
>     CmdArgs.push_back(DepFile);
> 
> Removed: cfe/trunk/test/Driver/crash-cleanup.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-cleanup.c?rev=145017&view=auto
> ==============================================================================
> --- cfe/trunk/test/Driver/crash-cleanup.c (original)
> +++ cfe/trunk/test/Driver/crash-cleanup.c (removed)
> @@ -1,9 +0,0 @@
> -// 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
> -
> -// XFAIL: *
> -
> -#pragma clang __debug crash
> 
> Added: cfe/trunk/test/Driver/output-file-cleanup.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/output-file-cleanup.c?rev=145018&view=auto
> ==============================================================================
> --- cfe/trunk/test/Driver/output-file-cleanup.c (added)
> +++ cfe/trunk/test/Driver/output-file-cleanup.c Sun Nov 20 18:01:05 2011
> @@ -0,0 +1,20 @@
> +// RUN: touch %t.o
> +// RUN: not %clang -DCRASH -o %t.o -MMD -MF %t.d %s
> +// RUN: test ! -f %t.o
> +// RUN: test ! -f %t.d
> +
> +// RUN: touch %t.o
> +// 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
> +
> +// XFAIL: darwin
> +
> +#ifdef CRASH
> +#pragma clang __debug crash
> +#else
> +invalid C code
> +#endif
> 
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

-David



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to