<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - Civilization VI makes nouveau crash on register allocation"
href="https://bugs.freedesktop.org/show_bug.cgi?id=99799#c2">Comment # 2</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - Civilization VI makes nouveau crash on register allocation"
href="https://bugs.freedesktop.org/show_bug.cgi?id=99799">bug 99799</a>
from <span class="vcard"><a class="email" href="mailto:imirkin@alum.mit.edu" title="Ilia Mirkin <imirkin@alum.mit.edu>"> <span class="fn">Ilia Mirkin</span></a>
</span></b>
<pre>OK, so this is a previously-known issue. There's another bug filed about it
somewhere... crysis maybe? Anyways, it comes down to a problem with the
delete_Instruction() in the spill code. When deleting the instruction
(Instruction::~Instruction), it clears out its own ValueDef's (ValueDef::set),
which should in turn update the relevant Value's defs lists.
However this happens in the middle of RA, which means that various instructions
are joined into nodes, and value A's defs list ends up in value B's defs list.
Now this is where I get confused - when I change the logic to also remove the
ValueDef from val->join, this does not help.
Further vexing is the fact that this particular spill shouldn't even be
happening in the first place - it's a move between 2 LValues which I'm pretty
sure are joined to each other.
Valgrind catches the first badness where this happens, which is when building
live sets after spilling happens. Need to add more breaks and poke around more.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>