Bug 97587

Summary: make check nir/tests/control_flow_tests regression
Product: Mesa Reporter: Vinson Lee <vlee>
Component: Mesa coreAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact: mesa-dev
Severity: normal    
Priority: medium CC: awatry, cwabbott0, jason
Version: gitKeywords: bisected, regression
Hardware: x86-64 (AMD64)   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Vinson Lee 2016-09-03 18:00:23 UTC
aad4f15506c2b5ff9f3304a467b51b45dd77554d is the first bad commit
commit aad4f15506c2b5ff9f3304a467b51b45dd77554d
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Wed Aug 31 14:45:08 2016 -0700

    nir: Remove fake edges in the CF handling code
   
    When NIR was first introduced, Connor added this fake-edge hack to work
    around issues related to unreachable blocks.  Thanks to GLSL IR's jump
    lowering code, the only unreachable code you can have is a block after an
    infinite loop.  With SPIR-V, we didn't have the jump lowering code so we
    could also end up with the "if (...) { break; } else { continue; }" case
    which generates an unreachable block after the if.  Because of this, most
    of NIR had to be fixed up for handling unreachable blocks.  The only
    remaining case of not handling unreachable blocks was specifically the
    block-after-infinite-loop case in dead_cf which was fixed by the previous
    commit.  We can now delete the fake edge hack.
   
    Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
    Reviewed-by: Connor Abbott <cwabbott0@gmail.com>

:040000 040000 b084afb90cdcfa37be94c6b8edeab3fea8076faf d3ed6d3db2f7e9b62b8f4da952e0e768cb6f8856 M src
bisect run success
Comment 1 Jason Ekstrand 2016-09-03 21:01:59 UTC
Thanks for the bug report. I sent a patch to the list to fix it.
Comment 2 Jason Ekstrand 2016-09-05 03:46:22 UTC
Fix just landed in master:

commit 821e36638531ddadb32d5bac633c0b21c73bea67
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Sat Sep 3 11:57:05 2016 -0700

    nir/tests: Update the CF tests to not assume fake edges
    
    In aad4f1550, we removed the concept of "fake" edges from NIR.  Now, if you
    have a block at the end of an infinite loop it really has no predecessors.
    This updates the unit tests to match.
    
    Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97587
    Tested-by: Aaron Watry <awatry@gmail.com>
    Reviewed-by: Connor Abbott <cwabbott0@gmail.com>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.