summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter
diff options
context:
space:
mode:
authorDavid Stenberg <david.stenberg@ericsson.com>2019-12-05 10:49:41 +0100
committerDavid Stenberg <david.stenberg@ericsson.com>2019-12-05 11:50:41 +0100
commit54682d871d9e2d8f19ca58ce47a9673401d011ff (patch)
tree25238adaffb0b487e409c6a7e32d0390185abfa6 /llvm/lib/CodeGen/AsmPrinter
parent41eeded804310df0719ecbc92a0e14b438213dbf (diff)
downloadbcm5719-llvm-54682d871d9e2d8f19ca58ce47a9673401d011ff.tar.gz
bcm5719-llvm-54682d871d9e2d8f19ca58ce47a9673401d011ff.zip
[DebugInfo] Handle call site values for instructions before call bundle
Summary: If a call is bundled then the code that looks for instructions that produce parameter values would break when reaching the call's bundle header, due to the `ifCall(/*AnyInBundle*/)` invocation returning true. It is not enough to simply ignore bundle headers in the `isCall()` invocation, as the bundle header may have defines of parameter registers due to the call, meaning that such registers would incorrectly be removed from the worklist. Therefore, do not look at bundle headers at all. Reviewers: djtodoro, NikolaPrica, aprantl, vsk Reviewed By: aprantl, vsk Subscribers: hiraditya, llvm-commits Tags: #debug-info, #llvm Differential Revision: https://reviews.llvm.org/D71024
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index bddb8bf3532..09772537a97 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -617,6 +617,10 @@ static void collectCallSiteParameters(const MachineInstr *CallMI,
// Search for a loading value in forwarding registers.
for (; I != MBB->rend(); ++I) {
+ // Skip bundle headers.
+ if (I->isBundle())
+ continue;
+
// If the next instruction is a call we can not interpret parameter's
// forwarding registers or we finished the interpretation of all parameters.
if (I->isCall())
OpenPOWER on IntegriCloud