[cfe-commits] r159469 - in /cfe/trunk: include/clang/Basic/TokenKinds.def include/clang/Driver/Compilation.h include/clang/Driver/Types.def lib/Driver/Driver.cpp lib/Lex/Pragma.cpp lib/Parse/ParseDecl.cpp test/Driver/crash-report.c
David Blaikie
dblaikie at gmail.com
Fri Jun 29 16:18:32 PDT 2012
On Fri, Jun 29, 2012 at 3:55 PM, David Dean <david_dean at apple.com> wrote:
> The test case is failing:
Ah, sorry about that - I'm not entirely sure where the 'clangfoo:'
suffix comes from, so I've {{.*}} to skip over it entirely (rather
than trying to ensure 'clang' is a prefix or anything like that) in
r159474.
- David
>
> ******************** TEST 'Clang :: Driver/crash-report.c' FAILED ********************Script:
> --
> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-nobootstrap-RA/clang-build/Release+Asserts/bin/clang -fsyntax-only /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-nobootstrap-RA/clang.src/test/Driver/crash-report.c 2>&1 | FileCheck /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-nobootstrap-RA/clang.src/test/Driver/crash-report.c
> --
> Exit Code: 1
> Command Output (stderr):
> --
> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-nobootstrap-RA/clang.src/test/Driver/crash-report.c:6:16: error: expected string not found in input
> // CHECK-NEXT: clang-3: note: diagnostic msg: {{.*}}.c
> ^
> <stdin>:33:1: note: scanning from here
> clang: note: diagnostic msg: /tmp/crash-report-sfgAhA.c
> ^
> <stdin>:35:1: note: possible intended match here
> clang: note: diagnostic msg:
> ^
> --
>
> ********************
>
>
> On 29 Jun 2012, at 3:03 PM, David Blaikie wrote:
>
>> Author: dblaikie
>> Date: Fri Jun 29 17:03:56 2012
>> New Revision: 159469
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=159469&view=rev
>> Log:
>> Use -frewrite-includes for crash reports.
>>
>> In future changes we should:
>> * use __builtin_trap rather than derefing 'random' volatile pointers.
>> * avoid dumping temporary files into /tmp when running tests, instead
>> preferring a location that is properly cleaned up by lit.
>>
>> Review by Chandler Carruth.
>>
>> Added:
>> cfe/trunk/test/Driver/crash-report.c
>> Modified:
>> cfe/trunk/include/clang/Basic/TokenKinds.def
>> cfe/trunk/include/clang/Driver/Compilation.h
>> cfe/trunk/include/clang/Driver/Types.def
>> cfe/trunk/lib/Driver/Driver.cpp
>> cfe/trunk/lib/Lex/Pragma.cpp
>> cfe/trunk/lib/Parse/ParseDecl.cpp
>>
>> Modified: cfe/trunk/include/clang/Basic/TokenKinds.def
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TokenKinds.def?rev=159469&r1=159468&r2=159469&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/TokenKinds.def (original)
>> +++ cfe/trunk/include/clang/Basic/TokenKinds.def Fri Jun 29 17:03:56 2012
>> @@ -592,6 +592,11 @@
>> // handles them.
>> ANNOTATION(pragma_pack)
>>
>> +// Annotation for #pragma clang __debug parser_crash...
>> +// The lexer produces these so that they only take effect when the parser
>> +// handles them.
>> +ANNOTATION(pragma_parser_crash)
>> +
>> #undef ANNOTATION
>> #undef TESTING_KEYWORD
>> #undef OBJC2_AT_KEYWORD
>>
>> Modified: cfe/trunk/include/clang/Driver/Compilation.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Compilation.h?rev=159469&r1=159468&r2=159469&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/Compilation.h (original)
>> +++ cfe/trunk/include/clang/Driver/Compilation.h Fri Jun 29 17:03:56 2012
>> @@ -76,6 +76,8 @@
>>
>> const DerivedArgList &getArgs() const { return *TranslatedArgs; }
>>
>> + DerivedArgList &getArgs() { return *TranslatedArgs; }
>> +
>> ActionList &getActions() { return Actions; }
>> const ActionList &getActions() const { return Actions; }
>>
>>
>> Modified: cfe/trunk/include/clang/Driver/Types.def
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Types.def?rev=159469&r1=159468&r2=159469&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/Types.def (original)
>> +++ cfe/trunk/include/clang/Driver/Types.def Fri Jun 29 17:03:56 2012
>> @@ -40,17 +40,17 @@
>>
>> // C family source language (with and without preprocessing).
>> TYPE("cpp-output", PP_C, INVALID, "i", "u")
>> -TYPE("c", C, PP_C, 0, "u")
>> -TYPE("cl", CL, PP_C, 0, "u")
>> -TYPE("cuda", CUDA, PP_CXX, 0, "u")
>> +TYPE("c", C, PP_C, "c", "u")
>> +TYPE("cl", CL, PP_C, "cl", "u")
>> +TYPE("cuda", CUDA, PP_CXX, "cpp", "u")
>> TYPE("objective-c-cpp-output", PP_ObjC, INVALID, "mi", "u")
>> TYPE("objc-cpp-output", PP_ObjC_Alias, INVALID, "mi", "u")
>> -TYPE("objective-c", ObjC, PP_ObjC, 0, "u")
>> +TYPE("objective-c", ObjC, PP_ObjC, "m", "u")
>> TYPE("c++-cpp-output", PP_CXX, INVALID, "ii", "u")
>> -TYPE("c++", CXX, PP_CXX, 0, "u")
>> +TYPE("c++", CXX, PP_CXX, "cpp", "u")
>> TYPE("objective-c++-cpp-output", PP_ObjCXX, INVALID, "mii", "u")
>> TYPE("objc++-cpp-output", PP_ObjCXX_Alias, INVALID, "mii", "u")
>> -TYPE("objective-c++", ObjCXX, PP_ObjCXX, 0, "u")
>> +TYPE("objective-c++", ObjCXX, PP_ObjCXX, "mm", "u")
>>
>> // C family input files to precompile.
>> TYPE("c-header-cpp-output", PP_CHeader, INVALID, "i", "p")
>>
>> Modified: cfe/trunk/lib/Driver/Driver.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=159469&r1=159468&r2=159469&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Driver.cpp (original)
>> +++ cfe/trunk/lib/Driver/Driver.cpp Fri Jun 29 17:03:56 2012
>> @@ -392,6 +392,7 @@
>> // Suppress driver output and emit preprocessor output to temp file.
>> CCCIsCPP = true;
>> CCGenDiagnostics = true;
>> + C.getArgs().AddFlagArg(0, Opts->getOption(options::OPT_frewrite_includes));
>>
>> // Save the original job command(s).
>> std::string Cmd;
>> @@ -1181,7 +1182,10 @@
>> if (Args.hasArg(options::OPT_M, options::OPT_MM)) {
>> OutputTy = types::TY_Dependencies;
>> } else {
>> - OutputTy = types::getPreprocessedType(Input->getType());
>> + OutputTy = Input->getType();
>> + if (!Args.hasFlag(options::OPT_frewrite_includes,
>> + options::OPT_fno_rewrite_includes, false))
>> + OutputTy = types::getPreprocessedType(OutputTy);
>> assert(OutputTy != types::TY_INVALID &&
>> "Cannot preprocess this input type!");
>> }
>>
>> Modified: cfe/trunk/lib/Lex/Pragma.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Pragma.cpp?rev=159469&r1=159468&r2=159469&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Lex/Pragma.cpp (original)
>> +++ cfe/trunk/lib/Lex/Pragma.cpp Fri Jun 29 17:03:56 2012
>> @@ -1010,6 +1010,10 @@
>> llvm_unreachable("This is an assertion!");
>> } else if (II->isStr("crash")) {
>> *(volatile int*) 0x11 = 0;
>> + } else if (II->isStr("parser_crash")) {
>> + Token Crasher;
>> + Crasher.setKind(tok::annot_pragma_parser_crash);
>> + PP.EnterToken(Crasher);
>> } else if (II->isStr("llvm_fatal_error")) {
>> llvm::report_fatal_error("#pragma clang __debug llvm_fatal_error");
>> } else if (II->isStr("llvm_unreachable")) {
>>
>> Modified: cfe/trunk/lib/Parse/ParseDecl.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=159469&r1=159468&r2=159469&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Parse/ParseDecl.cpp (original)
>> +++ cfe/trunk/lib/Parse/ParseDecl.cpp Fri Jun 29 17:03:56 2012
>> @@ -4252,6 +4252,8 @@
>> // portion is empty), if an abstract-declarator is allowed.
>> D.SetIdentifier(0, Tok.getLocation());
>> } else {
>> + if (Tok.getKind() == tok::annot_pragma_parser_crash)
>> + *(volatile int*) 0x11 = 0;
>> if (D.getContext() == Declarator::MemberContext)
>> Diag(Tok, diag::err_expected_member_name_or_semi)
>> << D.getDeclSpec().getSourceRange();
>>
>> Added: cfe/trunk/test/Driver/crash-report.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-report.c?rev=159469&view=auto
>> ==============================================================================
>> --- cfe/trunk/test/Driver/crash-report.c (added)
>> +++ cfe/trunk/test/Driver/crash-report.c Fri Jun 29 17:03:56 2012
>> @@ -0,0 +1,6 @@
>> +// RUN: %clang -fsyntax-only %s 2>&1 | FileCheck %s
>> +// REQUIRES: crash-recovery
>> +
>> +#pragma clang __debug parser_crash
>> +// CHECK: Preprocessed source(s) and associated run script(s) are located at:
>> +// CHECK-NEXT: clang-3: note: diagnostic msg: {{.*}}.c
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
> -David
>
>
More information about the cfe-commits
mailing list