[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