diff options
author | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2018-10-25 23:39:07 +0000 |
---|---|---|
committer | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2018-10-25 23:39:07 +0000 |
commit | f213f81d9ca40d3a7a154a6914a659806a67293c (patch) | |
tree | db17fbae99eb087c718dd6cf89e51be70858dab6 | |
parent | ff6df778c6b8d3d1ec1eb0a300adbfb93c3f8757 (diff) | |
download | bcm5719-llvm-f213f81d9ca40d3a7a154a6914a659806a67293c.tar.gz bcm5719-llvm-f213f81d9ca40d3a7a154a6914a659806a67293c.zip |
Fix in MachineOperand::printIRValueReference().
Handle the case where getCurrentFunction() returns nullptr by passing -1 to
printIRSlotNumber(). This will result in <badref> being printed instead of an
assertion failure.
Review: Francis Visoiu Mistrih
https://reviews.llvm.org/D53333
llvm-svn: 345342
-rw-r--r-- | llvm/lib/CodeGen/MachineOperand.cpp | 3 | ||||
-rw-r--r-- | llvm/test/CodeGen/SystemZ/isel-debug.ll | 19 |
2 files changed, 21 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineOperand.cpp b/llvm/lib/CodeGen/MachineOperand.cpp index a116d8fe877..97d32a5d66a 100644 --- a/llvm/lib/CodeGen/MachineOperand.cpp +++ b/llvm/lib/CodeGen/MachineOperand.cpp @@ -461,7 +461,8 @@ static void printIRValueReference(raw_ostream &OS, const Value &V, printLLVMNameWithoutPrefix(OS, V.getName()); return; } - MachineOperand::printIRSlotNumber(OS, MST.getLocalSlot(&V)); + int Slot = MST.getCurrentFunction() ? MST.getLocalSlot(&V) : -1; + MachineOperand::printIRSlotNumber(OS, Slot); } static void printSyncScope(raw_ostream &OS, const LLVMContext &Context, diff --git a/llvm/test/CodeGen/SystemZ/isel-debug.ll b/llvm/test/CodeGen/SystemZ/isel-debug.ll new file mode 100644 index 00000000000..cf5370cbec6 --- /dev/null +++ b/llvm/test/CodeGen/SystemZ/isel-debug.ll @@ -0,0 +1,19 @@ +; RUN: llc < %s -mtriple=s390x-linux-gnu -debug-only=systemz-isel -o - 2>&1 | \ +; RUN: FileCheck %s + +; REQUIRES: asserts +; +; Check that some debug output is printed without problems. +; CHECK: SystemZAddressingMode +; CHECK: Base +; CHECK: Index +; CHECK: Disp + +define void @fun(i64* %ptr) { +entry: + %0 = bitcast i64* %ptr to i32** + %1 = load i32*, i32** %0, align 8 + %xpv_pv = getelementptr inbounds i32, i32* %1 + store i32 0, i32* %xpv_pv + ret void +} |