[llvm-bugs] [Bug 46247] New: [Simple Register Coalescing] Assertion `VNI && "No live value at use."' failed.
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue Jun 9 00:56:33 PDT 2020
https://bugs.llvm.org/show_bug.cgi?id=46247
Bug ID: 46247
Summary: [Simple Register Coalescing] Assertion `VNI && "No
live value at use."' failed.
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Register Allocator
Assignee: unassignedbugs at nondot.org
Reporter: paulsson at linux.vnet.ibm.com
CC: llvm-bugs at lists.llvm.org, quentin.colombet at gmail.com
Created attachment 23592
--> https://bugs.llvm.org/attachment.cgi?id=23592&action=edit
reduced testcase
I found a test case which which triggered this assert with machine DCE
disabled. In the reduced test case, it seems that the whole block is in fact
dead and it would normally become an empty block after Machine DCE. However, if
run with
llc -mtriple=s390x-linux-gnu -mcpu=z15 -O3 -o out.s tc_nolivevalatuse.ll
-disable-machine-dce -misched=shuffle
, the RegisterCoalescer deletes a lot of dead defs, but not all of them. Three
instructions remain, and the mischeduler will then be run and trigger the
assert.
It seems that the RegisterCoalescer is not updating data structures correctly
while deleting instructions.
llvm-project/llvm/lib/CodeGen/MachineScheduler.cpp:1144: void
llvm::ScheduleDAGMILive::updatePressureDiffs(llvm::ArrayRef<llvm::RegisterMaskPair>):
Assertion `VNI && "No live value at use."' failed.
...
#8 0x000002aa24927b36 llvm::ScheduleDAGMILive::updatePressureDiffs
...
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200609/dfda2493/attachment.html>
More information about the llvm-bugs
mailing list