[PATCH] D62758: Add cdb test for inline line tables

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 3 11:22:38 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL362431: Add cdb test for inline line tables (authored by rnk, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D62758?vs=202504&id=202760#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D62758/new/

https://reviews.llvm.org/D62758

Files:
  debuginfo-tests/trunk/win_cdb/inline-line-gap.cpp


Index: debuginfo-tests/trunk/win_cdb/inline-line-gap.cpp
===================================================================
--- debuginfo-tests/trunk/win_cdb/inline-line-gap.cpp
+++ debuginfo-tests/trunk/win_cdb/inline-line-gap.cpp
@@ -0,0 +1,45 @@
+// RUN: %clang_cl -MD -Od %s -o %t.exe -fuse-ld=lld -Z7
+// RUN: grep DE[B]UGGER: %s | sed -e 's/.*DE[B]UGGER: //' > %t.script
+// RUN: %cdb -cf %t.script %t.exe | FileCheck %s --check-prefixes=DEBUGGER,CHECK
+//
+// RUN: %clang_cl -MD -O2 %s -o %t.exe -fuse-ld=lld -Z7
+// RUN: grep DE[B]UGGER: %s | sed -e 's/.*DE[B]UGGER: //' > %t.script
+// RUN: %cdb -cf %t.script %t.exe | FileCheck %s --check-prefixes=DEBUGGER,CHECK
+
+// This code is structured to have an early exit with an epilogue in the middle
+// of the function, which creates a gap between the beginning of the inlined
+// code region and the end. Previously, this confused cdb.
+
+volatile bool shutting_down_ = true;
+volatile bool tearing_down_ = true;
+
+void __attribute__((optnone)) setCrashString(const char *) {}
+void __attribute__((optnone)) doTailCall() {}
+extern "C" void __declspec(noreturn) abort();
+
+void __forceinline inlineCrashFrame() {
+  if (shutting_down_ || tearing_down_) {
+    setCrashString("crashing");
+    __debugbreak();
+    // MSVC lays out calls to abort out of line, gets the layout we want.
+    abort();
+  }
+}
+
+void __declspec(noinline) callerOfInlineCrashFrame(bool is_keeping_alive) {
+  if (is_keeping_alive)
+    inlineCrashFrame();
+  else
+    doTailCall();
+}
+
+int __attribute__((optnone)) main() {
+  callerOfInlineCrashFrame(true);
+}
+
+// DEBUGGER: g
+// DEBUGGER: k3
+// CHECK: {{.*}}!inlineCrashFrame
+// CHECK: {{.*}}!callerOfInlineCrashFrame
+// CHECK: {{.*}}!main
+// DEBUGGER: q


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62758.202760.patch
Type: text/x-patch
Size: 1757 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190603/bad248a2/attachment.bin>


More information about the llvm-commits mailing list