<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GlobalCSE Pass moves phi instructions"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=101371">101371</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>GlobalCSE Pass moves phi instructions
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>Mesa
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>git
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>x86-64 (AMD64)
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux (All)
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Drivers/DRI/nouveau
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>nouveau@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>karolherbst@gmail.com
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>nouveau@lists.freedesktop.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=131843" name="attach_131843" title="frag.tgsi">attachment 131843</a> <a href="attachment.cgi?id=131843&action=edit" title="frag.tgsi">[details]</a></span>
frag.tgsi

In the game "Renowned Explorers: International Society" an assertion was hit
within codegen, because GlobalCSE wanted to move a phi instruction after a join
instruction, which is illegal.

backtrace:
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1  0x00007ffff676d54a in __GI_abort () at abort.c:89
#2  0x00007ffff6764eb7 in __assert_fail_base (fmt=<optimized out>,
assertion=assertion@entry=0x52ca18 "q->op != OP_PHI || p->op == OP_PHI",
file=file@entry=0x52c968
"../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp", 
    line=line@entry=219, 
    function=function@entry=0x52ce80
<nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*,
nv50_ir::Instruction*)::__PRETTY_FUNCTION__> "void
nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*,
nv50_ir::Instruction*)")
    at assert.c:92
#3  0x00007ffff6764f62 in __GI___assert_fail (assertion=0x52ca18 "q->op !=
OP_PHI || p->op == OP_PHI", file=0x52c968
"../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp", line=219, 
    function=0x52ce80 <nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*,
nv50_ir::Instruction*)::__PRETTY_FUNCTION__> "void
nv50_ir::BasicBlock::insertAfter(nv50_ir::Instruction*,
nv50_ir::Instruction*)") at assert.c:101
#4  0x000000000041f0a0 in nv50_ir::BasicBlock::insertAfter (this=0x82fd10,
p=0x818ca0, q=0x81d0c0) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:219
#5  0x00000000004554c0 in nv50_ir::GlobalCSE::visit (this=0x7ffffffe7b70,
bb=0x82fd10) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:3466
#6  0x00000000004200fd in nv50_ir::Pass::doRun (this=0x7ffffffe7b70,
func=0x7bc1a0, ordered=false, skipPhi=false) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:495
#7  0x000000000041ff05 in nv50_ir::Pass::doRun (this=0x7ffffffe7b70,
prog=0x7bc000, ordered=false, skipPhi=false) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:466
#8  0x000000000041fe60 in nv50_ir::Pass::run (this=0x7ffffffe7b70,
prog=0x7bc000, ordered=false, skipPhi=false) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:457
#9  0x00000000004561ed in nv50_ir::Program::optimizeSSA (this=0x7bc000,
level=3) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:3725
#10 0x0000000000416adf in nv50_ir_generate_code (info=0x7ffffffe87e0) at
../../../../../src/gallium/drivers/nouveau/codegen/nv50_ir.cpp:1256
#11 0x0000000000402e33 in nouveau_codegen (chipset=230, type=1,
tokens=0x7fffffff9420, size=0x7ffffffe941c, code=0x7ffffffe9410) at
../../../../../src/gallium/drivers/nouveau/nouveau_compiler.c:126
#12 0x0000000000403210 in main (argc=4, argv=0x7fffffffd528) at
../../../../../src/gallium/drivers/nouveau/nouveau_compiler.c:206</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>