]> granicus.if.org Git - clang/commitdiff
if we crash while parsing a block literal, include it.
authorChris Lattner <sabre@nondot.org>
Thu, 5 Mar 2009 07:32:12 +0000 (07:32 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 5 Mar 2009 07:32:12 +0000 (07:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66150 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseExpr.cpp

index 4a81d30c846906b3a6ec8ea44e2c5ab4b0ed71c5..331f3181cd479ba4d9bb3f383fad3b3be42842b0 100644 (file)
@@ -22,6 +22,7 @@
 #include "clang/Parse/Parser.h"
 #include "clang/Parse/DeclSpec.h"
 #include "clang/Parse/Scope.h"
+#include "clang/Basic/PrettyStackTrace.h"
 #include "ExtensionRAIIObject.h"
 #include "AstGuard.h"
 #include "llvm/ADT/SmallVector.h"
@@ -1264,6 +1265,9 @@ Parser::OwningExprResult Parser::ParseBlockLiteralExpression() {
   assert(Tok.is(tok::caret) && "block literal starts with ^");
   SourceLocation CaretLoc = ConsumeToken();
 
+  PrettyStackTraceLoc CrashInfo(PP.getSourceManager(), CaretLoc,
+                                "block literal parsing");
+
   // Enter a scope to hold everything within the block.  This includes the 
   // argument decls, decls within the compound expression, etc.  This also
   // allows determining whether a variable reference inside the block is
@@ -1274,7 +1278,7 @@ Parser::OwningExprResult Parser::ParseBlockLiteralExpression() {
 
   // Inform sema that we are starting a block.
   Actions.ActOnBlockStart(CaretLoc, CurScope);
-
+  
   // Parse the return type if present.
   DeclSpec DS;
   Declarator ParamInfo(DS, Declarator::BlockLiteralContext);