]> granicus.if.org Git - clang/commitdiff
if we die in IR generation of a compound statement, include
authorChris Lattner <sabre@nondot.org>
Thu, 5 Mar 2009 08:04:57 +0000 (08:04 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 5 Mar 2009 08:04:57 +0000 (08:04 +0000)
it in the stack trace, giving us stuff like:

Stack dump:
0. Program arguments: clang t.c -emit-llvm
1. <eof> parser at end of file
2. t.c:1:5: LLVM IR generation of declaration 'a'
3. t.c:1:9: LLVM IR generation of compound statement ('{}')
4. t.c:2:3: LLVM IR generation of compound statement ('{}')
Abort

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66154 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGStmt.cpp

index 839ba671b92cce833fa7667968d279800d507891..f4d6679c93b4f7cd09e24f8aa59a767b91c5d29a 100644 (file)
@@ -15,6 +15,7 @@
 #include "CodeGenModule.h"
 #include "CodeGenFunction.h"
 #include "clang/AST/StmtVisitor.h"
+#include "clang/Basic/PrettyStackTrace.h"
 #include "clang/Basic/TargetInfo.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/InlineAsm.h"
@@ -123,7 +124,9 @@ bool CodeGenFunction::EmitSimpleStmt(const Stmt *S) {
 /// (for use by the statement expression extension).
 RValue CodeGenFunction::EmitCompoundStmt(const CompoundStmt &S, bool GetLast,
                                          llvm::Value *AggLoc, bool isAggVol) {
-
+  PrettyStackTraceLoc CrashInfo(getContext().getSourceManager(),S.getLBracLoc(),
+                             "LLVM IR generation of compound statement ('{}')");
+  
   CGDebugInfo *DI = getDebugInfo();
   if (DI) {
     EnsureInsertPoint();