[PATCH] D77639: [DebugInfo][NFC] Early-exit when analysing for single-location variables
Jeremy Morse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 8 04:50:17 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc77887e4d1be: [DebugInfo][NFC] Early-exit when analyzing for single-location variables (authored by jmorse).
Changed prior to commit:
https://reviews.llvm.org/D77639?vs=255637&id=255963#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77639/new/
https://reviews.llvm.org/D77639
Files:
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Index: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===================================================================
--- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1480,11 +1480,24 @@
if (LSRange.size() == 0)
return false;
+ // If this range is neither open ended nor a constant, then it is not a
+ // candidate for being validThroughout.
+ if (RangeEnd && !DbgValue->getOperand(0).isImm())
+ return false;
+
// Determine if the DBG_VALUE is valid at the beginning of its lexical block.
const MachineInstr *LScopeBegin = LSRange.front().first;
// Early exit if the lexical scope begins outside of the current block.
if (LScopeBegin->getParent() != MBB)
return false;
+
+ // If there are instructions belonging to our scope in another block, and
+ // we're not a constant (see DWARF2 comment below), then we can't be
+ // validThroughout.
+ const MachineInstr *LScopeEnd = LSRange.back().second;
+ if (RangeEnd && LScopeEnd->getParent() != MBB)
+ return false;
+
MachineBasicBlock::const_reverse_iterator Pred(DbgValue);
for (++Pred; Pred != MBB->rend(); ++Pred) {
if (Pred->getFlag(MachineInstr::FrameSetup))
@@ -1505,11 +1518,6 @@
if (!RangeEnd)
return true;
- // Fail if there are instructions belonging to our scope in another block.
- const MachineInstr *LScopeEnd = LSRange.back().second;
- if (LScopeEnd->getParent() != MBB)
- return false;
-
// Single, constant DBG_VALUEs in the prologue are promoted to be live
// throughout the function. This is a hack, presumably for DWARF v2 and not
// necessarily correct. It would be much better to use a dbg.declare instead
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77639.255963.patch
Type: text/x-patch
Size: 1702 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200408/ffb22308/attachment.bin>
More information about the llvm-commits
mailing list